From 23ebaf21bfe2f6c3becf4f60446cf2cf8ca04cc2 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 31 Jul 2019 17:50:03 -0700 Subject: [PATCH 001/573] When taking slices[a..b] of sequences, don't copy, but grab a reference to the subarray --- Binaries/DafnyRuntime.cs | 88 +++++++++++++++-------------- Source/DafnyRuntime/DafnyRuntime.cs | 88 +++++++++++++++-------------- 2 files changed, 92 insertions(+), 84 deletions(-) mode change 100644 => 100755 Binaries/DafnyRuntime.cs diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs old mode 100644 new mode 100755 index 54b7269b152..598dd765c0e --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -806,9 +806,13 @@ public Set Values { public class Sequence { - readonly T[] elmts; + private readonly ArraySegment segment; public Sequence(T[] ee) { - elmts = ee; + T[] backing = ee; + segment = new ArraySegment(backing); + } + private Sequence(ArraySegment segment_) { + segment = segment_; } public static Sequence Empty { get { @@ -833,41 +837,42 @@ public static Sequence _DafnyDefaultValue() { return Empty; } public int Count { - get { return elmts.Length; } + get { return segment.Count; } } public long LongCount { - get { return elmts.LongLength; } + get { return segment.Count; } } - public T[] Elements { + public IList Elements { get { - return elmts; + return segment; } } public IEnumerable UniqueElements { get { - var st = Set.FromElements(elmts); + var st = Set.FromCollection((IEnumerable) segment); return st.Elements; } } public T Select(ulong index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(long index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(uint index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(int index) { - return elmts[index]; + return Elements[index]; } public T Select(BigInteger index) { - return elmts[(int)index]; + return Elements[(int) index]; } public Sequence Update(long index, T t) { - T[] a = (T[])elmts.Clone(); - a[index] = t; - return new Sequence(a); + T[] dst = new T[segment.Count]; + ((ICollection) segment).CopyTo(dst, 0); + dst[index] = t; + return new Sequence(dst); } public Sequence Update(ulong index, T t) { return Update((long)index, t); @@ -876,32 +881,32 @@ public Sequence Update(BigInteger index, T t) { return Update((long)index, t); } public bool Equals(Sequence other) { - int n = elmts.Length; - return n == other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n == other.segment.Count && EqualUntil(other, n); } public override bool Equals(object other) { return other is Sequence && Equals((Sequence)other); } public override int GetHashCode() { - if (elmts == null || elmts.Length == 0) + if (segment == null || segment.Count == 0) return 0; var hashCode = 0; - for (var i = 0; i < elmts.Length; i++) { - hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(elmts[i]); + for (var i = 0; i < Elements.Count; i++) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(Elements[i]); } return hashCode; } public override string ToString() { - if (elmts is char[]) { + if (segment.Array is char[]) { var s = ""; - foreach (var t in elmts) { + foreach (var t in Elements) { s += t.ToString(); } return s; } else { var s = "["; var sep = ""; - foreach (var t in elmts) { + foreach (var t in Elements) { s += sep + Dafny.Helpers.ToString(t); sep = ", "; } @@ -910,46 +915,46 @@ public override string ToString() { } bool EqualUntil(Sequence other, int n) { for (int i = 0; i < n; i++) { - if (!Dafny.Helpers.AreEqual(elmts[i], other.elmts[i])) + if (!Dafny.Helpers.AreEqual(Elements[i], other.Elements[i])) return false; } return true; } public bool IsProperPrefixOf(Sequence other) { - int n = elmts.Length; - return n < other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n < other.segment.Count && EqualUntil(other, n); } public bool IsPrefixOf(Sequence other) { - int n = elmts.Length; - return n <= other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n <= other.segment.Count && EqualUntil(other, n); } public Sequence Concat(Sequence other) { - if (elmts.Length == 0) + if (segment.Count == 0) return other; - else if (other.elmts.Length == 0) + else if (other.segment.Count == 0) return this; - T[] a = new T[elmts.Length + other.elmts.Length]; - System.Array.Copy(elmts, 0, a, 0, elmts.Length); - System.Array.Copy(other.elmts, 0, a, elmts.Length, other.elmts.Length); + T[] a = new T[segment.Count + other.segment.Count]; + Elements.CopyTo(a, 0); + other.Elements.CopyTo(a, Elements.Count); return new Sequence(a); } public bool Contains(G g) { if (g == null || g is T) { var t = (T)(object)g; - int n = elmts.Length; + int n = Elements.Count; for (int i = 0; i < n; i++) { - if (Dafny.Helpers.AreEqual(t, elmts[i])) + if (Dafny.Helpers.AreEqual(t, Elements[i])) return true; } } return false; } public Sequence Take(long m) { - if (elmts.LongLength == m) + if (segment.Count == m) return this; - T[] a = new T[m]; - System.Array.Copy(elmts, a, m); - return new Sequence(a); + // System.Array.Copy(elmts, a, m); + System.Diagnostics.Debug.Assert(m <= segment.Count); + return new Sequence(new ArraySegment(segment.Array, segment.Offset, (int) m)); } public Sequence Take(ulong n) { return Take((long)n); @@ -960,9 +965,8 @@ public Sequence Take(BigInteger n) { public Sequence Drop(long m) { if (m == 0) return this; - T[] a = new T[elmts.Length - m]; - System.Array.Copy(elmts, m, a, 0, elmts.Length - m); - return new Sequence(a); + System.Diagnostics.Debug.Assert(m <= segment.Count); + return new Sequence(new ArraySegment(segment.Array, segment.Offset + (int) m, segment.Count - (int) m)); } public Sequence Drop(ulong n) { return Drop((long)n); diff --git a/Source/DafnyRuntime/DafnyRuntime.cs b/Source/DafnyRuntime/DafnyRuntime.cs index 54b7269b152..598dd765c0e 100755 --- a/Source/DafnyRuntime/DafnyRuntime.cs +++ b/Source/DafnyRuntime/DafnyRuntime.cs @@ -806,9 +806,13 @@ public Set Values { public class Sequence { - readonly T[] elmts; + private readonly ArraySegment segment; public Sequence(T[] ee) { - elmts = ee; + T[] backing = ee; + segment = new ArraySegment(backing); + } + private Sequence(ArraySegment segment_) { + segment = segment_; } public static Sequence Empty { get { @@ -833,41 +837,42 @@ public static Sequence _DafnyDefaultValue() { return Empty; } public int Count { - get { return elmts.Length; } + get { return segment.Count; } } public long LongCount { - get { return elmts.LongLength; } + get { return segment.Count; } } - public T[] Elements { + public IList Elements { get { - return elmts; + return segment; } } public IEnumerable UniqueElements { get { - var st = Set.FromElements(elmts); + var st = Set.FromCollection((IEnumerable) segment); return st.Elements; } } public T Select(ulong index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(long index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(uint index) { - return elmts[index]; + return Elements[(int) index]; } public T Select(int index) { - return elmts[index]; + return Elements[index]; } public T Select(BigInteger index) { - return elmts[(int)index]; + return Elements[(int) index]; } public Sequence Update(long index, T t) { - T[] a = (T[])elmts.Clone(); - a[index] = t; - return new Sequence(a); + T[] dst = new T[segment.Count]; + ((ICollection) segment).CopyTo(dst, 0); + dst[index] = t; + return new Sequence(dst); } public Sequence Update(ulong index, T t) { return Update((long)index, t); @@ -876,32 +881,32 @@ public Sequence Update(BigInteger index, T t) { return Update((long)index, t); } public bool Equals(Sequence other) { - int n = elmts.Length; - return n == other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n == other.segment.Count && EqualUntil(other, n); } public override bool Equals(object other) { return other is Sequence && Equals((Sequence)other); } public override int GetHashCode() { - if (elmts == null || elmts.Length == 0) + if (segment == null || segment.Count == 0) return 0; var hashCode = 0; - for (var i = 0; i < elmts.Length; i++) { - hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(elmts[i]); + for (var i = 0; i < Elements.Count; i++) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(Elements[i]); } return hashCode; } public override string ToString() { - if (elmts is char[]) { + if (segment.Array is char[]) { var s = ""; - foreach (var t in elmts) { + foreach (var t in Elements) { s += t.ToString(); } return s; } else { var s = "["; var sep = ""; - foreach (var t in elmts) { + foreach (var t in Elements) { s += sep + Dafny.Helpers.ToString(t); sep = ", "; } @@ -910,46 +915,46 @@ public override string ToString() { } bool EqualUntil(Sequence other, int n) { for (int i = 0; i < n; i++) { - if (!Dafny.Helpers.AreEqual(elmts[i], other.elmts[i])) + if (!Dafny.Helpers.AreEqual(Elements[i], other.Elements[i])) return false; } return true; } public bool IsProperPrefixOf(Sequence other) { - int n = elmts.Length; - return n < other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n < other.segment.Count && EqualUntil(other, n); } public bool IsPrefixOf(Sequence other) { - int n = elmts.Length; - return n <= other.elmts.Length && EqualUntil(other, n); + int n = segment.Count; + return n <= other.segment.Count && EqualUntil(other, n); } public Sequence Concat(Sequence other) { - if (elmts.Length == 0) + if (segment.Count == 0) return other; - else if (other.elmts.Length == 0) + else if (other.segment.Count == 0) return this; - T[] a = new T[elmts.Length + other.elmts.Length]; - System.Array.Copy(elmts, 0, a, 0, elmts.Length); - System.Array.Copy(other.elmts, 0, a, elmts.Length, other.elmts.Length); + T[] a = new T[segment.Count + other.segment.Count]; + Elements.CopyTo(a, 0); + other.Elements.CopyTo(a, Elements.Count); return new Sequence(a); } public bool Contains(G g) { if (g == null || g is T) { var t = (T)(object)g; - int n = elmts.Length; + int n = Elements.Count; for (int i = 0; i < n; i++) { - if (Dafny.Helpers.AreEqual(t, elmts[i])) + if (Dafny.Helpers.AreEqual(t, Elements[i])) return true; } } return false; } public Sequence Take(long m) { - if (elmts.LongLength == m) + if (segment.Count == m) return this; - T[] a = new T[m]; - System.Array.Copy(elmts, a, m); - return new Sequence(a); + // System.Array.Copy(elmts, a, m); + System.Diagnostics.Debug.Assert(m <= segment.Count); + return new Sequence(new ArraySegment(segment.Array, segment.Offset, (int) m)); } public Sequence Take(ulong n) { return Take((long)n); @@ -960,9 +965,8 @@ public Sequence Take(BigInteger n) { public Sequence Drop(long m) { if (m == 0) return this; - T[] a = new T[elmts.Length - m]; - System.Array.Copy(elmts, m, a, 0, elmts.Length - m); - return new Sequence(a); + System.Diagnostics.Debug.Assert(m <= segment.Count); + return new Sequence(new ArraySegment(segment.Array, segment.Offset + (int) m, segment.Count - (int) m)); } public Sequence Drop(ulong n) { return Drop((long)n); From 44ca1bf32b94a52af46e83de452500eae2440b4e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 1 Aug 2019 16:57:20 -0400 Subject: [PATCH 002/573] Some simple tests for our future C++ backend --- Test/c++/arrays.dfy | 70 +++++++++++++++++++++++++++++++++++++++++++++ Test/c++/hello.dfy | 4 +++ Test/c++/ints.dfy | 21 ++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 Test/c++/arrays.dfy create mode 100644 Test/c++/hello.dfy create mode 100644 Test/c++/ints.dfy diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy new file mode 100644 index 00000000000..c725ad1b061 --- /dev/null +++ b/Test/c++/arrays.dfy @@ -0,0 +1,70 @@ +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + + +method LinearSearch(a: array, len:uint32, key: uint32) returns (n: uint32) + requires a.Length == len as int + ensures 0 <= n <= len + ensures n == len || a[n] == key +{ + n := 0; + while n < len + invariant n <= len + { + if a[n] == key { + return; + } + n := n + 1; + } +} + +method PrintArray(a: array?) { + if (a == null) { + print "It's null\n"; + } else { + var i := 0; + while i < a.Length { + print a[i], " "; + i := i + 1; + } + print "\n"; + } +} + +method Main() { + var a := new uint32[23]; + var i := 0; + while i < 23 { + a[i] := i; + i := i + 1; + } + PrintArray(a); + var n := LinearSearch(a, 23, 17); + print n, "\n"; + var s : seq := a[..]; + print s, "\n"; + s := a[2..16]; + print s, "\n"; + s := a[20..]; + print s, "\n"; + s := a[..8]; + print s, "\n"; + + // Conversion to sequence should copy elements (sequences are immutable!) + a[0] := 42; + print s, "\n"; + + PrintArray(null); +} + + diff --git a/Test/c++/hello.dfy b/Test/c++/hello.dfy new file mode 100644 index 00000000000..8ae9cdbe284 --- /dev/null +++ b/Test/c++/hello.dfy @@ -0,0 +1,4 @@ + +method Main() { + print "Hello world\n"; +} diff --git a/Test/c++/ints.dfy b/Test/c++/ints.dfy new file mode 100644 index 00000000000..bab3de7944b --- /dev/null +++ b/Test/c++/ints.dfy @@ -0,0 +1,21 @@ + +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + +method Main() { + var x:uint32 := 40; + var y:uint32 := 2; + var z := x + y; + + print "Result is z = ", z, "\n"; +} From 460625e5e69a9cd021f7fda5663fb15a34ed9596 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 2 Aug 2019 12:06:37 -0400 Subject: [PATCH 003/573] One more test --- Test/c++/datatypes.dfy | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Test/c++/datatypes.dfy diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy new file mode 100644 index 00000000000..3856638f8a8 --- /dev/null +++ b/Test/c++/datatypes.dfy @@ -0,0 +1,30 @@ +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + +datatype Example1 = Example1(u:uint32, b:bool) +datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) + +method Callee(e:Example2) { + match e { + case Ex2a(u) => print "Case A: ", u, "\n"; + case Ex2b(b) => print "Case B: ", b, "\n"; + } +} + +method Main() { + var e1 := Example1(22, false); + var e2 := Ex2a(42); + Callee(e2); + e2 := Ex2b(true); + Callee(e2); +} From 560ee78bdb7927f74e66ce9acdc28c9b0afbd5e2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 2 Aug 2019 16:13:10 -0400 Subject: [PATCH 004/573] Create a modular .NET core build. --- Source/Dafny/DafnyPipeline-NetCore.csproj | 34 +++++++++++++ Source/Dafny/Resolver.cs | 6 +-- Source/DafnyDriver/DafnyDriver-NetCore.csproj | 48 +++++++++++++++++++ .../DafnyRuntime/DafnyRuntime-NetCore.csproj | 26 ++++++++++ 4 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 Source/Dafny/DafnyPipeline-NetCore.csproj create mode 100644 Source/DafnyDriver/DafnyDriver-NetCore.csproj create mode 100644 Source/DafnyRuntime/DafnyRuntime-NetCore.csproj diff --git a/Source/Dafny/DafnyPipeline-NetCore.csproj b/Source/Dafny/DafnyPipeline-NetCore.csproj new file mode 100644 index 00000000000..e3108558122 --- /dev/null +++ b/Source/Dafny/DafnyPipeline-NetCore.csproj @@ -0,0 +1,34 @@ + + + + Library + DafnyPipeline + netcoreapp2.2 + COREFX_SUBSET;ISDAFNYRUNTIMELIB + false + + + + + + + + + + + false + + + + + version.cs + + + + + + + + + + diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 41346621c90..05ff876b0e2 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -289,7 +289,7 @@ public Resolver(Program prog) { [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(builtIns != null); - Contract.Invariant(cce.NonNullElements(dependencies)); + Contract.Invariant(cce.NonNullElements(dependencies.GetVertices())); Contract.Invariant(cce.NonNullDictionaryAndValues(classMembers) && Contract.ForAll(classMembers.Values, v => cce.NonNullDictionaryAndValues(v))); Contract.Invariant(cce.NonNullDictionaryAndValues(datatypeCtors) && Contract.ForAll(datatypeCtors.Values, v => cce.NonNullDictionaryAndValues(v))); Contract.Invariant(!inBodyInitContext || currentMethod is Constructor); @@ -2167,8 +2167,8 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur public void ResolveTopLevelDecls_Core(List/*!*/ declarations, Graph/*!*/ datatypeDependencies, Graph/*!*/ codatatypeDependencies) { Contract.Requires(declarations != null); - Contract.Requires(cce.NonNullElements(datatypeDependencies)); - Contract.Requires(cce.NonNullElements(codatatypeDependencies)); + Contract.Requires(cce.NonNullElements(datatypeDependencies.GetVertices())); + Contract.Requires(cce.NonNullElements(codatatypeDependencies.GetVertices())); Contract.Requires(AllTypeConstraints.Count == 0); Contract.Ensures(AllTypeConstraints.Count == 0); diff --git a/Source/DafnyDriver/DafnyDriver-NetCore.csproj b/Source/DafnyDriver/DafnyDriver-NetCore.csproj new file mode 100644 index 00000000000..c087fe302a0 --- /dev/null +++ b/Source/DafnyDriver/DafnyDriver-NetCore.csproj @@ -0,0 +1,48 @@ + + + + Dafny + 42 + LICENSE.txt + https://github.com/dafny-org/dafny + + + + Exe + DafnyDriver + netcoreapp2.2 + COREFX_SUBSET + false + true + nupkg + true + dafny + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + diff --git a/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj b/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj new file mode 100644 index 00000000000..daed8a160e8 --- /dev/null +++ b/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj @@ -0,0 +1,26 @@ + + + + Library + DafnyRuntime + netcoreapp2.2 + COREFX_SUBSET;ISDAFNYRUNTIMELIB + false + + + + + + + false + + + + + version.cs + + + + + + From b59ae9f61376fbaf3e78adb82959067ec5c4a066 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 2 Aug 2019 16:59:44 -0400 Subject: [PATCH 005/573] Copy over DafnyPrelude.bpl and make sure LICENSE.txt is actually copied --- Source/DafnyDriver/DafnyDriver-NetCore.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/DafnyDriver/DafnyDriver-NetCore.csproj b/Source/DafnyDriver/DafnyDriver-NetCore.csproj index c087fe302a0..9f247fa020a 100644 --- a/Source/DafnyDriver/DafnyDriver-NetCore.csproj +++ b/Source/DafnyDriver/DafnyDriver-NetCore.csproj @@ -42,7 +42,8 @@ - + + From 1a4b548640d8aafda5da483b26aabd9f7596e8f9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 2 Aug 2019 22:18:00 -0400 Subject: [PATCH 006/573] Use a more standard name for Boogie --- Source/Dafny/DafnyPipeline-NetCore.csproj | 6 +++--- Source/DafnyDriver/DafnyDriver-NetCore.csproj | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/DafnyPipeline-NetCore.csproj b/Source/Dafny/DafnyPipeline-NetCore.csproj index e3108558122..2552a869a16 100644 --- a/Source/Dafny/DafnyPipeline-NetCore.csproj +++ b/Source/Dafny/DafnyPipeline-NetCore.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/Source/DafnyDriver/DafnyDriver-NetCore.csproj b/Source/DafnyDriver/DafnyDriver-NetCore.csproj index 9f247fa020a..a59291c3386 100644 --- a/Source/DafnyDriver/DafnyDriver-NetCore.csproj +++ b/Source/DafnyDriver/DafnyDriver-NetCore.csproj @@ -20,13 +20,13 @@ - - - - - - - + + + + + + + From 426de0f3665431e88309c4c96d9ae476c5146b39 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 4 Aug 2019 21:23:27 -0400 Subject: [PATCH 007/573] Some simple tests for our future C++ backend --- Test/c++/arrays.dfy | 70 ++++++++++++++++++++++++++++++++++++++++++ Test/c++/datatypes.dfy | 30 ++++++++++++++++++ Test/c++/hello.dfy | 4 +++ Test/c++/ints.dfy | 21 +++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 Test/c++/arrays.dfy create mode 100644 Test/c++/datatypes.dfy create mode 100644 Test/c++/hello.dfy create mode 100644 Test/c++/ints.dfy diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy new file mode 100644 index 00000000000..c725ad1b061 --- /dev/null +++ b/Test/c++/arrays.dfy @@ -0,0 +1,70 @@ +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + + +method LinearSearch(a: array, len:uint32, key: uint32) returns (n: uint32) + requires a.Length == len as int + ensures 0 <= n <= len + ensures n == len || a[n] == key +{ + n := 0; + while n < len + invariant n <= len + { + if a[n] == key { + return; + } + n := n + 1; + } +} + +method PrintArray(a: array?) { + if (a == null) { + print "It's null\n"; + } else { + var i := 0; + while i < a.Length { + print a[i], " "; + i := i + 1; + } + print "\n"; + } +} + +method Main() { + var a := new uint32[23]; + var i := 0; + while i < 23 { + a[i] := i; + i := i + 1; + } + PrintArray(a); + var n := LinearSearch(a, 23, 17); + print n, "\n"; + var s : seq := a[..]; + print s, "\n"; + s := a[2..16]; + print s, "\n"; + s := a[20..]; + print s, "\n"; + s := a[..8]; + print s, "\n"; + + // Conversion to sequence should copy elements (sequences are immutable!) + a[0] := 42; + print s, "\n"; + + PrintArray(null); +} + + diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy new file mode 100644 index 00000000000..3856638f8a8 --- /dev/null +++ b/Test/c++/datatypes.dfy @@ -0,0 +1,30 @@ +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + +datatype Example1 = Example1(u:uint32, b:bool) +datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) + +method Callee(e:Example2) { + match e { + case Ex2a(u) => print "Case A: ", u, "\n"; + case Ex2b(b) => print "Case B: ", b, "\n"; + } +} + +method Main() { + var e1 := Example1(22, false); + var e2 := Ex2a(42); + Callee(e2); + e2 := Ex2b(true); + Callee(e2); +} diff --git a/Test/c++/hello.dfy b/Test/c++/hello.dfy new file mode 100644 index 00000000000..8ae9cdbe284 --- /dev/null +++ b/Test/c++/hello.dfy @@ -0,0 +1,4 @@ + +method Main() { + print "Hello world\n"; +} diff --git a/Test/c++/ints.dfy b/Test/c++/ints.dfy new file mode 100644 index 00000000000..bab3de7944b --- /dev/null +++ b/Test/c++/ints.dfy @@ -0,0 +1,21 @@ + +//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + +method Main() { + var x:uint32 := 40; + var y:uint32 := 2; + var z := x + y; + + print "Result is z = ", z, "\n"; +} From 51a02b9b69748d2611f3dc19a28b37a234483572 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 4 Aug 2019 21:24:37 -0400 Subject: [PATCH 008/573] Create a modular .NET core build and fix a few spots that dotnet complained about --- Source/Dafny/DafnyPipeline-NetCore.csproj | 34 +++++++++++++ Source/Dafny/Resolver.cs | 6 +-- Source/DafnyDriver/DafnyDriver-NetCore.csproj | 49 +++++++++++++++++++ .../DafnyRuntime/DafnyRuntime-NetCore.csproj | 26 ++++++++++ 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 Source/Dafny/DafnyPipeline-NetCore.csproj create mode 100644 Source/DafnyDriver/DafnyDriver-NetCore.csproj create mode 100644 Source/DafnyRuntime/DafnyRuntime-NetCore.csproj diff --git a/Source/Dafny/DafnyPipeline-NetCore.csproj b/Source/Dafny/DafnyPipeline-NetCore.csproj new file mode 100644 index 00000000000..2552a869a16 --- /dev/null +++ b/Source/Dafny/DafnyPipeline-NetCore.csproj @@ -0,0 +1,34 @@ + + + + Library + DafnyPipeline + netcoreapp2.2 + COREFX_SUBSET;ISDAFNYRUNTIMELIB + false + + + + + + + + + + + false + + + + + version.cs + + + + + + + + + + diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 41346621c90..05ff876b0e2 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -289,7 +289,7 @@ public Resolver(Program prog) { [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(builtIns != null); - Contract.Invariant(cce.NonNullElements(dependencies)); + Contract.Invariant(cce.NonNullElements(dependencies.GetVertices())); Contract.Invariant(cce.NonNullDictionaryAndValues(classMembers) && Contract.ForAll(classMembers.Values, v => cce.NonNullDictionaryAndValues(v))); Contract.Invariant(cce.NonNullDictionaryAndValues(datatypeCtors) && Contract.ForAll(datatypeCtors.Values, v => cce.NonNullDictionaryAndValues(v))); Contract.Invariant(!inBodyInitContext || currentMethod is Constructor); @@ -2167,8 +2167,8 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur public void ResolveTopLevelDecls_Core(List/*!*/ declarations, Graph/*!*/ datatypeDependencies, Graph/*!*/ codatatypeDependencies) { Contract.Requires(declarations != null); - Contract.Requires(cce.NonNullElements(datatypeDependencies)); - Contract.Requires(cce.NonNullElements(codatatypeDependencies)); + Contract.Requires(cce.NonNullElements(datatypeDependencies.GetVertices())); + Contract.Requires(cce.NonNullElements(codatatypeDependencies.GetVertices())); Contract.Requires(AllTypeConstraints.Count == 0); Contract.Ensures(AllTypeConstraints.Count == 0); diff --git a/Source/DafnyDriver/DafnyDriver-NetCore.csproj b/Source/DafnyDriver/DafnyDriver-NetCore.csproj new file mode 100644 index 00000000000..a59291c3386 --- /dev/null +++ b/Source/DafnyDriver/DafnyDriver-NetCore.csproj @@ -0,0 +1,49 @@ + + + + Dafny + 42 + LICENSE.txt + https://github.com/dafny-org/dafny + + + + Exe + DafnyDriver + netcoreapp2.2 + COREFX_SUBSET + false + true + nupkg + true + dafny + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + diff --git a/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj b/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj new file mode 100644 index 00000000000..daed8a160e8 --- /dev/null +++ b/Source/DafnyRuntime/DafnyRuntime-NetCore.csproj @@ -0,0 +1,26 @@ + + + + Library + DafnyRuntime + netcoreapp2.2 + COREFX_SUBSET;ISDAFNYRUNTIMELIB + false + + + + + + + false + + + + + version.cs + + + + + + From 5390d4cdbf38883c8f2659812ad68c2870390af9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 4 Aug 2019 21:27:09 -0400 Subject: [PATCH 009/573] Start wiring in a very basic C++ backend that can just barely compile Hello World --- Binaries/DafnyRuntime.h | 9 + Source/Dafny/Compiler-cpp.cs | 2144 +++++++++++++++++++++++++++++ Source/Dafny/DafnyOptions.cs | 9 +- Source/Dafny/Resolver.cs | 18 +- Source/DafnyDriver/DafnyDriver.cs | 6 + 5 files changed, 2174 insertions(+), 12 deletions(-) create mode 100644 Binaries/DafnyRuntime.h create mode 100644 Source/Dafny/Compiler-cpp.cs diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h new file mode 100644 index 00000000000..bbb3bc10f0a --- /dev/null +++ b/Binaries/DafnyRuntime.h @@ -0,0 +1,9 @@ +#include +#include + +using namespace std; + +class _dafny { + public: + static void Print(string s) { cout << s << endl; } +}; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs new file mode 100644 index 00000000000..5346a89b893 --- /dev/null +++ b/Source/Dafny/Compiler-cpp.cs @@ -0,0 +1,2144 @@ +//----------------------------------------------------------------------------- +// +// Copyright (C) Amazon. All Rights Reserved. +// +//----------------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.IO; +using System.Diagnostics.Contracts; +using System.Collections.ObjectModel; +using System.Diagnostics; +using Bpl = Microsoft.Boogie; + +namespace Microsoft.Dafny { + public class CppCompiler : Compiler { + public CppCompiler(ErrorReporter reporter) + : base(reporter) { + } + + public override string TargetLanguage => "Cpp"; + + protected override void EmitHeader(Program program, TargetWriter wr) { + wr.WriteLine("// Dafny program {0} compiled into Cpp", program.Name); + wr.WriteLine("#include \"DafnyRuntime.h\""); + // TODO: Include appropriate .h file here + //ReadRuntimeSystem("DafnyRuntime.h", wr); + } + + public override void EmitCallToMain(Method mainMethod, TargetWriter wr) { + var w = wr.NewBlock("int main()"); + w.WriteLine(string.Format("{0}::{1}::{2}();", mainMethod.EnclosingClass.Module.CompileName, mainMethod.EnclosingClass.CompileName, mainMethod.Name)); + } + + protected override BlockTargetWriter CreateStaticMain(IClassWriter cw) { + var wr = (cw as CppCompiler.ClassWriter).MethodWriter; + return wr.NewBlock("int main()"); + } + + protected override TargetWriter CreateModule(string moduleName, bool isDefault, bool isExtern, string/*?*/ libraryName, TargetWriter wr) { + var s = string.Format("namespace {0} ", IdProtect(moduleName)); + return wr.NewBigBlock(s, "// end of " + s); +/* + if (!isExtern || libraryName != null) { + wr.Write("let {0} = ", moduleName); + } + var w = wr.NewBigBlock("(function()", ")(); // end of module " + moduleName); + if (!isExtern) { + // create new module here + w.WriteLine("let $module = {};"); + } else if (libraryName == null) { + // extend a module provided in another .js file + w.WriteLine("let $module = {0};", moduleName); + } else { + // require a library + w.WriteLine("let $module = require(\"{0}\");", libraryName); + } + w.BodySuffix = string.Format("{0}return $module;{1}", w.IndentString, w.NewLine); + return w; +*/ + } + + protected override string GetHelperModuleName() => "_dafny"; + + protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + if (isExtern || (typeParameters != null && typeParameters.Count > 0) || (superClasses != null && superClasses.Count > 0)) { + var error = string.Format("Class {0} uses an unsupported feature: extern, generic types, and/or traits!", name); + throw new Exception(error); + } + + var w = wr.NewBlock(string.Format("class {0}", name), ";"); + w.WriteLine("public:"); + + w.WriteLine("// Constructor"); + w.Write(string.Format("{0}(", name)); + //var w2 = wr.NewBlock(string.Format("{0}(" + /* + if (typeParameters != null) { + WriteRuntimeTypeDescriptorsFormals(typeParameters, false, w); + } + */ + var fieldWriter = w.NewBlock(")"); + /* + if (fullPrintName != null) { + fieldWriter.WriteLine("this._tname = \"{0}\";", fullPrintName); + } + + if (typeParameters != null) { + foreach (var tp in typeParameters) { + if (tp.Characteristics.MustSupportZeroInitialization) { + fieldWriter.WriteLine("this.{0} = {0};", "rtd$_" + tp.CompileName); + } + } + } + */ + var methodWriter = w; + return new ClassWriter(this, methodWriter, fieldWriter); + } + + protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + var error = string.Format("Asked to create a trait {0}, which is currently unsupported", name); + throw new Exception(error); + /* + var w = wr.NewBlock(string.Format("$module.{0} = class {0}", IdProtect(name)), ";"); + var fieldWriter = w.NewBlock("constructor ()"); + var methodWriter = w; + return new ClassWriter(this, methodWriter, fieldWriter); + */ + } + + protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWriter wr) { + // An iterator is compiled as follows: + // public class MyIteratorExample + // { + // public T q; // in-parameter + // public T x; // yield-parameter + // public int y; // yield-parameter + // IEnumerator _iter; + // + // public void _MyIteratorExample(T q) { + // this.q = q; + // _iter = TheIterator(); + // } + // + // public void MoveNext(out bool more) { + // more =_iter.MoveNext(); + // } + // + // private IEnumerator TheIterator() { + // // the translation of the body of the iterator, with each "yield" turning into a "yield return null;" + // yield break; + // } + // } + var error = string.Format("Asked to create an iterator {0}, which is currently unsupported", iter); + throw new Exception(error); + + /* var cw = CreateClass(IdName(iter), iter.TypeArgs, wr) as CppCompiler.ClassWriter; + var w = cw.MethodWriter; + var instanceFieldsWriter = cw.FieldWriter; + // here come the fields + Constructor ct = null; + foreach (var member in iter.Members) { + var f = member as Field; + if (f != null && !f.IsGhost) { + DeclareField(IdName(f), false, false, f.Type, f.tok, DefaultValue(f.Type, instanceFieldsWriter, f.tok), instanceFieldsWriter); + } else if (member is Constructor) { + Contract.Assert(ct == null); // we're expecting just one constructor + ct = (Constructor)member; + } + } + Contract.Assert(ct != null); // we do expect a constructor + instanceFieldsWriter.WriteLine("this._iter = undefined;"); + + // here's the initializer method + w.Write("{0}(", IdName(ct)); + string sep = ""; + foreach (var p in ct.Ins) { + if (!p.IsGhost) { + // here we rely on the parameters and the corresponding fields having the same names + w.Write("{0}{1}", sep, IdName(p)); + sep = ", "; + } + } + using (var wBody = w.NewBlock(")")) { + foreach (var p in ct.Ins) { + if (!p.IsGhost) { + wBody.WriteLine("this.{0} = {0};", IdName(p)); + } + } + wBody.WriteLine("this.__iter = this.TheIterator();"); + } + // here are the enumerator methods + using (var wBody = w.NewBlock("MoveNext()")) { + wBody.WriteLine("let r = this.__iter.next();"); + wBody.WriteLine("return !r.done;"); + } + var wIter = w.NewBlock("*TheIterator()"); + wIter.WriteLine("let _this = this;"); + return wIter; */ + } + + protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { + // ===== For inductive datatypes: + // struct Dt { + // uint32_t tag; + // uint32_t field0a; + // uint32_t field1a; + // char field1b; + // }; + // + // bool is_Ctor0(struct Dt d) { return d.tag == 0; } + // bool is_Ctor1(struct Dt d) { return d.tag == 1; } + // + // struct Dt Dt_Ctor0(uint32_t field0a) { + // struct Dt d; + // d.tag = 0; + // d.field0a = field0a; + // return d; + // } + // + // struct Dt Dt_Ctor1(uint32_t field1a, char field1b) { + // struct Dt d; + // d.tag = 1; + // d.field1a = field1a; + // d.field1b = field1b; + // return d; + // } + + if (dt is TupleTypeDecl) { + // Tuple types are declared once and for all in DafnyRuntime.h + return; + } + + string DtT = dt.CompileName; + string DtT_protected = IdProtect(DtT); + + // from here on, write everything into the new block created here: + wr = wr.NewNamedBlock("struct {0} {{", DtT_protected); + + wr.WriteLine("constructor(tag) { this.$tag = tag; }"); + + if (dt is CoDatatypeDecl) { + throw new Exception("CoDatatypeDecl is not yet supported"); + } + + + + // query properties + var i = 0; + foreach (var ctor in dt.Ctors) { + // collect the names of non-ghost arguments + var argNames = new List(); + var k = 0; + foreach (var formal in ctor.Formals) { + if (!formal.IsGhost) { + argNames.Add(FormalName(formal, k)); + k++; + } + } + // datatype: + // static create_Ctor0(params) { let $dt = new Dt(tag); $dt.param0 = param0; ...; return $dt; } + + wr.Write("static create_{0}(", ctor.CompileName); + if (dt is CoDatatypeDecl) { + wr.Write("$dt{0}", argNames.Count == 0 ? "" : ","); + } + wr.Write(Util.Comma(argNames, nm => nm)); + var w = wr.NewBlock(")"); + if (dt is CoDatatypeDecl) { + var wThen = EmitIf("$dt === null", false, w); + wThen.WriteLine("$dt = new {0}({1});", DtT_protected, i); + wThen.WriteLine("$dt._d = $dt;"); + } else { + w.WriteLine("let $dt = new {0}({1});", DtT_protected, i); + } + foreach (var arg in argNames) { + w.WriteLine("$dt.{0} = {0};", arg); + } + w.WriteLine("return $dt;"); + i++; + } + + // query properties + i = 0; + foreach (var ctor in dt.Ctors) { + // get is_Ctor0() { return _D is Dt_Ctor0; } + wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {2}; }}", ctor.CompileName, DtT_protected, i); + i++; + } +/* + if (dt.HasFinitePossibleValues) { + Contract.Assert(dt.TypeArgs.Count == 0); + using (var w = wr.NewNamedBlock("static get AllSingletonConstructors()")) { + w.WriteLine("return this.AllSingletonConstructors_();"); + } + using (var w = wr.NewNamedBlock("static *AllSingletonConstructors_()")) { + foreach (var ctor in dt.Ctors) { + Contract.Assert(ctor.Formals.Count == 0); + w.WriteLine("yield {0}.create_{1}({2});", DtT_protected, ctor.CompileName, dt is CoDatatypeDecl ? "null" : ""); + } + } + } +*/ + // destructors + foreach (var ctor in dt.Ctors) { + foreach (var dtor in ctor.Destructors) { + if (dtor.EnclosingCtors[0] == ctor) { + var arg = dtor.CorrespondingFormals[0]; + if (!arg.IsGhost && arg.HasName) { + // datatype: get dtor_Dtor0() { return this.Dtor0; } + // codatatype: get dtor_Dtor0() { return this._D().Dtor0; } + wr.WriteLine("get dtor_{0}() {{ return this{2}.{1}; }}", arg.CompileName, IdName(arg), dt is CoDatatypeDecl ? "._D()" : ""); + } + } + } + } + + if (dt is IndDatatypeDecl && !(dt is TupleTypeDecl)) { + // toString method + using (var w = wr.NewBlock("toString()")) { + i = 0; + foreach (var ctor in dt.Ctors) { + var cw = EmitIf(string.Format("this.$tag === {0}", i), true, w); + var nm = (dt.Module.IsDefaultModule ? "" : dt.Module.Name + ".") + dt.Name + "." + ctor.Name; + cw.Write("return \"{0}\"", nm); + var sep = " + \"(\" + "; + var anyFormals = false; + var k = 0; + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + anyFormals = true; + cw.Write("{0}_dafny.toString(this.{1})", sep, FormalName(arg, k)); + sep = " + \", \" + "; + k++; + } + } + if (anyFormals) { + cw.Write(" + \")\""); + } + cw.WriteLine(";"); + i++; + } + var wElse = w.NewBlock(""); + wElse.WriteLine("return \"\";"); + } + } + + // equals method + using (var w = wr.NewBlock("equals(other)")) { + using (var thn = EmitIf("this === other", true, w)) { + EmitReturnExpr("true", thn); + } + i = 0; + foreach (var ctor in dt.Ctors) { + var thn = EmitIf(string.Format("this.$tag === {0}", i), true, w); + var guard = EmitReturnExpr(thn); + guard.Write("other.$tag === {0}", i); + var k = 0; + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + string nm = FormalName(arg, k); + if (IsDirectlyComparable(arg.Type)) { + guard.Write(" && this.{0} === other.{0}", nm); + } else { + guard.Write(" && _dafny.areEqual(this.{0}, other.{0})", nm); + } + k++; + } + } + i++; + } + using (var els = w.NewBlock("")) { + els.WriteLine("return false; // unexpected"); + } + } + + // Note: It is important that the following be a class with a static getter Default(), as opposed + // to a simple "{ Default: ... }" object, because we need for any recursive calls in the default + // expression to be evaluated lazily. (More precisely, not evaluated at all, but that will sort + // itself out due to the restrictions placed by the resolver.) + // + // static Rtd(rtd...) { + // return class { + // static get Default() { return Dt.create_CtorK(...); } + // }; + // } + wr.Write("static Rtd("); + WriteRuntimeTypeDescriptorsFormals(UsedTypeParameters(dt), true, wr); + using (var wRtd = wr.NewBlock(")")) { + using (var wClass = wRtd.NewBlock("return class", ";")) { + using (var wDefault = wClass.NewBlock("static get Default()")) { + wDefault.Write("return "); + DatatypeCtor defaultCtor; + if (dt is IndDatatypeDecl) { + defaultCtor = ((IndDatatypeDecl)dt).DefaultCtor; + } else { + defaultCtor = ((CoDatatypeDecl)dt).Ctors[0]; // pick any one of them (but pick must be the same as in InitializerIsKnown and HasZeroInitializer) + } + var arguments = new TargetWriter(); + string sep = ""; + foreach (var f in defaultCtor.Formals) { + if (!f.IsGhost) { + arguments.Write("{0}{1}", sep, DefaultValue(f.Type, wDefault, f.tok)); + sep = ", "; + } + } + EmitDatatypeValue(dt, defaultCtor, dt is CoDatatypeDecl, arguments.ToString(), wDefault); + wDefault.WriteLine(";"); + } + } + } + } + + protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { + var error = string.Format("Asked to create a newtype {0}, which is currently unsupported", nt); + throw new Exception(error); + /* + var cw = CreateClass(IdName(nt), null, wr) as CppCompiler.ClassWriter; + var w = cw.MethodWriter; + if (nt.NativeType != null) { + var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); + var wLoopBody = wIntegerRangeBody.NewBlock("while (lo.isLessThan(hi))"); + wLoopBody.WriteLine("yield lo.toNumber();"); + EmitIncrementVar("lo", wLoopBody); + } + if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { + var witness = new TargetWriter(w.IndentLevel, true); + if (nt.NativeType == null) { + TrExpr(nt.Witness, witness, false); + } else { + TrParenExpr(nt.Witness, witness, false); + witness.Write(".toNumber()"); + } + DeclareField("Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w); + } + using (var wDefault = w.NewBlock("static get Default()")) { + var udt = new UserDefinedType(nt.tok, nt.Name, nt, new List()); + var d = TypeInitializationValue(udt, wr, nt.tok, false); + wDefault.WriteLine("return {0};", d); + } */ + } + + protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { + var cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as CppCompiler.ClassWriter; + var w = cw.MethodWriter; + if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { + var error = string.Format("Asked to create a subset type {0}, which is currently unsupported", sst); + throw new Exception(error); + var witness = new TargetWriter(w.IndentLevel, true); + TrExpr(sst.Witness, witness, false); + DeclareField("Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w); + } + /* + using (var wDefault = w.NewBlock("static get Default()")) { + var udt = new UserDefinedType(sst.tok, sst.Name, sst, sst.TypeArgs.ConvertAll(tp => (Type)new UserDefinedType(tp))); + var d = TypeInitializationValue(udt, wr, sst.tok, false); + wDefault.WriteLine("return {0};", d); + } */ + } + + protected override void GetNativeInfo(NativeType.Selection sel, out string name, out string literalSuffix, out bool needsCastAfterArithmetic) { + literalSuffix = ""; + needsCastAfterArithmetic = false; + switch (sel) { + case NativeType.Selection.Byte: + name = "uint8"; + break; + case NativeType.Selection.SByte: + name = "int8"; + break; + case NativeType.Selection.UShort: + name = "uint16"; + break; + case NativeType.Selection.Short: + name = "int16"; + break; + case NativeType.Selection.UInt: + name = "uint32"; + break; + case NativeType.Selection.Int: + name = "int32"; + break; + case NativeType.Selection.ULong: + name = "uint64"; + break; + case NativeType.Selection.Number: + case NativeType.Selection.Long: + name = "int64"; + break; + default: + Contract.Assert(false); // unexpected native type + throw new cce.UnreachableException(); // to please the compiler + } + } + + protected class ClassWriter : IClassWriter { + public readonly CppCompiler Compiler; + public readonly BlockTargetWriter MethodWriter; + public readonly BlockTargetWriter FieldWriter; + + public ClassWriter(CppCompiler compiler, BlockTargetWriter methodWriter, BlockTargetWriter fieldWriter) { + Contract.Requires(compiler != null); + Contract.Requires(methodWriter != null); + Contract.Requires(fieldWriter != null); + this.Compiler = compiler; + this.MethodWriter = methodWriter; + this.FieldWriter = fieldWriter; + } + + public BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody) { + return Compiler.CreateMethod(m, createBody, MethodWriter); + } + public BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member) { + return Compiler.CreateFunction(name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodWriter); + } + public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member) { + return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodWriter); + } + public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { + return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); + } + public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + Compiler.DeclareField(name, isStatic, isConst, type, tok, rhs, FieldWriter); + } + public TextWriter/*?*/ ErrorWriter() => MethodWriter; + public void Finish() { } + } + + protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, TargetWriter wr) { + string targetReturnTypeReplacement = null; + foreach (var p in m.Outs) { + if (!p.IsGhost) { + if (targetReturnTypeReplacement == null) { + targetReturnTypeReplacement = TypeName(p.Type, wr, p.tok); + } else if (targetReturnTypeReplacement != null) { + // there's more than one out-parameter, so bail + targetReturnTypeReplacement = null; + break; + } + } + } + + if (!createBody) { + return null; + } + + wr.Write("{0}{1} {2}", + m.IsStatic ? "static " : "", + targetReturnTypeReplacement ?? "void", + IdName(m)); + + if (m.TypeArgs.Count != 0) { + var error = string.Format("Type parameters in method {0} are not yet supported", m); + throw new Exception(error); + //wr.Write("<{0}>", TypeParameters(m.TypeArgs)); + } + wr.Write("("); + int nIns = WriteFormals("", m.Ins, wr); + if (targetReturnTypeReplacement == null) { + WriteFormals(nIns == 0 ? "" : ", ", m.Outs, wr); + } + + var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); + + if (targetReturnTypeReplacement != null) { + var r = new TargetWriter(w.IndentLevel); + EmitReturn(m.Outs, r); + w.BodySuffix = r.ToString(); + } + return w; + } + + protected BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { + wr.Write("{0}{1} {2}", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); + if (typeArgs != null && typeArgs.Count != 0) { + var error = string.Format("Type parameters in function {0} are not yet supported", name); + throw new Exception(error); + //wr.Write("<{0}>", TypeParameters(typeArgs)); + } + wr.Write("("); + WriteFormals("", formals, wr); + if (!createBody) { + wr.WriteLine(");"); + return null; + } else { + if (formals.Count > 1) { + var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); + return w; + } else { + var w = wr.NewBlock(")"); + return w; + } + } + } + + List UsedTypeParameters(DatatypeDecl dt) { + Contract.Requires(dt != null); + + var idt = dt as IndDatatypeDecl; + if (idt == null) { + return dt.TypeArgs; + } else { + Contract.Assert(idt.TypeArgs.Count == idt.TypeParametersUsedInConstructionByDefaultCtor.Length); + var tps = new List(); + for (int i = 0; i < idt.TypeArgs.Count; i++) { + if (idt.TypeParametersUsedInConstructionByDefaultCtor[i]) { + tps.Add(idt.TypeArgs[i]); + } + } + return tps; + } + } + + List UsedTypeParameters(DatatypeDecl dt, List typeArgs) { + Contract.Requires(dt != null); + Contract.Requires(typeArgs != null); + Contract.Requires(dt.TypeArgs.Count == typeArgs.Count); + + var idt = dt as IndDatatypeDecl; + if (idt == null) { + return typeArgs; + } else { + Contract.Assert(typeArgs.Count == idt.TypeParametersUsedInConstructionByDefaultCtor.Length); + var ts = new List(); + for (int i = 0; i < typeArgs.Count; i++) { + if (idt.TypeParametersUsedInConstructionByDefaultCtor[i]) { + ts.Add(typeArgs[i]); + } + } + return ts; + } + } + + int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useAllTypeArgs, TargetWriter wr, string prefix = "") { + Contract.Requires(typeParams != null); + Contract.Requires(wr != null); + + var error = string.Format("WriteRuntimeTypeDescriptorsFormals not yet supported"); + throw new Exception(error); +/* + int c = 0; + foreach (var tp in typeParams) { + if (useAllTypeArgs || tp.Characteristics.MustSupportZeroInitialization) { + wr.Write("{0}{1}", prefix, "rtd$_" + tp.CompileName); + prefix = ", "; + c++; + } + } + return c; */ + } + + protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, List formals, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { + var error = string.Format("EmitRuntimeTypeDescriptorsActuals not yet supported"); + throw new Exception(error); + /* var sep = ""; + var c = 0; + for (int i = 0; i < typeArgs.Count; i++) { + var actual = typeArgs[i]; + var formal = formals[i]; + if (useAllTypeArgs || formal.Characteristics.MustSupportZeroInitialization) { + wr.Write("{0}{1}", sep, RuntimeTypeDescriptor(actual, tok, wr)); + sep = ", "; + c++; + } + } + return c; */ + } + + string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { + Contract.Requires(type != null); + Contract.Requires(tok != null); + Contract.Requires(wr != null); + var error = string.Format("RuntimeTypeDescriptor {0} not yet supported", type); + throw new Exception(error); +/* + var xType = type.NormalizeExpandKeepConstraints(); + if (xType is TypeProxy) { + // unresolved proxy; just treat as bool, since no particular type information is apparently needed for this type + return "_dafny.Rtd_bool"; + } + + if (xType is BoolType) { + return "_dafny.Rtd_bool"; + } else if (xType is CharType) { + return "_dafny.Rtd_char"; + } else if (xType is IntType) { + return "_dafny.Rtd_int"; + } else if (xType is BigOrdinalType) { + return "_dafny.BigOrdinal"; + } else if (xType is RealType) { + return "_dafny.BigRational"; + } else if (xType is BitvectorType) { + var t = (BitvectorType)xType; + if (t.NativeType != null) { + return "_dafny.Rtd_bv_Native"; + } else { + return "_dafny.Rtd_bv_NonNative"; + } + } else if (xType is SetType) { + return "_dafny.Set"; + } else if (xType is MultiSetType) { + return "_dafny.MultiSet"; + } else if (xType is SeqType) { + return "_dafny.Seq"; + } else if (xType is MapType) { + return "_dafny.Map"; + } else if (xType.IsBuiltinArrowType) { + return "_dafny.Rtd_ref"; // null suffices as a default value, since the function will never be called + } else if (xType is UserDefinedType) { + var udt = (UserDefinedType)xType; + var tp = udt.ResolvedParam; + if (tp != null) { + return string.Format("{0}rtd$_{1}", tp.Parent is ClassDecl ? "this." : "", tp.CompileName); + } + var cl = udt.ResolvedClass; + Contract.Assert(cl != null); + bool isHandle = true; + if (Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { + return "_dafny.Rtd_ref"; + } else if (cl is ClassDecl) { + return "_dafny.Rtd_ref"; + } else if (cl is DatatypeDecl) { + var dt = (DatatypeDecl)cl; + var w = new TargetWriter(); + w.Write("{0}.Rtd(", dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt)); + EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), cl.TypeArgs, udt.tok, true, w); + w.Write(")"); + return w.ToString(); + } else if (xType.IsNonNullRefType) { + // this initializer shouldn't ever be needed; the compiler is expected to generate an error + // sooner or later, , but it could be that the the compiler needs to + // lay down some bits to please the C#'s compiler's different definite-assignment rules. + return "_dafny.Rtd_ref/"; + } else { + Contract.Assert(cl is NewtypeDecl || cl is SubsetTypeDecl); + return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok); + } + } else { + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type + } */ + } + + protected BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { + // We don't use getters + return createBody ? new TargetWriter().NewBlock("") : null; + } + + protected BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, out TargetWriter setterWriter, TargetWriter wr) { + // We don't use getter/setter pairs; we just embed the trait's fields. + if (createBody) { + var abyss = new TargetWriter(); + setterWriter = abyss; + return abyss.NewBlock(""); + } else { + setterWriter = null; + return null; + } + } + + protected override void EmitJumpToTailCallStart(TargetWriter wr) { + //wr.WriteLine("continue TAIL_CALL_START;"); + } + + protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null) { + Contract.Ensures(Contract.Result() != null); + Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass + + var xType = type.NormalizeExpand(); + if (xType is TypeProxy) { + // unresolved proxy; just treat as ref, since no particular type information is apparently needed for this type + return "object"; + } + + if (xType is BoolType) { + return "bool"; + } else if (xType is CharType) { + return "char"; + } else if (xType is IntType || xType is BigOrdinalType) { + return "BigNumber"; + } else if (xType is RealType) { + return "Dafny.BigRational"; + } else if (xType is BitvectorType) { + var t = (BitvectorType)xType; + return t.NativeType != null ? GetNativeTypeName(t.NativeType) : "BigNumber"; + } else if (xType.AsNewtype != null) { + NativeType nativeType = xType.AsNewtype.NativeType; + if (nativeType != null) { + return GetNativeTypeName(nativeType); + } + return TypeName(xType.AsNewtype.BaseType, wr, tok); + } else if (xType.IsObjectQ) { + return "object"; + } else if (xType.IsArrayType) { + ArrayClassDecl at = xType.AsArrayType; + Contract.Assert(at != null); // follows from type.IsArrayType + Type elType = UserDefinedType.ArrayElementType(xType); + string typeNameSansBrackets, brackets; + TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); + return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; + } else if (xType is UserDefinedType) { + var udt = (UserDefinedType)xType; + var s = FullTypeName(udt, member); + var cl = udt.ResolvedClass; + bool isHandle = true; + if (cl != null && Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { + return "ulong"; + } else if (DafnyOptions.O.IronDafny && + !(xType is ArrowType) && + cl != null && + cl.Module != null && + !cl.Module.IsDefaultModule) { + s = cl.FullCompileName; + } + return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); + } else if (xType is SetType) { + Type argType = ((SetType)xType).Arg; + if (ComplicatedTypeParameterForCompilation(argType)) { + Error(tok, "compilation of set is not supported; consider introducing a ghost", wr); + } + return DafnySetClass + "<" + TypeName(argType, wr, tok) + ">"; + } else if (xType is SeqType) { + Type argType = ((SeqType)xType).Arg; + if (ComplicatedTypeParameterForCompilation(argType)) { + Error(tok, "compilation of seq is not supported; consider introducing a ghost", wr); + } + return DafnySeqClass + "<" + TypeName(argType, wr, tok) + ">"; + } else if (xType is MultiSetType) { + Type argType = ((MultiSetType)xType).Arg; + if (ComplicatedTypeParameterForCompilation(argType)) { + Error(tok, "compilation of multiset is not supported; consider introducing a ghost", wr); + } + return DafnyMultiSetClass + "<" + TypeName(argType, wr, tok) + ">"; + } else if (xType is MapType) { + Type domType = ((MapType)xType).Domain; + Type ranType = ((MapType)xType).Range; + if (ComplicatedTypeParameterForCompilation(domType) || ComplicatedTypeParameterForCompilation(ranType)) { + Error(tok, "compilation of map or map<_, TRAIT> is not supported; consider introducing a ghost", wr); + } + return "_dafny.Map"; + } else { + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type + } + } + + public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bpl.IToken/*?*/ tok, bool inAutoInitContext) { + var xType = type.NormalizeExpandKeepConstraints(); + if (xType is BoolType) { + return "false"; + } else if (xType is CharType) { + return "'D'"; + } else if (xType is IntType || xType is BigOrdinalType) { + return "new BigNumber(0)"; + } else if (xType is RealType) { + return "_dafny.BigRational.ZERO"; + } else if (xType is BitvectorType) { + var t = (BitvectorType)xType; + return t.NativeType != null ? "0" : "new BigNumber(0)"; + } else if (xType is SetType) { + return "_dafny.Set.Empty"; + } else if (xType is MultiSetType) { + return "_dafny.MultiSet.Empty"; + } else if (xType is SeqType) { + return "_dafny.Seq.of()"; + } else if (xType is MapType) { + return "_dafny.Map.Empty"; + } + + var udt = (UserDefinedType)xType; + if (udt.ResolvedParam != null) { + if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { + return "undefined"; + } else { + return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); + } + } + var cl = udt.ResolvedClass; + Contract.Assert(cl != null); + if (cl is NewtypeDecl) { + var td = (NewtypeDecl)cl; + if (td.Witness != null) { + return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok) + ".Witness"; + } else if (td.NativeType != null) { + return "0"; + } else { + return TypeInitializationValue(td.BaseType, wr, tok, inAutoInitContext); + } + } else if (cl is SubsetTypeDecl) { + var td = (SubsetTypeDecl)cl; + if (td.Witness != null) { + return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok) + ".Witness"; + } else if (td.WitnessKind == SubsetTypeDecl.WKind.Special) { + // WKind.Special is only used with -->, ->, and non-null types: + Contract.Assert(ArrowType.IsPartialArrowTypeName(td.Name) || ArrowType.IsTotalArrowTypeName(td.Name) || td is NonNullTypeDecl); + if (ArrowType.IsPartialArrowTypeName(td.Name)) { + return "null"; + } else if (ArrowType.IsTotalArrowTypeName(td.Name)) { + var rangeDefaultValue = TypeInitializationValue(udt.TypeArgs.Last(), wr, tok, inAutoInitContext); + // return the lambda expression ((Ty0 x0, Ty1 x1, Ty2 x2) => rangeDefaultValue) + return string.Format("function () {{ return {0}; }}", rangeDefaultValue); + } else if (((NonNullTypeDecl)td).Class is ArrayClassDecl) { + // non-null array type; we know how to initialize them + var arrayClass = (ArrayClassDecl)((NonNullTypeDecl)td).Class; + if (arrayClass.Dims == 1) { + return "[]"; + } else { + return string.Format("_dafny.newArray(undefined, {0})", Util.Comma(arrayClass.Dims, _ => "0")); + } + } else { + // non-null (non-array) type + // even though the type doesn't necessarily have a known initializer, it could be that the the compiler needs to + // lay down some bits to please the C#'s compiler's different definite-assignment rules. + return "null"; + } + } else { + return TypeInitializationValue(td.RhsWithArgument(udt.TypeArgs), wr, tok, inAutoInitContext); + } + } else if (cl is ClassDecl) { + bool isHandle = true; + if (Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { + return "0"; + } else { + return "null"; + } + } else if (cl is DatatypeDecl) { + var dt = (DatatypeDecl)cl; + var s = dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt); + var w = new TargetWriter(); + w.Write("{0}.Rtd(", s); + EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), dt.TypeArgs, udt.tok, true, w); + w.Write(").Default"); + return w.ToString(); + } else { + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type + } + + } + + protected override string TypeName_UDT(string fullCompileName, List typeArgs, TextWriter wr, Bpl.IToken tok) { + Contract.Assume(fullCompileName != null); // precondition; this ought to be declared as a Requires in the superclass + Contract.Assume(typeArgs != null); // precondition; this ought to be declared as a Requires in the superclass + string s = IdProtect(fullCompileName); + return s; + } + + protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member) { + // There are no companion classes for Cpp + return TypeName(type, wr, tok, member); + } + + // ----- Declarations ------------------------------------------------------------- + + protected void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr) { + if (isStatic || rhs != null) { + var error = string.Format("Field {0} is not supported because it is static or the right-hand side is non-null", name); + throw new Exception(error); + } + wr.WriteLine("{0} {1}", name, TypeName(type, wr, tok)); + /* + if (isStatic) { + var w = wr.NewNamedBlock("static get {0}()", name); + EmitReturnExpr(rhs, w); + } else { + wr.WriteLine("this.{0} = {1};", name, rhs); + } + */ + } + + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam, TextWriter wr) { + if (isInParam) { + wr.Write("{2} {0}{1}", prefix, name, TypeName(type, wr, tok)); + return true; + } else { + return false; + } + } + + protected override void DeclareLocalVar(string name, Type/*?*/ type, Bpl.IToken/*?*/ tok, bool leaveRoomForRhs, string/*?*/ rhs, TargetWriter wr) { + if (type != null) { + wr.Write("{0} ", TypeName(type, wr, tok)); + } else { + wr.Write("var "); + } + wr.Write("{0}", name); + if (leaveRoomForRhs) { + Contract.Assert(rhs == null); // follows from precondition + } else if (rhs != null) { + wr.WriteLine(" = {0};", rhs); + } else { + wr.WriteLine(";"); + } + } + + protected override TargetWriter DeclareLocalVar(string name, Type/*?*/ type, Bpl.IToken/*?*/ tok, TargetWriter wr) { + if (type != null) { + wr.Write("{0} ", TypeName(type, wr, tok)); + } else { + wr.Write("var "); + } + wr.Write("{0}", name); + return wr.Fork(); /// TODO: Not sure when this should be called + } + + protected override bool UseReturnStyleOuts(Method m, int nonGhostOutCount) => true; + + protected override void DeclareOutCollector(string collectorVarName, TargetWriter wr) { + wr.Write("var {0} = ", collectorVarName); + } + + protected override void DeclareLocalOutVar(string name, Type type, Bpl.IToken tok, string rhs, bool useReturnStyleOuts, TargetWriter wr) { + DeclareLocalVar(name, type, tok, false, rhs, wr); + } + + protected override void EmitOutParameterSplits(string outCollector, List actualOutParamNames, TargetWriter wr) { + var error = string.Format("EmitOutParameterSplits is not yet supported"); + throw new Exception(error); + /* + if (actualOutParamNames.Count == 1) { + EmitAssignment(actualOutParamNames[0], null, outCollector, null, wr); + } else { + for (var i = 0; i < actualOutParamNames.Count; i++) { + wr.WriteLine("{0} = {1}[{2}];", actualOutParamNames[i], outCollector, i); + } + } */ + } + + protected override void EmitActualTypeArgs(List typeArgs, Bpl.IToken tok, TextWriter wr) { + // emit nothing + } + + protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWriter wr, Bpl.IToken tok) { + return "var " + target; + } + + // ----- Statements ------------------------------------------------------------- + + protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { + wr.Write("_dafny::Print("); + TrExpr(arg, wr, false); + wr.WriteLine(");"); + } + + protected override void EmitReturn(List outParams, TargetWriter wr) { + outParams = outParams.Where(f => !f.IsGhost).ToList(); + if (!outParams.Any()) { + wr.WriteLine("return"); + } else { + wr.WriteLine("return {0}", Util.Comma(outParams, IdName)); + } + } + + protected override TargetWriter CreateLabeledCode(string label, TargetWriter wr) { + return wr.NewNamedBlock("L{0}:", label); + } + + protected override void EmitBreak(string/*?*/ label, TargetWriter wr) { + if (label == null) { + wr.WriteLine("break;"); + } else { + wr.WriteLine("goto L{0};", label); + } + } + + protected override void EmitYield(TargetWriter wr) { + var error = string.Format("EmitYield is not yet supported"); + throw new Exception(error); + //wr.WriteLine("yield null;"); + } + + protected override void EmitAbsurd(string/*?*/ message, TargetWriter wr) { + if (message == null) { + message = "unexpected control point"; + } + wr.WriteLine("throw \"{0}\";", message); + } + + protected override BlockTargetWriter CreateForLoop(string indexVar, string bound, TargetWriter wr) { + return wr.NewNamedBlock("for (var {0} = 0; {0} < {1}; {0}++)", indexVar, bound); + } + + protected override BlockTargetWriter CreateDoublingForLoop(string indexVar, int start, TargetWriter wr) { + return wr.NewNamedBlock("for (unsigned long long {0} = 1; ; {0} = {0} * 2)", indexVar, start); + } + + protected override void EmitIncrementVar(string varName, TargetWriter wr) { + wr.WriteLine("{0} += 1;", varName); + } + + protected override void EmitDecrementVar(string varName, TargetWriter wr) { + wr.WriteLine("{0} = {0} -= 1;", varName); + } + + protected override string GetQuantifierName(string bvType) { + return string.Format("_dafny.Quantifier"); + } + + protected override BlockTargetWriter CreateForeachLoop(string boundVar, Type/*?*/ boundVarType, out TargetWriter collectionWriter, TargetWriter wr, string/*?*/ altBoundVarName = null, Type/*?*/ altVarType = null, Bpl.IToken/*?*/ tok = null) { + wr.Write("for ({0} {1} : ", boundVarType, boundVar); + collectionWriter = wr.Fork(); + return wr.NewBlock(")"); + /* + if (altBoundVarName == null) { + return wr.NewBlock(")"); + } else if (altVarType == null) { + return wr.NewBlockWithPrefix(")", "{0} = {1};", altBoundVarName, boundVar); + } else { + return wr.NewBlockWithPrefix(")", "let {0} = {1};", altBoundVarName, boundVar); + } + */ + } + + // ----- Expressions ------------------------------------------------------------- + + protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCall, TargetWriter wr) { + var cl = (type.NormalizeExpand() as UserDefinedType)?.ResolvedClass; + if (cl != null && cl.Name == "object") { + wr.Write("_dafny.NewObject()"); + } else { + wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok)); + EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); + wr.Write(")"); + } + } + + protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List dimensions, bool mustInitialize, TargetWriter wr) { + var initValue = mustInitialize ? DefaultValue(elmtType, wr, tok) : null; + // TODO: Handle initValue + if (dimensions.Count == 1) { + // handle the common case of 1-dimensional arrays separately + wr.Write("new {0}[", TypeName(elmtType, wr, tok)); + TrExpr(dimensions[0], wr, false); + wr.Write("]"); + } else { + throw new Exception("Multi-dimensional arrays are not yet supported"); + // the general case + /* wr.Write("_dafny.newArray({0}", initValue ?? "undefined"); + foreach (var dim in dimensions) { + wr.Write(", "); + TrParenExpr(dim, wr, false); + wr.Write(".toNumber()"); + } + wr.Write(")"); */ + } + } + + protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { + if (e is StaticReceiverExpr) { + wr.Write(TypeName(e.Type, wr, e.tok)); + } else if (e.Value == null) { + wr.Write("NULL"); + } else if (e.Value is bool) { + wr.Write((bool)e.Value ? "true" : "false"); + } else if (e is CharLiteralExpr) { + var v = (string)e.Value; + wr.Write("'{0}'", v); + } else if (e is StringLiteralExpr) { + var str = (StringLiteralExpr)e; + // TODO: the string should be converted to a Dafny seq + TrStringLiteral(str, wr); + } else if (AsNativeType(e.Type) is NativeType nt) { + wr.Write("{0}({1})", GetNativeTypeName(nt), (BigInteger)e.Value); + } else if (e.Value is BigInteger i) { + EmitIntegerLiteral(i, wr); + } else if (e.Value is Basetypes.BigDec) { + var error = "EmitLiteralExpr of Basetypes.BigDec is not yet supported!"; + throw new Exception(error); + /* + var n = (Basetypes.BigDec)e.Value; + if (0 <= n.Exponent) { + wr.Write("new _dafny.BigRational(new BigNumber(\"{0}", n.Mantissa); + for (int i = 0; i < n.Exponent; i++) { + wr.Write("0"); + } + wr.Write("\"))"); + } else { + wr.Write("new _dafny.BigRational("); + EmitIntegerLiteral(n.Mantissa, wr); + wr.Write(", new BigNumber(\"1"); + for (int i = n.Exponent; i < 0; i++) { + wr.Write("0"); + } + wr.Write("\"))"); + } */ + } else { + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected literal + } + } + void EmitIntegerLiteral(BigInteger i, TextWriter wr) { + Contract.Requires(wr != null); + if (i == 0) { + wr.Write("_dafny.Zero"); + } else if (long.MinValue <= i && i <= long.MaxValue) { + wr.Write("_dafny.IntOfInt64({0})", i); + } else { + wr.Write("_dafny.IntOfString(\"{0}\")", i); + } + } + + protected override void EmitStringLiteral(string str, bool isVerbatim, TextWriter wr) { + var n = str.Length; + if (!isVerbatim) { + wr.Write("\"{0}\"", str); + } else { + wr.Write("\""); + for (var i = 0; i < n; i++) { + if (str[i] == '\"' && i+1 < n && str[i+1] == '\"') { + wr.Write("\\\""); + i++; + } else if (str[i] == '\\') { + wr.Write("\\\\"); + } else if (str[i] == '\n') { + wr.Write("\\n"); + } else if (str[i] == '\r') { + wr.Write("\\r"); + } else { + wr.Write(str[i]); + } + } + wr.Write("\""); + } + } + + protected override TargetWriter EmitBitvectorTruncation(BitvectorType bvType, bool surroundByUnchecked, TargetWriter wr) { + var error = string.Format("EmitBitvectorTruncation is not yet supported"); + throw new Exception(error); + string nativeName = null, literalSuffix = null; + bool needsCastAfterArithmetic = false; + if (bvType.NativeType != null) { + GetNativeInfo(bvType.NativeType.Sel, out nativeName, out literalSuffix, out needsCastAfterArithmetic); + } + + if (bvType.NativeType == null) { + wr.Write("("); + var middle = wr.Fork(); + wr.Write(").mod(new BigNumber(2).exponentiatedBy({0}))", bvType.Width); + return middle; + } else if (bvType.NativeType.Bitwidth != bvType.Width) { + // no truncation needed + return wr; + } else { + wr.Write("(("); + var middle = wr.Fork(); + // print in hex, because that looks nice + wr.Write(") & 0x{0:X}{1})", (1UL << bvType.Width) - 1, literalSuffix); + return middle; + } + } + + protected override void EmitRotate(Expression e0, Expression e1, bool isRotateLeft, TargetWriter wr, bool inLetExprBody, FCE_Arg_Translator tr) { + var error = string.Format(" is not yet supported"); + throw new Exception(error); + string nativeName = null, literalSuffix = null; + bool needsCast = false; + var nativeType = AsNativeType(e0.Type); + if (nativeType != null) { + GetNativeInfo(nativeType.Sel, out nativeName, out literalSuffix, out needsCast); + } + + var bv = e0.Type.AsBitVectorType; + if (bv.Width == 0) { + tr(e0, wr, inLetExprBody); + } else { + wr.Write("_dafny.{0}(", isRotateLeft ? "RotateLeft" : "RotateRight"); + tr(e0, wr, inLetExprBody); + wr.Write(", ("); + tr(e1, wr, inLetExprBody); + wr.Write(").toNumber(), {0})", bv.Width); + if (needsCast) { + wr.Write(".toNumber()"); + } + } + } + + protected override void EmitEmptyTupleList(string tupleTypeArgs, TargetWriter wr) { + var error = string.Format("EmitEmptyTupleList is not yet supported"); + throw new Exception(error); + wr.Write("[]", tupleTypeArgs); + } + + protected override TargetWriter EmitAddTupleToList(string ingredients, string tupleTypeArgs, TargetWriter wr) { + var error = string.Format("EmitAddTupleToList is not yet supported"); + throw new Exception(error); + wr.Write("{0}.push(_dafny.Tuple.of(", ingredients, tupleTypeArgs); + var wrTuple = wr.Fork(); + wr.WriteLine("));"); + return wrTuple; + } + + protected override void EmitTupleSelect(string prefix, int i, TargetWriter wr) { + var error = string.Format("EmitTupleSelect is not yet supported"); + throw new Exception(error); + wr.Write("{0}[{1}]", prefix, i); + } + + protected override string IdProtect(string name) { + return PublicIdProtect(name); + } + public static string PublicIdProtect(string name) { + Contract.Requires(name != null); + switch (name) { + // Taken from: https://www.w3schools.in/cplusplus-tutorial/keywords/ + // Keywords + case "asm": + case "auto": + case "bool": + case "break": + case "case": + case "catch": + case "char": + case "class": + case "const": + case "const_cast": + case "continue": + case "default": + case "delete": + case "do": + case "double": + case "dynamic_cast": + case "else": + case "enum": + case "explicit": + case "export": + case "extern": + case "false": + case "float": + case "for": + case "friend": + case "goto": + case "if": + case "inline": + case "int": + case "long": + case "mutable": + case "namespace": + case "new": + case "operator": + case "private": + case "protected": + case "public": + case "register": + case "reinterpret_cast": + case "return": + case "short": + case "signed": + case "sizeof": + case "static": + case "static_cast": + case "struct": + case "switch": + case "template": + case "this": + case "throw": + case "true": + case "try": + case "typedef": + case "typeid": + case "typename": + case "union": + case "unsigned": + case "using": + case "virtual": + case "void": + case "volatile": + case "wchar_t": + case "while": + + // Also reserved + case "And": + case "and_eq": + case "bitand": + case "bitor": + case "compl": + case "not": + case "not_eq": + case "or": + case "or_eq": + case "xor": + case "xor_eq": + return name + "_"; + default: + return name; + } + } + + private string UserDefinedTypeName(TopLevelDecl cl, bool full, MemberDecl/*?*/ member = null) { + var error = string.Format("UserDefinedTypeName {0} is not yet supported", cl.Name); + throw new Exception(error); + /* + if (IsExternMemberOfExternModule(member, cl)) { + // omit the default class name ("_default") in extern modules, when the class is used to qualify an extern member + Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" + return IdProtect(cl.Module.CompileName); + } else { + if (cl.IsExtern(out var qual, out _)) { + // No need to take into account the second argument to extern, since + // it'll already be cl.CompileName + if (qual == null) { + qual = cl.Module.CompileName; + } + // Don't use IdName since that'll capitalize, which is unhelpful for + // built-in types + return qual + (qual == "" ? "" : ".") + cl.CompileName; + } else if (!full || cl.Module.IsDefaultModule || this.ModuleName == cl.Module.CompileName) { + return IdName(cl); + } else { + return cl.Module.CompileName + "." + IdName(cl); + } + } + */ + } + + private string UserDefinedTypeName(UserDefinedType udt, bool full, MemberDecl/*?*/ member = null) { + Contract.Requires(udt != null); + if (udt is ArrowType) { + return ArrowType.Arrow_FullCompileName; + } + var cl = udt.ResolvedClass; + if (cl == null) { + return IdProtect(udt.CompileName); + } else { + return UserDefinedTypeName(cl, full, member); + } + } + + protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null) { + return UserDefinedTypeName(udt, full:true, member:member); + /* + Contract.Assume(udt != null); // precondition; this ought to be declared as a Requires in the superclass + if (udt is ArrowType) { + return ArrowType.Arrow_FullCompileName; + } + var cl = udt.ResolvedClass; + if (cl == null) { + return IdProtect(udt.CompileName); + } else if (cl is ClassDecl cdecl && cdecl.IsDefaultClass && Attributes.Contains(cl.Module.Attributes, "extern") && + member != null && Attributes.Contains(member.Attributes, "extern")) { + // omit the default class name ("_default") in extern modules, when the class is used to qualify an extern member + Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" + return IdProtect(cl.Module.CompileName); + } else { + return IdProtect(cl.Module.CompileName) + "." + IdProtect(cl.CompileName); + } */ + } + + protected override void EmitThis(TargetWriter wr) { + wr.Write("this"); + } + + protected override void EmitDatatypeValue(DatatypeValue dtv, string arguments, TargetWriter wr) { + var dt = dtv.Ctor.EnclosingDatatype; + EmitDatatypeValue(dt, dtv.Ctor, dtv.IsCoCall, arguments, wr); + } + + void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string arguments, TargetWriter wr) { + var dtName = dt.FullCompileName; + var ctorName = ctor.CompileName; + + if (dt is TupleTypeDecl) { + wr.Write("_dafny.Tuple.of({0})", arguments); + } else if (!isCoCall) { + // Ordinary constructor (that is, one that does not guard any co-recursive calls) + // Generate: Dt.create_Ctor(arguments) + wr.Write("{0}.create_{1}({2}{3})", + dtName, ctorName, + dt is IndDatatypeDecl ? "" : arguments.Length == 0 ? "null" : "null, ", + arguments); + } else { + // Co-recursive call + // Generate: Dt.lazy_Ctor(($dt) => Dt.create_Ctor($dt, args)) + wr.Write("{0}.lazy_{1}(($dt) => ", dtName, ctorName); + wr.Write("{0}.create_{1}($dt{2}{3})", dtName, ctorName, arguments.Length == 0 ? "" : ", ", arguments); + wr.Write(")"); + } + } + + protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, out string compiledName, out string preString, out string postString) { + compiledName = ""; + preString = ""; + postString = ""; + switch (id) { + case SpecialField.ID.UseIdParam: + compiledName = (string)idParam; + break; + case SpecialField.ID.ArrayLength: + case SpecialField.ID.ArrayLengthInt: + var error = string.Format("C++ does not support taking an array's length"); + throw new Exception(error); + case SpecialField.ID.Floor: + compiledName = "int()"; + break; + case SpecialField.ID.IsLimit: + throw new Exception("IsLimit is not yet supported"); + case SpecialField.ID.IsSucc: + throw new Exception("IsSucc is not yet supported"); + case SpecialField.ID.Offset: + throw new Exception("Offset is not yet supported"); + case SpecialField.ID.IsNat: + throw new Exception("IsNat is not yet supported"); + case SpecialField.ID.Keys: + compiledName = "Keys()"; + break; + case SpecialField.ID.Values: + compiledName = "Values()"; + break; + case SpecialField.ID.Items: + compiledName = "Items()"; + break; + case SpecialField.ID.Reads: + compiledName = "_reads"; + break; + case SpecialField.ID.Modifies: + compiledName = "_modifies"; + break; + case SpecialField.ID.New: + compiledName = "_new"; + break; + default: + Contract.Assert(false); // unexpected ID + break; + } + } + + protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValue, Type expectedType, TargetWriter wr) { + throw new Exception("EmitMemberSelect is not yet supported"); + var wSource = wr.Fork(); + if (isLValue && member is ConstantField) { + wr.Write("._{0}", member.CompileName); + } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { + wr.Write("[{0}]", dtor.Name); + } else if (!isLValue && member is SpecialField sf) { + string compiledName, preStr, postStr; + GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); + if (compiledName.Length != 0) { + wr.Write(".{0}", compiledName); + } else { + // this member selection is handled by some kind of enclosing function call, so nothing to do here + } + } else { + wr.Write(".{0}", IdName(member)); + } + return wSource; + } + + protected override TargetWriter EmitArraySelect(List indices, Type elmtType, TargetWriter wr) { + var w = wr.Fork(); + foreach (var index in indices) { + wr.Write("[{0}]", index); + } + return w; + } + + protected override TargetWriter EmitArraySelect(List indices, Type elmtType, bool inLetExprBody, TargetWriter wr) { + Contract.Assert(indices != null && 1 <= indices.Count); // follows from precondition + var w = wr.Fork(); + foreach (var index in indices) { + wr.Write("["); + TrExpr(index, wr, inLetExprBody); + wr.Write("]"); + } + return w; + } + + protected override string ArrayIndexToInt(string arrayIndex) { + //return string.Format("new BigNumber({0})", arrayIndex); + return arrayIndex; + } + + protected override void EmitExprAsInt(Expression expr, bool inLetExprBody, TargetWriter wr) { + TrParenExpr(expr, wr, inLetExprBody); + if (AsNativeType(expr.Type) == null) { + wr.Write(".toNumber()"); + } + } + + protected override void EmitIndexCollectionSelect(Expression source, Expression index, bool inLetExprBody, TargetWriter wr) { + TrParenExpr(source, wr, inLetExprBody); + if (source.Type.NormalizeExpand() is SeqType) { + // seq + wr.Write("["); + TrExpr(index, wr, inLetExprBody); + wr.Write("]"); + } else { + // map or imap + wr.Write(".get("); + TrExpr(index, wr, inLetExprBody); + wr.Write(")"); + } + } + + protected override void EmitIndexCollectionUpdate(Expression source, Expression index, Expression value, bool inLetExprBody, TargetWriter wr, bool nativeIndex = false) { + TrParenExpr(source, wr, inLetExprBody); + wr.Write(".update("); + TrExpr(index, wr, inLetExprBody); + wr.Write(", "); + TrExpr(value, wr, inLetExprBody); + wr.Write(")"); + } + + protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { + if (fromArray) { + wr.Write("_dafny.Seq.of(..."); + } + TrParenExpr(source, wr, inLetExprBody); + if (lo != null) { + wr.Write(".slice("); + TrExpr(lo, wr, inLetExprBody); + if (hi != null) { + wr.Write(", "); + TrExpr(hi, wr, inLetExprBody); + } + wr.Write(")"); + } else if (hi != null) { + wr.Write(".slice(0, "); + TrExpr(hi, wr, inLetExprBody); + wr.Write(")"); + } else if (fromArray) { + wr.Write(".slice()"); + } + if (fromArray) { + wr.Write(")"); + } + } + + protected override void EmitSeqConstructionExpr(SeqConstructionExpr expr, bool inLetExprBody, TargetWriter wr) { + wr.Write("_dafny.Seq.Create("); + TrExpr(expr.N, wr, inLetExprBody); + wr.Write(", "); + TrExpr(expr.Initializer, wr, inLetExprBody); + wr.Write(")"); + } + + protected override void EmitMultiSetFormingExpr(MultiSetFormingExpr expr, bool inLetExprBody, TargetWriter wr) { + TrParenExpr("_dafny.MultiSet.FromArray", expr.E, wr, inLetExprBody); + } + + protected override void EmitApplyExpr(Type functionType, Bpl.IToken tok, Expression function, List arguments, bool inLetExprBody, TargetWriter wr) { + TrParenExpr(function, wr, inLetExprBody); + TrExprList(arguments, wr, inLetExprBody); + } + + protected override TargetWriter EmitBetaRedex(List boundVars, List arguments, string typeArgs, List boundTypes, Type resultType, Bpl.IToken tok, bool inLetExprBody, TargetWriter wr) { + wr.Write("(({0}) => ", Util.Comma(boundVars)); + var w = wr.Fork(); + wr.Write(")"); + TrExprList(arguments, wr, inLetExprBody); + return w; + } + + protected override void EmitDestructor(string source, Formal dtor, int formalNonGhostIndex, DatatypeCtor ctor, List typeArgs, Type bvType, TargetWriter wr) { + if (ctor.EnclosingDatatype is TupleTypeDecl) { + wr.Write("({0})[{1}]", source, formalNonGhostIndex); + } else { + var dtorName = FormalName(dtor, formalNonGhostIndex); + wr.Write("({0}){1}.{2}", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName); + } + } + + protected override BlockTargetWriter CreateLambda(List inTypes, Bpl.IToken tok, List inNames, Type resultType, TargetWriter wr, bool untyped = false) { + wr.Write("function ("); + Contract.Assert(inTypes.Count == inNames.Count); // guaranteed by precondition + for (var i = 0; i < inNames.Count; i++) { + wr.Write("{0}{1}", i == 0 ? "" : ", ", inNames[i]); + } + var w = wr.NewExprBlock(")"); + return w; + } + + protected override TargetWriter CreateIIFE_ExprBody(Expression source, bool inLetExprBody, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { + throw new Exception("CreateIIFE_ExprBody is not yet supported"); + var w = wr.NewExprBlock("function ({0})", bvName); + w.Write("return "); + w.BodySuffix = ";" + w.NewLine; + TrParenExpr(source, wr, inLetExprBody); + return w; + } + + protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { + throw new Exception("CreateIIFE_ExprBody is not yet supported"); + var w = wr.NewExprBlock("function ({0})", bvName); + w.Write("return "); + w.BodySuffix = ";" + w.NewLine; + wr.Write("({0})", source); + return w; + } + + protected override BlockTargetWriter CreateIIFE0(Type resultType, Bpl.IToken resultTok, TargetWriter wr) { + throw new Exception("CreateIIFE0 is not yet supported"); + var w = wr.NewBigExprBlock("function ()", "()"); + return w; + } + + protected override BlockTargetWriter CreateIIFE1(int source, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { + throw new Exception("CreateIIFE1 is not yet supported"); + var w = wr.NewExprBlock("function ({0})", bvName); + wr.Write("({0})", source); + return w; + } + + protected override void EmitUnaryExpr(ResolvedUnaryOp op, Expression expr, bool inLetExprBody, TargetWriter wr) { + switch (op) { + case ResolvedUnaryOp.BoolNot: + TrParenExpr("!", expr, wr, inLetExprBody); + break; + case ResolvedUnaryOp.BitwiseNot: + if (AsNativeType(expr.Type) != null) { + wr.Write("~ "); + TrParenExpr(expr, wr, inLetExprBody); + } else { + TrParenExpr(expr, wr, inLetExprBody); + wr.Write(".Not()"); + } + break; + case ResolvedUnaryOp.Cardinality: + TrParenExpr(expr, wr, inLetExprBody); + wr.Write(".Cardinality()"); + break; + default: + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected unary expression + } + } + + bool IsDirectlyComparable(Type t) { + Contract.Requires(t != null); + return t.IsBoolType || t.IsCharType || AsNativeType(t) != null; + } + + protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, + Expression e0, Expression e1, Bpl.IToken tok, Type resultType, + out string opString, + out string preOpString, + out string postOpString, + out string callString, + out string staticCallString, + out bool reverseArguments, + out bool truncateResult, + out bool convertE1_to_int, + TextWriter errorWr) { + + opString = null; + preOpString = ""; + postOpString = ""; + callString = null; + staticCallString = null; + reverseArguments = false; + truncateResult = false; + convertE1_to_int = false; + + switch (op) { + case BinaryExpr.ResolvedOpcode.Iff: + opString = "=="; break; + case BinaryExpr.ResolvedOpcode.Imp: + preOpString = "!"; opString = "||"; break; + case BinaryExpr.ResolvedOpcode.Or: + opString = "||"; break; + case BinaryExpr.ResolvedOpcode.And: + opString = "&&"; break; + case BinaryExpr.ResolvedOpcode.BitwiseAnd: + if (AsNativeType(resultType) != null) { + opString = "&"; + } else { + callString = "And"; + } + break; + case BinaryExpr.ResolvedOpcode.BitwiseOr: + if (AsNativeType(resultType) != null) { + opString = "|"; + } else { + callString = "Or"; + } + break; + case BinaryExpr.ResolvedOpcode.BitwiseXor: + if (AsNativeType(resultType) != null) { + opString = "^"; + } else { + callString = "Xor"; + } + break; + + case BinaryExpr.ResolvedOpcode.EqCommon: { + if (IsHandleComparison(tok, e0, e1, errorWr)) { + opString = "=="; + } else { + staticCallString = "_dafny.AreEqual"; + } + break; + } + case BinaryExpr.ResolvedOpcode.NeqCommon: { + if (IsHandleComparison(tok, e0, e1, errorWr)) { + opString = "!="; + postOpString = "/* handle */"; + } else { + preOpString = "!"; + staticCallString = "_dafny.AreEqual"; + } + break; + } + + case BinaryExpr.ResolvedOpcode.Lt: + case BinaryExpr.ResolvedOpcode.LtChar: + opString = "<"; + break; + case BinaryExpr.ResolvedOpcode.Le: + case BinaryExpr.ResolvedOpcode.LeChar: + opString = "<="; + break; + case BinaryExpr.ResolvedOpcode.Ge: + case BinaryExpr.ResolvedOpcode.GeChar: + opString = ">="; + break; + case BinaryExpr.ResolvedOpcode.Gt: + case BinaryExpr.ResolvedOpcode.GtChar: + opString = ">"; + break; + case BinaryExpr.ResolvedOpcode.LeftShift: + if (resultType.IsBitVectorType) { + truncateResult = true; + } + if (AsNativeType(resultType) != null) { + opString = "<<"; + } else { + if (AsNativeType(e1.Type) != null) { + callString = "Lsh(_dafny.IntOfUint64(uint64"; + postOpString = "))"; + } else { + callString = "Lsh"; + } + } + break; + case BinaryExpr.ResolvedOpcode.RightShift: + if (AsNativeType(resultType) != null) { + opString = ">>"; + if (AsNativeType(e1.Type) == null) { + postOpString = ".Uint64()"; + } + } else { + if (AsNativeType(e1.Type) != null) { + callString = "Rsh(_dafny.IntOfUint64(uint64"; + postOpString = "))"; + } else { + callString = "Rsh"; + } + } + break; + case BinaryExpr.ResolvedOpcode.Add: + if (resultType.IsBitVectorType) { + truncateResult = true; + } + if (resultType.IsCharType || AsNativeType(resultType) != null) { + opString = "+"; + } else { + callString = "Plus"; + } + break; + case BinaryExpr.ResolvedOpcode.Sub: + if (resultType.IsBitVectorType) { + truncateResult = true; + } + if (resultType.IsCharType || AsNativeType(resultType) != null) { + opString = "-"; + } else { + callString = "Minus"; + } + break; + case BinaryExpr.ResolvedOpcode.Mul: + if (resultType.IsBitVectorType) { + truncateResult = true; + } + if (AsNativeType(resultType) != null) { + opString = "*"; + } else { + callString = "Times"; + } + break; + case BinaryExpr.ResolvedOpcode.Div: + if (AsNativeType(resultType) != null) { + var nt = AsNativeType(resultType); + if (nt.LowerBound < BigInteger.Zero) { + // Want Euclidean division for signed types + staticCallString = "_dafny.Div" + Capitalize(GetNativeTypeName(AsNativeType(resultType))); + } else { + // Native division is fine for unsigned + opString = "/"; + } + } else { + callString = "DivBy"; + } + break; + case BinaryExpr.ResolvedOpcode.Mod: + if (AsNativeType(resultType) != null) { + var nt = AsNativeType(resultType); + if (nt.LowerBound < BigInteger.Zero) { + // Want Euclidean division for signed types + staticCallString = "_dafny.Mod" + Capitalize(GetNativeTypeName(AsNativeType(resultType))); + } else { + // Native division is fine for unsigned + opString = "%"; + } + } else { + callString = "Modulo"; + } + break; + case BinaryExpr.ResolvedOpcode.SetEq: + case BinaryExpr.ResolvedOpcode.MultiSetEq: + case BinaryExpr.ResolvedOpcode.MapEq: + case BinaryExpr.ResolvedOpcode.SeqEq: + callString = "Equals"; break; + case BinaryExpr.ResolvedOpcode.SetNeq: + case BinaryExpr.ResolvedOpcode.MultiSetNeq: + case BinaryExpr.ResolvedOpcode.MapNeq: + case BinaryExpr.ResolvedOpcode.SeqNeq: + preOpString = "!"; callString = "Equals"; break; + case BinaryExpr.ResolvedOpcode.ProperSubset: + case BinaryExpr.ResolvedOpcode.ProperMultiSubset: + callString = "IsProperSubsetOf"; break; + case BinaryExpr.ResolvedOpcode.Subset: + case BinaryExpr.ResolvedOpcode.MultiSubset: + callString = "IsSubsetOf"; break; + case BinaryExpr.ResolvedOpcode.Superset: + case BinaryExpr.ResolvedOpcode.MultiSuperset: + callString = "IsSupersetOf"; break; + case BinaryExpr.ResolvedOpcode.ProperSuperset: + case BinaryExpr.ResolvedOpcode.ProperMultiSuperset: + callString = "IsProperSupersetOf"; break; + case BinaryExpr.ResolvedOpcode.Disjoint: + case BinaryExpr.ResolvedOpcode.MultiSetDisjoint: + case BinaryExpr.ResolvedOpcode.MapDisjoint: + callString = "IsDisjointFrom"; break; + case BinaryExpr.ResolvedOpcode.InSet: + case BinaryExpr.ResolvedOpcode.InMultiSet: + case BinaryExpr.ResolvedOpcode.InMap: + callString = "Contains"; reverseArguments = true; break; + case BinaryExpr.ResolvedOpcode.NotInSet: + case BinaryExpr.ResolvedOpcode.NotInMultiSet: + case BinaryExpr.ResolvedOpcode.NotInMap: + preOpString = "!"; callString = "Contains"; reverseArguments = true; break; + case BinaryExpr.ResolvedOpcode.Union: + case BinaryExpr.ResolvedOpcode.MultiSetUnion: + callString = "Union"; break; + case BinaryExpr.ResolvedOpcode.Intersection: + case BinaryExpr.ResolvedOpcode.MultiSetIntersection: + callString = "Intersection"; break; + case BinaryExpr.ResolvedOpcode.SetDifference: + case BinaryExpr.ResolvedOpcode.MultiSetDifference: + callString = "Difference"; break; + + case BinaryExpr.ResolvedOpcode.ProperPrefix: + callString = "IsProperPrefixOf"; break; + case BinaryExpr.ResolvedOpcode.Prefix: + callString = "IsPrefixOf"; break; + case BinaryExpr.ResolvedOpcode.Concat: + callString = "Concat"; break; + case BinaryExpr.ResolvedOpcode.InSeq: + callString = "Contains"; reverseArguments = true; break; + case BinaryExpr.ResolvedOpcode.NotInSeq: + preOpString = "!"; callString = "Contains"; reverseArguments = true; break; + + default: + Contract.Assert(false); throw new cce.UnreachableException(); // unexpected binary expression + } + } + + protected override void EmitIsZero(string varName, TargetWriter wr) { + wr.Write("{0}.Cmp(_dafny.Zero) == 0", varName); + } + + protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, TargetWriter wr) { + if (e.E.Type.IsNumericBased(Type.NumericPersuation.Int) || e.E.Type.IsBitVectorType || e.E.Type.IsCharType) { + if (e.ToType.IsNumericBased(Type.NumericPersuation.Real)) { + // (int or bv) -> real + Contract.Assert(AsNativeType(e.ToType) == null); + wr.Write("_dafny.RealOfFrac("); + TargetWriter w; + if (AsNativeType(e.E.Type) is NativeType nt) { + wr.Write("_dafny.IntOf{0}(", Capitalize(GetNativeTypeName(nt))); + w = wr.Fork(); + wr.Write(")"); + } else { + w = wr; + } + TrParenExpr(e.E, w, inLetExprBody); + wr.Write(", _dafny.One)"); + } else if (e.ToType.IsCharType) { + wr.Write("_dafny.Char("); + TrParenExpr(e.E, wr, inLetExprBody); + wr.Write(".Int32())"); + } else { + // (int or bv or char) -> (int or bv or ORDINAL) + var fromNative = AsNativeType(e.E.Type); + var toNative = AsNativeType(e.ToType); + if (fromNative != null && toNative != null) { + // from a native, to a native -- simple! + wr.Write(GetNativeTypeName(toNative)); + TrParenExpr(e.E, wr, inLetExprBody); + } else if (e.E.Type.IsCharType) { + Contract.Assert(fromNative == null); + if (toNative == null) { + // char -> big-integer (int or bv or ORDINAL) + wr.Write("_dafny.IntOfInt32(rune("); + TrExpr(e.E, wr, inLetExprBody); + wr.Write("))"); + } else { + // char -> native + wr.Write(GetNativeTypeName(toNative)); + TrParenExpr(e.E, wr, inLetExprBody); + } + } else if (fromNative == null && toNative == null) { + // big-integer (int or bv) -> big-integer (int or bv or ORDINAL), so identity will do + TrExpr(e.E, wr, inLetExprBody); + } else if (fromNative != null) { + Contract.Assert(toNative == null); // follows from other checks + + // native (int or bv) -> big-integer (int or bv) + wr.Write("_dafny.IntOf{0}(", Capitalize(GetNativeTypeName(fromNative))); + TrExpr(e.E, wr, inLetExprBody); + wr.Write(')'); + } else { + // any (int or bv) -> native (int or bv) + // Consider some optimizations + var literal = PartiallyEvaluate(e.E); + UnaryOpExpr u = e.E.Resolved as UnaryOpExpr; + MemberSelectExpr m = e.E.Resolved as MemberSelectExpr; + if (literal != null) { + // Optimize constant to avoid intermediate BigInteger + wr.Write("{0}({1})", GetNativeTypeName(toNative), literal); + } else if (u != null && u.Op == UnaryOpExpr.Opcode.Cardinality) { + // Optimize .Count to avoid intermediate BigInteger + wr.Write("{0}(", GetNativeTypeName(toNative)); + TrParenExpr(u.E, wr, inLetExprBody); + wr.Write(".CardinalityInt())"); + } else if (m != null && m.MemberName == "Length" && m.Obj.Type.IsArrayType) { + // Optimize .Length to avoid intermediate BigInteger + wr.Write("{0}(", GetNativeTypeName(toNative)); + TrParenExpr(m.Obj, wr, inLetExprBody); + wr.Write(".LenInt(0))"); + } else { + // no optimization applies; use the standard translation + TrParenExpr(e.E, wr, inLetExprBody); + wr.Write(".{0}()", Capitalize(GetNativeTypeName(toNative))); + } + + } + } + } else if (e.E.Type.IsNumericBased(Type.NumericPersuation.Real)) { + Contract.Assert(AsNativeType(e.E.Type) == null); + if (e.ToType.IsNumericBased(Type.NumericPersuation.Real)) { + // real -> real + Contract.Assert(AsNativeType(e.ToType) == null); + TrExpr(e.E, wr, inLetExprBody); + } else { + // real -> (int or bv) + TrParenExpr(e.E, wr, inLetExprBody); + wr.Write(".Int()"); + if (AsNativeType(e.ToType) is NativeType nt) { + wr.Write(".{0}()", Capitalize(GetNativeTypeName(nt))); + } + } + } else { + Contract.Assert(e.E.Type.IsBigOrdinalType); + Contract.Assert(e.ToType.IsNumericBased(Type.NumericPersuation.Int)); + // identity will do + TrExpr(e.E, wr, inLetExprBody); + } + } + protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { + throw new Exception("EmitCollectionDisplay is not yet supported"); + if (ct is SetType) { + wr.Write("_dafny.Set.fromElements"); + TrExprList(elements, wr, inLetExprBody); + } else if (ct is MultiSetType) { + wr.Write("_dafny.MultiSet.fromElements"); + TrExprList(elements, wr, inLetExprBody); + } else { + Contract.Assert(ct is SeqType); // follows from precondition + TargetWriter wrElements; + if (ct.Arg.IsCharType) { + // We're really constructing a string. + // TODO: It may be that ct.Arg is a type parameter that may stand for char. We currently don't catch that case here. + wr.Write("["); + wrElements = wr.Fork(); + wr.Write("].join(\"\")"); + } else { + wr.Write("_dafny.Seq.of("); + wrElements = wr.Fork(); + wr.Write(")"); + } + string sep = ""; + foreach (var e in elements) { + wrElements.Write(sep); + TrExpr(e, wrElements, inLetExprBody); + sep = ", "; + } + } + } + + protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { + throw new Exception("EmitMapDisplay is not yet supported"); + wr.Write("_dafny.Map.of("); + string sep = ""; + foreach (ExpressionPair p in elements) { + wr.Write(sep); + wr.Write("["); + TrExpr(p.A, wr, inLetExprBody); + wr.Write(","); + TrExpr(p.B, wr, inLetExprBody); + wr.Write("]"); + sep = ", "; + } + wr.Write(")"); + } + + protected override void EmitCollectionBuilder_New(CollectionType ct, Bpl.IToken tok, TargetWriter wr) { + throw new Exception("EmitCollectionBuilder_New is not yet supported"); + if (ct is SetType) { + wr.Write("new _dafny.Set()"); + } else if (ct is MultiSetType) { + wr.Write("new _dafny.MultiSet()"); + } else if (ct is MapType) { + wr.Write("new _dafny.Map()"); + } else { + Contract.Assume(false); // unepxected collection type + } + } + + protected override void EmitCollectionBuilder_Add(CollectionType ct, string collName, Expression elmt, bool inLetExprBody, TargetWriter wr) { + throw new Exception("EmitCollectionBuilder_Add is not yet supported"); + Contract.Assume(ct is SetType || ct is MultiSetType); // follows from precondition + wr.Write("{0}.add(", collName); + TrExpr(elmt, wr, inLetExprBody); + wr.WriteLine(");"); + } + + protected override TargetWriter EmitMapBuilder_Add(MapType mt, Bpl.IToken tok, string collName, Expression term, bool inLetExprBody, TargetWriter wr) { + throw new Exception("EmitMapBuilder_Add is not yet supported"); + wr.Write("{0}.push([", collName); + var termLeftWriter = wr.Fork(); + wr.Write(","); + TrExpr(term, wr, inLetExprBody); + wr.WriteLine("]);"); + return termLeftWriter; + } + + protected override string GetCollectionBuilder_Build(CollectionType ct, Bpl.IToken tok, string collName, TargetWriter wr) { + // collections are built in place + return collName; + } + + protected override void EmitSingleValueGenerator(Expression e, bool inLetExprBody, string type, TargetWriter wr) { + TrParenExpr("_dafny.SingleValue", e, wr, inLetExprBody); + } + + // ----- Target compilation and execution ------------------------------------------------------------- + + public override bool CompileTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string/*?*/ targetFilename, ReadOnlyCollection otherFileNames, + bool hasMain, bool runAfterCompile, TextWriter outputWriter, out object compilationResult) { + compilationResult = null; + throw new Exception("Compilation of C++ files is not yet supported"); + } + + public override bool RunTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string targetFilename, ReadOnlyCollection otherFileNames, + object compilationResult, TextWriter outputWriter) { + throw new Exception("Running C++ programs is not yet supported"); + } + } +} diff --git a/Source/Dafny/DafnyOptions.cs b/Source/Dafny/DafnyOptions.cs index 6a07638159a..b9adc53b4e6 100644 --- a/Source/Dafny/DafnyOptions.cs +++ b/Source/Dafny/DafnyOptions.cs @@ -63,7 +63,7 @@ public enum PrintModes { Everything, DllEmbed, NoIncludes, NoGhost }; public List DafnyPrintExportedViews = new List(); public bool Compile = true; [Flags] - public enum CompilationTarget { Csharp = 1, JavaScript = 2, Go = 4 } + public enum CompilationTarget { Csharp = 1, JavaScript = 2, Go = 4, Cpp = 8 } public CompilationTarget CompileTarget = CompilationTarget.Csharp; public bool CompileVerbose = true; public string DafnyPrintCompiledFile = null; @@ -176,6 +176,8 @@ protected override bool ParseOption(string name, Bpl.CommandLineOptionEngine.Com CompileTarget = CompilationTarget.JavaScript; } else if (args[ps.i].Equals("go")) { CompileTarget = CompilationTarget.Go; + } else if (args[ps.i].Equals("cpp")) { + CompileTarget = CompilationTarget.Cpp; } else { throw new Exception("Invalid value for compileTarget"); } @@ -580,8 +582,9 @@ of the last .dfy file on the command line verification outcome /compileTarget: cs (default) - Compilation to .NET via C# - go - Compilation to Go - js - Compilation to JavaScript + go - Compilation to Go + js - Compilation to JavaScript + cpp - Compilation to C++ /compileVerbose: 0 - don't print status of compilation to the console 1 (default) - print information such as files being written by diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 05ff876b0e2..454ecaeb2b5 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2153,16 +2153,16 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur } public static readonly List NativeTypes = new List() { - new NativeType("byte", 0, 0x100, 8,NativeType.Selection.Byte, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("sbyte", -0x80, 0x80, 0, NativeType.Selection.SByte, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("ushort", 0, 0x1_0000, 16, NativeType.Selection.UShort, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("short", -0x8000, 0x8000, 0, NativeType.Selection.Short, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("uint", 0, 0x1_0000_0000, 32, NativeType.Selection.UInt, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("int", -0x8000_0000, 0x8000_0000, 0, NativeType.Selection.Int, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), + new NativeType("byte", 0, 0x100, 8,NativeType.Selection.Byte, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("sbyte", -0x80, 0x80, 0, NativeType.Selection.SByte, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("ushort", 0, 0x1_0000, 16, NativeType.Selection.UShort, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("short", -0x8000, 0x8000, 0, NativeType.Selection.Short, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("uint", 0, 0x1_0000_0000, 32, NativeType.Selection.UInt, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("int", -0x8000_0000, 0x8000_0000, 0, NativeType.Selection.Int, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), new NativeType("number", -0x20_0000_0000_0000, 0x20_0000_0000_0001, 0, NativeType.Selection.Number, - DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.JavaScript | DafnyOptions.CompilationTarget.Go), // JavaScript integers - new NativeType("ulong", 0, new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000), 64, NativeType.Selection.ULong, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), - new NativeType("long", Int64.MinValue, 0x8000_0000_0000_0000, 0, NativeType.Selection.Long, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go), + DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.JavaScript | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), // JavaScript integers + new NativeType("ulong", 0, new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000), 64, NativeType.Selection.ULong, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), + new NativeType("long", Int64.MinValue, 0x8000_0000_0000_0000, 0, NativeType.Selection.Long, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Cpp), }; public void ResolveTopLevelDecls_Core(List/*!*/ declarations, Graph/*!*/ datatypeDependencies, Graph/*!*/ codatatypeDependencies) { diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 4f9d590bde6..77720fd3b6b 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -452,6 +452,9 @@ static string WriteDafnyProgramToFiles(string dafnyProgramName, string targetPro targetExtension = "go"; targetBaseDir = baseName + "-go/src"; break; + case DafnyOptions.CompilationTarget.Cpp: + targetExtension = "cpp"; + break; default: Contract.Assert(false); throw new cce.UnreachableException(); @@ -521,6 +524,9 @@ public static bool CompileDafnyProgram(Dafny.Program dafnyProgram, string dafnyP case DafnyOptions.CompilationTarget.Go: compiler = new Dafny.GoCompiler(dafnyProgram.reporter); break; + case DafnyOptions.CompilationTarget.Cpp: + compiler = new Dafny.CppCompiler(dafnyProgram.reporter); + break; } Method mainMethod; From 447e180363ca22a526caafe11154ba685b9b685e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 4 Aug 2019 21:40:38 -0400 Subject: [PATCH 010/573] Fix the legacy project file --- Source/Dafny/DafnyPipeline.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Dafny/DafnyPipeline.csproj b/Source/Dafny/DafnyPipeline.csproj index dd0e7ad90d8..312b3bf9d09 100644 --- a/Source/Dafny/DafnyPipeline.csproj +++ b/Source/Dafny/DafnyPipeline.csproj @@ -150,6 +150,7 @@ + From 01519488efcacf2d43567c92ad28651dbed80bb3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 4 Aug 2019 21:59:52 -0400 Subject: [PATCH 011/573] Some fixes towards supporting native subset types --- Source/Dafny/Compiler-cpp.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5346a89b893..fbd0bb21189 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -392,18 +392,24 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - var error = string.Format("Asked to create a newtype {0}, which is currently unsupported", nt); - throw new Exception(error); - /* - var cw = CreateClass(IdName(nt), null, wr) as CppCompiler.ClassWriter; - var w = cw.MethodWriter; + protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { + if (nt.NativeType != null) { + if (nt.NativeType.Name != nt.Name) { + wr.WriteLine("typedef {0} {1};", nt.NativeType.Name, nt.Name); + } + /* var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); var wLoopBody = wIntegerRangeBody.NewBlock("while (lo.isLessThan(hi))"); wLoopBody.WriteLine("yield lo.toNumber();"); EmitIncrementVar("lo", wLoopBody); + */ + } else { + var error = string.Format("Asked to create a non-native newtype {0}, which is currently unsupported", nt); + throw new Exception(error); } + var cw = CreateClass(IdName(nt), null, wr) as CppCompiler.ClassWriter; + var w = cw.MethodWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); if (nt.NativeType == null) { @@ -418,7 +424,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { var udt = new UserDefinedType(nt.tok, nt.Name, nt, new List()); var d = TypeInitializationValue(udt, wr, nt.tok, false); wDefault.WriteLine("return {0};", d); - } */ + } } protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { From 164f10136165abaebd8084acb58a114d10e93f2e Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Wed, 7 Aug 2019 16:59:02 -0700 Subject: [PATCH 012/573] faster array slicing in c# translation --- Binaries/DafnyRuntime.cs | 64 +++++++++++++++++++++++++++++ Source/Dafny/Compiler-Csharp.cs | 45 ++++++++++++++++---- Source/DafnyRuntime/DafnyRuntime.cs | 64 +++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+), 8 deletions(-) diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs index 598dd765c0e..d43a0521af6 100755 --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -1173,6 +1173,70 @@ public static BigInteger EuclideanModulus(BigInteger a, BigInteger b) { public static Sequence SeqFromArray(T[] array) { return new Sequence((T[])array.Clone()); } + + public static Sequence SeqFromArrayPrefix(T[] array, long n) { + T[] ar = new T[n]; + for (long i = 0; i < n; i++) { + ar[i] = array[i]; + } + return new Sequence(ar); + } + + public static Sequence SeqFromArrayPrefix(T[] array, ulong n) { + return SeqFromArrayPrefix(array, (long)n); + } + + public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { + return SeqFromArrayPrefix(array, (long)n); + } + + public static Sequence SeqFromArraySuffix(T[] array, long n) { + T[] ar = new T[array.Length - n]; + for (long i = n; i < array.Length; i++) { + ar[i - n] = array[i]; + } + return new Sequence(ar); + } + + public static Sequence SeqFromArraySuffix(T[] array, ulong n) { + return SeqFromArraySuffix(array, (long) n); + } + public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { + return SeqFromArraySuffix(array, (long) n); + } + + public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { + T[] ar = new T[hi - lo]; + for (long i = lo; i < hi; i++) { + ar[i - lo] = array[i]; + } + return new Sequence(ar); + } + public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, long lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, long hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, long hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + // In .NET version 4.5, it it possible to mark a method with "AggressiveInlining", which says to inline the // method if possible. Method "ExpressionSequence" would be a good candidate for it: // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 798b5cbcd84..30f6f962ffe 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -1640,14 +1640,43 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { - wr.Write("Dafny.Helpers.SeqFromArray"); - } - TrParenExpr(source, wr, inLetExprBody); - if (hi != null) { - TrParenExpr(".Take", hi, wr, inLetExprBody); - } - if (lo != null) { - TrParenExpr(".Drop", lo, wr, inLetExprBody); + if (lo == null) { + if (hi == null) { + wr.Write("Dafny.Helpers.SeqFromArray("); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(")"); + } else { + wr.Write("Dafny.Helpers.SeqFromArrayPrefix("); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(", "); + TrParenExpr(hi, wr, inLetExprBody); + wr.Write(")"); + } + } else { + if (hi == null) { + wr.Write("Dafny.Helpers.SeqFromArraySuffix("); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(", "); + TrParenExpr(lo, wr, inLetExprBody); + wr.Write(")"); + } else { + wr.Write("Dafny.Helpers.SeqFromArraySlice("); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(", "); + TrParenExpr(lo, wr, inLetExprBody); + wr.Write(", "); + TrParenExpr(hi, wr, inLetExprBody); + wr.Write(")"); + } + } + } else { + TrParenExpr(source, wr, inLetExprBody); + if (hi != null) { + TrParenExpr(".Take", hi, wr, inLetExprBody); + } + if (lo != null) { + TrParenExpr(".Drop", lo, wr, inLetExprBody); + } } } diff --git a/Source/DafnyRuntime/DafnyRuntime.cs b/Source/DafnyRuntime/DafnyRuntime.cs index 598dd765c0e..d43a0521af6 100755 --- a/Source/DafnyRuntime/DafnyRuntime.cs +++ b/Source/DafnyRuntime/DafnyRuntime.cs @@ -1173,6 +1173,70 @@ public static BigInteger EuclideanModulus(BigInteger a, BigInteger b) { public static Sequence SeqFromArray(T[] array) { return new Sequence((T[])array.Clone()); } + + public static Sequence SeqFromArrayPrefix(T[] array, long n) { + T[] ar = new T[n]; + for (long i = 0; i < n; i++) { + ar[i] = array[i]; + } + return new Sequence(ar); + } + + public static Sequence SeqFromArrayPrefix(T[] array, ulong n) { + return SeqFromArrayPrefix(array, (long)n); + } + + public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { + return SeqFromArrayPrefix(array, (long)n); + } + + public static Sequence SeqFromArraySuffix(T[] array, long n) { + T[] ar = new T[array.Length - n]; + for (long i = n; i < array.Length; i++) { + ar[i - n] = array[i]; + } + return new Sequence(ar); + } + + public static Sequence SeqFromArraySuffix(T[] array, ulong n) { + return SeqFromArraySuffix(array, (long) n); + } + public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { + return SeqFromArraySuffix(array, (long) n); + } + + public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { + T[] ar = new T[hi - lo]; + for (long i = lo; i < hi; i++) { + ar[i - lo] = array[i]; + } + return new Sequence(ar); + } + public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, long lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, long hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, ulong lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, long hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, ulong hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, BigInteger hi) { + return SeqFromArraySlice(array, (long)lo, (long)hi); + } + // In .NET version 4.5, it it possible to mark a method with "AggressiveInlining", which says to inline the // method if possible. Method "ExpressionSequence" would be a good candidate for it: // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] From 2ba7b4a1bc26425f0345b7033cf48fa5982c3b94 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Tue, 13 Aug 2019 19:10:52 -0700 Subject: [PATCH 013/573] use System.Array.Copy for SeqFromArray(Suffix,Prefix,Slice) functions --- Binaries/DafnyRuntime.cs | 12 +++--------- Source/DafnyRuntime/DafnyRuntime.cs | 12 +++--------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs index d43a0521af6..6eefb609522 100755 --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -1176,9 +1176,7 @@ public static Sequence SeqFromArray(T[] array) { public static Sequence SeqFromArrayPrefix(T[] array, long n) { T[] ar = new T[n]; - for (long i = 0; i < n; i++) { - ar[i] = array[i]; - } + System.Array.Copy(array, 0, ar, 0, n); return new Sequence(ar); } @@ -1192,9 +1190,7 @@ public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { public static Sequence SeqFromArraySuffix(T[] array, long n) { T[] ar = new T[array.Length - n]; - for (long i = n; i < array.Length; i++) { - ar[i - n] = array[i]; - } + System.Array.Copy(array, n, ar, 0, array.Length - n); return new Sequence(ar); } @@ -1207,9 +1203,7 @@ public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { T[] ar = new T[hi - lo]; - for (long i = lo; i < hi; i++) { - ar[i - lo] = array[i]; - } + System.Array.Copy(array, lo, ar, 0, hi - lo); return new Sequence(ar); } public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { diff --git a/Source/DafnyRuntime/DafnyRuntime.cs b/Source/DafnyRuntime/DafnyRuntime.cs index d43a0521af6..6eefb609522 100755 --- a/Source/DafnyRuntime/DafnyRuntime.cs +++ b/Source/DafnyRuntime/DafnyRuntime.cs @@ -1176,9 +1176,7 @@ public static Sequence SeqFromArray(T[] array) { public static Sequence SeqFromArrayPrefix(T[] array, long n) { T[] ar = new T[n]; - for (long i = 0; i < n; i++) { - ar[i] = array[i]; - } + System.Array.Copy(array, 0, ar, 0, n); return new Sequence(ar); } @@ -1192,9 +1190,7 @@ public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { public static Sequence SeqFromArraySuffix(T[] array, long n) { T[] ar = new T[array.Length - n]; - for (long i = n; i < array.Length; i++) { - ar[i - n] = array[i]; - } + System.Array.Copy(array, n, ar, 0, array.Length - n); return new Sequence(ar); } @@ -1207,9 +1203,7 @@ public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { T[] ar = new T[hi - lo]; - for (long i = lo; i < hi; i++) { - ar[i - lo] = array[i]; - } + System.Array.Copy(array, lo, ar, 0, hi - lo); return new Sequence(ar); } public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { From 2c07d99bc83528e5d0669016c49d515a0fd02b4a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Aug 2019 07:56:43 -0400 Subject: [PATCH 014/573] Get ints.dfy compiling --- Source/Dafny/Compiler-cpp.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fbd0bb21189..7408e529f76 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -408,7 +408,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { var error = string.Format("Asked to create a non-native newtype {0}, which is currently unsupported", nt); throw new Exception(error); } - var cw = CreateClass(IdName(nt), null, wr) as CppCompiler.ClassWriter; + var cw = CreateClass("class_" + IdName(nt), null, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); @@ -420,7 +420,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } DeclareField("Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w); } - using (var wDefault = w.NewBlock("static get Default()")) { + using (var wDefault = w.NewBlock(string.Format("static {0} get_Default()", nt.Name))) { var udt = new UserDefinedType(nt.tok, nt.Name, nt, new List()); var d = TypeInitializationValue(udt, wr, nt.tok, false); wDefault.WriteLine("return {0};", d); @@ -1021,9 +1021,12 @@ protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWri // ----- Statements ------------------------------------------------------------- protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { - wr.Write("_dafny::Print("); + //wr.Write("_dafny::Print("); + //TrExpr(arg, wr, false); + //wr.WriteLine(");"); + wr.Write("cout << "); TrExpr(arg, wr, false); - wr.WriteLine(");"); + wr.WriteLine(";"); } protected override void EmitReturn(List outParams, TargetWriter wr) { @@ -1144,7 +1147,7 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { // TODO: the string should be converted to a Dafny seq TrStringLiteral(str, wr); } else if (AsNativeType(e.Type) is NativeType nt) { - wr.Write("{0}({1})", GetNativeTypeName(nt), (BigInteger)e.Value); + wr.Write("({0}){1}", GetNativeTypeName(nt), (BigInteger)e.Value); } else if (e.Value is BigInteger i) { EmitIntegerLiteral(i, wr); } else if (e.Value is Basetypes.BigDec) { From ab63c6c315cab47e0355f3a640c2acf1c99e42b0 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Aug 2019 20:58:13 -0400 Subject: [PATCH 015/573] Preliminary makefile for the C++ tests --- Test/c++/Makefile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Test/c++/Makefile diff --git a/Test/c++/Makefile b/Test/c++/Makefile new file mode 100644 index 00000000000..f53fa54d362 --- /dev/null +++ b/Test/c++/Makefile @@ -0,0 +1,14 @@ + +SRCS=$(wildcard *.cpp) +EXECS=$(subst .dfy,,$(SRCS)) +DAFNY=../../Binaries/dafny + +#all=$(TARGETS) +all=hello integers + +%.cpp: %.dfy $(DAFNY) + $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + +$(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h + $(CXX) -o $@ $< + From 4d948ef8b6154b9f12d228a66307e0244899c375 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 24 Aug 2019 11:34:39 -0400 Subject: [PATCH 016/573] Debug the Makefile --- Test/c++/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index f53fa54d362..7398dfdaef3 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -1,10 +1,10 @@ SRCS=$(wildcard *.cpp) -EXECS=$(subst .dfy,,$(SRCS)) +EXECS=$(subst .cpp,,$(SRCS)) DAFNY=../../Binaries/dafny #all=$(TARGETS) -all=hello integers +all:hello integers %.cpp: %.dfy $(DAFNY) $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp $< @@ -12,3 +12,5 @@ all=hello integers $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h $(CXX) -o $@ $< +clean: + rm *.cpp $(EXECS) From 0e44db715194930f94af1e273baa12afce71ce61 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 24 Aug 2019 11:44:28 -0400 Subject: [PATCH 017/573] Simplify the arrays example a bit. Still need to add support for UserDefinedTypeName, which is apparently used for the __default class that Dafny creates --- Test/c++/arrays.dfy | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index c725ad1b061..7e46fdd5ca9 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -28,12 +28,27 @@ method LinearSearch(a: array, len:uint32, key: uint32) returns (n: uint3 } } -method PrintArray(a: array?) { +//method PrintArray(a: array?) { +// if (a == null) { +// print "It's null\n"; +// } else { +// var i := 0; +// while i < a.Length { +// print a[i], " "; +// i := i + 1; +// } +// print "\n"; +// } +//} + +method PrintArray(a:array?, len:uint32) + requires a != null ==> len as int == a.Length; +{ if (a == null) { print "It's null\n"; } else { - var i := 0; - while i < a.Length { + var i:uint32 := 0; + while i < len { print a[i], " "; i := i + 1; } @@ -48,7 +63,7 @@ method Main() { a[i] := i; i := i + 1; } - PrintArray(a); + PrintArray(a, 23); var n := LinearSearch(a, 23, 17); print n, "\n"; var s : seq := a[..]; @@ -64,7 +79,8 @@ method Main() { a[0] := 42; print s, "\n"; - PrintArray(null); + PrintArray(null, 0); + //PrintArray(null); } From e656bd043af090acbc3f3ad59d383c940e65fa5e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 30 Aug 2019 09:15:39 -0400 Subject: [PATCH 018/573] Fix DeclareFormals and restore enough functionality to compile arrays.dfy. Still need to figure out formatting and fix the C++ code that gets emitted. --- Source/Dafny/Compiler-cpp.cs | 62 ++++++------------------------------ 1 file changed, 9 insertions(+), 53 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7408e529f76..99c4a63b710 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -637,9 +637,7 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA } protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, List formals, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { - var error = string.Format("EmitRuntimeTypeDescriptorsActuals not yet supported"); - throw new Exception(error); - /* var sep = ""; + var sep = ""; var c = 0; for (int i = 0; i < typeArgs.Count; i++) { var actual = typeArgs[i]; @@ -650,7 +648,7 @@ protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, Li c++; } } - return c; */ + return c; } string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { @@ -954,7 +952,8 @@ protected void DeclareField(string name, bool isStatic, bool isConst, Type type, protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam, TextWriter wr) { if (isInParam) { - wr.Write("{2} {0}{1}", prefix, name, TypeName(type, wr, tok)); + var s = String.Format("{0}{2} {1}", prefix, name, TypeName(type, wr, tok)); + wr.Write("{0}{2} {1}", prefix, name, TypeName(type, wr, tok)); return true; } else { return false; @@ -998,16 +997,13 @@ protected override void DeclareLocalOutVar(string name, Type type, Bpl.IToken to } protected override void EmitOutParameterSplits(string outCollector, List actualOutParamNames, TargetWriter wr) { - var error = string.Format("EmitOutParameterSplits is not yet supported"); - throw new Exception(error); - /* if (actualOutParamNames.Count == 1) { EmitAssignment(actualOutParamNames[0], null, outCollector, null, wr); } else { for (var i = 0; i < actualOutParamNames.Count; i++) { wr.WriteLine("{0} = {1}[{2}];", actualOutParamNames[i], outCollector, i); } - } */ + } } protected override void EmitActualTypeArgs(List typeArgs, Bpl.IToken tok, TextWriter wr) { @@ -1371,52 +1367,12 @@ public static string PublicIdProtect(string name) { } } - private string UserDefinedTypeName(TopLevelDecl cl, bool full, MemberDecl/*?*/ member = null) { - var error = string.Format("UserDefinedTypeName {0} is not yet supported", cl.Name); - throw new Exception(error); - /* - if (IsExternMemberOfExternModule(member, cl)) { - // omit the default class name ("_default") in extern modules, when the class is used to qualify an extern member - Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" - return IdProtect(cl.Module.CompileName); - } else { - if (cl.IsExtern(out var qual, out _)) { - // No need to take into account the second argument to extern, since - // it'll already be cl.CompileName - if (qual == null) { - qual = cl.Module.CompileName; - } - // Don't use IdName since that'll capitalize, which is unhelpful for - // built-in types - return qual + (qual == "" ? "" : ".") + cl.CompileName; - } else if (!full || cl.Module.IsDefaultModule || this.ModuleName == cl.Module.CompileName) { - return IdName(cl); - } else { - return cl.Module.CompileName + "." + IdName(cl); - } - } - */ - } - - private string UserDefinedTypeName(UserDefinedType udt, bool full, MemberDecl/*?*/ member = null) { - Contract.Requires(udt != null); - if (udt is ArrowType) { - return ArrowType.Arrow_FullCompileName; - } - var cl = udt.ResolvedClass; - if (cl == null) { - return IdProtect(udt.CompileName); - } else { - return UserDefinedTypeName(cl, full, member); - } - } - protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null) { - return UserDefinedTypeName(udt, full:true, member:member); - /* Contract.Assume(udt != null); // precondition; this ought to be declared as a Requires in the superclass if (udt is ArrowType) { - return ArrowType.Arrow_FullCompileName; + var error = string.Format("UserDefinedTypeName {0} is not yet supported", udt.Name); + throw new Exception(error); + //return ArrowType.Arrow_FullCompileName; } var cl = udt.ResolvedClass; if (cl == null) { @@ -1428,7 +1384,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb return IdProtect(cl.Module.CompileName); } else { return IdProtect(cl.Module.CompileName) + "." + IdProtect(cl.CompileName); - } */ + } } protected override void EmitThis(TargetWriter wr) { From c2ad85653a54bfd03dd43d662cc7b148da4cb161 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 31 Aug 2019 22:01:57 -0400 Subject: [PATCH 019/573] More formatting experiments, plus some progress fixing arrays.cpp --- Source/Dafny/Compiler-cpp.cs | 38 +++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 99c4a63b710..fafd3387a11 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -70,17 +70,21 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } var w = wr.NewBlock(string.Format("class {0}", name), ";"); - w.WriteLine("public:"); - - w.WriteLine("// Constructor"); - w.Write(string.Format("{0}(", name)); + //w = w.NewBlock("public:", null, BlockTargetWriter.BraceStyle.Nothing, BlockTargetWriter.BraceStyle.Nothing); + w.Write("public:\n"); + //var w2 = w.ForkSection(true); + //var w2 = w.NewBlock("// Constructor"); + var w2 = w; + + //w2.Write("// Constructor\n"); + w2.Write(string.Format("{0}(", name)); //var w2 = wr.NewBlock(string.Format("{0}(" /* if (typeParameters != null) { WriteRuntimeTypeDescriptorsFormals(typeParameters, false, w); } */ - var fieldWriter = w.NewBlock(")"); + var fieldWriter = w2.NewBlock(")"); /* if (fullPrintName != null) { fieldWriter.WriteLine("this._tname = \"{0}\";", fullPrintName); @@ -94,7 +98,7 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } } */ - var methodWriter = w; + var methodWriter = w2; return new ClassWriter(this, methodWriter, fieldWriter); } @@ -781,7 +785,12 @@ protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, Mem Type elType = UserDefinedType.ArrayElementType(xType); string typeNameSansBrackets, brackets; TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); - return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; + //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; + if (at.Dims == 1) { + return typeNameSansBrackets + "*"; + } else { + throw new Exception("Multi-dimensional arrays are not currently supported"); + } } else if (xType is UserDefinedType) { var udt = (UserDefinedType)xType; var s = FullTypeName(udt, member); @@ -1028,9 +1037,9 @@ protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { protected override void EmitReturn(List outParams, TargetWriter wr) { outParams = outParams.Where(f => !f.IsGhost).ToList(); if (!outParams.Any()) { - wr.WriteLine("return"); + wr.WriteLine("return;"); } else { - wr.WriteLine("return {0}", Util.Comma(outParams, IdName)); + wr.WriteLine("return {0};", Util.Comma(outParams, IdName)); } } @@ -1172,6 +1181,8 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { } void EmitIntegerLiteral(BigInteger i, TextWriter wr) { Contract.Requires(wr != null); + wr.Write(i); + /* if (i == 0) { wr.Write("_dafny.Zero"); } else if (long.MinValue <= i && i <= long.MaxValue) { @@ -1179,6 +1190,7 @@ void EmitIntegerLiteral(BigInteger i, TextWriter wr) { } else { wr.Write("_dafny.IntOfString(\"{0}\")", i); } + */ } protected override void EmitStringLiteral(string str, bool isVerbatim, TextWriter wr) { @@ -1724,6 +1736,10 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, case BinaryExpr.ResolvedOpcode.EqCommon: { if (IsHandleComparison(tok, e0, e1, errorWr)) { opString = "=="; + } else if (IsDirectlyComparable(e0.Type)) { + opString = "=="; + } else if (e0.Type.IsRefType) { + opString = "=="; } else { staticCallString = "_dafny.AreEqual"; } @@ -1733,6 +1749,10 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, if (IsHandleComparison(tok, e0, e1, errorWr)) { opString = "!="; postOpString = "/* handle */"; + } else if (IsDirectlyComparable(e0.Type)) { + opString = "!="; + } else if (e0.Type.IsRefType) { + opString = "!="; } else { preOpString = "!"; staticCallString = "_dafny.AreEqual"; From ca2e1b4aafc635c6ca10f2933fa8af0d51c7ca49 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 3 Sep 2019 22:59:43 -0400 Subject: [PATCH 020/573] Fixes to get arrays.dfy (simplified) passing --- Source/Dafny/Compiler-cpp.cs | 18 ++++++++++-------- Test/c++/Makefile | 2 ++ Test/c++/arrays.dfy | 2 ++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fafd3387a11..630e3f1dd2b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -973,7 +973,7 @@ protected override void DeclareLocalVar(string name, Type/*?*/ type, Bpl.IToken/ if (type != null) { wr.Write("{0} ", TypeName(type, wr, tok)); } else { - wr.Write("var "); + wr.Write("auto "); } wr.Write("{0}", name); if (leaveRoomForRhs) { @@ -989,16 +989,18 @@ protected override TargetWriter DeclareLocalVar(string name, Type/*?*/ type, Bpl if (type != null) { wr.Write("{0} ", TypeName(type, wr, tok)); } else { - wr.Write("var "); + wr.Write("auto "); } - wr.Write("{0}", name); - return wr.Fork(); /// TODO: Not sure when this should be called + wr.Write("{0} = ", name); + var w = wr.Fork(); + wr.WriteLine(";"); + return w; } protected override bool UseReturnStyleOuts(Method m, int nonGhostOutCount) => true; protected override void DeclareOutCollector(string collectorVarName, TargetWriter wr) { - wr.Write("var {0} = ", collectorVarName); + wr.Write("auto {0} = ", collectorVarName); } protected override void DeclareLocalOutVar(string name, Type type, Bpl.IToken tok, string rhs, bool useReturnStyleOuts, TargetWriter wr) { @@ -1020,7 +1022,7 @@ protected override void EmitActualTypeArgs(List typeArgs, Bpl.IToken tok, } protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWriter wr, Bpl.IToken tok) { - return "var " + target; + return "auto " + target; } // ----- Statements ------------------------------------------------------------- @@ -1069,7 +1071,7 @@ protected override void EmitAbsurd(string/*?*/ message, TargetWriter wr) { } protected override BlockTargetWriter CreateForLoop(string indexVar, string bound, TargetWriter wr) { - return wr.NewNamedBlock("for (var {0} = 0; {0} < {1}; {0}++)", indexVar, bound); + return wr.NewNamedBlock("for (auto {0} = 0; {0} < {1}; {0}++)", indexVar, bound); } protected override BlockTargetWriter CreateDoublingForLoop(string indexVar, int start, TargetWriter wr) { @@ -1395,7 +1397,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" return IdProtect(cl.Module.CompileName); } else { - return IdProtect(cl.Module.CompileName) + "." + IdProtect(cl.CompileName); + return IdProtect(cl.Module.CompileName) + "::" + IdProtect(cl.CompileName); } } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 7398dfdaef3..b5eb4407064 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -3,6 +3,8 @@ SRCS=$(wildcard *.cpp) EXECS=$(subst .cpp,,$(SRCS)) DAFNY=../../Binaries/dafny +CXXFLAGS += -Wno-c++11-extensions + #all=$(TARGETS) all:hello integers diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index 7e46fdd5ca9..d6310d87a6e 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -66,6 +66,7 @@ method Main() { PrintArray(a, 23); var n := LinearSearch(a, 23, 17); print n, "\n"; + /* var s : seq := a[..]; print s, "\n"; s := a[2..16]; @@ -78,6 +79,7 @@ method Main() { // Conversion to sequence should copy elements (sequences are immutable!) a[0] := 42; print s, "\n"; + */ PrintArray(null, 0); //PrintArray(null); From 4e836c3e10bbc9448cd49e16152f511a69ce14b7 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 3 Sep 2019 23:01:41 -0400 Subject: [PATCH 021/573] Two temporary changes to abstract compiler; still need work --- Source/Dafny/Compiler.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index bb13065a0da..9b56fc358aa 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -659,6 +659,10 @@ protected void ReadRuntimeSystem(string filename, TextWriter wr) { } protected void WriteFromFile(string inputFilename, TextWriter outputWriter) { +// ****************************************************************** +// TODO: BJP: Restore this! +// ****************************************************************** + return; using (var rd = new StreamReader(new FileStream(inputFilename, System.IO.FileMode.Open, System.IO.FileAccess.Read))) { while (true) { string s = rd.ReadLine(); @@ -2637,7 +2641,10 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { wr.Write("{0}.{1}", qual, compileName); } else { wr.Write(TypeName_Companion(s.Receiver.Type, wr, s.Tok, s.Method)); - wr.Write(".{0}", IdName(s.Method)); +// ****************************************************************** +// TODO: Add an overrideable function for this +// ****************************************************************** + wr.Write("::{0}", IdName(s.Method)); } } List typeArgs; From 53e623a1150caecbe00bdbfc211dedd98d11cd44 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 5 Sep 2019 22:54:52 -0400 Subject: [PATCH 022/573] Expand support for declaring datatypes as structs --- Source/Dafny/Compiler-cpp.cs | 440 ++++++++++++++++++++--------------- Source/Dafny/DafnyAst.cs | 2 + 2 files changed, 258 insertions(+), 184 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 630e3f1dd2b..e0154f4a210 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -185,31 +185,35 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri } protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { - // ===== For inductive datatypes: - // struct Dt { - // uint32_t tag; - // uint32_t field0a; - // uint32_t field1a; - // char field1b; + // Given: + // datatype Example1 = Example1(u:uint32, b:bool) + // datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) + // + // Produce: + // struct Example1 { + // uint32 u; + // bool b; + // Example1(uint32 u, bool b) : u (u), b (b) {} + // }; + // bool is_Example1(struct Example1 d) { return true; } + // + // struct Example2_2a { + // uint32 u; // }; // - // bool is_Ctor0(struct Dt d) { return d.tag == 0; } - // bool is_Ctor1(struct Dt d) { return d.tag == 1; } - // - // struct Dt Dt_Ctor0(uint32_t field0a) { - // struct Dt d; - // d.tag = 0; - // d.field0a = field0a; - // return d; - // } + // struct Example2_2b { + // bool b; + // }; // - // struct Dt Dt_Ctor1(uint32_t field1a, char field1b) { - // struct Dt d; - // d.tag = 1; - // d.field1a = field1a; - // d.field1b = field1b; - // return d; - // } + // struct Example2 { + // enum {TAG_2a, TAG_2b} tag; + // union { + // struct Example2_2a v2a; + // struct Example2_2b v2b; + // }; + // }; + // bool is_Example2_2a(struct Example2 d) { return d.tag == Example2::TAG_2a; } + // bool is_Example2_2b(struct Example2 d) { return d.tag == Example2::TAG_2b; } if (dt is TupleTypeDecl) { // Tuple types are declared once and for all in DafnyRuntime.h @@ -219,180 +223,240 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { string DtT = dt.CompileName; string DtT_protected = IdProtect(DtT); - // from here on, write everything into the new block created here: - wr = wr.NewNamedBlock("struct {0} {{", DtT_protected); - - wr.WriteLine("constructor(tag) { this.$tag = tag; }"); + // Optimize a not-uncommon case + if (dt.Ctors.Count == 1) { + var ws = wr.NewBlock(String.Format("struct {0}", DtT_protected), ";"); + var ctor = dt.Ctors[0]; - if (dt is CoDatatypeDecl) { - throw new Exception("CoDatatypeDecl is not yet supported"); - } - - - - // query properties - var i = 0; - foreach (var ctor in dt.Ctors) { - // collect the names of non-ghost arguments + // Declare the struct members + var i = 0; var argNames = new List(); - var k = 0; - foreach (var formal in ctor.Formals) { - if (!formal.IsGhost) { - argNames.Add(FormalName(formal, k)); - k++; - } - } - // datatype: - // static create_Ctor0(params) { let $dt = new Dt(tag); $dt.param0 = param0; ...; return $dt; } - - wr.Write("static create_{0}(", ctor.CompileName); - if (dt is CoDatatypeDecl) { - wr.Write("$dt{0}", argNames.Count == 0 ? "" : ","); - } - wr.Write(Util.Comma(argNames, nm => nm)); - var w = wr.NewBlock(")"); - if (dt is CoDatatypeDecl) { - var wThen = EmitIf("$dt === null", false, w); - wThen.WriteLine("$dt = new {0}({1});", DtT_protected, i); - wThen.WriteLine("$dt._d = $dt;"); - } else { - w.WriteLine("let $dt = new {0}({1});", DtT_protected, i); - } - foreach (var arg in argNames) { - w.WriteLine("$dt.{0} = {0};", arg); - } - w.WriteLine("return $dt;"); - i++; - } - - // query properties - i = 0; - foreach (var ctor in dt.Ctors) { - // get is_Ctor0() { return _D is Dt_Ctor0; } - wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {2}; }}", ctor.CompileName, DtT_protected, i); - i++; - } -/* - if (dt.HasFinitePossibleValues) { - Contract.Assert(dt.TypeArgs.Count == 0); - using (var w = wr.NewNamedBlock("static get AllSingletonConstructors()")) { - w.WriteLine("return this.AllSingletonConstructors_();"); - } - using (var w = wr.NewNamedBlock("static *AllSingletonConstructors_()")) { - foreach (var ctor in dt.Ctors) { - Contract.Assert(ctor.Formals.Count == 0); - w.WriteLine("yield {0}.create_{1}({2});", DtT_protected, ctor.CompileName, dt is CoDatatypeDecl ? "null" : ""); - } - } - } -*/ - // destructors - foreach (var ctor in dt.Ctors) { - foreach (var dtor in ctor.Destructors) { - if (dtor.EnclosingCtors[0] == ctor) { - var arg = dtor.CorrespondingFormals[0]; - if (!arg.IsGhost && arg.HasName) { - // datatype: get dtor_Dtor0() { return this.Dtor0; } - // codatatype: get dtor_Dtor0() { return this._D().Dtor0; } - wr.WriteLine("get dtor_{0}() {{ return this{2}.{1}; }}", arg.CompileName, IdName(arg), dt is CoDatatypeDecl ? "._D()" : ""); - } - } - } - } - - if (dt is IndDatatypeDecl && !(dt is TupleTypeDecl)) { - // toString method - using (var w = wr.NewBlock("toString()")) { - i = 0; - foreach (var ctor in dt.Ctors) { - var cw = EmitIf(string.Format("this.$tag === {0}", i), true, w); - var nm = (dt.Module.IsDefaultModule ? "" : dt.Module.Name + ".") + dt.Name + "." + ctor.Name; - cw.Write("return \"{0}\"", nm); - var sep = " + \"(\" + "; - var anyFormals = false; - var k = 0; - foreach (var arg in ctor.Formals) { - if (!arg.IsGhost) { - anyFormals = true; - cw.Write("{0}_dafny.toString(this.{1})", sep, FormalName(arg, k)); - sep = " + \", \" + "; - k++; - } - } - if (anyFormals) { - cw.Write(" + \")\""); - } - cw.WriteLine(";"); + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + ws.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + argNames.Add(FormalName(arg, i)); i++; } - var wElse = w.NewBlock(""); - wElse.WriteLine("return \"\";"); } - } - // equals method - using (var w = wr.NewBlock("equals(other)")) { - using (var thn = EmitIf("this === other", true, w)) { - EmitReturnExpr("true", thn); - } - i = 0; + // Create a constructor + ws.Write("{0}(", DtT_protected); + WriteFormals("", ctor.Formals, ws); + ws.Write(")"); + if (argNames.Count > 0) { + // Add initializers + ws.Write(" :"); + ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", nm))); + } + ws.WriteLine(" {}"); + + wr.WriteLine("bool is_{0}(struct {1} d) {{ return true; }}", ctor.CompileName, DtT_protected); + } else { + + // Create one struct for each constructor foreach (var ctor in dt.Ctors) { - var thn = EmitIf(string.Format("this.$tag === {0}", i), true, w); - var guard = EmitReturnExpr(thn); - guard.Write("other.$tag === {0}", i); - var k = 0; + var wstruct = wr.NewBlock(String.Format("struct {0}", ctor.CompileName), ";"); + // Declare the struct members + var i = 0; foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { - string nm = FormalName(arg, k); - if (IsDirectlyComparable(arg.Type)) { - guard.Write(" && this.{0} === other.{0}", nm); - } else { - guard.Write(" && _dafny.areEqual(this.{0}, other.{0})", nm); - } - k++; + wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + i++; } } - i++; } - using (var els = w.NewBlock("")) { - els.WriteLine("return false; // unexpected"); + + // Declare the overall tagged union + var ws = wr.NewBlock(String.Format("struct {0}", DtT_protected), ";"); + ws.Write("enum {"); + ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm))); + ws.Write("} tag;\n"); + var wu = ws.NewBlock("union ", ";"); + foreach (var ctor in dt.Ctors) { + wu.WriteLine("struct {0} v_{0};", ctor.CompileName); } - } - // Note: It is important that the following be a class with a static getter Default(), as opposed - // to a simple "{ Default: ... }" object, because we need for any recursive calls in the default - // expression to be evaluated lazily. (More precisely, not evaluated at all, but that will sort - // itself out due to the restrictions placed by the resolver.) - // - // static Rtd(rtd...) { - // return class { - // static get Default() { return Dt.create_CtorK(...); } - // }; - // } - wr.Write("static Rtd("); - WriteRuntimeTypeDescriptorsFormals(UsedTypeParameters(dt), true, wr); - using (var wRtd = wr.NewBlock(")")) { - using (var wClass = wRtd.NewBlock("return class", ";")) { - using (var wDefault = wClass.NewBlock("static get Default()")) { - wDefault.Write("return "); - DatatypeCtor defaultCtor; - if (dt is IndDatatypeDecl) { - defaultCtor = ((IndDatatypeDecl)dt).DefaultCtor; - } else { - defaultCtor = ((CoDatatypeDecl)dt).Ctors[0]; // pick any one of them (but pick must be the same as in InitializerIsKnown and HasZeroInitializer) - } - var arguments = new TargetWriter(); - string sep = ""; - foreach (var f in defaultCtor.Formals) { - if (!f.IsGhost) { - arguments.Write("{0}{1}", sep, DefaultValue(f.Type, wDefault, f.tok)); - sep = ", "; - } - } - EmitDatatypeValue(dt, defaultCtor, dt is CoDatatypeDecl, arguments.ToString(), wDefault); - wDefault.WriteLine(";"); - } + // Declare type queries + foreach (var ctor in dt.Ctors) { + wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {1}::TAG_{0}; }}", ctor.CompileName, DtT_protected); } + + + // // from here on, write everything into the new block created here: + // wr = wr.NewNamedBlock("struct {0} {{", DtT_protected); + + // wr.WriteLine("constructor(tag) { this.$tag = tag; }"); + + // if (dt is CoDatatypeDecl) { + // throw new Exception("CoDatatypeDecl is not yet supported"); + // } + + + + // // query properties + // var i = 0; + // foreach (var ctor in dt.Ctors) { + // // collect the names of non-ghost arguments + // var argNames = new List(); + // var k = 0; + // foreach (var formal in ctor.Formals) { + // if (!formal.IsGhost) { + // argNames.Add(FormalName(formal, k)); + // k++; + // } + // } + // // datatype: + // // static create_Ctor0(params) { let $dt = new Dt(tag); $dt.param0 = param0; ...; return $dt; } + + // wr.Write("static create_{0}(", ctor.CompileName); + // if (dt is CoDatatypeDecl) { + // wr.Write("$dt{0}", argNames.Count == 0 ? "" : ","); + // } + // wr.Write(Util.Comma(argNames, nm => nm)); + // var w = wr.NewBlock(")"); + // if (dt is CoDatatypeDecl) { + // var wThen = EmitIf("$dt === null", false, w); + // wThen.WriteLine("$dt = new {0}({1});", DtT_protected, i); + // wThen.WriteLine("$dt._d = $dt;"); + // } else { + // w.WriteLine("let $dt = new {0}({1});", DtT_protected, i); + // } + // foreach (var arg in argNames) { + // w.WriteLine("$dt.{0} = {0};", arg); + // } + // w.WriteLine("return $dt;"); + // i++; + // } + + // // query properties + // i = 0; + // foreach (var ctor in dt.Ctors) { + // // get is_Ctor0() { return _D is Dt_Ctor0; } + // wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {2}; }}", ctor.CompileName, DtT_protected, i); + // i++; + // } + // /* + // if (dt.HasFinitePossibleValues) { + // Contract.Assert(dt.TypeArgs.Count == 0); + // using (var w = wr.NewNamedBlock("static get AllSingletonConstructors()")) { + // w.WriteLine("return this.AllSingletonConstructors_();"); + // } + // using (var w = wr.NewNamedBlock("static *AllSingletonConstructors_()")) { + // foreach (var ctor in dt.Ctors) { + // Contract.Assert(ctor.Formals.Count == 0); + // w.WriteLine("yield {0}.create_{1}({2});", DtT_protected, ctor.CompileName, dt is CoDatatypeDecl ? "null" : ""); + // } + // } + // } + // */ + // // destructors + // foreach (var ctor in dt.Ctors) { + // foreach (var dtor in ctor.Destructors) { + // if (dtor.EnclosingCtors[0] == ctor) { + // var arg = dtor.CorrespondingFormals[0]; + // if (!arg.IsGhost && arg.HasName) { + // // datatype: get dtor_Dtor0() { return this.Dtor0; } + // // codatatype: get dtor_Dtor0() { return this._D().Dtor0; } + // wr.WriteLine("get dtor_{0}() {{ return this{2}.{1}; }}", arg.CompileName, IdName(arg), dt is CoDatatypeDecl ? "._D()" : ""); + // } + // } + // } + // } + + // if (dt is IndDatatypeDecl && !(dt is TupleTypeDecl)) { + // // toString method + // using (var w = wr.NewBlock("toString()")) { + // i = 0; + // foreach (var ctor in dt.Ctors) { + // var cw = EmitIf(string.Format("this.$tag === {0}", i), true, w); + // var nm = (dt.Module.IsDefaultModule ? "" : dt.Module.Name + ".") + dt.Name + "." + ctor.Name; + // cw.Write("return \"{0}\"", nm); + // var sep = " + \"(\" + "; + // var anyFormals = false; + // var k = 0; + // foreach (var arg in ctor.Formals) { + // if (!arg.IsGhost) { + // anyFormals = true; + // cw.Write("{0}_dafny.toString(this.{1})", sep, FormalName(arg, k)); + // sep = " + \", \" + "; + // k++; + // } + // } + // if (anyFormals) { + // cw.Write(" + \")\""); + // } + // cw.WriteLine(";"); + // i++; + // } + // var wElse = w.NewBlock(""); + // wElse.WriteLine("return \"\";"); + // } + // } + + // // equals method + // using (var w = wr.NewBlock("equals(other)")) { + // using (var thn = EmitIf("this === other", true, w)) { + // EmitReturnExpr("true", thn); + // } + // i = 0; + // foreach (var ctor in dt.Ctors) { + // var thn = EmitIf(string.Format("this.$tag === {0}", i), true, w); + // var guard = EmitReturnExpr(thn); + // guard.Write("other.$tag === {0}", i); + // var k = 0; + // foreach (Formal arg in ctor.Formals) { + // if (!arg.IsGhost) { + // string nm = FormalName(arg, k); + // if (IsDirectlyComparable(arg.Type)) { + // guard.Write(" && this.{0} === other.{0}", nm); + // } else { + // guard.Write(" && _dafny.areEqual(this.{0}, other.{0})", nm); + // } + // k++; + // } + // } + // i++; + // } + // using (var els = w.NewBlock("")) { + // els.WriteLine("return false; // unexpected"); + // } + // } + + // // Note: It is important that the following be a class with a static getter Default(), as opposed + // // to a simple "{ Default: ... }" object, because we need for any recursive calls in the default + // // expression to be evaluated lazily. (More precisely, not evaluated at all, but that will sort + // // itself out due to the restrictions placed by the resolver.) + // // + // // static Rtd(rtd...) { + // // return class { + // // static get Default() { return Dt.create_CtorK(...); } + // // }; + // // } + // wr.Write("static Rtd("); + // WriteRuntimeTypeDescriptorsFormals(UsedTypeParameters(dt), true, wr); + // using (var wRtd = wr.NewBlock(")")) { + // using (var wClass = wRtd.NewBlock("return class", ";")) { + // using (var wDefault = wClass.NewBlock("static get Default()")) { + // wDefault.Write("return "); + // DatatypeCtor defaultCtor; + // if (dt is IndDatatypeDecl) { + // defaultCtor = ((IndDatatypeDecl)dt).DefaultCtor; + // } else { + // defaultCtor = ((CoDatatypeDecl)dt).Ctors[0]; // pick any one of them (but pick must be the same as in InitializerIsKnown and HasZeroInitializer) + // } + // var arguments = new TargetWriter(); + // string sep = ""; + // foreach (var f in defaultCtor.Formals) { + // if (!f.IsGhost) { + // arguments.Write("{0}{1}", sep, DefaultValue(f.Type, wDefault, f.tok)); + // sep = ", "; + // } + // } + // EmitDatatypeValue(dt, defaultCtor, dt is CoDatatypeDecl, arguments.ToString(), wDefault); + // wDefault.WriteLine(";"); + // } + // } + // } } } @@ -626,8 +690,12 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA Contract.Requires(typeParams != null); Contract.Requires(wr != null); - var error = string.Format("WriteRuntimeTypeDescriptorsFormals not yet supported"); - throw new Exception(error); + if (typeParams.Count == 0) { + return 0; + } else { + var error = string.Format("WriteRuntimeTypeDescriptorsFormals not yet supported"); + throw new Exception(error); + } /* int c = 0; foreach (var tp in typeParams) { @@ -1605,12 +1673,16 @@ protected override TargetWriter EmitBetaRedex(List boundVars, List typeArgs, Type bvType, TargetWriter wr) { if (ctor.EnclosingDatatype is TupleTypeDecl) { wr.Write("({0})[{1}]", source, formalNonGhostIndex); } else { var dtorName = FormalName(dtor, formalNonGhostIndex); - wr.Write("({0}){1}.{2}", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName); + wr.Write("({0}){1}.v_{3}.{2}", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName, ctor.CompileName); } } diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index d491239082e..01ce7a9e0ee 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -2926,6 +2926,8 @@ public static string IdProtect(string name) { return JavaScriptCompiler.PublicIdProtect(name); case DafnyOptions.CompilationTarget.Go: return GoCompiler.PublicIdProtect(name); + case DafnyOptions.CompilationTarget.Cpp: + return CppCompiler.PublicIdProtect(name); default: Contract.Assert(false); // unexpected compile target return name; From 0f7d17d1867ae0f2ddb8a93c56b54c040813bc26 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 6 Sep 2019 15:08:05 -0400 Subject: [PATCH 023/573] More progress on datatypes --- Binaries/DafnyRuntime.cs | 0 Source/Dafny/Compiler-cpp.cs | 52 ++++++++++++++++++++++++++++++++---- Test/c++/Makefile | 5 +++- 3 files changed, 51 insertions(+), 6 deletions(-) mode change 100644 => 100755 Binaries/DafnyRuntime.cs diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs old mode 100644 new mode 100755 diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index e0154f4a210..7f4a7f4cd31 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -4,6 +4,7 @@ // //----------------------------------------------------------------------------- using System; +using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Numerics; @@ -211,6 +212,12 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // struct Example2_2a v2a; // struct Example2_2b v2b; // }; + // static Example2 create_Ex2a(uint32 u) { + // Example2 result; + // result.tag = TAG_Ex2a; + // result.v_Ex2a.u = u; + // return result; + // } // }; // bool is_Example2_2a(struct Example2 d) { return d.tag == Example2::TAG_2a; } // bool is_Example2_2b(struct Example2 d) { return d.tag == Example2::TAG_2b; } @@ -239,7 +246,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - // Create a constructor + // Create a constructor with arguments ws.Write("{0}(", DtT_protected); WriteFormals("", ctor.Formals, ws); ws.Write(")"); @@ -249,6 +256,12 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", nm))); } ws.WriteLine(" {}"); + + // Create a constructor with no arguments + var wc = ws.NewNamedBlock("{0}()", DtT_protected); + foreach (var arg in ctor.Formals) { + wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); + } wr.WriteLine("bool is_{0}(struct {1} d) {{ return true; }}", ctor.CompileName, DtT_protected); } else { @@ -275,6 +288,29 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { foreach (var ctor in dt.Ctors) { wu.WriteLine("struct {0} v_{0};", ctor.CompileName); } + + // Declare static "constructors" for each Dafny constructor + foreach (var ctor in dt.Ctors) + { + var argNames = new List(); + foreach (Formal arg in ctor.Formals) + { + if (!arg.IsGhost) + { + argNames.Add(arg.CompileName); + } + } + + var wc = wr.NewNamedBlock("static {0} create_{1}({2})", + DtT_protected, ctor.CompileName, + Util.Comma(argNames, nm => nm)); + wc.WriteLine("{0} result;", DtT_protected); + wc.WriteLine("result.tag = TAG_{0};", ctor.CompileName); + foreach (Formal arg in ctor.Formals) + { + wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + } + } // Declare type queries foreach (var ctor in dt.Ctors) { @@ -1487,10 +1523,16 @@ void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string } else if (!isCoCall) { // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) - wr.Write("{0}.create_{1}({2}{3})", - dtName, ctorName, - dt is IndDatatypeDecl ? "" : arguments.Length == 0 ? "null" : "null, ", - arguments); + if (dt.Ctors.Count == 1) { + wr.Write("{0}({1})", + dtName, + arguments); + } else { + wr.Write("{0}.create_{1}({2})", + dtName, ctorName, + arguments); + } + } else { // Co-recursive call // Generate: Dt.lazy_Ctor(($dt) => Dt.create_Ctor($dt, args)) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index b5eb4407064..4594146fea5 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -9,7 +9,10 @@ CXXFLAGS += -Wno-c++11-extensions all:hello integers %.cpp: %.dfy $(DAFNY) - $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + +%.cs: %.dfy $(DAFNY) + $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h $(CXX) -o $@ $< From 72ea6ff5237318b2452c91aa3c5f90885e1114e5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 6 Sep 2019 20:56:39 -0400 Subject: [PATCH 024/573] We can compile datatypes.dfy --- Source/Dafny/Compiler-cpp.cs | 45 ++++++++++++++++++++++++++++-------- Test/c++/datatypes.dfy | 11 --------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7f4a7f4cd31..c4b53dd4161 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -301,15 +301,16 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - var wc = wr.NewNamedBlock("static {0} create_{1}({2})", + var wc = ws.NewNamedBlock("static {0} create_{1}({2})", DtT_protected, ctor.CompileName, - Util.Comma(argNames, nm => nm)); + DeclareFormals(ctor.Formals)); wc.WriteLine("{0} result;", DtT_protected); - wc.WriteLine("result.tag = TAG_{0};", ctor.CompileName); + wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); foreach (Formal arg in ctor.Formals) { wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); } + wc.WriteLine("return result;"); } // Declare type queries @@ -1063,16 +1064,42 @@ protected void DeclareField(string name, bool isStatic, bool isConst, Type type, */ } + private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam) { + if (isInParam) { + return String.Format("{0}{2} {1}", prefix, name, TypeName(type, null, tok)); + } else { + return null; + } + } + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam, TextWriter wr) { - if (isInParam) { - var s = String.Format("{0}{2} {1}", prefix, name, TypeName(type, wr, tok)); - wr.Write("{0}{2} {1}", prefix, name, TypeName(type, wr, tok)); - return true; + var formal_str = DeclareFormalString(prefix, name, type, tok, isInParam); + if (formal_str != null) { + wr.Write(formal_str); + return true; } else { return false; } } + private string DeclareFormals(List formals) { + var i = 0; + var ret = ""; + var sep = ""; + foreach (Formal arg in formals) { + if (!arg.IsGhost) { + string name = FormalName(arg, i); + string decl = DeclareFormalString(sep, name, arg.Type, arg.tok, arg.InParam); + if (decl != null) { + ret += decl; + sep = ", "; + } + i++; + } + } + return ret; + } + protected override void DeclareLocalVar(string name, Type/*?*/ type, Bpl.IToken/*?*/ tok, bool leaveRoomForRhs, string/*?*/ rhs, TargetWriter wr) { if (type != null) { wr.Write("{0} ", TypeName(type, wr, tok)); @@ -1515,7 +1542,7 @@ protected override void EmitDatatypeValue(DatatypeValue dtv, string arguments, T } void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string arguments, TargetWriter wr) { - var dtName = dt.FullCompileName; + var dtName = dt.CompileName; var ctorName = ctor.CompileName; if (dt is TupleTypeDecl) { @@ -1528,7 +1555,7 @@ void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string dtName, arguments); } else { - wr.Write("{0}.create_{1}({2})", + wr.Write("{0}::create_{1}({2})", dtName, ctorName, arguments); } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 3856638f8a8..30b327839db 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,15 +1,4 @@ -//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 -//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 -//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 -//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 -//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 -//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 -//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 -//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 -//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 -//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) From 407a2be9306ad35831f0b28c895b502f6ba50744 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Sep 2019 11:15:15 -0400 Subject: [PATCH 025/573] Emit a default case for multi-constructor datatypes --- Source/Dafny/Compiler-cpp.cs | 204 ++++------------------------------- 1 file changed, 19 insertions(+), 185 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c4b53dd4161..f625ccb85cc 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -301,199 +301,33 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - var wc = ws.NewNamedBlock("static {0} create_{1}({2})", - DtT_protected, ctor.CompileName, - DeclareFormals(ctor.Formals)); - wc.WriteLine("{0} result;", DtT_protected); - wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); - foreach (Formal arg in ctor.Formals) + using (var wc = ws.NewNamedBlock("static {0} create_{1}({2})", + DtT_protected, ctor.CompileName, + DeclareFormals(ctor.Formals))) { + wc.WriteLine("{0} result;", DtT_protected); + wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); + foreach (Formal arg in ctor.Formals) + { + wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + } + wc.WriteLine("return result;"); + } + } + + // Declare a default constructor + using (var wd = ws.NewNamedBlock(String.Format("{0}()", DtT_protected))) { + var default_ctor = dt.Ctors[0]; // Arbitrarily choose the first one + wd.WriteLine("tag = {0}::TAG_{1};", DtT_protected, default_ctor.CompileName); + foreach (Formal arg in default_ctor.Formals) { - wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + wd.WriteLine("v_{0}.{1} = {2};", default_ctor.CompileName, arg.CompileName, DefaultValue(arg.Type, wd, arg.tok)); } - wc.WriteLine("return result;"); } // Declare type queries foreach (var ctor in dt.Ctors) { wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {1}::TAG_{0}; }}", ctor.CompileName, DtT_protected); } - - - // // from here on, write everything into the new block created here: - // wr = wr.NewNamedBlock("struct {0} {{", DtT_protected); - - // wr.WriteLine("constructor(tag) { this.$tag = tag; }"); - - // if (dt is CoDatatypeDecl) { - // throw new Exception("CoDatatypeDecl is not yet supported"); - // } - - - - // // query properties - // var i = 0; - // foreach (var ctor in dt.Ctors) { - // // collect the names of non-ghost arguments - // var argNames = new List(); - // var k = 0; - // foreach (var formal in ctor.Formals) { - // if (!formal.IsGhost) { - // argNames.Add(FormalName(formal, k)); - // k++; - // } - // } - // // datatype: - // // static create_Ctor0(params) { let $dt = new Dt(tag); $dt.param0 = param0; ...; return $dt; } - - // wr.Write("static create_{0}(", ctor.CompileName); - // if (dt is CoDatatypeDecl) { - // wr.Write("$dt{0}", argNames.Count == 0 ? "" : ","); - // } - // wr.Write(Util.Comma(argNames, nm => nm)); - // var w = wr.NewBlock(")"); - // if (dt is CoDatatypeDecl) { - // var wThen = EmitIf("$dt === null", false, w); - // wThen.WriteLine("$dt = new {0}({1});", DtT_protected, i); - // wThen.WriteLine("$dt._d = $dt;"); - // } else { - // w.WriteLine("let $dt = new {0}({1});", DtT_protected, i); - // } - // foreach (var arg in argNames) { - // w.WriteLine("$dt.{0} = {0};", arg); - // } - // w.WriteLine("return $dt;"); - // i++; - // } - - // // query properties - // i = 0; - // foreach (var ctor in dt.Ctors) { - // // get is_Ctor0() { return _D is Dt_Ctor0; } - // wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {2}; }}", ctor.CompileName, DtT_protected, i); - // i++; - // } - // /* - // if (dt.HasFinitePossibleValues) { - // Contract.Assert(dt.TypeArgs.Count == 0); - // using (var w = wr.NewNamedBlock("static get AllSingletonConstructors()")) { - // w.WriteLine("return this.AllSingletonConstructors_();"); - // } - // using (var w = wr.NewNamedBlock("static *AllSingletonConstructors_()")) { - // foreach (var ctor in dt.Ctors) { - // Contract.Assert(ctor.Formals.Count == 0); - // w.WriteLine("yield {0}.create_{1}({2});", DtT_protected, ctor.CompileName, dt is CoDatatypeDecl ? "null" : ""); - // } - // } - // } - // */ - // // destructors - // foreach (var ctor in dt.Ctors) { - // foreach (var dtor in ctor.Destructors) { - // if (dtor.EnclosingCtors[0] == ctor) { - // var arg = dtor.CorrespondingFormals[0]; - // if (!arg.IsGhost && arg.HasName) { - // // datatype: get dtor_Dtor0() { return this.Dtor0; } - // // codatatype: get dtor_Dtor0() { return this._D().Dtor0; } - // wr.WriteLine("get dtor_{0}() {{ return this{2}.{1}; }}", arg.CompileName, IdName(arg), dt is CoDatatypeDecl ? "._D()" : ""); - // } - // } - // } - // } - - // if (dt is IndDatatypeDecl && !(dt is TupleTypeDecl)) { - // // toString method - // using (var w = wr.NewBlock("toString()")) { - // i = 0; - // foreach (var ctor in dt.Ctors) { - // var cw = EmitIf(string.Format("this.$tag === {0}", i), true, w); - // var nm = (dt.Module.IsDefaultModule ? "" : dt.Module.Name + ".") + dt.Name + "." + ctor.Name; - // cw.Write("return \"{0}\"", nm); - // var sep = " + \"(\" + "; - // var anyFormals = false; - // var k = 0; - // foreach (var arg in ctor.Formals) { - // if (!arg.IsGhost) { - // anyFormals = true; - // cw.Write("{0}_dafny.toString(this.{1})", sep, FormalName(arg, k)); - // sep = " + \", \" + "; - // k++; - // } - // } - // if (anyFormals) { - // cw.Write(" + \")\""); - // } - // cw.WriteLine(";"); - // i++; - // } - // var wElse = w.NewBlock(""); - // wElse.WriteLine("return \"\";"); - // } - // } - - // // equals method - // using (var w = wr.NewBlock("equals(other)")) { - // using (var thn = EmitIf("this === other", true, w)) { - // EmitReturnExpr("true", thn); - // } - // i = 0; - // foreach (var ctor in dt.Ctors) { - // var thn = EmitIf(string.Format("this.$tag === {0}", i), true, w); - // var guard = EmitReturnExpr(thn); - // guard.Write("other.$tag === {0}", i); - // var k = 0; - // foreach (Formal arg in ctor.Formals) { - // if (!arg.IsGhost) { - // string nm = FormalName(arg, k); - // if (IsDirectlyComparable(arg.Type)) { - // guard.Write(" && this.{0} === other.{0}", nm); - // } else { - // guard.Write(" && _dafny.areEqual(this.{0}, other.{0})", nm); - // } - // k++; - // } - // } - // i++; - // } - // using (var els = w.NewBlock("")) { - // els.WriteLine("return false; // unexpected"); - // } - // } - - // // Note: It is important that the following be a class with a static getter Default(), as opposed - // // to a simple "{ Default: ... }" object, because we need for any recursive calls in the default - // // expression to be evaluated lazily. (More precisely, not evaluated at all, but that will sort - // // itself out due to the restrictions placed by the resolver.) - // // - // // static Rtd(rtd...) { - // // return class { - // // static get Default() { return Dt.create_CtorK(...); } - // // }; - // // } - // wr.Write("static Rtd("); - // WriteRuntimeTypeDescriptorsFormals(UsedTypeParameters(dt), true, wr); - // using (var wRtd = wr.NewBlock(")")) { - // using (var wClass = wRtd.NewBlock("return class", ";")) { - // using (var wDefault = wClass.NewBlock("static get Default()")) { - // wDefault.Write("return "); - // DatatypeCtor defaultCtor; - // if (dt is IndDatatypeDecl) { - // defaultCtor = ((IndDatatypeDecl)dt).DefaultCtor; - // } else { - // defaultCtor = ((CoDatatypeDecl)dt).Ctors[0]; // pick any one of them (but pick must be the same as in InitializerIsKnown and HasZeroInitializer) - // } - // var arguments = new TargetWriter(); - // string sep = ""; - // foreach (var f in defaultCtor.Formals) { - // if (!f.IsGhost) { - // arguments.Write("{0}{1}", sep, DefaultValue(f.Type, wDefault, f.tok)); - // sep = ", "; - // } - // } - // EmitDatatypeValue(dt, defaultCtor, dt is CoDatatypeDecl, arguments.ToString(), wDefault); - // wDefault.WriteLine(";"); - // } - // } - // } } } From 94f1e5dac4abc3c770c529ff1357bd510c01f255 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Sep 2019 11:38:19 -0400 Subject: [PATCH 026/573] Add support for generic methods --- Source/Dafny/Compiler-cpp.cs | 20 ++++++++++++++------ Test/c++/Makefile | 2 +- Test/c++/arrays.dfy | 18 ++---------------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index f625ccb85cc..a2ca9d70c7d 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -114,6 +114,13 @@ protected override IClassWriter CreateTrait(string name, bool isExtern, List targs) { + Contract.Requires(cce.NonNullElements(targs)); + Contract.Ensures(Contract.Result() != null); + + return Util.Comma(targs, tp => "typename " + IdName(tp)); + } + protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWriter wr) { // An iterator is compiled as follows: // public class MyIteratorExample @@ -470,16 +477,15 @@ public void Finish() { } return null; } + if (m.TypeArgs.Count != 0) { + wr.WriteLine("template <{0}>", TypeParameters(m.TypeArgs)); + } + wr.Write("{0}{1} {2}", m.IsStatic ? "static " : "", targetReturnTypeReplacement ?? "void", IdName(m)); - if (m.TypeArgs.Count != 0) { - var error = string.Format("Type parameters in method {0} are not yet supported", m); - throw new Exception(error); - //wr.Write("<{0}>", TypeParameters(m.TypeArgs)); - } wr.Write("("); int nIns = WriteFormals("", m.Ins, wr); if (targetReturnTypeReplacement == null) { @@ -983,7 +989,9 @@ protected override void EmitOutParameterSplits(string outCollector, List } protected override void EmitActualTypeArgs(List typeArgs, Bpl.IToken tok, TextWriter wr) { - // emit nothing + if (typeArgs.Count > 0) { + wr.Write("<{0}>", Util.Comma(typeArgs, tp => TypeName(tp, wr, tok))); + } } protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWriter wr, Bpl.IToken tok) { diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 4594146fea5..8d7513afb57 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -15,7 +15,7 @@ all:hello integers $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h - $(CXX) -o $@ $< + $(CXX) $(CXXFLAGS) -o $@ $< clean: rm *.cpp $(EXECS) diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index d6310d87a6e..abf788ed903 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -28,20 +28,7 @@ method LinearSearch(a: array, len:uint32, key: uint32) returns (n: uint3 } } -//method PrintArray(a: array?) { -// if (a == null) { -// print "It's null\n"; -// } else { -// var i := 0; -// while i < a.Length { -// print a[i], " "; -// i := i + 1; -// } -// print "\n"; -// } -//} - -method PrintArray(a:array?, len:uint32) +method PrintArray(a:array?, len:uint32) requires a != null ==> len as int == a.Length; { if (a == null) { @@ -81,8 +68,7 @@ method Main() { print s, "\n"; */ - PrintArray(null, 0); - //PrintArray(null); + PrintArray(null, 0); } From 77c79b9241a4d06066b70458bb66f9a0a384aa70 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Sep 2019 12:56:23 -0400 Subject: [PATCH 027/573] Progress towards compiling classes. Current obstacle: C++ distinguishes between type name and class name (e.g., MyClass*), but the current compiler framework doesn't appear to --- Source/Dafny/Compiler-cpp.cs | 66 +++++++++------------ Source/Dafny/Compiler.cs | 10 +++- Test/c++/class.dfy | 110 +++++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 39 deletions(-) create mode 100644 Test/c++/class.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index a2ca9d70c7d..64f30f18b72 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -65,27 +65,25 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, protected override string GetHelperModuleName() => "_dafny"; protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { - if (isExtern || (typeParameters != null && typeParameters.Count > 0) || (superClasses != null && superClasses.Count > 0)) { - var error = string.Format("Class {0} uses an unsupported feature: extern, generic types, and/or traits!", name); + if (isExtern || (superClasses != null && superClasses.Count > 0)) { + var error = string.Format("Class {0} uses an unsupported feature: extern and/or traits!", name); throw new Exception(error); } + if (typeParameters != null && typeParameters.Count > 0) { + wr.WriteLine("template ", TypeParameters(typeParameters)); + } + var w = wr.NewBlock(string.Format("class {0}", name), ";"); //w = w.NewBlock("public:", null, BlockTargetWriter.BraceStyle.Nothing, BlockTargetWriter.BraceStyle.Nothing); w.Write("public:\n"); - //var w2 = w.ForkSection(true); - //var w2 = w.NewBlock("// Constructor"); - var w2 = w; - //w2.Write("// Constructor\n"); - w2.Write(string.Format("{0}(", name)); - //var w2 = wr.NewBlock(string.Format("{0}(" - /* - if (typeParameters != null) { - WriteRuntimeTypeDescriptorsFormals(typeParameters, false, w); - } - */ - var fieldWriter = w2.NewBlock(")"); + w.WriteLine("// Default constructor\n {0}() {{}}", name); + + //w.Write("// Constructor\n"); + //w2.Write(string.Format("{0}(", name)); + //var fieldWriter = w.NewBlock(")"); + var fieldWriter = w; /* if (fullPrintName != null) { fieldWriter.WriteLine("this._tname = \"{0}\";", fullPrintName); @@ -99,10 +97,12 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } } */ - var methodWriter = w2; + var methodWriter = w; return new ClassWriter(this, methodWriter, fieldWriter); } + protected override bool SupportsProperties { get => false; } + protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { var error = string.Format("Asked to create a trait {0}, which is currently unsupported", name); throw new Exception(error); @@ -878,30 +878,23 @@ protected override string TypeName_UDT(string fullCompileName, List typeAr Contract.Assume(fullCompileName != null); // precondition; this ought to be declared as a Requires in the superclass Contract.Assume(typeArgs != null); // precondition; this ought to be declared as a Requires in the superclass string s = IdProtect(fullCompileName); - return s; + return String.Format("std::shared_ptr<{0}>", s); } protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member) { // There are no companion classes for Cpp - return TypeName(type, wr, tok, member); + var t = TypeName(type, wr, tok, member); + t = t.Replace("*", ""); // Remove pointer type when we're using the typename in non-argument contexts + return t; } // ----- Declarations ------------------------------------------------------------- protected void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr) { - if (isStatic || rhs != null) { - var error = string.Format("Field {0} is not supported because it is static or the right-hand side is non-null", name); - throw new Exception(error); - } - wr.WriteLine("{0} {1}", name, TypeName(type, wr, tok)); - /* - if (isStatic) { - var w = wr.NewNamedBlock("static get {0}()", name); - EmitReturnExpr(rhs, w); - } else { - wr.WriteLine("this.{0} = {1};", name, rhs); - } - */ + var stat = isStatic ? "static" : ""; + var r = rhs != null ? rhs : DefaultValue(type, wr, tok); + var t = TypeName(type, wr, tok); + wr.WriteLine("{0} {1} {2} = {3};", stat, t, name, r); } private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam) { @@ -1004,9 +997,9 @@ protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { //wr.Write("_dafny::Print("); //TrExpr(arg, wr, false); //wr.WriteLine(");"); - wr.Write("cout << "); + wr.Write("cout << ("); TrExpr(arg, wr, false); - wr.WriteLine(";"); + wr.WriteLine(");"); } protected override void EmitReturn(List outParams, TargetWriter wr) { @@ -1458,23 +1451,22 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, } } - protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValue, Type expectedType, TargetWriter wr) { - throw new Exception("EmitMemberSelect is not yet supported"); + protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValue, Type expectedType, TargetWriter wr) { var wSource = wr.Fork(); if (isLValue && member is ConstantField) { - wr.Write("._{0}", member.CompileName); + wr.Write("->{0}", member.CompileName); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { wr.Write("[{0}]", dtor.Name); } else if (!isLValue && member is SpecialField sf) { string compiledName, preStr, postStr; GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); if (compiledName.Length != 0) { - wr.Write(".{0}", compiledName); + wr.Write("::{0}", compiledName); } else { // this member selection is handled by some kind of enclosing function call, so nothing to do here } } else { - wr.Write(".{0}", IdName(member)); + wr.Write("->{0}", IdName(member)); } return wSource; } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 9b56fc358aa..c0d7d55c6b4 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -2631,10 +2631,16 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { } if (receiverReplacement != null) { wr.Write(IdProtect(receiverReplacement)); - wr.Write(".{0}", IdName(s.Method)); +// ****************************************************************** +// TODO: Add an overrideable function for this +// ****************************************************************** + wr.Write("->{0}", IdName(s.Method)); } else if (!s.Method.IsStatic) { TrParenExpr(s.Receiver, wr, false); - wr.Write(".{0}", IdName(s.Method)); +// ****************************************************************** +// TODO: Add an overrideable function for this +// ****************************************************************** + wr.Write("->{0}", IdName(s.Method)); } else { string qual, compileName; if (s.Method.IsExtern(out qual, out compileName) && qual != null) { diff --git a/Test/c++/class.dfy b/Test/c++/class.dfy new file mode 100644 index 00000000000..e272a079f6f --- /dev/null +++ b/Test/c++/class.dfy @@ -0,0 +1,110 @@ +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +class MyClass { + var a: uint32 + const b: uint32 + const c:uint32 := 17 + static const d: uint32 + static const e:uint32 := 18 + constructor (x: uint32) + requires x < 100; + ensures this.a < 300; + ensures this.b < 300; + { + a := 100 + x; + b := 200 + x; + } + + function method F(): uint32 { 8 } + static function method G(): uint32 { 9 } + method M() returns (r: uint32) { r := 69; } + static method N() returns (r: uint32) { return 70; } +} + +method CallEm(c: MyClass, t: MyClass, i: MyClass) + requires c.a as int + t.a as int + i.a as int < 1000; + modifies c, t, i +{ + /* + // instance fields + + print c.a, " ", t.a, " ", i.a, " "; + c.a := c.a + 3; + t.a := t.a + 3; + i.a := i.a + 3; + print c.a, " ", t.a, " ", i.a, "\n"; + + // (instance and static) members via instance + + var u; + + print c.b, " "; + print c.c, " "; + */ + print c.d, " "; + /* + print c.e, " "; + print c.F(), " "; + print c.G(), " "; + u := c.M(); + print u, " "; + u := c.N(); + print u, "\n"; + + print t.b, " "; + print t.c, " "; + print t.d, " "; + print t.e, " "; + print t.F(), " "; + print t.G(), " "; + u := t.M(); + print u, " "; + u := t.N(); + print u, "\n"; + + print i.b, " "; + print i.c, " "; + print i.d, " "; + print i.e, " "; + print i.F(), " "; + print i.G(), " "; + u := i.M(); + print u, " "; + u := i.N(); + print u, "\n"; + + // static members via type name + + print MyClass.d, " "; + print MyClass.e, " "; + print MyClass.G(), " "; + u := MyClass.N(); + print u, "\n"; + + print MyClass.d, " "; + print MyClass.e, " "; + print MyClass.G(), " "; + u := MyClass.N(); + print u, "\n"; + + print MyClass.d, " "; + print MyClass.e, " "; + print MyClass.G(), " "; + u := MyClass.N(); + print u, "\n"; + */ + var u := MyClass.N(); + print u, "\n"; +} + +method Main() { + var c := new MyClass(3); + var t := new MyClass(2); + var i := new MyClass(2); + print t == t, " ", i == i, " ", i == t, "\n"; + var t2 : MyClass := t; + var t3 : MyClass; + t3 := t; + CallEm(c, t, i); +} + From f663981ef39b3aa18f0caa87cbb590d12431c12e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Sep 2019 23:19:50 -0400 Subject: [PATCH 028/573] Successfully compile a reduced class example --- Source/Dafny/Compiler-cpp.cs | 65 ++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 64f30f18b72..819eac5926a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -98,7 +98,7 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } */ var methodWriter = w; - return new ClassWriter(this, methodWriter, fieldWriter); + return new ClassWriter(name, this, methodWriter, fieldWriter, wr); } protected override bool SupportsProperties { get => false; } @@ -354,7 +354,8 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { var error = string.Format("Asked to create a non-native newtype {0}, which is currently unsupported", nt); throw new Exception(error); } - var cw = CreateClass("class_" + IdName(nt), null, wr) as CppCompiler.ClassWriter; + var className = "class_" + IdName(nt); + var cw = CreateClass(className, null, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); @@ -364,7 +365,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { TrParenExpr(nt.Witness, witness, false); witness.Write(".toNumber()"); } - DeclareField("Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w); + DeclareField(className, "Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w, wr); } using (var wDefault = w.NewBlock(string.Format("static {0} get_Default()", nt.Name))) { var udt = new UserDefinedType(nt.tok, nt.Name, nt, new List()); @@ -381,7 +382,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { throw new Exception(error); var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); - DeclareField("Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w); + DeclareField(IdName(sst), "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } /* using (var wDefault = w.NewBlock("static get Default()")) { @@ -427,17 +428,21 @@ protected override void GetNativeInfo(NativeType.Selection sel, out string name, } protected class ClassWriter : IClassWriter { + public string ClassName; public readonly CppCompiler Compiler; public readonly BlockTargetWriter MethodWriter; public readonly BlockTargetWriter FieldWriter; + public readonly TargetWriter Finisher; - public ClassWriter(CppCompiler compiler, BlockTargetWriter methodWriter, BlockTargetWriter fieldWriter) { + public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter methodWriter, BlockTargetWriter fieldWriter, TargetWriter finisher) { Contract.Requires(compiler != null); Contract.Requires(methodWriter != null); Contract.Requires(fieldWriter != null); + this.ClassName = className; this.Compiler = compiler; this.MethodWriter = methodWriter; this.FieldWriter = fieldWriter; + this.Finisher = finisher; } public BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody) { @@ -453,7 +458,7 @@ public ClassWriter(CppCompiler compiler, BlockTargetWriter methodWriter, BlockTa return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); } public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { - Compiler.DeclareField(name, isStatic, isConst, type, tok, rhs, FieldWriter); + Compiler.DeclareField(ClassName, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); } public TextWriter/*?*/ ErrorWriter() => MethodWriter; public void Finish() { } @@ -695,7 +700,8 @@ protected override void EmitJumpToTailCallStart(TargetWriter wr) { //wr.WriteLine("continue TAIL_CALL_START;"); } - protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null) { + // Use class_name = true if you want the actual name of the class, not the type used when declaring variables/arguments/etc. + protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null, bool class_name=false) { Contract.Ensures(Contract.Result() != null); Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass @@ -750,7 +756,11 @@ protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, Mem !cl.Module.IsDefaultModule) { s = cl.FullCompileName; } - return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); + if (class_name) { + return IdProtect(s); + } else { + return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); + } } else if (xType is SetType) { Type argType = ((SetType)xType).Arg; if (ComplicatedTypeParameterForCompilation(argType)) { @@ -781,6 +791,18 @@ protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, Mem } } + protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null) { + Contract.Ensures(Contract.Result() != null); + Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass + return TypeName(type, wr, tok, member, false); + } + + protected string ClassName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null) { + Contract.Ensures(Contract.Result() != null); + Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass + return TypeName(type, wr, tok, member, true); + } + public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bpl.IToken/*?*/ tok, bool inAutoInitContext) { var xType = type.NormalizeExpandKeepConstraints(); if (xType is BoolType) { @@ -831,7 +853,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp // WKind.Special is only used with -->, ->, and non-null types: Contract.Assert(ArrowType.IsPartialArrowTypeName(td.Name) || ArrowType.IsTotalArrowTypeName(td.Name) || td is NonNullTypeDecl); if (ArrowType.IsPartialArrowTypeName(td.Name)) { - return "null"; + return "nullptr"; } else if (ArrowType.IsTotalArrowTypeName(td.Name)) { var rangeDefaultValue = TypeInitializationValue(udt.TypeArgs.Last(), wr, tok, inAutoInitContext); // return the lambda expression ((Ty0 x0, Ty1 x1, Ty2 x2) => rangeDefaultValue) @@ -848,7 +870,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp // non-null (non-array) type // even though the type doesn't necessarily have a known initializer, it could be that the the compiler needs to // lay down some bits to please the C#'s compiler's different definite-assignment rules. - return "null"; + return "nullptr"; } } else { return TypeInitializationValue(td.RhsWithArgument(udt.TypeArgs), wr, tok, inAutoInitContext); @@ -858,7 +880,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { return "0"; } else { - return "null"; + return "nullptr"; } } else if (cl is DatatypeDecl) { var dt = (DatatypeDecl)cl; @@ -883,18 +905,21 @@ protected override string TypeName_UDT(string fullCompileName, List typeAr protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member) { // There are no companion classes for Cpp - var t = TypeName(type, wr, tok, member); - t = t.Replace("*", ""); // Remove pointer type when we're using the typename in non-argument contexts + var t = TypeName(type, wr, tok, member, true); return t; } // ----- Declarations ------------------------------------------------------------- - protected void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr) { - var stat = isStatic ? "static" : ""; + protected void DeclareField(string className, string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr, TargetWriter finisher) { var r = rhs != null ? rhs : DefaultValue(type, wr, tok); var t = TypeName(type, wr, tok); - wr.WriteLine("{0} {1} {2} = {3};", stat, t, name, r); + if (isStatic) { + wr.WriteLine("static {0} {1};", t, name); + finisher.WriteLine("{0} {1}::{2} = {3};", t, className, name, r); + } else { + wr.WriteLine("{0} {1} = {2};", t, name, r); + } } private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam) { @@ -991,6 +1016,10 @@ protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWri return "auto " + target; } + protected override void EmitNull(Type type, TargetWriter wr) { + wr.Write("nullptr"); + } + // ----- Statements ------------------------------------------------------------- protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { @@ -1078,7 +1107,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal if (cl != null && cl.Name == "object") { wr.Write("_dafny.NewObject()"); } else { - wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok)); + wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); wr.Write(")"); } @@ -1109,7 +1138,7 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { if (e is StaticReceiverExpr) { wr.Write(TypeName(e.Type, wr, e.tok)); } else if (e.Value == null) { - wr.Write("NULL"); + wr.Write("nullptr"); } else if (e.Value is bool) { wr.Write((bool)e.Value ? "true" : "false"); } else if (e is CharLiteralExpr) { From 37e064c423ef695967786a12517e71aa35e1a16a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Sep 2019 10:13:34 -0400 Subject: [PATCH 029/573] Compile the rest of class.dfy --- Source/Dafny/Compiler-cpp.cs | 6 +++++- Source/Dafny/Compiler.cs | 6 +++--- Test/c++/class.dfy | 6 ------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 819eac5926a..5ff3a360b83 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1486,10 +1486,14 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu wr.Write("->{0}", member.CompileName); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { wr.Write("[{0}]", dtor.Name); + //} else if (member is SpecialField sf && sf.SpecialId == SpecialField.ID.Con) { + } else if (!isLValue && member is SpecialField sf) { string compiledName, preStr, postStr; GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); - if (compiledName.Length != 0) { + if (sf is ConstantField && !member.IsStatic && compiledName.Length != 0) { + wr.Write("->{0}", compiledName); + } else if (compiledName.Length != 0) { wr.Write("::{0}", compiledName); } else { // this member selection is handled by some kind of enclosing function call, so nothing to do here diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index c0d7d55c6b4..b92f7282ba7 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -3440,13 +3440,13 @@ void CompileFunctionCallExpr(FunctionCallExpr e, TargetWriter wr, bool inLetExpr wr = EmitCoercionIfNecessary(f.ResultType, e.Type, e.tok, wr); if (f.IsStatic) { - wr.Write(TypeName_Companion(e.Receiver.Type, wr, e.tok, f)); + wr.Write("{0}::", TypeName_Companion(e.Receiver.Type, wr, e.tok, f)); } else { wr.Write("("); tr(e.Receiver, wr, inLetExprBody); - wr.Write(")"); + wr.Write(")->"); } - wr.Write(".{0}", IdName(f)); + wr.Write(IdName(f)); List typeArgs; if (f.TypeArgs.Count != 0) { typeArgs = f.TypeArgs.ConvertAll(ta => e.TypeArgumentSubstitutions[ta]); diff --git a/Test/c++/class.dfy b/Test/c++/class.dfy index e272a079f6f..54b50e363ea 100644 --- a/Test/c++/class.dfy +++ b/Test/c++/class.dfy @@ -25,7 +25,6 @@ method CallEm(c: MyClass, t: MyClass, i: MyClass) requires c.a as int + t.a as int + i.a as int < 1000; modifies c, t, i { - /* // instance fields print c.a, " ", t.a, " ", i.a, " "; @@ -40,9 +39,7 @@ method CallEm(c: MyClass, t: MyClass, i: MyClass) print c.b, " "; print c.c, " "; - */ print c.d, " "; - /* print c.e, " "; print c.F(), " "; print c.G(), " "; @@ -92,9 +89,6 @@ method CallEm(c: MyClass, t: MyClass, i: MyClass) print MyClass.G(), " "; u := MyClass.N(); print u, "\n"; - */ - var u := MyClass.N(); - print u, "\n"; } method Main() { From 86b06528fe2709d3a231e9d45b96f95eeea41823 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Sep 2019 14:16:14 -0400 Subject: [PATCH 030/573] Bug fixes to get the entire (small) test suite compiling --- Source/Dafny/Compiler-cpp.cs | 2 +- Source/DafnyDriver/DafnyDriver.cs | 4 +++- Test/c++/Makefile | 18 +++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5ff3a360b83..03944b968bd 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -756,7 +756,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* !cl.Module.IsDefaultModule) { s = cl.FullCompileName; } - if (class_name) { + if (class_name || xType.IsTypeParameter || xType.IsDatatype) { // Don't add pointer decorations to class names or type parameters return IdProtect(s); } else { return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 77720fd3b6b..2cf30eec5d7 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -569,7 +569,9 @@ public static bool CompileDafnyProgram(Dafny.Program dafnyProgram, string dafnyP // compile the program into an assembly if (!completeProgram || !invokeCompiler) { // don't compile - return false; + // Caller interprets this as success/fail and returns an error if false, + // but we didn't actually hit an error, we just didn't invoke the compiler + return true; } object compilationResult; diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 8d7513afb57..09044941f3b 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -1,12 +1,20 @@ -SRCS=$(wildcard *.cpp) -EXECS=$(subst .cpp,,$(SRCS)) +DAFNYS=$(wildcard *.dfy) +CPPS=$(subst .dfy,.cpp,$(DAFNYS)) +EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY=../../Binaries/dafny CXXFLAGS += -Wno-c++11-extensions -#all=$(TARGETS) -all:hello integers +.SECONDARY: $(CPPS) + +all:$(EXECS) +#all:hello ints + +vars: + echo $(DAFNYS) + echo $(CPPS) + echo $(EXECS) %.cpp: %.dfy $(DAFNY) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cpp $< @@ -18,4 +26,4 @@ $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h $(CXX) $(CXXFLAGS) -o $@ $< clean: - rm *.cpp $(EXECS) + rm -f *.cpp $(EXECS) From 639cd768bf156f131318b42b9757d1ee95ef226c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Sep 2019 23:31:54 -0400 Subject: [PATCH 031/573] Improve handling of generic types --- Source/Dafny/Compiler-cpp.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 03944b968bd..4c740b59c07 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -71,7 +71,7 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } if (typeParameters != null && typeParameters.Count > 0) { - wr.WriteLine("template ", TypeParameters(typeParameters)); + wr.WriteLine("template <{0}>", TypeParameters(typeParameters)); } var w = wr.NewBlock(string.Format("class {0}", name), ";"); @@ -829,7 +829,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var udt = (UserDefinedType)xType; if (udt.ResolvedParam != null) { if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { - return "undefined"; + return "nullptr"; } else { return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); } @@ -864,7 +864,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (arrayClass.Dims == 1) { return "[]"; } else { - return string.Format("_dafny.newArray(undefined, {0})", Util.Comma(arrayClass.Dims, _ => "0")); + return string.Format("_dafny.newArray(nullptr, {0})", Util.Comma(arrayClass.Dims, _ => "0")); } } else { // non-null (non-array) type @@ -900,7 +900,10 @@ protected override string TypeName_UDT(string fullCompileName, List typeAr Contract.Assume(fullCompileName != null); // precondition; this ought to be declared as a Requires in the superclass Contract.Assume(typeArgs != null); // precondition; this ought to be declared as a Requires in the superclass string s = IdProtect(fullCompileName); - return String.Format("std::shared_ptr<{0}>", s); + + string args = typeArgs.Count > 0 + ? String.Format(" <{0}> ", Util.Comma(typeArgs, tp => TypeName(tp, wr, tok))) : ""; + return String.Format("std::shared_ptr<{0}{1}>", s, args); } protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member) { @@ -1107,7 +1110,9 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal if (cl != null && cl.Name == "object") { wr.Write("_dafny.NewObject()"); } else { - wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); + string targs = type.TypeArgs.Count > 0 + ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; + wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); wr.Write(")"); } From d9764931b069b8e3085ec89e1629b30a27ea0fbf Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 10 Sep 2019 09:28:45 -0400 Subject: [PATCH 032/573] Improve handling of generic datatypes --- Source/Dafny/Compiler-cpp.cs | 89 ++++++++++++++++++++---------------- Test/c++/Makefile | 5 +- Test/c++/datatypes.dfy | 19 ++++++++ 3 files changed, 71 insertions(+), 42 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4c740b59c07..9d74fc8a84b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -61,6 +61,29 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, return w; */ } + + private string TypeParameters(List targs) { + Contract.Requires(cce.NonNullElements(targs)); + Contract.Ensures(Contract.Result() != null); + + return Util.Comma(targs, tp => "typename " + IdName(tp)); + } + + private string DeclareTemplate(List typeArgs) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("template <{0}>", TypeParameters(typeArgs)); + } + return targs; + } + + private string TemplateMethod(List typeArgs) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => ta.CompileName)); + } + return targs; + } protected override string GetHelperModuleName() => "_dafny"; @@ -71,7 +94,7 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* } if (typeParameters != null && typeParameters.Count > 0) { - wr.WriteLine("template <{0}>", TypeParameters(typeParameters)); + wr.WriteLine(DeclareTemplate(typeParameters)); } var w = wr.NewBlock(string.Format("class {0}", name), ";"); @@ -88,14 +111,6 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* if (fullPrintName != null) { fieldWriter.WriteLine("this._tname = \"{0}\";", fullPrintName); } - - if (typeParameters != null) { - foreach (var tp in typeParameters) { - if (tp.Characteristics.MustSupportZeroInitialization) { - fieldWriter.WriteLine("this.{0} = {0};", "rtd$_" + tp.CompileName); - } - } - } */ var methodWriter = w; return new ClassWriter(name, this, methodWriter, fieldWriter, wr); @@ -114,13 +129,6 @@ protected override IClassWriter CreateTrait(string name, bool isExtern, List targs) { - Contract.Requires(cce.NonNullElements(targs)); - Contract.Ensures(Contract.Result() != null); - - return Util.Comma(targs, tp => "typename " + IdName(tp)); - } - protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWriter wr) { // An iterator is compiled as follows: // public class MyIteratorExample @@ -239,9 +247,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Optimize a not-uncommon case if (dt.Ctors.Count == 1) { - var ws = wr.NewBlock(String.Format("struct {0}", DtT_protected), ";"); var ctor = dt.Ctors[0]; - + var ws = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); + // Declare the struct members var i = 0; var argNames = new List(); @@ -269,13 +277,13 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { foreach (var arg in ctor.Formals) { wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); } - - wr.WriteLine("bool is_{0}(struct {1} d) {{ return true; }}", ctor.CompileName, DtT_protected); + + wr.WriteLine("{0}\nbool is_{1}(struct {2}{3} d) {{ return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } else { // Create one struct for each constructor foreach (var ctor in dt.Ctors) { - var wstruct = wr.NewBlock(String.Format("struct {0}", ctor.CompileName), ";"); + var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), ctor.CompileName), ";"); // Declare the struct members var i = 0; foreach (Formal arg in ctor.Formals) { @@ -287,13 +295,13 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } // Declare the overall tagged union - var ws = wr.NewBlock(String.Format("struct {0}", DtT_protected), ";"); + var ws = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.Write("enum {"); ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm))); ws.Write("} tag;\n"); var wu = ws.NewBlock("union ", ";"); foreach (var ctor in dt.Ctors) { - wu.WriteLine("struct {0} v_{0};", ctor.CompileName); + wu.WriteLine("struct {0}{1} v_{0};", ctor.CompileName, TemplateMethod(dt.TypeArgs)); } // Declare static "constructors" for each Dafny constructor @@ -311,7 +319,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { using (var wc = ws.NewNamedBlock("static {0} create_{1}({2})", DtT_protected, ctor.CompileName, DeclareFormals(ctor.Formals))) { - wc.WriteLine("{0} result;", DtT_protected); + wc.WriteLine("{0}{1} result;", DtT_protected, TemplateMethod(dt.TypeArgs)); wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); foreach (Formal arg in ctor.Formals) { @@ -333,7 +341,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Declare type queries foreach (var ctor in dt.Ctors) { - wr.WriteLine("bool is_{0}(struct {1} d) {{ return d.tag == {1}::TAG_{0}; }}", ctor.CompileName, DtT_protected); + wr.WriteLine("{0}\nbool is_{1}(struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } } } @@ -483,7 +491,7 @@ public void Finish() { } } if (m.TypeArgs.Count != 0) { - wr.WriteLine("template <{0}>", TypeParameters(m.TypeArgs)); + wr.WriteLine(DeclareTemplate(m.TypeArgs)); } wr.Write("{0}{1} {2}", @@ -757,7 +765,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* s = cl.FullCompileName; } if (class_name || xType.IsTypeParameter || xType.IsDatatype) { // Don't add pointer decorations to class names or type parameters - return IdProtect(s); + return IdProtect(s) + ActualTypeArgs(xType.TypeArgs); } else { return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); } @@ -896,14 +904,16 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } + private string ActualTypeArgs(List typeArgs) { + return typeArgs.Count > 0 + ? String.Format(" <{0}> ", Util.Comma(typeArgs, tp => TypeName(tp, null, null))) : ""; + } + protected override string TypeName_UDT(string fullCompileName, List typeArgs, TextWriter wr, Bpl.IToken tok) { Contract.Assume(fullCompileName != null); // precondition; this ought to be declared as a Requires in the superclass Contract.Assume(typeArgs != null); // precondition; this ought to be declared as a Requires in the superclass string s = IdProtect(fullCompileName); - - string args = typeArgs.Count > 0 - ? String.Format(" <{0}> ", Util.Comma(typeArgs, tp => TypeName(tp, wr, tok))) : ""; - return String.Format("std::shared_ptr<{0}{1}>", s, args); + return String.Format("std::shared_ptr<{0}{1}>", s, ActualTypeArgs(typeArgs)); } protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member) { @@ -1010,9 +1020,7 @@ protected override void EmitOutParameterSplits(string outCollector, List } protected override void EmitActualTypeArgs(List typeArgs, Bpl.IToken tok, TextWriter wr) { - if (typeArgs.Count > 0) { - wr.Write("<{0}>", Util.Comma(typeArgs, tp => TypeName(tp, wr, tok))); - } + wr.Write(ActualTypeArgs(typeArgs)); } protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWriter wr, Bpl.IToken tok) { @@ -1406,11 +1414,11 @@ protected override void EmitThis(TargetWriter wr) { } protected override void EmitDatatypeValue(DatatypeValue dtv, string arguments, TargetWriter wr) { - var dt = dtv.Ctor.EnclosingDatatype; - EmitDatatypeValue(dt, dtv.Ctor, dtv.IsCoCall, arguments, wr); + EmitDatatypeValue(dtv, dtv.Ctor, dtv.IsCoCall, arguments, wr); } - void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string arguments, TargetWriter wr) { + void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, string arguments, TargetWriter wr) { + var dt = dtv.Ctor.EnclosingDatatype; var dtName = dt.CompileName; var ctorName = ctor.CompileName; @@ -1420,12 +1428,13 @@ void EmitDatatypeValue(DatatypeDecl dt, DatatypeCtor ctor, bool isCoCall, string // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) if (dt.Ctors.Count == 1) { - wr.Write("{0}({1})", + wr.Write("{0}{1}({2})", dtName, + TemplateMethod(dt.TypeArgs), arguments); } else { - wr.Write("{0}::create_{1}({2})", - dtName, ctorName, + wr.Write("{0}{1}::create_{2}({3})", + dtName, ActualTypeArgs(dtv.InferredTypeArgs), ctorName, arguments); } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 09044941f3b..284560e4a03 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -3,6 +3,7 @@ DAFNYS=$(wildcard *.dfy) CPPS=$(subst .dfy,.cpp,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY=../../Binaries/dafny +DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll CXXFLAGS += -Wno-c++11-extensions @@ -16,10 +17,10 @@ vars: echo $(CPPS) echo $(EXECS) -%.cpp: %.dfy $(DAFNY) +%.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cpp $< -%.cs: %.dfy $(DAFNY) +%.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 30b327839db..6d705212c16 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -17,3 +17,22 @@ method Main() { e2 := Ex2b(true); Callee(e2); } + + +datatype Option = None | Some(value:V) + +datatype Err = Fail(err:bool) | Ok(value:V) + + +method matcher(e:Err) { + match e + case Fail(s) => print s; + case Ok(v) => print v; +} + +method GenericTest() { + var v:Option := Some(32); + matcher(Ok(42)); + matcher(Fail(true)); +} + From 7caa794b349338f88b4b5006487716d65c3d140b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 11 Sep 2019 11:33:40 -0400 Subject: [PATCH 033/573] Some basic seq tests --- Test/c++/seqs.dfy | 217 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 Test/c++/seqs.dfy diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy new file mode 100644 index 00000000000..e41a8bf195c --- /dev/null +++ b/Test/c++/seqs.dfy @@ -0,0 +1,217 @@ +newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +method Basic() { + var s:seq := [1, 2, 3]; + print s[1]; + var end := s[1..]; + print end[0]; + if end == s { + print "This is unexpected"; + assert false; + } else { + print "This is expected"; + } + + var start := s[..1]; + var combine := start + end; + if (combine == s) { + print "This is expected"; + } else { + assert false; + print "This is unexpected"; + } + + var a := new uint32[3][12, 13, 14]; + var a_seq := a[..]; + a[0] := 42; + var a_seq' := a[..]; + + if a_seq == a_seq' { + print "This is unexpected"; + assert false; + } else { + print "This is expected"; + } +} + + + +/* +/////////////////////////////////////////////////////////////// +// +// Testing sequences from arrays +// +/////////////////////////////////////////////////////////////// + +method H(a: array, c: array, n: uint32, j: uint32) + requires j as int < n as int == a.Length == c.Length +{ + var A := a[..]; + var C := c[..]; + + if { + case A[j] == C[j] => + assert a[j] == c[j]; + case forall i :: 0 <= i < n ==> A[i] == C[i] => + assert a[j] == c[j]; + case forall i :: 0 <= i < n ==> A[i] == C[i] => + assert forall i :: 0 <= i < n ==> a[i] == c[i]; + case A == C => + assert forall i :: 0 <= i < n ==> A[i] == C[i]; + case A == C => + assert forall i :: 0 <= i < n ==> a[i] == c[i]; + case true => + } +} + +method K(a: array, c: array, n: uint32) + requires n as int <= a.Length && n as int <= c.Length +{ + var A := a[..n]; + var C := c[..n]; + if { + case A == C => + assert forall i :: 0 <= i < n ==> A[i] == C[i]; + case A == C => + assert forall i :: 0 <= i < n ==> a[i] == c[i]; + case true => + } +} + +method L(a: array, c: array, n: uint32, alen:uint32) + requires n as int <= a.Length == c.Length + requires alen as int == a.Length +{ + var A := a[n..]; + var C := c[n..]; + var h := alen - n; + if { + case A == C => + assert forall i :: 0 <= i < h ==> A[i] == C[i]; + case A == C => + assert forall i :: n <= i < n + h ==> a[i] == c[i]; + case true => + } +} + +method M(a: array, c: array, alen:uint32, clen:uint32, m: uint32, n: uint32, k: uint32, l: uint32) + requires alen as int == a.Length + requires clen as int == c.Length + requires k as int + m as int <= a.Length + requires l as int + n as int <= c.Length + requires alen as int < 0x80000000 + requires clen as int < (0x100000000 / 2) + requires k as int < (0x100000000 / 2) + requires l as int < (0x100000000 / 2) + requires m as int < (0x100000000 / 2) + requires n as int < (0x100000000 / 2) +{ + if { + case true => + var A := a[k..k+m]; + var C := c[l..l+n]; + if A == C { + if * { + assert m == n; + } else if * { + assert forall i :: 0 <= i < n ==> A[i] == C[i]; + } else if * { + assert forall i {:nowarn} :: k <= i < k+n ==> A[i-k] == C[i-k]; + } else if * { + assert forall i :: 0 <= i < n ==> A[i] == a[k+i]; + } else if * { + assert forall i :: 0 <= i < n ==> C[i] == c[l+i]; + } else if * { + assert forall i {:nowarn} :: 0 <= i < n ==> a[k+i] == c[l+i]; + } + } + case l+m <= clen && forall i :: 0 <= i < m ==> a[i] == c[l+i] => + assert a[..m] == c[l..l+m]; + case l+alen <= clen && forall i :: k <= i < alen ==> a[i] == c[l+i] => + assert a[k..] == c[l+k..l+alen]; + case l+k+m <= clen && forall i :: k <= i < k+m ==> a[i] == c[l+i] => + assert a[k..k+m] == c[l+k..l+k+m]; + } +} + +/////////////////////////////////////////////////////////////// +// +// Testing sequence slicing +// +/////////////////////////////////////////////////////////////// + +method test(x:seq) + requires |x| == 10 +{ + var elts := x[4:2:3]; + var a, b, c := elts[0], elts[1], elts[2]; + + assert |a| == 4; + assert |b| == 2; + assert |c| == 3; + + assert forall i :: 0 <= i < |a| ==> a[i] == x[i]; + assert forall i :: 0 <= i < |b| ==> b[i] == x[i+4]; + assert forall i :: 0 <= i < |c| ==> c[i] == x[i+6]; + + var elts2 := x[1:5:]; // Leaving off the last length puts the remaining elements in the last seq + var d, e, f := elts2[0], elts2[1], elts2[2]; + assert |d| == 1; + assert |e| == 5; + assert |f| == |x| - (|d| + |e|); + + assert forall i :: 0 <= i < |d| ==> d[i] == x[i]; + assert forall i :: 0 <= i < |e| ==> e[i] == x[i+1]; + assert forall i :: 0 <= i < |f| ==> f[i] == x[i+6]; +} + +newtype MyNumeric = n | 0 <= n < 100 + +method NumericSlice(x: seq, two: MyNumeric) returns (y: seq) + requires 10 <= |x| && two == 2 + ensures |y| == 3 +{ + var slices; + if * { + slices := x[0:two:3:0:]; + } else { + slices := x[1 : 1 : 1 : 3 : two : two : 0]; + assert |slices[5]| == 2; + } + assert |slices| == 5 || |slices| == 7; + return middle(slices); +} + +function method middle(s: seq): G + requires |s| % 2 == 1 +{ + s[|s| / 2] +} + +method MoreTests(s: seq) + requires 10 <= |s| +{ + var t := [3.14, 2.7, 1.41, 1985.44, 100.0, 37.2][1:0:3]; + assert |t| == 3 && t[0] == [3.14] && t[1] == [] && t[2] == [2.7, 1.41, 1985.44]; + + var u := [true, false, false, true][1:1:]; + assert |u| == 3 && u[0][0] && !u[1][0] && u[2] == [false, true]; + + assert s[10:][0] == s[..10]; + assert s[10:][1] == s[10..]; +} + +method Print(s: seq, i: uint32, j: uint32) + requires i < 64 && j < 65 && s != "" + requires |s| < 0x100000000 +{ + // regression tests--these had once produced malformed Boogie in various ways + print Base64Alphabet[i]; + print Base64Alphabet[j]; // error: index out of bounds + if i <= j <= |s| as uint32 { + var ch := s[i]; + var t := s[..i] + s[i..j] + s[j..]; + } +} +const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +*/ From 3a17b4b2d6e260c3fecf8cf68816f700a0c4b197 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 11 Sep 2019 11:35:17 -0400 Subject: [PATCH 034/573] One more test --- Test/c++/seqs.dfy | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index e41a8bf195c..4972594e63f 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -21,6 +21,17 @@ method Basic() { print "This is unexpected"; } + var s' := s[0 := 330]; + if s[0] == 330 { + assert false; + print "This is unexpected"; + } else if s[0] != 1 { + assert false; + print "This is unexpected"; + } else { + print "This is expected"; + } + var a := new uint32[3][12, 13, 14]; var a_seq := a[..]; a[0] := 42; From 2367e061f40ce7596280ab17c4b157d2fd642fca Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Thu, 12 Sep 2019 11:15:22 -0700 Subject: [PATCH 035/573] expose sequence literal method; add seqs tests --- Source/Dafny/Compiler-cpp.cs | 10 ++++++- Test/c++/seqs.dfy | 54 ++++++++++++++++++++++++++++-------- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 9d74fc8a84b..79911f62770 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2050,18 +2050,26 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, TrExpr(e.E, wr, inLetExprBody); } } + + protected void NotSupported(String msg, Bpl.IToken tok) { + throw new Exception(String.Format("{0} is not yet supported (at {1}:{2}:{3})", msg, tok.filename, tok.line, tok.col)); + } + protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { - throw new Exception("EmitCollectionDisplay is not yet supported"); + if (ct is SetType) { + NotSupported("EmitCollectionDisplay/set", tok); wr.Write("_dafny.Set.fromElements"); TrExprList(elements, wr, inLetExprBody); } else if (ct is MultiSetType) { + NotSupported("EmitCollectionDisplay/multiset", tok); wr.Write("_dafny.MultiSet.fromElements"); TrExprList(elements, wr, inLetExprBody); } else { Contract.Assert(ct is SeqType); // follows from precondition TargetWriter wrElements; if (ct.Arg.IsCharType) { + NotSupported("EmitCollectionDisplay/string", tok); // We're really constructing a string. // TODO: It may be that ct.Arg is a type parameter that may stand for char. We currently don't catch that case here. wr.Write("["); diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 4972594e63f..6cb75a16427 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,35 +1,35 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method Basic() { - var s:seq := [1, 2, 3]; - print s[1]; + var s:seq := [1, 2, 3, 4]; + print "Head second:", s[1], "\n"; var end := s[1..]; - print end[0]; + print "Trunc first:", end[0], "\n"; if end == s { - print "This is unexpected"; + print "Head trunc: This is unexpected\n"; assert false; } else { - print "This is expected"; + print "Head trunc: This is expected\n"; } var start := s[..1]; var combine := start + end; if (combine == s) { - print "This is expected"; + print "Combine: This is expected\n"; } else { assert false; - print "This is unexpected"; + print "Combine: This is unexpected\n"; } var s' := s[0 := 330]; if s[0] == 330 { assert false; - print "This is unexpected"; + print "Replace: This is unexpected\n"; } else if s[0] != 1 { assert false; - print "This is unexpected"; + print "Replace: This is unexpected\n"; } else { - print "This is expected"; + print "Replace: This is expected\n"; } var a := new uint32[3][12, 13, 14]; @@ -38,13 +38,38 @@ method Basic() { var a_seq' := a[..]; if a_seq == a_seq' { - print "This is unexpected"; + print "Immutability: This is unexpected\n"; assert false; } else { - print "This is expected"; + print "Immutability: This is expected\n"; } } +method Contains() { + var m1 := [1]; + var m2 := [1, 2]; + var m3 := [1, 2, 3]; + var mm := [m1, m3, m1]; + + if m1 in mm { + print "Membership 1: This is expected\n"; + } else { + print "Membership 1: This is unexpected\n"; + assert false; + } + if m2 in mm { + print "Membership 2: This is unexpected\n"; + assert false; + } else { + print "Membership 2: This is expected\n"; + } + if m3 in mm { + print "Membership 3: This is expected\n"; + } else { + print "Membership 3: This is unexpected\n"; + assert false; + } +} /* @@ -226,3 +251,8 @@ method Print(s: seq, i: uint32, j: uint32) } const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; */ + +method Main() { + Basic(); + Contains(); +} From 88fe8729f858247ef2cf4c40e45a155b5c59e334 Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Thu, 12 Sep 2019 11:25:22 -0700 Subject: [PATCH 036/573] add value equality test --- Test/c++/seqs.dfy | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 6cb75a16427..e5c91588d23 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -46,9 +46,10 @@ method Basic() { } method Contains() { - var m1 := [1]; - var m2 := [1, 2]; - var m3 := [1, 2, 3]; + var m1 := [1]; + var m2 := [1, 2]; + var m3 := [1, 2, 3]; + var m3identical := [1, 2, 3]; var mm := [m1, m3, m1]; if m1 in mm { @@ -69,6 +70,12 @@ method Contains() { print "Membership 3: This is unexpected\n"; assert false; } + if m3identical in mm { + print "Membership 3 value equality: This is expected\n"; + } else { + print "Membership 3 value equality: This is unexpected\n"; + assert false; + } } @@ -135,7 +142,7 @@ method M(a: array, c: array, alen:uint32, clen:uint32, m: uint32 requires clen as int == c.Length requires k as int + m as int <= a.Length requires l as int + n as int <= c.Length - requires alen as int < 0x80000000 + requires alen as int < 0x80000000 requires clen as int < (0x100000000 / 2) requires k as int < (0x100000000 / 2) requires l as int < (0x100000000 / 2) @@ -176,7 +183,7 @@ method M(a: array, c: array, alen:uint32, clen:uint32, m: uint32 // /////////////////////////////////////////////////////////////// -method test(x:seq) +method test(x:seq) requires |x| == 10 { var elts := x[4:2:3]; From 23f6378b0ac8d5a2ad05172bfdc2a938aeb7f1a8 Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Thu, 12 Sep 2019 11:27:54 -0700 Subject: [PATCH 037/573] add value equality test --- Test/c++/seqs.dfy | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index e5c91588d23..5ab4912daa7 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -45,6 +45,18 @@ method Basic() { } } +method ValueEquality() { + var m0 := [1, 2, 3]; + var m1 := m0[1..]; + var m2 := [2, 3]; + if m1 == m2 { + print "ValueEquality: This is expected\n"; + } else { + print "ValueEquality: This is unexpected\n"; + assert false; + } +} + method Contains() { var m1 := [1]; var m2 := [1, 2]; @@ -261,5 +273,6 @@ const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012 method Main() { Basic(); + ValueEquality(); Contains(); } From f413583d1781d4245ff6817cbc9aed622b7b188b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 12 Sep 2019 14:28:14 -0400 Subject: [PATCH 038/573] Restore file copy --- Source/Dafny/Compiler.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index b92f7282ba7..4059d08838a 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -659,10 +659,6 @@ protected void ReadRuntimeSystem(string filename, TextWriter wr) { } protected void WriteFromFile(string inputFilename, TextWriter outputWriter) { -// ****************************************************************** -// TODO: BJP: Restore this! -// ****************************************************************** - return; using (var rd = new StreamReader(new FileStream(inputFilename, System.IO.FileMode.Open, System.IO.FileAccess.Read))) { while (true) { string s = rd.ReadLine(); From 2abf06c7f8ddd8eac06c922062da2c10ba6daade Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 12 Sep 2019 15:06:25 -0400 Subject: [PATCH 039/573] Part way through adding sequences --- Binaries/DafnyRuntime.h | 132 +++++++++++++++++++++++++++++++++++ Source/Dafny/Compiler-cpp.cs | 16 ++++- 2 files changed, 145 insertions(+), 3 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index bbb3bc10f0a..76d079f5831 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -7,3 +7,135 @@ class _dafny { public: static void Print(string s) { cout << s << endl; } }; + +typedef unsigned long long uint64; + +template +class DafnySequence { + public: + DafnySequence() { + seq = NULL; + len = 0; + } + + DafnySequence(std::shared_ptr > other) { + assert(other != nullptr); + this->seq = new T[other->len]; + this->len = other->len; + memcpy(this->seq, other->seq, this->len * sizeof(T)); + } + + static std::shared_ptr > Create(uint64 length, T(*init)(int)) { + std::shared_ptr > ret = std::make_shared >(); + ret->seq = new T[length]; + ret->len = length; + for (uint64 i = 0; i < length; i++) { + ret->seq[i] = init(i); + } + return ret; + } + + /////////////////////////////////////////////////////// + // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay + /////////////////////////////////////////////////////// + std::shared_ptr > stuff(uint64 i, T t) { + seq[i] = t; + return this; + } + + ~DafnySequence() { + delete [] seq; + } + + /* + static std::shared_ptr > asString(string s) { + return std::mk_shared_ptr DafnySequence + } + */ + + // TODO: isPrefixOf, isPropoerPrefixOf + + std::shared_ptr > concatenate(std::shared_ptr > other) { + std::shared_ptr > ret = std::make_shared >(); + ret->len = len + other->len; + ret->seq = new T[ret->len]; + for (uint64 i = 0; i < len; i++) { + ret->seq[i] = seq[i]; + } + for (uint64 i = 0; i < other->len; i++) { + ret->seq[i + len] = other->seq[i]; + } + return ret; + } + + T select(uint64 i) { + return seq[i]; + } + + uint64 length () { return len; } + + std::shared_ptr > update(uint64 i, T t) { + std::shared_ptr > ret = std::make_shared >(this); + ret->seq[i] = t; + return ret; + } + + /////////////////////////////////////////////////////// + // WARNING: May break when comparing references!? + /////////////////////////////////////////////////////// + bool contains(T t) { + for (uint64 i = 0; i < len; i++) { + if (seq[i] == t) { + return true; + } + } + return false; + } + + // Returns the subsequence of values [lo..hi) + std::shared_ptr > subsequence(uint64 lo, uint64 hi) { + std::shared_ptr > ret = std::make_shared >(); + ret->len = hi - lo; + ret->seq = new T[len]; + for (uint64 i = 0; i < ret->len; i++) { + ret->seq[i] = seq[i + lo]; + } + return ret; + } + + // Returns the subsequence of values [lo..length()) + std::shared_ptr > drop(uint64 lo) { + return subsequence(lo, len); + } + + // Returns the subsequence of values [0..hi) + std::shared_ptr > take(uint64 hi) { + return subsequence(0, hi); + } + + // TODO: slice + + friend bool operator==(DafnySequence s0, DafnySequence s1); + + // TODO: hash + // TODO: toString + + + + private: + int len; + T* seq; +}; + +template +bool operator==(DafnySequence &s0, DafnySequence &s1) { + if (s0.length() != s1.length()) { + return false; + } + for (uint64 i = 0; i < s0.length(); i++) { + if (s0.select(i) != s1.select(i)) { + return false; + } + } + return true; +} diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 79911f62770..71a760302a4 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2076,16 +2076,26 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wrElements = wr.Fork(); wr.Write("].join(\"\")"); } else { - wr.Write("_dafny.Seq.of("); - wrElements = wr.Fork(); - wr.Write(")"); + wr.Write("DafnySequence::Create({0}, [](uint64 i) {{ return {1}; }})", elements.Count, DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody)); + //wrElements = wr.Fork(); + //wr.Write(")"); + + for (var i = 0; i < elements.Count; i++) { + wr.Write("->stuff({0}, ", i); + TrExpr(elements[i], wr, inLetExprBody); + wr.Write(")"); + } } + + + /* string sep = ""; foreach (var e in elements) { wrElements.Write(sep); TrExpr(e, wrElements, inLetExprBody); sep = ", "; } + */ } } From bf1d556bd399de349627259438c678b246140b8e Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Thu, 12 Sep 2019 12:23:02 -0700 Subject: [PATCH 040/573] nicer NotSupported exceptions, with tok locations where available --- Source/Dafny/Compiler-cpp.cs | 103 ++++++++++++++++------------------- 1 file changed, 46 insertions(+), 57 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 79911f62770..373998ef562 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -87,10 +87,18 @@ private string TemplateMethod(List typeArgs) { protected override string GetHelperModuleName() => "_dafny"; + protected Exception NotSupported(String msg) { + return new Exception(String.Format("{0} is not yet supported", msg)); + } + + protected Exception NotSupported(String msg, Bpl.IToken tok) { + return new Exception(String.Format("{0} is not yet supported (at {1}:{2}:{3})", msg, tok.filename, tok.line, tok.col)); + } + + protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { if (isExtern || (superClasses != null && superClasses.Count > 0)) { - var error = string.Format("Class {0} uses an unsupported feature: extern and/or traits!", name); - throw new Exception(error); + throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } if (typeParameters != null && typeParameters.Count > 0) { @@ -119,8 +127,7 @@ protected override IClassWriter CreateClass(string name, bool isExtern, string/* protected override bool SupportsProperties { get => false; } protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { - var error = string.Format("Asked to create a trait {0}, which is currently unsupported", name); - throw new Exception(error); + throw NotSupported(String.Format("traits in class {0}", name), tok); /* var w = wr.NewBlock(string.Format("$module.{0} = class {0}", IdProtect(name)), ";"); var fieldWriter = w.NewBlock("constructor ()"); @@ -152,8 +159,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri // yield break; // } // } - var error = string.Format("Asked to create an iterator {0}, which is currently unsupported", iter); - throw new Exception(error); + throw NotSupported(String.Format("iterator {0}", iter)); /* var cw = CreateClass(IdName(iter), iter.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; @@ -359,8 +365,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { EmitIncrementVar("lo", wLoopBody); */ } else { - var error = string.Format("Asked to create a non-native newtype {0}, which is currently unsupported", nt); - throw new Exception(error); + throw NotSupported(String.Format("non-native newtype {0}", nt)); } var className = "class_" + IdName(nt); var cw = CreateClass(className, null, wr) as CppCompiler.ClassWriter; @@ -386,8 +391,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { var cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { - var error = string.Format("Asked to create a subset type {0}, which is currently unsupported", sst); - throw new Exception(error); + throw NotSupported(String.Format("subset type {0}", sst)); var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); DeclareField(IdName(sst), "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); @@ -518,8 +522,7 @@ public void Finish() { } protected BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { wr.Write("{0}{1} {2}", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); if (typeArgs != null && typeArgs.Count != 0) { - var error = string.Format("Type parameters in function {0} are not yet supported", name); - throw new Exception(error); + throw NotSupported(String.Format("type parameters in function {0}", name), tok); //wr.Write("<{0}>", TypeParameters(typeArgs)); } wr.Write("("); @@ -583,8 +586,7 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA if (typeParams.Count == 0) { return 0; } else { - var error = string.Format("WriteRuntimeTypeDescriptorsFormals not yet supported"); - throw new Exception(error); + throw NotSupported("WriteRuntimeTypeDescriptorsFormals"); } /* int c = 0; @@ -617,8 +619,7 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { Contract.Requires(type != null); Contract.Requires(tok != null); Contract.Requires(wr != null); - var error = string.Format("RuntimeTypeDescriptor {0} not yet supported", type); - throw new Exception(error); + throw NotSupported(string.Format("RuntimeTypeDescriptor {0} not yet supported", type), tok); /* var xType = type.NormalizeExpandKeepConstraints(); if (xType is TypeProxy) { @@ -748,7 +749,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* if (at.Dims == 1) { return typeNameSansBrackets + "*"; } else { - throw new Exception("Multi-dimensional arrays are not currently supported"); + throw NotSupported("Multi-dimensional arrays"); } } else if (xType is UserDefinedType) { var udt = (UserDefinedType)xType; @@ -1064,8 +1065,7 @@ protected override void EmitBreak(string/*?*/ label, TargetWriter wr) { } protected override void EmitYield(TargetWriter wr) { - var error = string.Format("EmitYield is not yet supported"); - throw new Exception(error); + throw NotSupported("EmitYield"); //wr.WriteLine("yield null;"); } @@ -1135,7 +1135,7 @@ protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List inTypes, Bpl.IToken } protected override TargetWriter CreateIIFE_ExprBody(Expression source, bool inLetExprBody, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { - throw new Exception("CreateIIFE_ExprBody is not yet supported"); + throw NotSupported("CreateIIFE_ExprBody-A", sourceTok); var w = wr.NewExprBlock("function ({0})", bvName); w.Write("return "); w.BodySuffix = ";" + w.NewLine; @@ -1656,7 +1649,7 @@ protected override TargetWriter CreateIIFE_ExprBody(Expression source, bool inLe } protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { - throw new Exception("CreateIIFE_ExprBody is not yet supported"); + throw NotSupported("CreateIIFE_ExprBody-B", sourceTok); var w = wr.NewExprBlock("function ({0})", bvName); w.Write("return "); w.BodySuffix = ";" + w.NewLine; @@ -1665,13 +1658,13 @@ protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceTy } protected override BlockTargetWriter CreateIIFE0(Type resultType, Bpl.IToken resultTok, TargetWriter wr) { - throw new Exception("CreateIIFE0 is not yet supported"); + throw NotSupported("CreateIIFE0", resultTok); var w = wr.NewBigExprBlock("function ()", "()"); return w; } protected override BlockTargetWriter CreateIIFE1(int source, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { - throw new Exception("CreateIIFE1 is not yet supported"); + throw NotSupported("CreateIIFE1", resultTok); var w = wr.NewExprBlock("function ({0})", bvName); wr.Write("({0})", source); return w; @@ -2051,25 +2044,21 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, } } - protected void NotSupported(String msg, Bpl.IToken tok) { - throw new Exception(String.Format("{0} is not yet supported (at {1}:{2}:{3})", msg, tok.filename, tok.line, tok.col)); - } - protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { if (ct is SetType) { - NotSupported("EmitCollectionDisplay/set", tok); + throw NotSupported("EmitCollectionDisplay/set", tok); wr.Write("_dafny.Set.fromElements"); TrExprList(elements, wr, inLetExprBody); } else if (ct is MultiSetType) { - NotSupported("EmitCollectionDisplay/multiset", tok); + throw NotSupported("EmitCollectionDisplay/multiset", tok); wr.Write("_dafny.MultiSet.fromElements"); TrExprList(elements, wr, inLetExprBody); } else { Contract.Assert(ct is SeqType); // follows from precondition TargetWriter wrElements; if (ct.Arg.IsCharType) { - NotSupported("EmitCollectionDisplay/string", tok); + throw NotSupported("EmitCollectionDisplay/string", tok); // We're really constructing a string. // TODO: It may be that ct.Arg is a type parameter that may stand for char. We currently don't catch that case here. wr.Write("["); @@ -2090,7 +2079,7 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, } protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { - throw new Exception("EmitMapDisplay is not yet supported"); + throw NotSupported("EmitMapDisplay", tok); wr.Write("_dafny.Map.of("); string sep = ""; foreach (ExpressionPair p in elements) { @@ -2106,7 +2095,7 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List otherFileNames, bool hasMain, bool runAfterCompile, TextWriter outputWriter, out object compilationResult) { compilationResult = null; - throw new Exception("Compilation of C++ files is not yet supported"); + throw NotSupported("Compilation of C++ files is not yet supported"); } public override bool RunTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string targetFilename, ReadOnlyCollection otherFileNames, object compilationResult, TextWriter outputWriter) { - throw new Exception("Running C++ programs is not yet supported"); + throw NotSupported("Running C++ programs is not yet supported"); } } } From 2c3278611c3a5bc073bb8bff4a68dfda45702cdf Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 13 Sep 2019 09:16:58 -0400 Subject: [PATCH 041/573] Over-ride names for Dafny collection classes. Should probably enclose them in a namespace --- Source/Dafny/Compiler-cpp.cs | 6 ++++++ Test/c++/Makefile | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0f6f7d0f7e1..de980568b02 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -19,6 +19,12 @@ public class CppCompiler : Compiler { public CppCompiler(ErrorReporter reporter) : base(reporter) { } + + // Shadowing variables in Compiler.cs + new string DafnySetClass = "DafnySet"; + new string DafnyMultiSetClass = "DafnyMultiset"; + new string DafnySeqClass = "DafnySequence"; + new string DafnyMapClass = "DafnyMap"; public override string TargetLanguage => "Cpp"; diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 284560e4a03..9309b8af23e 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -3,9 +3,12 @@ DAFNYS=$(wildcard *.dfy) CPPS=$(subst .dfy,.cpp,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY=../../Binaries/dafny -DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll +DAFNY_RUNTIME_DIR=../../Binaries +DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h +DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) -CXXFLAGS += -Wno-c++11-extensions + +CXXFLAGS += -Wno-c++11-extensions -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) From 4316e2ff9fcad055b047a3673cace1e587e56d06 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 18 Sep 2019 14:17:35 -0400 Subject: [PATCH 042/573] Add some equality tests to class suite --- Test/c++/class.dfy | 56 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/Test/c++/class.dfy b/Test/c++/class.dfy index 54b50e363ea..c05b9b2853b 100644 --- a/Test/c++/class.dfy +++ b/Test/c++/class.dfy @@ -91,7 +91,8 @@ method CallEm(c: MyClass, t: MyClass, i: MyClass) print u, "\n"; } -method Main() { + +method TestMyClass() { var c := new MyClass(3); var t := new MyClass(2); var i := new MyClass(2); @@ -102,3 +103,56 @@ method Main() { CallEm(c, t, i); } + +class AClass { + var x:uint32; + var y:uint32; + + constructor() + { + x := 0; + y := 0; + } +} + +method TestEquality() { + var a := new AClass(); + a.x := 25; + a.y := 15; + + if a == a { + print "EqualityReflexive: This is expected\n"; + } else { + print "EqualityReflexive: This is unexpected\n"; + assert false; + } + + var b := new AClass(); + b.x := 1; + b.y := 2; + + if a == b { + print "ClassAndPtrDiffer: This is unexpected\n"; + assert false; + } else { + print "ClassAndPtrDiffer: This is expected\n"; + } + + var c := new AClass(); + c.x := 25; + c.y := 15; + + + if a == c { + print "DeepEquality: This is unexpected\n"; + assert false; + } else { + print "DeepEquality: This is expected\n"; + } +} + +method Main() { + TestMyClass(); + TestEquality(); +} + From 7606996fe27b751f47cf7c969b18824ad82cc729 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 18 Sep 2019 14:36:12 -0400 Subject: [PATCH 043/573] Need to fill in type parameter in call to Create --- Source/Dafny/Compiler-cpp.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index de980568b02..f0be6fe1def 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2071,7 +2071,10 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wrElements = wr.Fork(); wr.Write("].join(\"\")"); } else { - wr.Write("DafnySequence::Create({0}, [](uint64 i) {{ return {1}; }})", elements.Count, DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody)); + wr.Write("DafnySequence{2}::Create({0}, [](uint64 i) {{ return {1}; }})", + elements.Count, + DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody), + TemplateMethod()); //wrElements = wr.Fork(); //wr.Write(")"); From ae5c185bcc496cd06ea4f41179cf5702da8fa432 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 19 Sep 2019 17:09:51 -0400 Subject: [PATCH 044/573] Add some fixes to emitting seq indexing --- Binaries/DafnyRuntime.h | 4 ++-- Source/Dafny/Compiler-cpp.cs | 14 +++++++------- Test/c++/seqs.dfy | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 76d079f5831..f64e48425c2 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -35,9 +35,9 @@ class DafnySequence { return ret; } - /////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////// // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay - /////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////// std::shared_ptr > stuff(uint64 i, T t) { seq[i] = t; return this; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index f0be6fe1def..fbf370018f3 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1520,7 +1520,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu protected override TargetWriter EmitArraySelect(List indices, Type elmtType, TargetWriter wr) { var w = wr.Fork(); foreach (var index in indices) { - wr.Write("[{0}]", index); + wr.Write("->select({0})", index); } return w; } @@ -1529,9 +1529,9 @@ protected override TargetWriter EmitArraySelect(List indices, Type e Contract.Assert(indices != null && 1 <= indices.Count); // follows from precondition var w = wr.Fork(); foreach (var index in indices) { - wr.Write("["); + wr.Write("->select("); TrExpr(index, wr, inLetExprBody); - wr.Write("]"); + wr.Write(")"); } return w; } @@ -1552,9 +1552,9 @@ protected override void EmitIndexCollectionSelect(Expression source, Expression TrParenExpr(source, wr, inLetExprBody); if (source.Type.NormalizeExpand() is SeqType) { // seq - wr.Write("["); + wr.Write("->select("); TrExpr(index, wr, inLetExprBody); - wr.Write("]"); + wr.Write(")"); } else { // map or imap wr.Write(".get("); @@ -2071,10 +2071,10 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wrElements = wr.Fork(); wr.Write("].join(\"\")"); } else { - wr.Write("DafnySequence{2}::Create({0}, [](uint64 i) {{ return {1}; }})", + wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) {{ return {1}; }})", elements.Count, DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody), - TemplateMethod()); + TypeName(ct.TypeArgs[0], wr, tok, null, false)); //wrElements = wr.Fork(); //wr.Write(")"); diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 5ab4912daa7..c06b8900b85 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -2,6 +2,7 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method Basic() { var s:seq := [1, 2, 3, 4]; + print s[1]; print "Head second:", s[1], "\n"; var end := s[1..]; print "Trunc first:", end[0], "\n"; From e2fb5487843ef960e4c80200e4ed1ceeb584a944 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 19 Sep 2019 22:24:20 -0400 Subject: [PATCH 045/573] Wrestling with C++ templates, shared pointers, and arrays --- Binaries/DafnyRuntime.h | 238 +++++++++++++++++++---------------- Source/Dafny/Compiler-cpp.cs | 50 +++----- Test/c++/Makefile | 2 +- Test/c++/seqs.dfy | 14 +-- 4 files changed, 158 insertions(+), 146 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index f64e48425c2..8d78a621e23 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -11,120 +11,144 @@ class _dafny { typedef unsigned long long uint64; template -class DafnySequence { - public: - DafnySequence() { - seq = NULL; - len = 0; - } - - DafnySequence(std::shared_ptr > other) { - assert(other != nullptr); - this->seq = new T[other->len]; - this->len = other->len; - memcpy(this->seq, other->seq, this->len * sizeof(T)); - } - - static std::shared_ptr > Create(uint64 length, T(*init)(int)) { - std::shared_ptr > ret = std::make_shared >(); - ret->seq = new T[length]; - ret->len = length; - for (uint64 i = 0; i < length; i++) { - ret->seq[i] = init(i); - } - return ret; - } - - ///////////////////////////////////////////////////////////////////////////////////////////// - // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay - ///////////////////////////////////////////////////////////////////////////////////////////// - std::shared_ptr > stuff(uint64 i, T t) { - seq[i] = t; - return this; - } - - ~DafnySequence() { - delete [] seq; +struct DafnySequence { + DafnySequence() { + len = 0; + seq = nullptr; + } + + DafnySequence(uint64 length) { + len = length; + seq = make_shared(new T[len]); + } + + DafnySequence(DafnySequence& other) { + seq = make_shared(new T[other.len]); + len = other.len; + memcpy((void*)seq.get(), (void*)other.seq.get(), len * sizeof(T)); + } + + /* + // Added this overload to avoid error: + // copy assignment operator of 'DafnySequence' is implicitly deleted + // because field 'seq' has a deleted copy assignment operator + DafnySequence& operator=(const DafnySequence& other) { + if (&other == this) { + return *this; } - - /* - static std::shared_ptr > asString(string s) { - return std::mk_shared_ptr DafnySequence + if (len != other.len) { // Avoid our existing allocation if we can + seq.reset(new T[other.len]); } - */ - - // TODO: isPrefixOf, isPropoerPrefixOf - - std::shared_ptr > concatenate(std::shared_ptr > other) { - std::shared_ptr > ret = std::make_shared >(); - ret->len = len + other->len; - ret->seq = new T[ret->len]; - for (uint64 i = 0; i < len; i++) { - ret->seq[i] = seq[i]; - } - for (uint64 i = 0; i < other->len; i++) { - ret->seq[i + len] = other->seq[i]; - } - return ret; + copy(&other.seq[0], &other.seq[0] + min(len, other.len), &seq[0]); + return *this; + } + */ + + static DafnySequence SeqFromArray(uint64 length, T arr[]) { + DafnySequence ret(length); + for (uint64 i = 0; i < length; i++) { + ret.seq.get()[i] = arr[i]; } - - T select(uint64 i) { - return seq[i]; + return ret; + } + + static DafnySequence Create(uint64 length, T(*init)(uint64)) { + DafnySequence ret(length); + for (uint64 i = 0; i < length; i++) { + ret.seq.get()[i] = init(i); } - - uint64 length () { return len; } - - std::shared_ptr > update(uint64 i, T t) { - std::shared_ptr > ret = std::make_shared >(this); - ret->seq[i] = t; - return ret; + return ret; + } + + ///////////////////////////////////////////////////////////////////////////////////////////// + // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay + ///////////////////////////////////////////////////////////////////////////////////////////// + DafnySequence stuff(uint64 i, T t) { + seq[i] = t; + return this; + } + + /* + ~DafnySequence() { + delete [] seq; + } + */ + + /* + static DafnySequence asString(string s) { + //return mk_shared_ptr DafnySequence + } + */ + + // TODO: isPrefixOf, isPropoerPrefixOf + + DafnySequence concatenate(DafnySequence other) { + DafnySequence ret(len + other.len); + for (uint64 i = 0; i < len; i++) { + ret.seq[i] = seq[i]; + } + for (uint64 i = 0; i < other.len; i++) { + ret.seq[i + len] = other.seq[i]; } - - /////////////////////////////////////////////////////// - // WARNING: May break when comparing references!? - /////////////////////////////////////////////////////// - bool contains(T t) { - for (uint64 i = 0; i < len; i++) { - if (seq[i] == t) { - return true; - } + return ret; + } + + T select(uint64 i) { + return seq[i]; + } + + uint64 length () { return len; } + + DafnySequence update(uint64 i, T t) { + DafnySequence ret(this); + ret.seq[i] = t; + return ret; + } + + /////////////////////////////////////////////////////// + // WARNING: May break when comparing references!? + /////////////////////////////////////////////////////// + bool contains(T t) { + for (uint64 i = 0; i < len; i++) { + if (seq[i] == t) { + return true; } - return false; - } - - // Returns the subsequence of values [lo..hi) - std::shared_ptr > subsequence(uint64 lo, uint64 hi) { - std::shared_ptr > ret = std::make_shared >(); - ret->len = hi - lo; - ret->seq = new T[len]; - for (uint64 i = 0; i < ret->len; i++) { - ret->seq[i] = seq[i + lo]; - } - return ret; - } - - // Returns the subsequence of values [lo..length()) - std::shared_ptr > drop(uint64 lo) { - return subsequence(lo, len); - } - - // Returns the subsequence of values [0..hi) - std::shared_ptr > take(uint64 hi) { - return subsequence(0, hi); } - - // TODO: slice - - friend bool operator==(DafnySequence s0, DafnySequence s1); - - // TODO: hash - // TODO: toString - - - - private: - int len; - T* seq; + return false; + } + + // Returns the subsequence of values [lo..hi) + DafnySequence subsequence(uint64 lo, uint64 hi) { + DafnySequence ret(hi - lo); + for (uint64 i = 0; i < ret.len; i++) { + ret.seq[i] = seq[i + lo]; + } + return ret; + } + + // Returns the subsequence of values [lo..length()) + DafnySequence drop(uint64 lo) { + return subsequence(lo, len); + } + + // Returns the subsequence of values [0..hi) + DafnySequence take(uint64 hi) { + return subsequence(0, hi); + } + + // TODO: slice + + friend bool operator==(DafnySequence s0, DafnySequence s1); + + bool equals(DafnySequence other) { + return *this == other; + } + + // TODO: hash + // TODO: toString + + int len; + shared_ptr seq; }; template diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fbf370018f3..fe8754aee2c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1520,7 +1520,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu protected override TargetWriter EmitArraySelect(List indices, Type elmtType, TargetWriter wr) { var w = wr.Fork(); foreach (var index in indices) { - wr.Write("->select({0})", index); + wr.Write("[{0}]", index); } return w; } @@ -1529,9 +1529,9 @@ protected override TargetWriter EmitArraySelect(List indices, Type e Contract.Assert(indices != null && 1 <= indices.Count); // follows from precondition var w = wr.Fork(); foreach (var index in indices) { - wr.Write("->select("); + wr.Write("["); TrExpr(index, wr, inLetExprBody); - wr.Write(")"); + wr.Write("]"); } return w; } @@ -1552,7 +1552,7 @@ protected override void EmitIndexCollectionSelect(Expression source, Expression TrParenExpr(source, wr, inLetExprBody); if (source.Type.NormalizeExpand() is SeqType) { // seq - wr.Write("->select("); + wr.Write(".select("); TrExpr(index, wr, inLetExprBody); wr.Write(")"); } else { @@ -1574,31 +1574,19 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { - wr.Write("_dafny.Seq.of(..."); + wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(source.Type, wr, source.tok, null, true)); } TrParenExpr(source, wr, inLetExprBody); - if (lo != null) { - wr.Write(".slice("); - TrExpr(lo, wr, inLetExprBody); - if (hi != null) { - wr.Write(", "); - TrExpr(hi, wr, inLetExprBody); - } - wr.Write(")"); - } else if (hi != null) { - wr.Write(".slice(0, "); - TrExpr(hi, wr, inLetExprBody); - wr.Write(")"); - } else if (fromArray) { - wr.Write(".slice()"); + if (hi != null) { + TrParenExpr(".take", hi, wr, inLetExprBody); } - if (fromArray) { - wr.Write(")"); + if (lo != null) { + TrParenExpr(".drop", lo, wr, inLetExprBody); } } protected override void EmitSeqConstructionExpr(SeqConstructionExpr expr, bool inLetExprBody, TargetWriter wr) { - wr.Write("_dafny.Seq.Create("); + wr.Write("DafnySequence<{0}>::Create(", TypeName(expr.Type, wr, expr.tok, null, true)); TrExpr(expr.N, wr, inLetExprBody); wr.Write(", "); TrExpr(expr.Initializer, wr, inLetExprBody); @@ -1891,12 +1879,12 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, case BinaryExpr.ResolvedOpcode.MultiSetEq: case BinaryExpr.ResolvedOpcode.MapEq: case BinaryExpr.ResolvedOpcode.SeqEq: - callString = "Equals"; break; + callString = "equals"; break; case BinaryExpr.ResolvedOpcode.SetNeq: case BinaryExpr.ResolvedOpcode.MultiSetNeq: case BinaryExpr.ResolvedOpcode.MapNeq: case BinaryExpr.ResolvedOpcode.SeqNeq: - preOpString = "!"; callString = "Equals"; break; + preOpString = "!"; callString = "equals"; break; case BinaryExpr.ResolvedOpcode.ProperSubset: case BinaryExpr.ResolvedOpcode.ProperMultiSubset: callString = "IsProperSubsetOf"; break; @@ -1916,11 +1904,11 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, case BinaryExpr.ResolvedOpcode.InSet: case BinaryExpr.ResolvedOpcode.InMultiSet: case BinaryExpr.ResolvedOpcode.InMap: - callString = "Contains"; reverseArguments = true; break; + callString = "contains"; reverseArguments = true; break; case BinaryExpr.ResolvedOpcode.NotInSet: case BinaryExpr.ResolvedOpcode.NotInMultiSet: case BinaryExpr.ResolvedOpcode.NotInMap: - preOpString = "!"; callString = "Contains"; reverseArguments = true; break; + preOpString = "!"; callString = "contains"; reverseArguments = true; break; case BinaryExpr.ResolvedOpcode.Union: case BinaryExpr.ResolvedOpcode.MultiSetUnion: callString = "Union"; break; @@ -1936,11 +1924,11 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, case BinaryExpr.ResolvedOpcode.Prefix: callString = "IsPrefixOf"; break; case BinaryExpr.ResolvedOpcode.Concat: - callString = "Concat"; break; + callString = "concatenate"; break; case BinaryExpr.ResolvedOpcode.InSeq: - callString = "Contains"; reverseArguments = true; break; + callString = "contains"; reverseArguments = true; break; case BinaryExpr.ResolvedOpcode.NotInSeq: - preOpString = "!"; callString = "Contains"; reverseArguments = true; break; + preOpString = "!"; callString = "contains"; reverseArguments = true; break; default: Contract.Assert(false); throw new cce.UnreachableException(); // unexpected binary expression @@ -2071,7 +2059,7 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wrElements = wr.Fork(); wr.Write("].join(\"\")"); } else { - wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) {{ return {1}; }})", + wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) -> {2} {{ return {1}; }})", elements.Count, DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody), TypeName(ct.TypeArgs[0], wr, tok, null, false)); @@ -2079,7 +2067,7 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, //wr.Write(")"); for (var i = 0; i < elements.Count; i++) { - wr.Write("->stuff({0}, ", i); + wr.Write(".stuff({0}, ", i); TrExpr(elements[i], wr, inLetExprBody); wr.Write(")"); } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 9309b8af23e..fc632cd950a 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -8,7 +8,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) -CXXFLAGS += -Wno-c++11-extensions -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -std=c++17 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index c06b8900b85..9ae07500abc 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -47,9 +47,9 @@ method Basic() { } method ValueEquality() { - var m0 := [1, 2, 3]; - var m1 := m0[1..]; - var m2 := [2, 3]; + var m0:seq := [1, 2, 3]; + var m1:seq := m0[1..]; + var m2:seq := [2, 3]; if m1 == m2 { print "ValueEquality: This is expected\n"; } else { @@ -59,10 +59,10 @@ method ValueEquality() { } method Contains() { - var m1 := [1]; - var m2 := [1, 2]; - var m3 := [1, 2, 3]; - var m3identical := [1, 2, 3]; + var m1:seq := [1]; + var m2:seq := [1, 2]; + var m3:seq := [1, 2, 3]; + var m3identical:seq := [1, 2, 3]; var mm := [m1, m3, m1]; if m1 in mm { From 46f16ed6fb2d0cf918bb2491918d943c10ff7381 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 26 Sep 2019 22:17:05 -0400 Subject: [PATCH 046/573] Refactor C++ version of DafnySequence to use vector internally --- Binaries/DafnyRuntime.h | 69 ++++++++++++++++++------------------ Source/Dafny/Compiler-cpp.cs | 13 ++++++- Test/c++/seqs.dfy | 4 +++ 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 8d78a621e23..f8f8b5a68d7 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -1,5 +1,6 @@ #include #include +#include using namespace std; @@ -12,20 +13,26 @@ typedef unsigned long long uint64; template struct DafnySequence { - DafnySequence() { - len = 0; - seq = nullptr; + DafnySequence() { } - DafnySequence(uint64 length) { - len = length; - seq = make_shared(new T[len]); + DafnySequence(uint64 len) { + vector a_seq(len); + seq = a_seq; } - - DafnySequence(DafnySequence& other) { - seq = make_shared(new T[other.len]); - len = other.len; - memcpy((void*)seq.get(), (void*)other.seq.get(), len * sizeof(T)); + + DafnySequence(DafnySequence& other) { + seq = vector(other.seq); + } + + DafnySequence(uint64 length, T arr[]) { + vector a_seq(arr, arr + length); + seq = a_seq; + } + + DafnySequence(initializer_list il) { + vector a_seq(il); + seq = a_seq; } /* @@ -45,21 +52,16 @@ struct DafnySequence { */ static DafnySequence SeqFromArray(uint64 length, T arr[]) { - DafnySequence ret(length); - for (uint64 i = 0; i < length; i++) { - ret.seq.get()[i] = arr[i]; - } + DafnySequence ret(length, arr); return ret; } - - static DafnySequence Create(uint64 length, T(*init)(uint64)) { - DafnySequence ret(length); - for (uint64 i = 0; i < length; i++) { - ret.seq.get()[i] = init(i); - } + + static DafnySequence Create(initializer_list il) { + DafnySequence ret(il); return ret; } - + + /* ///////////////////////////////////////////////////////////////////////////////////////////// // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay ///////////////////////////////////////////////////////////////////////////////////////////// @@ -67,7 +69,7 @@ struct DafnySequence { seq[i] = t; return this; } - + */ /* ~DafnySequence() { delete [] seq; @@ -83,12 +85,12 @@ struct DafnySequence { // TODO: isPrefixOf, isPropoerPrefixOf DafnySequence concatenate(DafnySequence other) { - DafnySequence ret(len + other.len); - for (uint64 i = 0; i < len; i++) { + DafnySequence ret(seq.size() + other.seq.size()); + for (uint64 i = 0; i < seq.size(); i++) { ret.seq[i] = seq[i]; } - for (uint64 i = 0; i < other.len; i++) { - ret.seq[i + len] = other.seq[i]; + for (uint64 i = 0; i < other.seq.size(); i++) { + ret.seq[i + seq.size()] = other.seq[i]; } return ret; } @@ -97,10 +99,10 @@ struct DafnySequence { return seq[i]; } - uint64 length () { return len; } + uint64 length () { return seq.size(); } DafnySequence update(uint64 i, T t) { - DafnySequence ret(this); + DafnySequence ret(*this); ret.seq[i] = t; return ret; } @@ -109,7 +111,7 @@ struct DafnySequence { // WARNING: May break when comparing references!? /////////////////////////////////////////////////////// bool contains(T t) { - for (uint64 i = 0; i < len; i++) { + for (uint64 i = 0; i < seq.size(); i++) { if (seq[i] == t) { return true; } @@ -120,7 +122,7 @@ struct DafnySequence { // Returns the subsequence of values [lo..hi) DafnySequence subsequence(uint64 lo, uint64 hi) { DafnySequence ret(hi - lo); - for (uint64 i = 0; i < ret.len; i++) { + for (uint64 i = 0; i < ret.seq.size(); i++) { ret.seq[i] = seq[i + lo]; } return ret; @@ -128,7 +130,7 @@ struct DafnySequence { // Returns the subsequence of values [lo..length()) DafnySequence drop(uint64 lo) { - return subsequence(lo, len); + return subsequence(lo, seq.size()); } // Returns the subsequence of values [0..hi) @@ -147,8 +149,7 @@ struct DafnySequence { // TODO: hash // TODO: toString - int len; - shared_ptr seq; + vector seq; }; template diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fe8754aee2c..b705dd05e52 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2058,7 +2058,17 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wr.Write("["); wrElements = wr.Fork(); wr.Write("].join(\"\")"); - } else { + } else + { + wr.Write("DafnySequence<{0}>::Create{{", TypeName(ct.TypeArgs[0], wr, tok, null, false)); + for (var i = 0; i < elements.Count; i++) { + TrExpr(elements[i], wr, inLetExprBody); + if (i < elements.Count - 1) { + wr.Write(","); + } + } + wr.Write("}"); + /* wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) -> {2} {{ return {1}; }})", elements.Count, DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody), @@ -2071,6 +2081,7 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, TrExpr(elements[i], wr, inLetExprBody); wr.Write(")"); } + */ } diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 9ae07500abc..6be7a3e0180 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -46,6 +46,7 @@ method Basic() { } } +/* method ValueEquality() { var m0:seq := [1, 2, 3]; var m1:seq := m0[1..]; @@ -91,6 +92,7 @@ method Contains() { } } +*/ /* /////////////////////////////////////////////////////////////// @@ -272,8 +274,10 @@ method Print(s: seq, i: uint32, j: uint32) const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; */ +/* method Main() { Basic(); ValueEquality(); Contains(); } +*/ From 4dd9602fd9880737f4e59f0b21f37f37c505214a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 26 Sep 2019 23:11:35 -0400 Subject: [PATCH 047/573] Basic() test in seqs compiles --- Binaries/DafnyRuntime.h | 8 ++++---- Source/Dafny/Compiler-cpp.cs | 20 +++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index f8f8b5a68d7..43385bed713 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -25,8 +25,8 @@ struct DafnySequence { seq = vector(other.seq); } - DafnySequence(uint64 length, T arr[]) { - vector a_seq(arr, arr + length); + DafnySequence(shared_ptr> arr) { + vector a_seq(*arr); seq = a_seq; } @@ -51,8 +51,8 @@ struct DafnySequence { } */ - static DafnySequence SeqFromArray(uint64 length, T arr[]) { - DafnySequence ret(length, arr); + static DafnySequence SeqFromArray(shared_ptr> arr) { + DafnySequence ret(arr); return ret; } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b705dd05e52..2434401b0e9 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -753,7 +753,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; if (at.Dims == 1) { - return typeNameSansBrackets + "*"; + return "shared_ptr>"; } else { throw NotSupported("Multi-dimensional arrays"); } @@ -1137,9 +1137,9 @@ protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List>(", TypeName(elmtType, wr, tok)); TrExpr(dimensions[0], wr, false); - wr.Write("]"); + wr.Write(")"); } else { throw NotSupported("Multi-dimensional arrays", tok); // the general case @@ -1520,7 +1520,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu protected override TargetWriter EmitArraySelect(List indices, Type elmtType, TargetWriter wr) { var w = wr.Fork(); foreach (var index in indices) { - wr.Write("[{0}]", index); + wr.Write("->at({0})", index); } return w; } @@ -1529,9 +1529,9 @@ protected override TargetWriter EmitArraySelect(List indices, Type e Contract.Assert(indices != null && 1 <= indices.Count); // follows from precondition var w = wr.Fork(); foreach (var index in indices) { - wr.Write("["); + wr.Write("->at("); TrExpr(index, wr, inLetExprBody); - wr.Write("]"); + wr.Write(")"); } return w; } @@ -1574,9 +1574,11 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { - wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(source.Type, wr, source.tok, null, true)); + wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(source.Type.TypeArgs[0], wr, source.tok, null, true)); + //wr.Write("DafnySequence<{0}>::SeqFromArray", IdName(source.GetType().AsArrayType.TypeArgs[0])); } TrParenExpr(source, wr, inLetExprBody); + if (hi != null) { TrParenExpr(".take", hi, wr, inLetExprBody); } @@ -2060,14 +2062,14 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, wr.Write("].join(\"\")"); } else { - wr.Write("DafnySequence<{0}>::Create{{", TypeName(ct.TypeArgs[0], wr, tok, null, false)); + wr.Write("DafnySequence<{0}>::Create({{", TypeName(ct.TypeArgs[0], wr, tok, null, false)); for (var i = 0; i < elements.Count; i++) { TrExpr(elements[i], wr, inLetExprBody); if (i < elements.Count - 1) { wr.Write(","); } } - wr.Write("}"); + wr.Write("})"); /* wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) -> {2} {{ return {1}; }})", elements.Count, From bed2cbe7fbe0299ba3249d571f73f215d6a9c4c5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 26 Sep 2019 23:51:32 -0400 Subject: [PATCH 048/573] seqs compiles and passes! --- Binaries/DafnyRuntime.h | 18 ++++++++++++------ Test/c++/seqs.dfy | 6 ------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 43385bed713..98c881c6cf3 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -1,3 +1,5 @@ +#pragma once + #include #include #include @@ -21,7 +23,7 @@ struct DafnySequence { seq = a_seq; } - DafnySequence(DafnySequence& other) { + DafnySequence(const DafnySequence& other) { seq = vector(other.seq); } @@ -140,10 +142,11 @@ struct DafnySequence { // TODO: slice - friend bool operator==(DafnySequence s0, DafnySequence s1); + //template + //friend bool operator==(DafnySequence s0, DafnySequence s1); - bool equals(DafnySequence other) { - return *this == other; + bool equals(DafnySequence other) { + return seq == other.seq; } // TODO: hash @@ -152,8 +155,10 @@ struct DafnySequence { vector seq; }; -template -bool operator==(DafnySequence &s0, DafnySequence &s1) { +template +bool operator==(DafnySequence &s0, DafnySequence &s1) { + return s0.equals(s1); +/* if (s0.length() != s1.length()) { return false; } @@ -163,4 +168,5 @@ bool operator==(DafnySequence &s0, DafnySequence &s1) { } } return true; +*/ } diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 6be7a3e0180..5cc0c634160 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -2,7 +2,6 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method Basic() { var s:seq := [1, 2, 3, 4]; - print s[1]; print "Head second:", s[1], "\n"; var end := s[1..]; print "Trunc first:", end[0], "\n"; @@ -46,7 +45,6 @@ method Basic() { } } -/* method ValueEquality() { var m0:seq := [1, 2, 3]; var m1:seq := m0[1..]; @@ -92,8 +90,6 @@ method Contains() { } } -*/ - /* /////////////////////////////////////////////////////////////// // @@ -274,10 +270,8 @@ method Print(s: seq, i: uint32, j: uint32) const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; */ -/* method Main() { Basic(); ValueEquality(); Contains(); } -*/ From f32007ef1f65964d4f07a0ca0e7256d38828e228 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 26 Sep 2019 23:56:48 -0400 Subject: [PATCH 049/573] Add a test target --- Test/c++/Makefile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index fc632cd950a..a6c9b7ee9c6 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -6,7 +6,7 @@ DAFNY=../../Binaries/dafny DAFNY_RUNTIME_DIR=../../Binaries DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) - +TEST_LOG=tests.log CXXFLAGS += -std=c++17 -I$(DAFNY_RUNTIME_DIR) @@ -29,5 +29,14 @@ vars: $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h $(CXX) $(CXXFLAGS) -o $@ $< +test: $(EXECS) + for e in $(EXECS); do ./$$e; done | tee $(TEST_LOG) +# grep unexpected $(TEST_LOG) +# if [ $$? -ne 0 ]; then +# echo "FAILED A TEST" +# else +# echo "SUCCESS!" +# fi + clean: - rm -f *.cpp $(EXECS) + rm -f *.cpp $(EXECS) $(TEST_LOG) From 5a7ce7f130ed727ec338e1507e080de0ed8abb3b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 26 Sep 2019 23:58:51 -0400 Subject: [PATCH 050/573] Improve test display --- Test/c++/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index a6c9b7ee9c6..bfec962b704 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -30,7 +30,7 @@ $(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h $(CXX) $(CXXFLAGS) -o $@ $< test: $(EXECS) - for e in $(EXECS); do ./$$e; done | tee $(TEST_LOG) + for e in $(EXECS); do echo; echo "*******************"; echo "Running $$e"; echo "*******************"; echo; ./$$e; done | tee $(TEST_LOG) # grep unexpected $(TEST_LOG) # if [ $$? -ne 0 ]; then # echo "FAILED A TEST" From 591adf8faad6252b5d6eb14ab07e4b4869311579 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 10:19:53 -0400 Subject: [PATCH 051/573] Sketch in some basic set tests and a backing C++ class --- Binaries/DafnyRuntime.h | 148 ++++++++++++++++++++++++++-------------- Test/c++/sets.dfy | 79 +++++++++++++++++++++ 2 files changed, 175 insertions(+), 52 deletions(-) create mode 100644 Test/c++/sets.dfy diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 98c881c6cf3..236171ee173 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -3,6 +3,7 @@ #include #include #include +#include using namespace std; @@ -37,22 +38,6 @@ struct DafnySequence { seq = a_seq; } - /* - // Added this overload to avoid error: - // copy assignment operator of 'DafnySequence' is implicitly deleted - // because field 'seq' has a deleted copy assignment operator - DafnySequence& operator=(const DafnySequence& other) { - if (&other == this) { - return *this; - } - if (len != other.len) { // Avoid our existing allocation if we can - seq.reset(new T[other.len]); - } - copy(&other.seq[0], &other.seq[0] + min(len, other.len), &seq[0]); - return *this; - } - */ - static DafnySequence SeqFromArray(shared_ptr> arr) { DafnySequence ret(arr); return ret; @@ -62,27 +47,6 @@ struct DafnySequence { DafnySequence ret(il); return ret; } - - /* - ///////////////////////////////////////////////////////////////////////////////////////////// - // WARNING: Not for ordinary use; mutates in place. Only use with EmitCollectionDisplay - ///////////////////////////////////////////////////////////////////////////////////////////// - DafnySequence stuff(uint64 i, T t) { - seq[i] = t; - return this; - } - */ - /* - ~DafnySequence() { - delete [] seq; - } - */ - - /* - static DafnySequence asString(string s) { - //return mk_shared_ptr DafnySequence - } - */ // TODO: isPrefixOf, isPropoerPrefixOf @@ -109,9 +73,6 @@ struct DafnySequence { return ret; } - /////////////////////////////////////////////////////// - // WARNING: May break when comparing references!? - /////////////////////////////////////////////////////// bool contains(T t) { for (uint64 i = 0; i < seq.size(); i++) { if (seq[i] == t) { @@ -141,10 +102,7 @@ struct DafnySequence { } // TODO: slice - - //template - //friend bool operator==(DafnySequence s0, DafnySequence s1); - + bool equals(DafnySequence other) { return seq == other.seq; } @@ -158,15 +116,101 @@ struct DafnySequence { template bool operator==(DafnySequence &s0, DafnySequence &s1) { return s0.equals(s1); -/* - if (s0.length() != s1.length()) { - return false; +} + + + +template +struct DafnySet { + DafnySet() { + } + + DafnySet(const DafnySet& other) { + set = unordered_set(other.set); + } + + DafnySet(initializer_list il) { + unordered_set a_set(il); + set = a_set; + } + + static DafnySet Create(initializer_list il) { + DafnySet ret(il); + return ret; } - for (uint64 i = 0; i < s0.length(); i++) { - if (s0.select(i) != s1.select(i)) { + + static DafnySet empty() { + return DafnySet(); + } + + bool isSubsetOf(const DafnySet& other) { + if (set.size() > other.set.size()) { return false; } + for (const auto& elt:set) { + if (other.set.find(elt) == other.set.end()) { + return false; + } + } + return true; } - return true; -*/ -} + + bool isProperSubsetOf(const DafnySet& other) { + return isSubsetOf(other) && (size() < other.size()); + } + + bool contains(T t) { + return set.find(t) != set.end(); + } + + bool disjoint(const DafnySet& other) { + for (auto const& elt:set) { + if (other.find(elt) != other.set.end()) { + return false; + } + } + return true; + } + + DafnySet set_union(const DafnySet& other) { + DafnySet ret = DafnySet(other); + ret.set.insert(set.first, set.last); + return ret; + } + + // Returns a DafnySet containing elements only found in the current DafnySet + DafnySet difference(const DafnySet& other) { + DafnySet ret = DafnySet(*this); + ret.set.remove(other.set.first, other.set.last); + return ret; + } + + DafnySet intersection(const DafnySet& other) { + DafnySet ret; + for (auto const& elt:set) { + if (other.set.find(elt) != other.set.end()) { + ret.set.insert(elt); + } + } + return ret; + } + + uint64 size () { return set.size(); } + + bool isEmpty() { return set.empty(); } + + + bool equals(DafnySet other) { + return isSubsetOf(other) && other.isSubsetOf(*this); + } + + // TODO: hash + // TODO: toString + + unordered_set set; +}; + +template +bool operator==(DafnySet &s0, DafnySet &s1) { + return s0.equals(s1); +} \ No newline at end of file diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy new file mode 100644 index 00000000000..f4f3f16a922 --- /dev/null +++ b/Test/c++/sets.dfy @@ -0,0 +1,79 @@ +newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +method Test(name:string, b:bool) + requires b; +{ + if b { + print name, ": This is expected\n"; + } else { + print name, ": This is unexpected\n"; + } +} + +method Basic() { + var s:set := {1, 2, 3, 4}; + var t:set := {1, 2, 3, 4}; + + Test("Identity", s == s); + Test("ValuesIdentity", s == t); + Test("DiffIdentity", s - {1} == t - {1}); + Test("DiffIdentitySelf", s - {2} != s - {1}); + Test("ProperSubsetIdentity", !(s < s)); + Test("ProperSubset", !(s < t)); + Test("SelfSubset", s <= s); + Test("OtherSubset", t <= s && s <= t); + Test("UnionIdentity", s + s == s); +} + +/* +method ValueEquality() { + var m0:seq := [1, 2, 3]; + var m1:seq := m0[1..]; + var m2:seq := [2, 3]; + if m1 == m2 { + print "ValueEquality: This is expected\n"; + } else { + print "ValueEquality: This is unexpected\n"; + assert false; + } +} + +method Contains() { + var m1:seq := [1]; + var m2:seq := [1, 2]; + var m3:seq := [1, 2, 3]; + var m3identical:seq := [1, 2, 3]; + var mm := [m1, m3, m1]; + + if m1 in mm { + print "Membership 1: This is expected\n"; + } else { + print "Membership 1: This is unexpected\n"; + assert false; + } + if m2 in mm { + print "Membership 2: This is unexpected\n"; + assert false; + } else { + print "Membership 2: This is expected\n"; + } + if m3 in mm { + print "Membership 3: This is expected\n"; + } else { + print "Membership 3: This is unexpected\n"; + assert false; + } + if m3identical in mm { + print "Membership 3 value equality: This is expected\n"; + } else { + print "Membership 3 value equality: This is unexpected\n"; + assert false; + } +} + +method Main() { + Basic(); + ValueEquality(); + Contains(); +} +*/ From 9597450fd8796ce6cede78cd1fa2e3d7bf6d668d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 12:15:07 -0400 Subject: [PATCH 052/573] More tests --- Test/c++/sets.dfy | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index f4f3f16a922..dd09e520470 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -23,6 +23,33 @@ method Basic() { Test("SelfSubset", s <= s); Test("OtherSubset", t <= s && s <= t); Test("UnionIdentity", s + s == s); + Test("Membership", 1 in s); + Test("NonMembership1", !(5 in s)); + Test("NonMembership2", !(1 in (s - {1}))); +} + +method SetSeq() { + var m1:seq := [1]; + var m2:seq := [1, 2]; + var m3:seq := [1, 2, 3]; + var m4:seq := [1, 2, 3, 4]; + var n1:seq := [1]; + var n2:seq := [1, 2]; + var n3:seq := [1, 2, 3]; + + var s1:set> := { m1, m2, m3 }; + var s2:set> := s1 - { m1 }; + + Test("SeqMembership1", m1 in s1); + Test("SeqMembership2", m2 in s1); + Test("SeqMembership3", m3 in s1); + Test("SeqNonMembership1", !(m1 in s2)); + Test("SeqNonMembership2", !(m4 in s1)); + Test("SeqNonMembership3", !(m4 in s2)); + + Test("SeqMembershipValue1", n1 in s1); + Test("SeqMembershipValue2", n2 in s1); + Test("SeqMembershipValue3", n3 in s1); } /* @@ -70,10 +97,9 @@ method Contains() { assert false; } } +*/ method Main() { Basic(); - ValueEquality(); - Contains(); + SetSeq(); } -*/ From f2d7e860c67565a01168e12945000d1ed69ce576 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 13:39:20 -0400 Subject: [PATCH 053/573] Sets compile --- Binaries/DafnyRuntime.h | 91 +++++++++--- Source/Dafny/Compiler-cpp.cs | 40 +++--- Test/c++/Makefile | 4 +- Test/c++/seqs.dfy | 269 +++++------------------------------ Test/c++/sets.dfy | 2 +- 5 files changed, 126 insertions(+), 280 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 236171ee173..1debd0f9222 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -14,6 +14,13 @@ class _dafny { typedef unsigned long long uint64; +// using boost::hash_combine +template +inline void hash_combine(std::size_t& seed, T const& v) +{ + seed ^= std::hash()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); +} + template struct DafnySequence { DafnySequence() { @@ -24,8 +31,12 @@ struct DafnySequence { seq = a_seq; } + DafnySequence(string s) { + seq = vector(s.begin(), s.end()); + } + DafnySequence(const DafnySequence& other) { - seq = vector(other.seq); + seq = vector(other.seq); } DafnySequence(shared_ptr> arr) { @@ -103,21 +114,39 @@ struct DafnySequence { // TODO: slice - bool equals(DafnySequence other) { + bool equals(const DafnySequence other) const { return seq == other.seq; } - // TODO: hash + // TODO: toString vector seq; }; template -bool operator==(DafnySequence &s0, DafnySequence &s1) { +bool operator==(const DafnySequence &s0, const DafnySequence &s1) { return s0.equals(s1); } +inline ostream& operator<<(ostream& out, const DafnySequence& val){ + for (auto const& c:val.seq) { + out << c; + } + return out; +} + +template +struct hash> { + size_t operator()(const DafnySequence& s) const { + size_t seed = 0; + for (size_t i = 0; i < s.seq.size(); i++) { + hash_combine(seed, s.seq[i]); + } + return seed; + } +}; + template @@ -126,7 +155,7 @@ struct DafnySet { } DafnySet(const DafnySet& other) { - set = unordered_set(other.set); + set = unordered_set(other.set); } DafnySet(initializer_list il) { @@ -143,7 +172,7 @@ struct DafnySet { return DafnySet(); } - bool isSubsetOf(const DafnySet& other) { + bool IsSubsetOf(const DafnySet& other) { if (set.size() > other.set.size()) { return false; } @@ -155,11 +184,11 @@ struct DafnySet { return true; } - bool isProperSubsetOf(const DafnySet& other) { - return isSubsetOf(other) && (size() < other.size()); + bool IsProperSubsetOf(const DafnySet& other) { + return IsSubsetOf(other) && (size() < other.size()); } - bool contains(T t) { + bool contains(T t) const { return set.find(t) != set.end(); } @@ -172,20 +201,26 @@ struct DafnySet { return true; } - DafnySet set_union(const DafnySet& other) { + DafnySet Union(const DafnySet& other) { DafnySet ret = DafnySet(other); - ret.set.insert(set.first, set.last); + ret.set.insert(set.begin(), set.end()); return ret; } // Returns a DafnySet containing elements only found in the current DafnySet - DafnySet difference(const DafnySet& other) { - DafnySet ret = DafnySet(*this); - ret.set.remove(other.set.first, other.set.last); + DafnySet Difference(const DafnySet& other) { + DafnySet ret; + for (auto const& elt:set) { + if (!other.contains(elt)) { + ret.set.insert(elt); + } + } + // This attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnySet, etc.) + //set_difference(set.begin(), set.end(), other.set.begin(), other.set.end(), inserter(ret.set, ret.set.end())); return ret; } - DafnySet intersection(const DafnySet& other) { + DafnySet Intersection(const DafnySet& other) { DafnySet ret; for (auto const& elt:set) { if (other.set.find(elt) != other.set.end()) { @@ -195,13 +230,13 @@ struct DafnySet { return ret; } - uint64 size () { return set.size(); } + uint64 size () const { return set.size(); } - bool isEmpty() { return set.empty(); } + bool isEmpty() const { return set.empty(); } bool equals(DafnySet other) { - return isSubsetOf(other) && other.isSubsetOf(*this); + return IsSubsetOf(other) && other.IsSubsetOf(*this); } // TODO: hash @@ -213,4 +248,22 @@ struct DafnySet { template bool operator==(DafnySet &s0, DafnySet &s1) { return s0.equals(s1); -} \ No newline at end of file +} + +inline ostream& operator<<(ostream& out, const DafnySet& val){ + for (auto const& c:val.set) { + out << c; + } + return out; +} + +template +struct hash> { + size_t operator()(const DafnySet& s) const { + size_t seed = 0; + for (auto const& elt:s.set) { + hash_combine(seed, elt); + } + return seed; + } +}; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 2434401b0e9..b215642a56e 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1210,6 +1210,7 @@ void EmitIntegerLiteral(BigInteger i, TextWriter wr) { protected override void EmitStringLiteral(string str, bool isVerbatim, TextWriter wr) { var n = str.Length; + wr.Write("DafnySequence("); if (!isVerbatim) { wr.Write("\"{0}\"", str); } else { @@ -1230,6 +1231,7 @@ protected override void EmitStringLiteral(string str, bool isVerbatim, TextWrite } wr.Write("\""); } + wr.Write(")"); } protected override TargetWriter EmitBitvectorTruncation(BitvectorType bvType, bool surroundByUnchecked, TargetWriter wr) { @@ -2041,11 +2043,15 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, } protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { - if (ct is SetType) { - throw NotSupported("EmitCollectionDisplay/set", tok); - wr.Write("_dafny.Set.fromElements"); - TrExprList(elements, wr, inLetExprBody); + wr.Write("DafnySet<{0}>::Create({{", TypeName(ct.TypeArgs[0], wr, tok, null, false)); + for (var i = 0; i < elements.Count; i++) { + TrExpr(elements[i], wr, inLetExprBody); + if (i < elements.Count - 1) { + wr.Write(","); + } + } + wr.Write("})"); } else if (ct is MultiSetType) { throw NotSupported("EmitCollectionDisplay/multiset", tok); wr.Write("_dafny.MultiSet.fromElements"); @@ -2070,20 +2076,6 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, } } wr.Write("})"); - /* - wr.Write("DafnySequence<{2}>::Create({0}, [](uint64 i) -> {2} {{ return {1}; }})", - elements.Count, - DefaultValue(ct.TypeArgs[0], wr, tok, inLetExprBody), - TypeName(ct.TypeArgs[0], wr, tok, null, false)); - //wrElements = wr.Fork(); - //wr.Write(")"); - - for (var i = 0; i < elements.Count; i++) { - wr.Write(".stuff({0}, ", i); - TrExpr(elements[i], wr, inLetExprBody); - wr.Write(")"); - } - */ } @@ -2115,16 +2107,22 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List()", TypeName(ct.TypeArgs[0], wr, tok, null, false)); + } else { + throw NotSupported("EmitCollectionBuilder_New/non_set", tok); + } + + /* + else if (ct is MultiSetType) { wr.Write("new _dafny.MultiSet()"); } else if (ct is MapType) { wr.Write("new _dafny.Map()"); } else { Contract.Assume(false); // unepxected collection type } + */ } protected override void EmitCollectionBuilder_Add(CollectionType ct, string collName, Expression elmt, bool inLetExprBody, TargetWriter wr) { diff --git a/Test/c++/Makefile b/Test/c++/Makefile index bfec962b704..4d309c6f7b6 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -8,7 +8,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log -CXXFLAGS += -std=c++17 -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -std=c++11 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) @@ -21,7 +21,7 @@ vars: echo $(EXECS) %.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) - $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp $< %.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 5cc0c634160..8ebe2fb6b6c 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,60 +1,52 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +method Test(name:string, b:bool) + requires b; +{ + if b { + print name, ": This is expected\n"; + } else { + print name, ": This is *** UNEXPECTED *** !!!!\n"; + } +} + +method Print(s:string) { + print s, "\n"; +} + +method PrintTest() { + Print("Hello world!"); +} + method Basic() { var s:seq := [1, 2, 3, 4]; print "Head second:", s[1], "\n"; var end := s[1..]; print "Trunc first:", end[0], "\n"; - if end == s { - print "Head trunc: This is unexpected\n"; - assert false; - } else { - print "Head trunc: This is expected\n"; - } + Test("Head trunc", end != s); var start := s[..1]; var combine := start + end; - if (combine == s) { - print "Combine: This is expected\n"; - } else { - assert false; - print "Combine: This is unexpected\n"; - } + + Test("Combine", combine == s); var s' := s[0 := 330]; - if s[0] == 330 { - assert false; - print "Replace: This is unexpected\n"; - } else if s[0] != 1 { - assert false; - print "Replace: This is unexpected\n"; - } else { - print "Replace: This is expected\n"; - } + Test("Replace1", s[0] != 330); + Test("Replace2", s[0] == 1); var a := new uint32[3][12, 13, 14]; var a_seq := a[..]; a[0] := 42; var a_seq' := a[..]; - if a_seq == a_seq' { - print "Immutability: This is unexpected\n"; - assert false; - } else { - print "Immutability: This is expected\n"; - } + Test("Immutability", a_seq != a_seq'); } method ValueEquality() { var m0:seq := [1, 2, 3]; var m1:seq := m0[1..]; var m2:seq := [2, 3]; - if m1 == m2 { - print "ValueEquality: This is expected\n"; - } else { - print "ValueEquality: This is unexpected\n"; - assert false; - } + Test("ValueEquality", m1 == m2); } method Contains() { @@ -64,214 +56,17 @@ method Contains() { var m3identical:seq := [1, 2, 3]; var mm := [m1, m3, m1]; - if m1 in mm { - print "Membership 1: This is expected\n"; - } else { - print "Membership 1: This is unexpected\n"; - assert false; - } - if m2 in mm { - print "Membership 2: This is unexpected\n"; - assert false; - } else { - print "Membership 2: This is expected\n"; - } - if m3 in mm { - print "Membership 3: This is expected\n"; - } else { - print "Membership 3: This is unexpected\n"; - assert false; - } - if m3identical in mm { - print "Membership 3 value equality: This is expected\n"; - } else { - print "Membership 3 value equality: This is unexpected\n"; - assert false; - } -} - -/* -/////////////////////////////////////////////////////////////// -// -// Testing sequences from arrays -// -/////////////////////////////////////////////////////////////// - -method H(a: array, c: array, n: uint32, j: uint32) - requires j as int < n as int == a.Length == c.Length -{ - var A := a[..]; - var C := c[..]; - - if { - case A[j] == C[j] => - assert a[j] == c[j]; - case forall i :: 0 <= i < n ==> A[i] == C[i] => - assert a[j] == c[j]; - case forall i :: 0 <= i < n ==> A[i] == C[i] => - assert forall i :: 0 <= i < n ==> a[i] == c[i]; - case A == C => - assert forall i :: 0 <= i < n ==> A[i] == C[i]; - case A == C => - assert forall i :: 0 <= i < n ==> a[i] == c[i]; - case true => - } -} - -method K(a: array, c: array, n: uint32) - requires n as int <= a.Length && n as int <= c.Length -{ - var A := a[..n]; - var C := c[..n]; - if { - case A == C => - assert forall i :: 0 <= i < n ==> A[i] == C[i]; - case A == C => - assert forall i :: 0 <= i < n ==> a[i] == c[i]; - case true => - } -} - -method L(a: array, c: array, n: uint32, alen:uint32) - requires n as int <= a.Length == c.Length - requires alen as int == a.Length -{ - var A := a[n..]; - var C := c[n..]; - var h := alen - n; - if { - case A == C => - assert forall i :: 0 <= i < h ==> A[i] == C[i]; - case A == C => - assert forall i :: n <= i < n + h ==> a[i] == c[i]; - case true => - } -} - -method M(a: array, c: array, alen:uint32, clen:uint32, m: uint32, n: uint32, k: uint32, l: uint32) - requires alen as int == a.Length - requires clen as int == c.Length - requires k as int + m as int <= a.Length - requires l as int + n as int <= c.Length - requires alen as int < 0x80000000 - requires clen as int < (0x100000000 / 2) - requires k as int < (0x100000000 / 2) - requires l as int < (0x100000000 / 2) - requires m as int < (0x100000000 / 2) - requires n as int < (0x100000000 / 2) -{ - if { - case true => - var A := a[k..k+m]; - var C := c[l..l+n]; - if A == C { - if * { - assert m == n; - } else if * { - assert forall i :: 0 <= i < n ==> A[i] == C[i]; - } else if * { - assert forall i {:nowarn} :: k <= i < k+n ==> A[i-k] == C[i-k]; - } else if * { - assert forall i :: 0 <= i < n ==> A[i] == a[k+i]; - } else if * { - assert forall i :: 0 <= i < n ==> C[i] == c[l+i]; - } else if * { - assert forall i {:nowarn} :: 0 <= i < n ==> a[k+i] == c[l+i]; - } - } - case l+m <= clen && forall i :: 0 <= i < m ==> a[i] == c[l+i] => - assert a[..m] == c[l..l+m]; - case l+alen <= clen && forall i :: k <= i < alen ==> a[i] == c[l+i] => - assert a[k..] == c[l+k..l+alen]; - case l+k+m <= clen && forall i :: k <= i < k+m ==> a[i] == c[l+i] => - assert a[k..k+m] == c[l+k..l+k+m]; - } -} - -/////////////////////////////////////////////////////////////// -// -// Testing sequence slicing -// -/////////////////////////////////////////////////////////////// - -method test(x:seq) - requires |x| == 10 -{ - var elts := x[4:2:3]; - var a, b, c := elts[0], elts[1], elts[2]; - - assert |a| == 4; - assert |b| == 2; - assert |c| == 3; - - assert forall i :: 0 <= i < |a| ==> a[i] == x[i]; - assert forall i :: 0 <= i < |b| ==> b[i] == x[i+4]; - assert forall i :: 0 <= i < |c| ==> c[i] == x[i+6]; - - var elts2 := x[1:5:]; // Leaving off the last length puts the remaining elements in the last seq - var d, e, f := elts2[0], elts2[1], elts2[2]; - assert |d| == 1; - assert |e| == 5; - assert |f| == |x| - (|d| + |e|); - - assert forall i :: 0 <= i < |d| ==> d[i] == x[i]; - assert forall i :: 0 <= i < |e| ==> e[i] == x[i+1]; - assert forall i :: 0 <= i < |f| ==> f[i] == x[i+6]; -} - -newtype MyNumeric = n | 0 <= n < 100 - -method NumericSlice(x: seq, two: MyNumeric) returns (y: seq) - requires 10 <= |x| && two == 2 - ensures |y| == 3 -{ - var slices; - if * { - slices := x[0:two:3:0:]; - } else { - slices := x[1 : 1 : 1 : 3 : two : two : 0]; - assert |slices[5]| == 2; - } - assert |slices| == 5 || |slices| == 7; - return middle(slices); -} - -function method middle(s: seq): G - requires |s| % 2 == 1 -{ - s[|s| / 2] -} - -method MoreTests(s: seq) - requires 10 <= |s| -{ - var t := [3.14, 2.7, 1.41, 1985.44, 100.0, 37.2][1:0:3]; - assert |t| == 3 && t[0] == [3.14] && t[1] == [] && t[2] == [2.7, 1.41, 1985.44]; - - var u := [true, false, false, true][1:1:]; - assert |u| == 3 && u[0][0] && !u[1][0] && u[2] == [false, true]; - - assert s[10:][0] == s[..10]; - assert s[10:][1] == s[10..]; -} - -method Print(s: seq, i: uint32, j: uint32) - requires i < 64 && j < 65 && s != "" - requires |s| < 0x100000000 -{ - // regression tests--these had once produced malformed Boogie in various ways - print Base64Alphabet[i]; - print Base64Alphabet[j]; // error: index out of bounds - if i <= j <= |s| as uint32 { - var ch := s[i]; - var t := s[..i] + s[i..j] + s[j..]; - } + Test("Membership 1", m1 in mm); + Test("Membership 2", !(m2 in mm)); + Test("Membership 3", m3 in mm); + Test("Membership 3 value equality", m3identical in mm); } -const Base64Alphabet := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -*/ method Main() { Basic(); ValueEquality(); Contains(); + PrintTest(); } + + diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index dd09e520470..2976bb8984c 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -6,7 +6,7 @@ method Test(name:string, b:bool) if b { print name, ": This is expected\n"; } else { - print name, ": This is unexpected\n"; + print name, ": This is *** UNEXPECTED *** !!!!\n"; } } From 9adc038b5fe1e779ef488ae2138f63315b94ec4e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 14:54:47 -0400 Subject: [PATCH 054/573] Basic support for maps --- Binaries/DafnyRuntime.h | 170 ++++++++++++++++++++++++++++++++++- Source/Dafny/Compiler-cpp.cs | 13 +-- Test/c++/maps.dfy | 97 ++++++++++++++++++++ 3 files changed, 270 insertions(+), 10 deletions(-) create mode 100644 Test/c++/maps.dfy diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 1debd0f9222..25ce8578a83 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -4,6 +4,7 @@ #include #include #include +#include using namespace std; @@ -14,6 +15,10 @@ class _dafny { typedef unsigned long long uint64; +/********************************************************* + * UTILITIES * + *********************************************************/ + // using boost::hash_combine template inline void hash_combine(std::size_t& seed, T const& v) @@ -21,6 +26,9 @@ inline void hash_combine(std::size_t& seed, T const& v) seed ^= std::hash()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); } +/********************************************************* + * SEQUENCES * + *********************************************************/ template struct DafnySequence { DafnySequence() { @@ -147,7 +155,9 @@ struct hash> { } }; - +/********************************************************* + * SETS * + *********************************************************/ template struct DafnySet { @@ -238,8 +248,7 @@ struct DafnySet { bool equals(DafnySet other) { return IsSubsetOf(other) && other.IsSubsetOf(*this); } - - // TODO: hash + // TODO: toString unordered_set set; @@ -250,7 +259,8 @@ bool operator==(DafnySet &s0, DafnySet &s1) { return s0.equals(s1); } -inline ostream& operator<<(ostream& out, const DafnySet& val){ +template +inline ostream& operator<<(ostream& out, const DafnySet& val){ for (auto const& c:val.set) { out << c; } @@ -267,3 +277,155 @@ struct hash> { return seed; } }; + + +/********************************************************* + * MAPS * + *********************************************************/ + +template +struct DafnyMap { + DafnyMap() { + } + + DafnyMap(const DafnyMap& other) { + map = unordered_map(other.map); + } + + DafnyMap(initializer_list> il) { + unordered_map a_map(il); + map = a_map; + } + + static DafnyMap Create(initializer_list> il) { + DafnyMap ret(il); + return ret; + } + + static DafnyMap empty() { + return DafnyMap(); + } + + bool contains(K t) const { + return map.find(t) != map.end(); + } + + V get(K key) const { + return map.find(key)->second; + } + + DafnyMap update(K k, V v) { + DafnyMap ret(*this); + auto ptr = ret.map.find(k); + if (ptr == ret.map.end()) { + ret.map.emplace(k, v); + } else { + ptr->second = v; + } + } + + /* + bool disjoint(const DafnyMap& other) { + for (auto const& elt:map) { + if (other.find(elt) != other.map.end()) { + return false; + } + } + return true; + } + + DafnyMap Union(const DafnyMap& other) { + DafnyMap ret = DafnyMap(other); + ret.map.insert(map.begin(), map.end()); + return ret; + } + + + // Returns a DafnyMap containing elements only found in the current DafnyMap + DafnyMap Difference(const DafnyMap& other) { + DafnyMap ret; + for (auto const& elt:map) { + if (!other.contains(elt)) { + ret.map.insert(elt); + } + } + // K,Vhis attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnyMap, etc.) + //map_difference(map.begin(), map.end(), other.map.begin(), other.map.end(), inserter(ret.map, ret.map.end())); + return ret; + } + + DafnyMap Intersection(const DafnyMap& other) { + DafnyMap ret; + for (auto const& elt:map) { + if (other.map.find(elt) != other.map.end()) { + ret.map.insert(elt); + } + } + return ret; + } + */ + + uint64 size () const { return map.size(); } + + bool isEmpty() const { return map.empty(); } + + DafnySet dafnyKeySet() { + DafnySet ret; + for (const auto& kv : map) { + ret.set.insert(kv.first); + } + return ret; + } + + DafnySet dafnyValues() { + DafnySet ret; + for (const auto& kv : map) { + ret.set.insert(kv.second); + } + return ret; + } + + + bool equals(DafnyMap other) { + if (map.size() != other.size()) { return false; } + + for (const auto& kv : map) { + auto ptr = other.map.find(kv.first); + if (ptr == other.map.end()) { return false; } + if (ptr->second != kv.second) { return false; } + } + return true; + } + + // TODO: hash + // TODO: toString + + unordered_map map; +}; + + +template +bool operator==(DafnyMap &s0, DafnyMap &s1) { + return s0.equals(s1); +} + +template +inline ostream& operator<<(ostream& out, const DafnyMap& val){ + for (auto const& kv:val.map) { + out << "(" << kv.first << " -> " << kv.second << ")"; + } + return out; +} + +template +struct hash> { + size_t operator()(const DafnyMap& s) const { + size_t seed = 0; + for (auto const& kv:s.map) { + hash_combine(seed, kv.first); + hash_combine(seed, kv.second); + } + return seed; + } +}; + diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b215642a56e..070a3d89e42 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -800,7 +800,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* if (ComplicatedTypeParameterForCompilation(domType) || ComplicatedTypeParameterForCompilation(ranType)) { Error(tok, "compilation of map or map<_, TRAIT> is not supported; consider introducing a ghost", wr); } - return "_dafny.Map"; + return DafnyMapClass + "<" + TypeName(domType, wr, tok) + "," + TypeName(ranType, wr, tok) + ">"; } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type } @@ -2091,19 +2091,20 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, } protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { - throw NotSupported("EmitMapDisplay", tok); - wr.Write("_dafny.Map.of("); + wr.Write("DafnyMap<{0},{1}>::Create({{", + TypeName(mt.TypeArgs[0], wr, tok, null, false), + TypeName(mt.TypeArgs[1], wr, tok, null, false)); string sep = ""; foreach (ExpressionPair p in elements) { wr.Write(sep); - wr.Write("["); + wr.Write("{"); TrExpr(p.A, wr, inLetExprBody); wr.Write(","); TrExpr(p.B, wr, inLetExprBody); - wr.Write("]"); + wr.Write("}"); sep = ", "; } - wr.Write(")"); + wr.Write("})"); } protected override void EmitCollectionBuilder_New(CollectionType ct, Bpl.IToken tok, TargetWriter wr) { diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy new file mode 100644 index 00000000000..f86aa9d053a --- /dev/null +++ b/Test/c++/maps.dfy @@ -0,0 +1,97 @@ +newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +method Test(name:string, b:bool) + requires b; +{ + if b { + print name, ": This is expected\n"; + } else { + print name, ": This is *** UNEXPECTED *** !!!!\n"; + } +} + +method Basic() { + var s:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; + var t:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; + + Test("Identity", s == s); + Test("ValuesIdentity", s == t); + Test("KeyMembership", 1 in s); + Test("Value1", s[1] == 0); + Test("Value2", t[2] == 1); +} + +/* +method SetSeq() { + var m1:seq := [1]; + var m2:seq := [1, 2]; + var m3:seq := [1, 2, 3]; + var m4:seq := [1, 2, 3, 4]; + var n1:seq := [1]; + var n2:seq := [1, 2]; + var n3:seq := [1, 2, 3]; + + var s1:set> := { m1, m2, m3 }; + var s2:set> := s1 - { m1 }; + + Test("SeqMembership1", m1 in s1); + Test("SeqMembership2", m2 in s1); + Test("SeqMembership3", m3 in s1); + Test("SeqNonMembership1", !(m1 in s2)); + Test("SeqNonMembership2", !(m4 in s1)); + Test("SeqNonMembership3", !(m4 in s2)); + + Test("SeqMembershipValue1", n1 in s1); + Test("SeqMembershipValue2", n2 in s1); + Test("SeqMembershipValue3", n3 in s1); +} + +method ValueEquality() { + var m0:seq := [1, 2, 3]; + var m1:seq := m0[1..]; + var m2:seq := [2, 3]; + if m1 == m2 { + print "ValueEquality: This is expected\n"; + } else { + print "ValueEquality: This is unexpected\n"; + assert false; + } +} + +method Contains() { + var m1:seq := [1]; + var m2:seq := [1, 2]; + var m3:seq := [1, 2, 3]; + var m3identical:seq := [1, 2, 3]; + var mm := [m1, m3, m1]; + + if m1 in mm { + print "Membership 1: This is expected\n"; + } else { + print "Membership 1: This is unexpected\n"; + assert false; + } + if m2 in mm { + print "Membership 2: This is unexpected\n"; + assert false; + } else { + print "Membership 2: This is expected\n"; + } + if m3 in mm { + print "Membership 3: This is expected\n"; + } else { + print "Membership 3: This is unexpected\n"; + assert false; + } + if m3identical in mm { + print "Membership 3 value equality: This is expected\n"; + } else { + print "Membership 3 value equality: This is unexpected\n"; + assert false; + } +} +*/ + +method Main() { + Basic(); +} From abc67001a9d6a32e5ad67ce409877bb863e9ebe2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 15:00:11 -0400 Subject: [PATCH 055/573] More tests and a bug fix --- Binaries/DafnyRuntime.h | 1 + Test/c++/maps.dfy | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 25ce8578a83..595ad6e6ffc 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -322,6 +322,7 @@ struct DafnyMap { } else { ptr->second = v; } + return ret; } /* diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy index f86aa9d053a..1015011bb37 100644 --- a/Test/c++/maps.dfy +++ b/Test/c++/maps.dfy @@ -19,6 +19,13 @@ method Basic() { Test("KeyMembership", 1 in s); Test("Value1", s[1] == 0); Test("Value2", t[2] == 1); + + var u := s[1 := 42]; + Test("Update Inequality", s != u); + Test("Update Immutable 1", s == s); + Test("Update Immutable 2", s[1] == 0); + Test("Update Result", u[1] == 42); + Test("Update Others", u[2] == 1); } /* From 975bca385c152954c84186c4917312af65d57b64 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 15:08:36 -0400 Subject: [PATCH 056/573] More maps functionality --- Source/Dafny/Compiler-cpp.cs | 6 ++++-- Test/c++/maps.dfy | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 070a3d89e42..011611c0dce 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1472,10 +1472,10 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, case SpecialField.ID.IsNat: throw NotSupported("IsNat"); case SpecialField.ID.Keys: - compiledName = "Keys()"; + compiledName = "dafnyKeySet()"; break; case SpecialField.ID.Values: - compiledName = "Values()"; + compiledName = "dafnyValues()"; break; case SpecialField.ID.Items: compiledName = "Items()"; @@ -1508,6 +1508,8 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); if (sf is ConstantField && !member.IsStatic && compiledName.Length != 0) { wr.Write("->{0}", compiledName); + } else if (sf.SpecialId == SpecialField.ID.Keys || sf.SpecialId == SpecialField.ID.Values) { + wr.Write(".{0}", compiledName); } else if (compiledName.Length != 0) { wr.Write("::{0}", compiledName); } else { diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy index 1015011bb37..933600fe47e 100644 --- a/Test/c++/maps.dfy +++ b/Test/c++/maps.dfy @@ -26,6 +26,14 @@ method Basic() { Test("Update Immutable 2", s[1] == 0); Test("Update Result", u[1] == 42); Test("Update Others", u[2] == 1); + + var s_keys := s.Keys; + var t_keys := t.Keys; + Test("Keys equal", s_keys == t_keys); + Test("Keys membership 1", 1 in s_keys); + Test("Keys membership 2", 2 in s_keys); + Test("Keys membership 3", 3 in s_keys); + Test("Keys membership 4", 4 in s_keys); } /* From 953b28003315b12b3423f081981ef4af42b3195c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 21:27:56 -0400 Subject: [PATCH 057/573] Support one very limited case of set comprehension --- Binaries/DafnyRuntime.h | 32 ++++++++++++++++++++++++++++++++ Source/Dafny/Compiler-cpp.cs | 15 +++++++-------- Source/Dafny/Compiler.cs | 1 + Test/c++/sets.dfy | 19 +++++++++++++++++++ 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 595ad6e6ffc..272bdbe7c3f 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -26,6 +26,34 @@ inline void hash_combine(std::size_t& seed, T const& v) seed ^= std::hash()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); } +// From https://stackoverflow.com/a/7185723 +class IntegerRange { + public: + class iterator { + friend class IntegerRange; + public: + long int operator *() const { return i_; } + const iterator &operator ++() { ++i_; return *this; } + iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } + + bool operator ==(const iterator &other) const { return i_ == other.i_; } + bool operator !=(const iterator &other) const { return i_ != other.i_; } + + protected: + iterator(long int start) : i_ (start) { } + + private: + unsigned long i_; + }; + + iterator begin() const { return begin_; } + iterator end() const { return end_; } + IntegerRange(long int begin, long int end) : begin_(begin), end_(end) {} +private: + iterator begin_; + iterator end_; +}; + /********************************************************* * SEQUENCES * *********************************************************/ @@ -239,6 +267,10 @@ struct DafnySet { } return ret; } + + unordered_set Elements() { + return set; + } uint64 size () const { return set.size(); } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 011611c0dce..b4a7faec181 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1105,16 +1105,13 @@ protected override string GetQuantifierName(string bvType) { protected override BlockTargetWriter CreateForeachLoop(string boundVar, Type/*?*/ boundVarType, out TargetWriter collectionWriter, TargetWriter wr, string/*?*/ altBoundVarName = null, Type/*?*/ altVarType = null, Bpl.IToken/*?*/ tok = null) { wr.Write("for ({0} {1} : ", boundVarType, boundVar); collectionWriter = wr.Fork(); - return wr.NewBlock(")"); - /* if (altBoundVarName == null) { return wr.NewBlock(")"); } else if (altVarType == null) { return wr.NewBlockWithPrefix(")", "{0} = {1};", altBoundVarName, boundVar); } else { - return wr.NewBlockWithPrefix(")", "let {0} = {1};", altBoundVarName, boundVar); + return wr.NewBlockWithPrefix(")", "auto {0} = {1};", altBoundVarName, boundVar); } - */ } // ----- Expressions ------------------------------------------------------------- @@ -1658,8 +1655,8 @@ protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceTy } protected override BlockTargetWriter CreateIIFE0(Type resultType, Bpl.IToken resultTok, TargetWriter wr) { - throw NotSupported("CreateIIFE0", resultTok); - var w = wr.NewBigExprBlock("function ()", "()"); + //throw NotSupported("CreateIIFE0", resultTok); + var w = wr.NewBigExprBlock("[&] ", " ()"); return w; } @@ -2129,9 +2126,11 @@ protected override void EmitCollectionBuilder_New(CollectionType ct, Bpl.IToken } protected override void EmitCollectionBuilder_Add(CollectionType ct, string collName, Expression elmt, bool inLetExprBody, TargetWriter wr) { - throw NotSupported("EmitCollectionBuilder_Add"); Contract.Assume(ct is SetType || ct is MultiSetType); // follows from precondition - wr.Write("{0}.add(", collName); + if (ct is MultiSetType) { + throw NotSupported("EmitCollectionBuilder_Add/MultiSetType"); + } + wr.Write("{0}.set.emplace(", collName); TrExpr(elmt, wr, inLetExprBody); wr.WriteLine(");"); } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 4059d08838a..9bf1b5ac821 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -497,6 +497,7 @@ protected abstract void CompileBinOp(BinaryExpr.ResolvedOpcode op, protected virtual void EmitIntegerRange(Type type, out TargetWriter wLo, out TargetWriter wHi, TargetWriter wr) { if (AsNativeType(type) != null) { wr.Write("{0}.IntegerRange(", IdProtect(type.AsNewtype.FullCompileName)); + //wr.Write("IntegerRange("); } else { wr.Write("{0}.IntegerRange(", GetHelperModuleName()); } diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index 2976bb8984c..eb0a12f8f38 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -52,6 +52,23 @@ method SetSeq() { Test("SeqMembershipValue3", n3 in s1); } +method SetComprehension(s:set) + requires forall i :: 0 <= i < 10 ==> i in s; + requires |s| == 10; +{ + /* + var s:set := set x:uint32 | 0 <= x < 10; + Test("SetComprehensionMembership1", 1 in s); + Test("SetComprehensionMembership2", 2 in s); + Test("SetComprehensionMembership9", 9 in s); + Test("SetComprehensionNonMembership1", !(11 in s)); + */ + + var t:set := set y:uint32 | y in s; + Test("SetComprehensionInEquality", t == s); + Test("SetComprehensionInMembership", 0 in t); +} + /* method ValueEquality() { var m0:seq := [1, 2, 3]; @@ -102,4 +119,6 @@ method Contains() { method Main() { Basic(); SetSeq(); + var s := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + SetComprehension(s); } From b49a3a666eb14081c614e4d9e67cda8ab361baca Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 21:39:42 -0400 Subject: [PATCH 058/573] Simple let-such-that for sets --- Source/Dafny/Compiler-cpp.cs | 7 +++++-- Test/c++/sets.dfy | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b4a7faec181..c5a19161002 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1059,14 +1059,17 @@ protected override void EmitReturn(List outParams, TargetWriter wr) { } protected override TargetWriter CreateLabeledCode(string label, TargetWriter wr) { - return wr.NewNamedBlock("L{0}:", label); + var w = wr.ForkSection(); + wr.IndentLess(); + wr.WriteLine("after_{0}: ;", label); + return w; } protected override void EmitBreak(string/*?*/ label, TargetWriter wr) { if (label == null) { wr.WriteLine("break;"); } else { - wr.WriteLine("goto L{0};", label); + wr.WriteLine("goto after_{0};", label); } } diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index eb0a12f8f38..4a04b0b8426 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -69,6 +69,15 @@ method SetComprehension(s:set) Test("SetComprehensionInMembership", 0 in t); } +method LetSuchThat() { + var s:set := { 0, 1, 2, 3 }; + var e:uint32 :| e in s; + + print e, "\n"; + Test("LetSuchThatMembership", e in s); + Test("LetSuchThatValue", e == 0 || e == 1 || e == 2 || e == 3); +} + /* method ValueEquality() { var m0:seq := [1, 2, 3]; @@ -121,4 +130,5 @@ method Main() { SetSeq(); var s := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; SetComprehension(s); + LetSuchThat(); } From e422b4d24131bb09f65e48e18a9bb20a12766e95 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 21:43:26 -0400 Subject: [PATCH 059/573] Simple while test passes --- Test/c++/while.dfy | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Test/c++/while.dfy diff --git a/Test/c++/while.dfy b/Test/c++/while.dfy new file mode 100644 index 00000000000..3fd4bf8ff49 --- /dev/null +++ b/Test/c++/while.dfy @@ -0,0 +1,19 @@ +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +method Main() { + var x:uint32 := 0; + + while (x < 10) { + print x, "\n"; + x := x + 1; + } + + print "\n"; + + x := 0; + while (x < 10) { + print x, "\n"; + if (x == 5) { break; } + x := x + 1; + } +} From 68d788d6c848516920efc570d2273be84074b514 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 21:53:37 -0400 Subject: [PATCH 060/573] Make the makefile a bit more generic --- Test/c++/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 4d309c6f7b6..4c201fe5725 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -2,10 +2,11 @@ DAFNYS=$(wildcard *.dfy) CPPS=$(subst .dfy,.cpp,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) -DAFNY=../../Binaries/dafny -DAFNY_RUNTIME_DIR=../../Binaries +DAFNY_DIR=../.. +DAFNY=$(DAFNY_DIR)/Binaries/dafny +DAFNY_RUNTIME_DIR=$(DAFNY_DIR)/Binaries DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h -DAFNY_DEPS=$(DANFY) ../../Binaries/Dafny.exe ../../Binaries/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) +DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log CXXFLAGS += -std=c++11 -I$(DAFNY_RUNTIME_DIR) @@ -26,7 +27,7 @@ vars: %.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< -$(EXECS): % : %.cpp ../../Binaries/DafnyRuntime.h +$(EXECS): % : %.cpp $(DAFNY_RUNTIME_CPP) $(CXX) $(CXXFLAGS) -o $@ $< test: $(EXECS) From 905b0c97a36f1cab5c8b94891cfb9c154d41ee51 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 27 Sep 2019 22:18:30 -0400 Subject: [PATCH 061/573] Improve handling of native type names --- Binaries/DafnyRuntime.h | 9 +++++++++ Source/Dafny/Compiler-cpp.cs | 13 ++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 272bdbe7c3f..46e2f3f4aa1 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -13,8 +13,17 @@ class _dafny { static void Print(string s) { cout << s << endl; } }; + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned long uint32; typedef unsigned long long uint64; +typedef char int8; +typedef short int16; +typedef long int32; +typedef long long int64; + /********************************************************* * UTILITIES * *********************************************************/ diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c5a19161002..23e64ac3439 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -362,7 +362,10 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { - wr.WriteLine("typedef {0} {1};", nt.NativeType.Name, nt.Name); + string nt_name_def, literalSuffice_def; + bool needsCastAfterArithmetic_def; + GetNativeInfo(nt.NativeType.Sel, out nt_name_def, out literalSuffice_def, out needsCastAfterArithmetic_def); + wr.WriteLine("typedef {0} {1};", nt_name_def, nt.Name); } /* var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); @@ -386,7 +389,11 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } DeclareField(className, "Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w, wr); } - using (var wDefault = w.NewBlock(string.Format("static {0} get_Default()", nt.Name))) { + + string nt_name, literalSuffice; + bool needsCastAfterArithmetic; + GetNativeInfo(nt.NativeType.Sel, out nt_name, out literalSuffice, out needsCastAfterArithmetic); + using (var wDefault = w.NewBlock(string.Format("static {0} get_Default()", nt_name))) { var udt = new UserDefinedType(nt.tok, nt.Name, nt, new List()); var d = TypeInitializationValue(udt, wr, nt.tok, false); wDefault.WriteLine("return {0};", d); @@ -836,7 +843,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is MultiSetType) { return "_dafny.MultiSet.Empty"; } else if (xType is SeqType) { - return "_dafny.Seq.of()"; + return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, true)); } else if (xType is MapType) { return "_dafny.Map.Empty"; } From b0aa11fb12f56e177cccfa6a17adede647e1ffe8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 1 Oct 2019 13:42:12 -0400 Subject: [PATCH 062/573] Fix DafnyDriver to treat filenames with more than one dot correctly --- Source/DafnyDriver/DafnyDriver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 2cf30eec5d7..f077c89f7bb 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -459,7 +459,7 @@ static string WriteDafnyProgramToFiles(string dafnyProgramName, string targetPro Contract.Assert(false); throw new cce.UnreachableException(); } - string targetBaseName = Path.ChangeExtension(baseName, targetExtension); + string targetBaseName = Path.ChangeExtension(dafnyProgramName, targetExtension); string targetDir = Path.Combine(Path.GetDirectoryName(dafnyProgramName), targetBaseDir); string targetFilename = Path.Combine(targetDir, targetBaseName); WriteFile(targetFilename, targetProgram); From 6e9f09188db5b77eed50926b8c3c6c42f98b09ce Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 1 Oct 2019 13:42:33 -0400 Subject: [PATCH 063/573] Fix unary operations for sets --- Source/Dafny/Compiler-cpp.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 23e64ac3439..c3aedfc949a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1693,7 +1693,7 @@ protected override void EmitUnaryExpr(ResolvedUnaryOp op, Expression expr, bool break; case ResolvedUnaryOp.Cardinality: TrParenExpr(expr, wr, inLetExprBody); - wr.Write(".Cardinality()"); + wr.Write(".size()"); break; default: Contract.Assert(false); throw new cce.UnreachableException(); // unexpected unary expression @@ -1765,7 +1765,8 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, } else if (e0.Type.IsRefType) { opString = "=="; } else { - staticCallString = "_dafny.AreEqual"; + //staticCallString = "=="; + opString = "=="; } break; } @@ -1778,8 +1779,9 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, } else if (e0.Type.IsRefType) { opString = "!="; } else { - preOpString = "!"; - staticCallString = "_dafny.AreEqual"; + opString = "!="; + //preOpString = "!"; + //staticCallString = "_dafny.AreEqual"; } break; } From 4fa1968afe5df4039b798d48f6064381b6596ec3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 1 Oct 2019 15:18:48 -0400 Subject: [PATCH 064/573] Don't duplicate type parameters --- Source/Dafny/Compiler-cpp.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c3aedfc949a..d64bed1e859 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1131,9 +1131,10 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal if (cl != null && cl.Name == "object") { wr.Write("_dafny.NewObject()"); } else { - string targs = type.TypeArgs.Count > 0 - ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; - wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); + //string targs = type.TypeArgs.Count > 0 + // ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; + //wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); + wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); wr.Write(")"); } From f334c9cee8f22483da004f56a3013312c72e62e6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 9 Oct 2019 17:03:51 +0200 Subject: [PATCH 065/573] Fix array default --- Source/Dafny/Compiler-cpp.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index d64bed1e859..48a7af3d103 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -832,8 +832,10 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is CharType) { return "'D'"; } else if (xType is IntType || xType is BigOrdinalType) { + Console.Error.WriteLine("WARNING: BigInt used at: " + tok); return "new BigNumber(0)"; } else if (xType is RealType) { + Console.Error.WriteLine("WARNING: BigRational used at: " + tok); return "_dafny.BigRational.ZERO"; } else if (xType is BitvectorType) { var t = (BitvectorType)xType; @@ -884,7 +886,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp // non-null array type; we know how to initialize them var arrayClass = (ArrayClassDecl)((NonNullTypeDecl)td).Class; if (arrayClass.Dims == 1) { - return "[]"; + return "nullptr"; } else { return string.Format("_dafny.newArray(nullptr, {0})", Util.Comma(arrayClass.Dims, _ => "0")); } From 7d8654230041d2b360d2ae916808bdd4d9fd4996 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 9 Oct 2019 17:14:22 +0200 Subject: [PATCH 066/573] Allow the inclusion of .h files on the command line --- Source/Dafny/Compiler-cpp.cs | 8 +++++++- Source/DafnyDriver/DafnyDriver.cs | 12 ++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 48a7af3d103..440f2dd6f05 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -16,9 +16,12 @@ namespace Microsoft.Dafny { public class CppCompiler : Compiler { - public CppCompiler(ErrorReporter reporter) + public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeaders) : base(reporter) { + this.headers = otherHeaders; } + + private ReadOnlyCollection headers; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -31,6 +34,9 @@ public CppCompiler(ErrorReporter reporter) protected override void EmitHeader(Program program, TargetWriter wr) { wr.WriteLine("// Dafny program {0} compiled into Cpp", program.Name); wr.WriteLine("#include \"DafnyRuntime.h\""); + foreach (var header in this.headers) { + wr.WriteLine("#include \"{0}\"", header); + } // TODO: Include appropriate .h file here //ReadRuntimeSystem("DafnyRuntime.h", wr); } diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index f077c89f7bb..baf53c085dd 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -134,7 +134,7 @@ public static ExitValue ProcessCommandLineArguments(string[] args, out List Date: Fri, 11 Oct 2019 16:37:55 +0200 Subject: [PATCH 067/573] DeclareField now takes type arguments, since C++ expects to include a fresh template declaration for static class fields. --- Source/Dafny/Compiler-Csharp.cs | 8 ++++---- Source/Dafny/Compiler-cpp.cs | 12 ++++++------ Source/Dafny/Compiler-go.cs | 4 ++-- Source/Dafny/Compiler-js.cs | 2 +- Source/Dafny/Compiler.cs | 16 ++++++++-------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 798b5cbcd84..f8c7b7e1837 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -179,7 +179,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri foreach (var member in iter.Members) { var f = member as Field; if (f != null && !f.IsGhost) { - cw.DeclareField(IdName(f), false, false, f.Type, f.tok, DefaultValue(f.Type, w, f.tok)); + cw.DeclareField(IdName(f), iter.TypeArgs, false, false, f.Type, f.tok, DefaultValue(f.Type, w, f.tok)); } else if (member is Constructor) { Contract.Assert(ct == null); // we're expecting just one constructor ct = (Constructor)member; @@ -628,7 +628,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { var witness = new TargetWriter(w.IndentLevel, true); TrExpr(nt.Witness, witness, false); if (nt.NativeType == null) { - cw.DeclareField("Witness", true, true, nt.BaseType, nt.tok, witness.ToString()); + cw.DeclareField("Witness", nt.TypeArgs, true, true, nt.BaseType, nt.tok, witness.ToString()); } else { w.Write("public static readonly {0} Witness = ({0})(", GetNativeTypeName(nt.NativeType)); w.Append(witness); @@ -642,7 +642,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var sw = new TargetWriter(cw.InstanceMemberWriter.IndentLevel, true); TrExpr(sst.Witness, sw, false); - cw.DeclareField("Witness", true, true, sst.Rhs, sst.tok, sw.ToString()); + cw.DeclareField("Witness", sst.TypeArgs, true, true, sst.Rhs, sst.tok, sw.ToString()); } } @@ -682,7 +682,7 @@ public BlockTargetWriter Writer(bool isStatic) { public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, Writer(isStatic)); } - public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { Compiler.DeclareField(name, isStatic, isConst, type, tok, rhs, Writer(isStatic)); } public TextWriter/*?*/ ErrorWriter() => InstanceMemberWriter; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 440f2dd6f05..269b8d104fd 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -393,7 +393,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { TrParenExpr(nt.Witness, witness, false); witness.Write(".toNumber()"); } - DeclareField(className, "Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w, wr); + DeclareField(className, nt.TypeArgs, "Witness", true, true, nt.BaseType, nt.tok, witness.ToString(), w, wr); } string nt_name, literalSuffice; @@ -413,7 +413,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { throw NotSupported(String.Format("subset type {0}", sst)); var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); - DeclareField(IdName(sst), "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); + DeclareField(IdName(sst), sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } /* using (var wDefault = w.NewBlock("static get Default()")) { @@ -488,8 +488,8 @@ public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter met public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); } - public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { - Compiler.DeclareField(ClassName, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); + public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + Compiler.DeclareField(ClassName, targs, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); } public TextWriter/*?*/ ErrorWriter() => MethodWriter; public void Finish() { } @@ -946,12 +946,12 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- - protected void DeclareField(string className, string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr, TargetWriter finisher) { + protected void DeclareField(string className, List targs, string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr, TargetWriter finisher) { var r = rhs != null ? rhs : DefaultValue(type, wr, tok); var t = TypeName(type, wr, tok); if (isStatic) { wr.WriteLine("static {0} {1};", t, name); - finisher.WriteLine("{0} {1}::{2} = {3};", t, className, name, r); + finisher.WriteLine("{5} {0} {1}{4}::{2} = {3};", t, className, name, r, TemplateMethod(targs), DeclareTemplate(targs)); } else { wr.WriteLine("{0} {1} = {2};", t, name, r); } diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index a3d450037eb..56ec5ca4335 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -460,7 +460,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri Constructor ct = null; foreach (var member in iter.Members) { if (member is Field f && !f.IsGhost) { - cw.DeclareField(IdName(f), false, false, f.Type, f.tok, DefaultValue(f.Type, wr, f.tok)); + cw.DeclareField(IdName(f), iter.TypeArgs, false, false, f.Type, f.tok, DefaultValue(f.Type, wr, f.tok)); } else if (member is Constructor c) { Contract.Assert(ct == null); ct = c; @@ -1046,7 +1046,7 @@ public TargetWriter FieldInitWriter(bool isStatic) { public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, member, name, out setterWriter, ConcreteMethodWriter); } - public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { // FIXME: This should probably be done in Compiler.DeclareField(). // Should just have these delegate methods take the ClassWriter as an // argument. diff --git a/Source/Dafny/Compiler-js.cs b/Source/Dafny/Compiler-js.cs index a8c34df2ecb..e7d5f454371 100644 --- a/Source/Dafny/Compiler-js.cs +++ b/Source/Dafny/Compiler-js.cs @@ -558,7 +558,7 @@ public ClassWriter(JavaScriptCompiler compiler, BlockTargetWriter methodWriter, public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); } - public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { Compiler.DeclareField(name, isStatic, isConst, type, tok, rhs, FieldWriter); } public TextWriter/*?*/ ErrorWriter() => MethodWriter; diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 9bf1b5ac821..38c893b6b45 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -82,8 +82,8 @@ protected interface IClassWriter { BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member); BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member); // returns null iff !createBody BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter); // if createBody, then result and setterWriter are non-null, else both are null - void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs); - TextWriter/*?*/ ErrorWriter(); + void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs); + TextWriter/*?*/ ErrorWriter(); void Finish(); } protected IClassWriter CreateClass(string name, List/*?*/ typeParameters, TargetWriter wr) { @@ -635,7 +635,7 @@ public NullClassWriter() { return null; } } - public void DeclareField(string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { } + public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { } public TextWriter/*?*/ ErrorWriter() { return null; // match the old behavior of Compile() where this is used @@ -795,7 +795,7 @@ void CompileClassMembers(ClassDecl c, IClassWriter classWriter) { if (cf.Rhs == null) { Contract.Assert(!cf.IsStatic); // as checked above, only instance members can be inherited - classWriter.DeclareField("_" + cf.CompileName, false, false, cf.Type, cf.tok, DefaultValue(cf.Type, errorWr, cf.tok, true)); + classWriter.DeclareField("_" + cf.CompileName, c.TypeArgs, false, false, cf.Type, cf.tok, DefaultValue(cf.Type, errorWr, cf.tok, true)); } var w = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, true, member); Contract.Assert(w != null); // since the previous line asked for a body @@ -812,7 +812,7 @@ void CompileClassMembers(ClassDecl c, IClassWriter classWriter) { if (NeedsWrappersForInheritedFields) { var f = (Field)member; // every field is inherited - classWriter.DeclareField("_" + f.CompileName, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); + classWriter.DeclareField("_" + f.CompileName, c.TypeArgs, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); TargetWriter wSet; var wGet = classWriter.CreateGetterSetter(IdName(f), f.Type, f.tok, false, true, member, out wSet); { @@ -864,7 +864,7 @@ void CompileClassMembers(ClassDecl c, IClassWriter classWriter) { Contract.Assert(wBody == null); // since the previous line said not to create a body } else if (cf.Rhs == null) { // create a backing field, since this constant field may be assigned in constructors - classWriter.DeclareField("_" + f.CompileName, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); + classWriter.DeclareField("_" + f.CompileName, c.TypeArgs, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); wBody = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, true, cf); Contract.Assert(wBody != null); // since the previous line asked for a body } else { @@ -893,14 +893,14 @@ void CompileClassMembers(ClassDecl c, IClassWriter classWriter) { } else { rhs = null; } - classWriter.DeclareField(IdName(f), f.IsStatic, true, f.Type, f.tok, rhs); + classWriter.DeclareField(IdName(f), c.TypeArgs, f.IsStatic, true, f.Type, f.tok, rhs); } } else if (c is TraitDecl && NeedsWrappersForInheritedFields) { TargetWriter wSet; var wGet = classWriter.CreateGetterSetter(IdName(f), f.Type, f.tok, f.IsStatic, false, member, out wSet); Contract.Assert(wSet == null && wGet == null); // since the previous line specified no body } else { - classWriter.DeclareField(IdName(f), f.IsStatic, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); + classWriter.DeclareField(IdName(f), c.TypeArgs, f.IsStatic, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); } } else if (member is Function) { var f = (Function)member; From 7aaf115728e3f93cd34157e81f4d3ba84942186c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 17:11:46 +0200 Subject: [PATCH 068/573] Add support for declaring extern types --- Source/Dafny/Compiler-cpp.cs | 7 +++++++ Source/Dafny/Compiler.cs | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 269b8d104fd..7e257dacad3 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -945,6 +945,13 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke } // ----- Declarations ------------------------------------------------------------- + protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { + if (compileTypeHint.AsStringLiteral() == "struct") { + wr.WriteLine("{0} extern struct {1} {2};", DeclareTemplate(d.TypeArgs), d.CompileName, TemplateMethod(d.TypeArgs)); + } else { + Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, d.FullName, compileTypeHint.AsStringLiteral()); + } + } protected void DeclareField(string className, List targs, string name, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, TargetWriter wr, TargetWriter finisher) { var r = rhs != null ? rhs : DefaultValue(type, wr, tok); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 38c893b6b45..0d44e35424f 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -509,6 +509,8 @@ protected virtual void EmitIntegerRange(Type type, out TargetWriter wLo, out Tar protected abstract void EmitSingleValueGenerator(Expression e, bool inLetExprBody, string type, TargetWriter wr); protected virtual void FinishModule() { } + protected virtual void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { } + public void Compile(Program program, TargetWriter wrx) { Contract.Requires(program != null); @@ -540,7 +542,17 @@ public void Compile(Program program, TargetWriter wrx) { wr.WriteLine(); if (d is OpaqueTypeDecl) { var at = (OpaqueTypeDecl)d; - Error(d.tok, "Opaque type ('{0}') cannot be compiled", wr, at.FullName); + bool externP = Attributes.Contains(at.Attributes, "extern"); + if (externP) { + var exprs = Attributes.FindExpressions(at.Attributes, "extern"); + if (exprs != null && exprs.Count >= 1) { + DeclareExternType(at, exprs[0], wr); + } else { + Error(d.tok, "Opaque type ('{0}') with missing extern attribute cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, at.FullName); + } + } else { + Error(d.tok, "Opaque type ('{0}') cannot be compiled", wr, at.FullName); + } } else if (d is TypeSynonymDecl) { var sst = d as SubsetTypeDecl; if (sst != null) { From 928155bd75e5378db2a213f378bae041b303ee1e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 17:22:09 +0200 Subject: [PATCH 069/573] Consolidate warnings --- Source/Dafny/Compiler-cpp.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7e257dacad3..01e4b4e0574 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -728,6 +728,10 @@ protected override void EmitJumpToTailCallStart(TargetWriter wr) { //wr.WriteLine("continue TAIL_CALL_START;"); } + protected void Warn(string msg, Bpl.IToken tok) { + Console.Error.WriteLine("WARNING: {3} ({0}:{1}:{2})", tok.filename, tok.line, tok.col, msg); + } + // Use class_name = true if you want the actual name of the class, not the type used when declaring variables/arguments/etc. protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null, bool class_name=false) { Contract.Ensures(Contract.Result() != null); @@ -744,8 +748,10 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* } else if (xType is CharType) { return "char"; } else if (xType is IntType || xType is BigOrdinalType) { + Warn("BigInteger used", tok); return "BigNumber"; } else if (xType is RealType) { + Warn("BigRational used", tok); return "Dafny.BigRational"; } else if (xType is BitvectorType) { var t = (BitvectorType)xType; @@ -838,10 +844,10 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is CharType) { return "'D'"; } else if (xType is IntType || xType is BigOrdinalType) { - Console.Error.WriteLine("WARNING: BigInt used at: " + tok); + Warn("BigInteger used", tok); return "new BigNumber(0)"; } else if (xType is RealType) { - Console.Error.WriteLine("WARNING: BigRational used at: " + tok); + Warn("BigRational used", tok); return "_dafny.BigRational.ZERO"; } else if (xType is BitvectorType) { var t = (BitvectorType)xType; From dd6ab4f145a5e2e4504f9dbcee14f610093f8932 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 18:11:23 +0200 Subject: [PATCH 070/573] Better handling of subset type declarations --- Source/Dafny/Compiler-cpp.cs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 01e4b4e0574..51ff6bfef64 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -89,6 +89,14 @@ private string DeclareTemplate(List typeArgs) { return targs; } + private string DeclareTemplate(List typeArgs) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("template <{0}>", Util.Comma(typeArgs, t => "typename " + TypeName(t, null, null))); + } + return targs; + } + private string TemplateMethod(List typeArgs) { var targs = ""; if (typeArgs.Count > 0) { @@ -406,21 +414,25 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } } - protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { - var cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as CppCompiler.ClassWriter; + protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { + if (sst.Name == "nat") { + return; // C++ does not support Nats + } + wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), DeclareTemplate(sst.Var.Type.TypeArgs)); + + var cw = CreateClass("class_" + IdName(sst), sst.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { - throw NotSupported(String.Format("subset type {0}", sst)); var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); DeclareField(IdName(sst), sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } - /* - using (var wDefault = w.NewBlock("static get Default()")) { + + using (var wDefault = w.NewBlock(String.Format("static {0}{1} get_Default()", IdName(sst), TemplateMethod(sst.TypeArgs)))) { var udt = new UserDefinedType(sst.tok, sst.Name, sst, sst.TypeArgs.ConvertAll(tp => (Type)new UserDefinedType(tp))); var d = TypeInitializationValue(udt, wr, sst.tok, false); wDefault.WriteLine("return {0};", d); - } */ + } } protected override void GetNativeInfo(NativeType.Selection sel, out string name, out string literalSuffix, out bool needsCastAfterArithmetic) { From d15158cf7787d0d6baaa8a0016ad8025e01eb2d8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 18:18:13 +0200 Subject: [PATCH 071/573] Don't bother with extern keyword for extern structs --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 51ff6bfef64..63a32160359 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -965,7 +965,7 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - wr.WriteLine("{0} extern struct {1} {2};", DeclareTemplate(d.TypeArgs), d.CompileName, TemplateMethod(d.TypeArgs)); + wr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); } else { Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, d.FullName, compileTypeHint.AsStringLiteral()); } From 9bb50bc9b459db0d7c352323cc9c7407dc06fe62 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 18:22:58 +0200 Subject: [PATCH 072/573] Emit datatype tags consistently --- Source/Dafny/Compiler-cpp.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 63a32160359..c8e08d6dab1 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -294,7 +294,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { if (argNames.Count > 0) { // Add initializers ws.Write(" :"); - ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", nm))); + ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", IdProtect(nm)))); } ws.WriteLine(" {}"); @@ -323,7 +323,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Declare the overall tagged union var ws = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.Write("enum {"); - ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm))); + ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm.CompileName))); ws.Write("} tag;\n"); var wu = ws.NewBlock("union ", ";"); foreach (var ctor in dt.Ctors) { From ee4b01d29bc960b5f767a08a202b1db7c1225a61 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 19:32:11 +0200 Subject: [PATCH 073/573] Extend datatype examples to include subset types and improve compilation --- Source/Dafny/Compiler-cpp.cs | 18 ++++++++++++++---- Test/c++/datatypes.dfy | 7 +++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c8e08d6dab1..4cc6b83e743 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -420,12 +420,13 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { } wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), DeclareTemplate(sst.Var.Type.TypeArgs)); - var cw = CreateClass("class_" + IdName(sst), sst.TypeArgs, wr) as CppCompiler.ClassWriter; + var className = "class_" + IdName(sst); + var cw = CreateClass(className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); - DeclareField(IdName(sst), sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); + DeclareField(className, sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } using (var wDefault = w.NewBlock(String.Format("static {0}{1} get_Default()", IdName(sst), TemplateMethod(sst.TypeArgs)))) { @@ -887,7 +888,10 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (cl is NewtypeDecl) { var td = (NewtypeDecl)cl; if (td.Witness != null) { - return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok) + ".Witness"; + return "class_" + td.CompileName + "::Witness"; + //return TypeName(udt, wr, udt.tok, null, true) + "::Witness"; + //return TypeName(udt, wr, udt.tok, null, true) + "()"; + //return "Witness"; } else if (td.NativeType != null) { return "0"; } else { @@ -896,7 +900,10 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (cl is SubsetTypeDecl) { var td = (SubsetTypeDecl)cl; if (td.Witness != null) { - return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok) + ".Witness"; + return "class_" + td.CompileName + "::Witness"; + //return TypeName(udt, wr, udt.tok, null, true) + "::Witness"; + //return TypeName(udt, wr, udt.tok, null, true) + "()"; + //return "Witness"; } else if (td.WitnessKind == SubsetTypeDecl.WKind.Special) { // WKind.Special is only used with -->, ->, and non-null types: Contract.Assert(ArrowType.IsPartialArrowTypeName(td.Name) || ArrowType.IsTotalArrowTypeName(td.Name) || td is NonNullTypeDecl); @@ -934,9 +941,12 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var dt = (DatatypeDecl)cl; var s = dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt); var w = new TargetWriter(); + w.Write("{0}()", s); + /* w.Write("{0}.Rtd(", s); EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), dt.TypeArgs, udt.tok, true, w); w.Write(").Default"); + */ return w.ToString(); } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 6d705212c16..accff01f6c7 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -2,6 +2,11 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) +datatype Example3 = Example3(e:Example1) + +type Ex1Sub = d:Example1 | d.u == 0 witness Example1(0, true) +type Ex2Sub = d:Example2 | d.Ex2a? && d.u == 0 witness Ex2a(0) +type Ex3Sub = d:Example3 | d.e.b witness Example3(Example1(42, true)) method Callee(e:Example2) { match e { @@ -18,7 +23,6 @@ method Main() { Callee(e2); } - datatype Option = None | Some(value:V) datatype Err = Fail(err:bool) | Ok(value:V) @@ -35,4 +39,3 @@ method GenericTest() { matcher(Ok(42)); matcher(Fail(true)); } - From 49d9a3f824267b75d310b76af6880a332c701e1a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 20:02:20 +0200 Subject: [PATCH 074/573] More tests and fixes: 1) Datatype with a more than one constructor where one of the constructor names matches the datatype's name 2) Datatype that holds a datatype that holds a smart pointer --- Source/Dafny/Compiler-cpp.cs | 15 +++++++++++++-- Test/c++/datatypes.dfy | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4cc6b83e743..24ae1c39503 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -309,7 +309,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Create one struct for each constructor foreach (var ctor in dt.Ctors) { - var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), ctor.CompileName), ";"); + var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}_{2}", DeclareTemplate(dt.TypeArgs), DtT_protected, ctor.CompileName), ";"); // Declare the struct members var i = 0; foreach (Formal arg in ctor.Formals) { @@ -327,7 +327,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { ws.Write("} tag;\n"); var wu = ws.NewBlock("union ", ";"); foreach (var ctor in dt.Ctors) { - wu.WriteLine("struct {0}{1} v_{0};", ctor.CompileName, TemplateMethod(dt.TypeArgs)); + wu.WriteLine("struct {2}_{0}{1} v_{0};", ctor.CompileName, TemplateMethod(dt.TypeArgs), DtT_protected); } // Declare static "constructors" for each Dafny constructor @@ -364,6 +364,17 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wd.WriteLine("v_{0}.{1} = {2};", default_ctor.CompileName, arg.CompileName, DefaultValue(arg.Type, wd, arg.tok)); } } + + // Declare a default destructor + ws.WriteLine("~{0}() {{}}", DtT_protected); + + // Declare a default copy constructor (just in case any of our components are non-trivial, i.e., contain smart_ptr) + using (var wcc = ws.NewNamedBlock(String.Format("{0}(const {0} &other)", DtT_protected))) { + wcc.WriteLine("tag = other.tag;"); + foreach (var ctor in dt.Ctors) { + wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); + } + } // Declare type queries foreach (var ctor in dt.Ctors) { diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index accff01f6c7..4e98e0d9b56 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -8,6 +8,9 @@ type Ex1Sub = d:Example1 | d.u == 0 witness Example1(0, true) type Ex2Sub = d:Example2 | d.Ex2a? && d.u == 0 witness Ex2a(0) type Ex3Sub = d:Example3 | d.e.b witness Example3(Example1(42, true)) +datatype DtPointer = DtPointer(s:seq) +datatype DtPointerHolder = DtPointerHolder(e:DtPointer) | Other(f:bool) + method Callee(e:Example2) { match e { case Ex2a(u) => print "Case A: ", u, "\n"; From 4049c89497906ae1979acc7d2d09755fb772236c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 20:20:15 +0200 Subject: [PATCH 075/573] Emit copy assignment operator too. May be inefficient? --- Source/Dafny/Compiler-cpp.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 24ae1c39503..0fbd9d71ea4 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -375,6 +375,15 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); } } + + // Declare a default copy assignment operator (just in case any of our components are non-trivial, i.e., contain smart_ptr) + using (var wcc = ws.NewNamedBlock(String.Format("{0}& operator=(const {0} other)", DtT_protected))) { + wcc.WriteLine("tag = other.tag;"); + foreach (var ctor in dt.Ctors) { + wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); + wcc.WriteLine("return *this;"); + } + } // Declare type queries foreach (var ctor in dt.Ctors) { From 9d4d746a04efbe71aa5ab3ccf0728abe05e30fad Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Oct 2019 21:47:12 +0200 Subject: [PATCH 076/573] Add a test for externally defined methods --- Source/Dafny/Compiler.cs | 5 ++++- Test/c++/Extern.h | 30 ++++++++++++++++++++++++++++++ Test/c++/Makefile | 2 +- Test/c++/extern.dfy | 14 ++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Test/c++/Extern.h create mode 100644 Test/c++/extern.dfy diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 0d44e35424f..7e95e407a6f 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -2653,7 +2653,10 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { } else { string qual, compileName; if (s.Method.IsExtern(out qual, out compileName) && qual != null) { - wr.Write("{0}.{1}", qual, compileName); + // ****************************************************************** + // TODO: Add an overrideable function for the double colon used here + // ****************************************************************** + wr.Write("{0}::{1}", qual, compileName); } else { wr.Write(TypeName_Companion(s.Receiver.Type, wr, s.Tok, s.Method)); // ****************************************************************** diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h new file mode 100644 index 00000000000..9f04de6c816 --- /dev/null +++ b/Test/c++/Extern.h @@ -0,0 +1,30 @@ +#pragma once + +using namespace std; + +typedef unsigned long long uint64; + +namespace Extern { + + template + static shared_ptr> newArrayFill(uint64 size, T v) { + shared_ptr> ret = make_shared>(size); + for (uint64 i = 0; i < size; i++) { + (*ret)[i] = v; + } + return ret; + } + /* +class __default { + + public: + template + static shared_ptr> newArrayFill(uint64 size, T v) { + shared_ptr> ret = make_shared>(size); + for (uint64 i = 0; i < size; i++) { + ret[i] = v; + } + return ret; + } +};*/ +} diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 4c201fe5725..3ce88a0f42b 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -22,7 +22,7 @@ vars: echo $(EXECS) %.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) - $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp Extern.h $< %.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy new file mode 100644 index 00000000000..b7f7a8231d3 --- /dev/null +++ b/Test/c++/extern.dfy @@ -0,0 +1,14 @@ + +module Extern { + newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 + + method {:extern "Extern", "newArrayFill"} newArrayFill(n: uint64, t: T) returns (ar: array) +} + +module TestMod { + import opened Extern + + method Test() { + var a:array := newArrayFill(5, 42); + } +} From 4492170442dd40907537a2de14ea4d97fd67aaa3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 12 Oct 2019 13:16:00 +0200 Subject: [PATCH 077/573] Fixes to handle external type declarations --- Source/Dafny/Compiler-cpp.cs | 24 +++++++++++++++--------- Test/c++/Extern.h | 9 +++++++++ Test/c++/extern.dfy | 14 ++++++++++++-- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0fbd9d71ea4..bcd105bfdda 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -897,7 +897,10 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var udt = (UserDefinedType)xType; if (udt.ResolvedParam != null) { - if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { + if (Attributes.Contains(udt.ResolvedClass.Attributes, "extern")) { + // Assume the external definition includes a default value + return String.Format("{1}::get_{0}_default()", IdProtect(udt.Name), udt.ResolvedClass.Module.CompileName); + } else if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { return "nullptr"; } else { return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); @@ -908,7 +911,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (cl is NewtypeDecl) { var td = (NewtypeDecl)cl; if (td.Witness != null) { - return "class_" + td.CompileName + "::Witness"; + return td.Module.CompileName + "::class_" + td.CompileName + "::Witness"; //return TypeName(udt, wr, udt.tok, null, true) + "::Witness"; //return TypeName(udt, wr, udt.tok, null, true) + "()"; //return "Witness"; @@ -920,7 +923,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (cl is SubsetTypeDecl) { var td = (SubsetTypeDecl)cl; if (td.Witness != null) { - return "class_" + td.CompileName + "::Witness"; + return td.Module.CompileName + "::class_" + td.CompileName + "::Witness"; //return TypeName(udt, wr, udt.tok, null, true) + "::Witness"; //return TypeName(udt, wr, udt.tok, null, true) + "()"; //return "Witness"; @@ -1472,10 +1475,12 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb if (cl == null) { return IdProtect(udt.CompileName); } else if (cl is ClassDecl cdecl && cdecl.IsDefaultClass && Attributes.Contains(cl.Module.Attributes, "extern") && - member != null && Attributes.Contains(member.Attributes, "extern")) { + member != null && Attributes.Contains(member.Attributes, "extern")) { // omit the default class name ("_default") in extern modules, when the class is used to qualify an extern member - Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" + Contract.Assert(!cl.Module.IsDefaultModule); // default module is not marked ":extern" return IdProtect(cl.Module.CompileName); + } else if (Attributes.Contains(cl.Attributes, "extern")) { + return IdProtect(cl.Module.CompileName) + "::" + IdProtect(cl.Name); } else { return IdProtect(cl.Module.CompileName) + "::" + IdProtect(cl.CompileName); } @@ -1500,14 +1505,15 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) if (dt.Ctors.Count == 1) { - wr.Write("{0}{1}({2})", + wr.Write("{3}::{0}{1}({2})", dtName, TemplateMethod(dt.TypeArgs), - arguments); + arguments, + dt.Module.CompileName); } else { - wr.Write("{0}{1}::create_{2}({3})", + wr.Write("{4}::{0}{1}::create_{2}({3})", dtName, ActualTypeArgs(dtv.InferredTypeArgs), ctorName, - arguments); + arguments, dt.Module.CompileName); } } else { diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h index 9f04de6c816..1cd55b68efa 100644 --- a/Test/c++/Extern.h +++ b/Test/c++/Extern.h @@ -5,6 +5,15 @@ using namespace std; typedef unsigned long long uint64; namespace Extern { + struct state { + uint64 u; + }; + + struct state get_state_default() { + struct state ret; + ret.u = 22; + return ret; + } template static shared_ptr> newArrayFill(uint64 size, T v) { diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy index b7f7a8231d3..213f5ffbc3a 100644 --- a/Test/c++/extern.dfy +++ b/Test/c++/extern.dfy @@ -1,14 +1,24 @@ -module Extern { +module {:extern "Extern"} Extern { newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 method {:extern "Extern", "newArrayFill"} newArrayFill(n: uint64, t: T) returns (ar: array) + + type {:extern "struct"} state } module TestMod { import opened Extern - method Test() { + class C { + var s:state; + + constructor (i:state) { + this.s := i; + } + } + + method Main() { var a:array := newArrayFill(5, 42); } } From 33c328bd27be67cc0d0530a89fa4521215621e39 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 12 Oct 2019 20:46:23 +0200 Subject: [PATCH 078/573] Add a test for the use of generics and improve handling of default values for generic types --- Binaries/DafnyRuntime.h | 11 ++++++++++- Source/Dafny/Compiler-cpp.cs | 24 +++++++++++++++++++++--- Source/Dafny/Compiler.cs | 2 ++ Test/c++/generic.dfy | 22 ++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 Test/c++/generic.dfy diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 46e2f3f4aa1..da5bda52bca 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -27,7 +27,16 @@ typedef long long int64; /********************************************************* * UTILITIES * *********************************************************/ - + +template +T get_default(T*); + +bool get_default(bool*) { return true; } +int get_default(int*) { return 0; } +unsigned int get_default(unsigned int*) { return 0; } +unsigned long get_default(unsigned long*) { return 0; } +unsigned long long get_default(unsigned long long*) { return 0; } + // using boost::hash_combine template inline void hash_combine(std::size_t& seed, T const& v) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index bcd105bfdda..33290f87ec9 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -19,9 +19,11 @@ public class CppCompiler : Compiler { public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeaders) : base(reporter) { this.headers = otherHeaders; + this.datatypeDecls = new List(); } private ReadOnlyCollection headers; + private List datatypeDecls; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -41,6 +43,17 @@ protected override void EmitHeader(Program program, TargetWriter wr) { //ReadRuntimeSystem("DafnyRuntime.h", wr); } + protected override void EmitFooter(Program program, TargetWriter wr) { + foreach (var dt in this.datatypeDecls) { + var wd = wr.NewBlock(String.Format("{0} {1}::{2}{3} get_default({1}::{2}{3}* ignored)", + DeclareTemplate(dt.TypeArgs), + dt.Module.CompileName, + dt.CompileName, + TemplateMethod(dt.TypeArgs))); + wd.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs)); + } + } + public override void EmitCallToMain(Method mainMethod, TargetWriter wr) { var w = wr.NewBlock("int main()"); w.WriteLine(string.Format("{0}::{1}::{2}();", mainMethod.EnclosingClass.Module.CompileName, mainMethod.EnclosingClass.CompileName, mainMethod.Name)); @@ -267,6 +280,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Tuple types are declared once and for all in DafnyRuntime.h return; } + + this.datatypeDecls.Add(dt); string DtT = dt.CompileName; string DtT_protected = IdProtect(DtT); @@ -897,13 +912,14 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var udt = (UserDefinedType)xType; if (udt.ResolvedParam != null) { - if (Attributes.Contains(udt.ResolvedClass.Attributes, "extern")) { + if (udt.ResolvedClass != null && Attributes.Contains(udt.ResolvedClass.Attributes, "extern")) { // Assume the external definition includes a default value return String.Format("{1}::get_{0}_default()", IdProtect(udt.Name), udt.ResolvedClass.Module.CompileName); } else if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { - return "nullptr"; + return String.Format("get_default<{0}>(NULL)", IdProtect(udt.Name)); } else { - return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); + return "nullptr"; + //return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); } } var cl = udt.ResolvedClass; @@ -1587,6 +1603,8 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu wr.Write("->{0}", compiledName); } else if (sf.SpecialId == SpecialField.ID.Keys || sf.SpecialId == SpecialField.ID.Values) { wr.Write(".{0}", compiledName); + } else if (sf is DatatypeDestructor) { + wr.Write(".{0}", sf.CompileName); } else if (compiledName.Length != 0) { wr.Write("::{0}", compiledName); } else { diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 7e95e407a6f..528dd00ad77 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -64,6 +64,7 @@ protected void Error(Bpl.IToken tok, string msg, TextWriter/*?*/ wr, params obje } protected virtual void EmitHeader(Program program, TargetWriter wr) { } + protected virtual void EmitFooter(Program program, TargetWriter wr) { } protected virtual void EmitBuiltInDecls(BuiltIns builtIns, TargetWriter wr) { } /// /// Emits a call to "mainMethod" as the program's entry point, if such an explicit call is @@ -619,6 +620,7 @@ public void Compile(Program program, TargetWriter wrx) { FinishModule(); } + EmitFooter(program, wrx); } protected class NullClassWriter : IClassWriter { diff --git a/Test/c++/generic.dfy b/Test/c++/generic.dfy new file mode 100644 index 00000000000..6583f380597 --- /dev/null +++ b/Test/c++/generic.dfy @@ -0,0 +1,22 @@ + +class Test { + var t:T; + + constructor (e:T) { + t := e; + } +} + +class UseTest { + constructor () {} + method DoSomething(t:Test) + { + var x:Test := t; + } +} + +method Main() { + var t := new Test(true); + var u := new UseTest(); + u.DoSomething(t); +} From e31ae31d04db965a1281e226973901e55185bb92 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 12 Oct 2019 21:03:02 +0200 Subject: [PATCH 079/573] Add another generic test and a fix for templated constructors --- Source/Dafny/Compiler-cpp.cs | 33 ++++++++++++++++++++++----------- Test/c++/generic.dfy | 7 +++++++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 33290f87ec9..864b9938986 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -117,6 +117,14 @@ private string TemplateMethod(List typeArgs) { } return targs; } + + private string TemplateMethod(List typeArgs) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => TypeName(ta, null, null))); + } + return targs; + } protected override string GetHelperModuleName() => "_dafny"; @@ -302,17 +310,20 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - // Create a constructor with arguments - ws.Write("{0}(", DtT_protected); - WriteFormals("", ctor.Formals, ws); - ws.Write(")"); if (argNames.Count > 0) { - // Add initializers - ws.Write(" :"); - ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", IdProtect(nm)))); - } - ws.WriteLine(" {}"); - + // Create a constructor with arguments + ws.Write("{0}(", DtT_protected); + WriteFormals("", ctor.Formals, ws); + ws.Write(")"); + if (argNames.Count > 0) { + // Add initializers + ws.Write(" :"); + ws.Write(Util.Comma(argNames, nm => String.Format(" {0} ({0})", IdProtect(nm)))); + } + + ws.WriteLine(" {}"); + } + // Create a constructor with no arguments var wc = ws.NewNamedBlock("{0}()", DtT_protected); foreach (var arg in ctor.Formals) { @@ -980,7 +991,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var dt = (DatatypeDecl)cl; var s = dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt); var w = new TargetWriter(); - w.Write("{0}()", s); + w.Write("{0}{1}()", s, TemplateMethod(udt.TypeArgs)); /* w.Write("{0}.Rtd(", s); EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), dt.TypeArgs, udt.tok, true, w); diff --git a/Test/c++/generic.dfy b/Test/c++/generic.dfy index 6583f380597..8441b0bddbc 100644 --- a/Test/c++/generic.dfy +++ b/Test/c++/generic.dfy @@ -15,6 +15,13 @@ class UseTest { } } + +datatype Err = Fail(b:bool) | Ok(value:V) +method ErrTest() returns (e:Err) +{ + return Fail(false); +} + method Main() { var t := new Test(true); var u := new UseTest(); From 7bd89a8226fd457084125188f58b8b0133481228 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 12 Oct 2019 21:40:23 +0200 Subject: [PATCH 080/573] Improve handling of nested arrays --- Source/Dafny/Compiler-cpp.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 864b9938986..ca69702e254 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -828,10 +828,10 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* Contract.Assert(at != null); // follows from type.IsArrayType Type elType = UserDefinedType.ArrayElementType(xType); string typeNameSansBrackets, brackets; - TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); + //TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; if (at.Dims == 1) { - return "shared_ptr>"; + return "shared_ptr>"; } else { throw NotSupported("Multi-dimensional arrays"); } From 51ade0edd43d33bc0a4cc8e0c12b71caa273ae3a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 12 Oct 2019 22:27:20 +0200 Subject: [PATCH 081/573] Add a test case for tuples of 2 --- Binaries/DafnyRuntime.h | 45 ++++++++++++++++++++++++++++-------- Source/Dafny/Compiler-cpp.cs | 14 ++++++++--- Test/c++/tuple.dfy | 12 ++++++++++ 3 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 Test/c++/tuple.dfy diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index da5bda52bca..f005af9212f 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -28,15 +28,6 @@ typedef long long int64; * UTILITIES * *********************************************************/ -template -T get_default(T*); - -bool get_default(bool*) { return true; } -int get_default(int*) { return 0; } -unsigned int get_default(unsigned int*) { return 0; } -unsigned long get_default(unsigned long*) { return 0; } -unsigned long long get_default(unsigned long long*) { return 0; } - // using boost::hash_combine template inline void hash_combine(std::size_t& seed, T const& v) @@ -72,6 +63,42 @@ class IntegerRange { iterator end_; }; +/********************************************************* + * DEFAULTS * + *********************************************************/ + +template +T get_default(T*); + +bool get_default(bool*) { return true; } +int get_default(int*) { return 0; } +unsigned int get_default(unsigned int*) { return 0; } +unsigned long get_default(unsigned long*) { return 0; } +unsigned long long get_default(unsigned long long*) { return 0; } + +/********************************************************* + * TUPLES * + *********************************************************/ + +template +struct Tuple2 { + T0 t0; + T1 t1; + + Tuple2() { + t0 = get_default(NULL); + t1 = get_default(NULL); + } + + Tuple2(T0 _t0, T1 _t1) { + t0 = _t0; + t1 = _t1; + } + + T0 get_0() { return t0; } + T1 get_1() { return t1; } +}; + /********************************************************* * SEQUENCES * *********************************************************/ diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index ca69702e254..25d380286e0 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -989,7 +989,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } } else if (cl is DatatypeDecl) { var dt = (DatatypeDecl)cl; - var s = dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt); + var s = dt is TupleTypeDecl ? "Tuple" + (dt as TupleTypeDecl).Dims : FullTypeName(udt); var w = new TargetWriter(); w.Write("{0}{1}()", s, TemplateMethod(udt.TypeArgs)); /* @@ -1508,6 +1508,9 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb return IdProtect(cl.Module.CompileName); } else if (Attributes.Contains(cl.Attributes, "extern")) { return IdProtect(cl.Module.CompileName) + "::" + IdProtect(cl.Name); + } else if (cl is TupleTypeDecl) { + var tuple = cl as TupleTypeDecl; + return "Tuple" + tuple.Dims; } else { return IdProtect(cl.Module.CompileName) + "::" + IdProtect(cl.CompileName); } @@ -1527,7 +1530,12 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri var ctorName = ctor.CompileName; if (dt is TupleTypeDecl) { - wr.Write("_dafny.Tuple.of({0})", arguments); + var tuple = dt as TupleTypeDecl; + var types = new List(); + foreach (var arg in dtv.Arguments) { + types.Add(arg.Type); + } + wr.Write("Tuple{0}{1}({2})", tuple.Dims, TemplateMethod(types), arguments); } else if (!isCoCall) { // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) @@ -1604,7 +1612,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu if (isLValue && member is ConstantField) { wr.Write("->{0}", member.CompileName); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { - wr.Write("[{0}]", dtor.Name); + wr.Write(".get_{0}()", dtor.Name); //} else if (member is SpecialField sf && sf.SpecialId == SpecialField.ID.Con) { } else if (!isLValue && member is SpecialField sf) { diff --git a/Test/c++/tuple.dfy b/Test/c++/tuple.dfy new file mode 100644 index 00000000000..69905f8dd6e --- /dev/null +++ b/Test/c++/tuple.dfy @@ -0,0 +1,12 @@ + +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +method ReturnTuple() returns (x:(uint32,uint32)) +{ + return (1, 2); +} + +method Main() { + var x := ReturnTuple(); + var y := x.0; +} From a8b63da5bc71abc58612c858a2e7c068e8cc238b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 13 Oct 2019 10:57:24 -0400 Subject: [PATCH 082/573] Working on fixing explicit constructor tests --- Source/Dafny/Compiler.cs | 2 +- Test/c++/datatypes.dfy | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 528dd00ad77..7efc7f62396 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -461,7 +461,7 @@ protected virtual void EmitIndexCollectionUpdate(out TargetWriter wSource, out T protected abstract void EmitApplyExpr(Type functionType, Bpl.IToken tok, Expression function, List arguments, bool inLetExprBody, TargetWriter wr); protected abstract TargetWriter EmitBetaRedex(List boundVars, List arguments, string typeArgs, List boundTypes, Type resultType, Bpl.IToken resultTok, bool inLetExprBody, TargetWriter wr); protected virtual void EmitConstructorCheck(string source, DatatypeCtor ctor, TargetWriter wr) { - wr.Write("{0}.is_{1}", source, ctor.CompileName); + wr.Write("{0}.is_{1}()", source, ctor.CompileName); } /// /// EmitDestructor is somewhat similar to following "source" with a call to EmitMemberSelect. diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 4e98e0d9b56..2e5899b3a06 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,5 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 - +/* datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) @@ -25,9 +25,9 @@ method Main() { e2 := Ex2b(true); Callee(e2); } - +*/ datatype Option = None | Some(value:V) - +/* datatype Err = Fail(err:bool) | Ok(value:V) @@ -36,9 +36,10 @@ method matcher(e:Err) { case Fail(s) => print s; case Ok(v) => print v; } - +*/ method GenericTest() { var v:Option := Some(32); - matcher(Ok(42)); - matcher(Fail(true)); +// matcher(Ok(42)); +// matcher(Fail(true)); + if v.Some? { print "Got some"; } } From e2d225335709df003ab17aec85840931600fb456 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 14 Oct 2019 23:22:38 -0400 Subject: [PATCH 083/573] Improve handling of datatype queries --- Source/Dafny/Compiler-cpp.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 25d380286e0..d326a044757 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -280,6 +280,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // result.v_Ex2a.u = u; // return result; // } + // bool is_Example2_2a() { return tag == Example2::TAG_2a; } + // bool is_Example2_2b() { return tag == Example2::TAG_2b; } // }; // bool is_Example2_2a(struct Example2 d) { return d.tag == Example2::TAG_2a; } // bool is_Example2_2b(struct Example2 d) { return d.tag == Example2::TAG_2b; } @@ -411,8 +413,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } } - // Declare type queries + // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { + ws.WriteLine("bool is_{0}() {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); wr.WriteLine("{0}\nbool is_{1}(struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } } @@ -1615,6 +1618,11 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu wr.Write(".get_{0}()", dtor.Name); //} else if (member is SpecialField sf && sf.SpecialId == SpecialField.ID.Con) { + } else if (member is SpecialField sf2 && sf2.SpecialId == SpecialField.ID.UseIdParam && sf2.IdParam is string fieldName && fieldName.StartsWith("is_")) { + // Ugly hack of a check to figure out if this is a datatype query: f.Constructor? + //wr = EmitCoercionIfNecessary(from:sf2.Type, to:expectedType, tok:null, wr:wr); + wSource = wr.Fork(); + wr.Write(".{0}()", fieldName); } else if (!isLValue && member is SpecialField sf) { string compiledName, preStr, postStr; GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); From 0d9a333387c26ee332e4903d1cc489a1ab9aa75f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 14 Oct 2019 23:41:21 -0400 Subject: [PATCH 084/573] Restore the datatypes test and fix handling of destructors --- Source/Dafny/Compiler-cpp.cs | 15 +++++++++++++-- Test/c++/datatypes.dfy | 37 ++++++++++++++++++++++++------------ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index d326a044757..5b02cc168ba 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1630,8 +1630,19 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu wr.Write("->{0}", compiledName); } else if (sf.SpecialId == SpecialField.ID.Keys || sf.SpecialId == SpecialField.ID.Values) { wr.Write(".{0}", compiledName); - } else if (sf is DatatypeDestructor) { - wr.Write(".{0}", sf.CompileName); + } else if (sf is DatatypeDestructor dtor2) { + if (dtor2.EnclosingCtors.Count > 1) { + NotSupported(String.Format("Using the same destructor {0} with multiple constructors is ambiguous", member.Name), dtor2.tok); + } + if (!(dtor2.EnclosingClass is IndDatatypeDecl)) { + NotSupported(String.Format("Unexpected use of a destructor {0} that isn't for an inductive datatype. Panic!", member.Name), dtor2.tok); + } + var dt = dtor2.EnclosingClass as IndDatatypeDecl; + if (dt.Ctors.Count > 1) { + wr.Write(".v_{0}.{1}", dtor2.EnclosingCtors[0].CompileName, sf.CompileName); + } else { + wr.Write(".{0}", sf.CompileName); + } } else if (compiledName.Length != 0) { wr.Write("::{0}", compiledName); } else { diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 2e5899b3a06..6b444aa70c7 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,4 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -/* datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) @@ -18,16 +17,19 @@ method Callee(e:Example2) { } } -method Main() { +method TestDestructor() { var e1 := Example1(22, false); - var e2 := Ex2a(42); - Callee(e2); - e2 := Ex2b(true); - Callee(e2); + var x := e1.u; + if x == 22 { + print "This is expected"; + } else { + assert false; + print "This is unexpected!!!"; + } } -*/ + + datatype Option = None | Some(value:V) -/* datatype Err = Fail(err:bool) | Ok(value:V) @@ -36,10 +38,21 @@ method matcher(e:Err) { case Fail(s) => print s; case Ok(v) => print v; } -*/ + method GenericTest() { var v:Option := Some(32); -// matcher(Ok(42)); -// matcher(Fail(true)); - if v.Some? { print "Got some"; } + matcher(Ok(42)); + matcher(Fail(true)); + if v.Some? { print "Got some", v.value; } } + +method Main() { + var e1 := Example1(22, false); + var e2 := Ex2a(42); + Callee(e2); + e2 := Ex2b(true); + Callee(e2); + TestDestructor(); + GenericTest(); +} + From cd5b6c10fc1332bb27f0a24ac10d9426289d85a2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Oct 2019 07:15:45 -0400 Subject: [PATCH 085/573] Add a datatype comparison test --- Test/c++/datatypes.dfy | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 6b444aa70c7..41fc9d3b864 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,7 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 datatype Example1 = Example1(u:uint32, b:bool) +datatype Example4 = Ex4a | Ex4b +/* datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) @@ -55,4 +57,13 @@ method Main() { TestDestructor(); GenericTest(); } +*/ +method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { + if x0 == x1 { + print "Example1s are equal"; + } +// if y0 == y1 { +// print "Example4s are equal"; +// } +} From 6ee2628d88fa4e3cd227c74111cb04caa33c9c36 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Oct 2019 14:20:31 -0400 Subject: [PATCH 086/573] Fix template instantiation so linker is happy --- Binaries/DafnyRuntime.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index f005af9212f..2da216e5306 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -70,11 +70,16 @@ class IntegerRange { template T get_default(T*); -bool get_default(bool*) { return true; } -int get_default(int*) { return 0; } -unsigned int get_default(unsigned int*) { return 0; } -unsigned long get_default(unsigned long*) { return 0; } -unsigned long long get_default(unsigned long long*) { return 0; } +template <> +bool get_default(bool*) { return true; } +template <> +int get_default(int*) { return 0; } +template <> +unsigned int get_default(unsigned int*) { return 0; } +template <> +unsigned long get_default(unsigned long*) { return 0; } +template <> +unsigned long long get_default(unsigned long long*) { return 0; } /********************************************************* * TUPLES * From c430eaac539ecbc314cdda8745526bacdae3a6b8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Oct 2019 23:33:14 -0400 Subject: [PATCH 087/573] Properly generate equality comparisons for all of our datatypes --- Source/Dafny/Compiler-cpp.cs | 34 ++++++++++++++++++++++++++++++---- Test/c++/datatypes.dfy | 34 +++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5b02cc168ba..fea3c7e0244 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -332,7 +332,15 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); } - wr.WriteLine("{0}\nbool is_{1}(struct {2}{3} d) {{ return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + // Overload the comparison operator + ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); + ws.Write("\treturn true "); + foreach (var arg in argNames) { + ws.WriteLine("\t\t&& left.{0} == right.{0}", arg); + } + ws.WriteLine(";\n}"); + + wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } else { // Create one struct for each constructor @@ -340,12 +348,22 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}_{2}", DeclareTemplate(dt.TypeArgs), DtT_protected, ctor.CompileName), ";"); // Declare the struct members var i = 0; + var argNames = new List(); foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + argNames.Add(FormalName(arg, i)); i++; } } + + // Overload the comparison operator + wstruct.WriteLine("friend bool operator==(const {0}_{1} &left, const {0}_{1} &right) {{ ", DtT_protected, ctor.CompileName); + wstruct.Write("\treturn true "); + foreach (var arg in argNames) { + wstruct.WriteLine("\t\t&& left.{0} == right.{0}", arg); + } + wstruct.WriteLine(";\n}"); } // Declare the overall tagged union @@ -412,12 +430,20 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wcc.WriteLine("return *this;"); } } - + // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { - ws.WriteLine("bool is_{0}() {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - wr.WriteLine("{0}\nbool is_{1}(struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + ws.WriteLine("bool is_{0}() const {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + } + + // Overload the comparison operator + ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); + ws.Write("\treturn false"); + foreach (var ctor in dt.Ctors) { + ws.WriteLine("\t\t|| (left.is_{0}() && right.is_{0}() && left.v_{0} == right.v_{0})", ctor.CompileName); } + ws.WriteLine(";\n}"); } } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 41fc9d3b864..9b0ef94b9c3 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,9 +1,8 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 datatype Example1 = Example1(u:uint32, b:bool) -datatype Example4 = Ex4a | Ex4b -/* datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) +datatype Example4 = Ex4a | Ex4b type Ex1Sub = d:Example1 | d.u == 0 witness Example1(0, true) type Ex2Sub = d:Example2 | d.Ex2a? && d.u == 0 witness Ex2a(0) @@ -23,10 +22,10 @@ method TestDestructor() { var e1 := Example1(22, false); var x := e1.u; if x == 22 { - print "This is expected"; + print "This is expected\n"; } else { assert false; - print "This is unexpected!!!"; + print "This is unexpected!!!\n"; } } @@ -36,16 +35,27 @@ datatype Err = Fail(err:bool) | Ok(value:V) method matcher(e:Err) { - match e + match e { case Fail(s) => print s; case Ok(v) => print v; + } + print "\n"; } method GenericTest() { var v:Option := Some(32); matcher(Ok(42)); matcher(Fail(true)); - if v.Some? { print "Got some", v.value; } + if v.Some? { print "Got some:", v.value, "\n"; } +} + +method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { + if x0 == x1 { + print "Example1s are equal\n"; + } + if y0 == y1 { + print "Example4s are equal\n"; + } } method Main() { @@ -56,14 +66,8 @@ method Main() { Callee(e2); TestDestructor(); GenericTest(); + Comparison(Example1(42, true), Example1(42, true), Ex4b, Ex4b); + Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); + Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); } -*/ -method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { - if x0 == x1 { - print "Example1s are equal"; - } -// if y0 == y1 { -// print "Example4s are equal"; -// } -} From 2205a1403bb434f325f580ef2f6993bdeb564bfc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Oct 2019 23:41:16 -0400 Subject: [PATCH 088/573] Do not-equals too --- Source/Dafny/Compiler-cpp.cs | 15 +++++++++++++-- Test/c++/datatypes.dfy | 6 ++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fea3c7e0244..5121a9b7b38 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -339,13 +339,17 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { ws.WriteLine("\t\t&& left.{0} == right.{0}", arg); } ws.WriteLine(";\n}"); + + // Overload the not-comparison operator + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } else { // Create one struct for each constructor foreach (var ctor in dt.Ctors) { - var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}_{2}", DeclareTemplate(dt.TypeArgs), DtT_protected, ctor.CompileName), ";"); + string structName = string.Format("{0}_{1}", DtT_protected, ctor.CompileName); + var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members var i = 0; var argNames = new List(); @@ -358,12 +362,15 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } // Overload the comparison operator - wstruct.WriteLine("friend bool operator==(const {0}_{1} &left, const {0}_{1} &right) {{ ", DtT_protected, ctor.CompileName); + wstruct.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", structName); wstruct.Write("\treturn true "); foreach (var arg in argNames) { wstruct.WriteLine("\t\t&& left.{0} == right.{0}", arg); } wstruct.WriteLine(";\n}"); + + // Overload the not-comparison operator + wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); } // Declare the overall tagged union @@ -444,6 +451,10 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { ws.WriteLine("\t\t|| (left.is_{0}() && right.is_{0}() && left.v_{0} == right.v_{0})", ctor.CompileName); } ws.WriteLine(";\n}"); + + // Overload the not-comparison operator + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + } } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 9b0ef94b9c3..398ac620f4c 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -53,9 +53,15 @@ method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { if x0 == x1 { print "Example1s are equal\n"; } + if x0 != x1 { + print "Example1s are not equal\n"; + } if y0 == y1 { print "Example4s are equal\n"; } + if y0 != y1 { + print "Example4s are not equal\n"; + } } method Main() { From e64ac7786f0f0d575424a349303aa5d821c2304f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 16 Oct 2019 00:10:33 -0400 Subject: [PATCH 089/573] Fully expand type name for array type parameter --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/extern.dfy | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5121a9b7b38..0c19b813bfa 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -871,7 +871,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* //TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; if (at.Dims == 1) { - return "shared_ptr>"; + return "shared_ptr>"; } else { throw NotSupported("Multi-dimensional arrays"); } diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy index 213f5ffbc3a..99744f38464 100644 --- a/Test/c++/extern.dfy +++ b/Test/c++/extern.dfy @@ -9,7 +9,6 @@ module {:extern "Extern"} Extern { module TestMod { import opened Extern - class C { var s:state; @@ -18,7 +17,17 @@ module TestMod { } } + class D { + var s:uint64; + + constructor (i:uint64) { + this.s := i; + } + } + method Main() { var a:array := newArrayFill(5, 42); + var d := new D(21); + var b:array := newArrayFill(3, d); } } From e507b4d41a3bcba5c33cf36bf056f7b71cdbb7d1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 16 Oct 2019 14:28:09 -0400 Subject: [PATCH 090/573] Special case type synonyms for array to seq --- Source/Dafny/Compiler-cpp.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0c19b813bfa..4a2ee0c8318 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1748,7 +1748,18 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { - wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(source.Type.TypeArgs[0], wr, source.tok, null, true)); + string typeName = ""; + if (source.Type is UserDefinedType udt && udt.ResolvedClass != null && + udt.ResolvedClass is TypeSynonymDecl tsd) { + // Hack to workaround type synonyms wrapped around the actual array type + // TODO: Come up with a more systematic way of resolving this! + typeName = TypeName(tsd.Rhs.TypeArgs[0], wr, source.tok, null, true); + } else { + typeName = TypeName(source.Type.TypeArgs[0], wr, source.tok, null, true); + } + wr.Write("DafnySequence<{0}>::SeqFromArray", typeName); + //var arr = source.Type.AsArrayType; + // wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(arr., wr, source.tok, null, true)); //wr.Write("DafnySequence<{0}>::SeqFromArray", IdName(source.GetType().AsArrayType.TypeArgs[0])); } TrParenExpr(source, wr, inLetExprBody); From 873c377b6e083e72c22b3f73a95d54c12f92502b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 16 Oct 2019 14:46:41 -0400 Subject: [PATCH 091/573] Fix the assignment operator --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4a2ee0c8318..a5e99a980e3 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -434,8 +434,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wcc.WriteLine("tag = other.tag;"); foreach (var ctor in dt.Ctors) { wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); - wcc.WriteLine("return *this;"); } + wcc.WriteLine("return *this;"); } // Declare type queries, both as members and general-purpose functions diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 3ce88a0f42b..399b1e24bc2 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -9,7 +9,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log -CXXFLAGS += -std=c++11 -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -Wall -Wextra -Wpedantic -std=c++11 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) From 043c7efd1100d719e118bf01a7e3eeaf5ac68468 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 17 Oct 2019 23:10:47 -0400 Subject: [PATCH 092/573] Improve handling of subset types of sequences --- Source/Dafny/Compiler-cpp.cs | 9 ++++++++- Test/c++/seqs.dfy | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index a5e99a980e3..6cc554b3fdb 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -504,7 +504,14 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { if (sst.Name == "nat") { return; // C++ does not support Nats } - wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), DeclareTemplate(sst.Var.Type.TypeArgs)); + + string templateDecl = ""; + if (sst.Var.Type is SeqType s) { + templateDecl = DeclareTemplate(s.TypeArgs[0].TypeArgs); // We want the type args (if any) for the seq-elt type, not the seq + } else { + templateDecl = DeclareTemplate(sst.Var.Type.TypeArgs); + } + wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); var className = "class_" + IdName(sst); var cw = CreateClass(className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 8ebe2fb6b6c..d6db209c7c9 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,5 +1,7 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +type fixed = t:seq | |t| == 2 witness [0,0] + method Test(name:string, b:bool) requires b; { @@ -68,5 +70,3 @@ method Main() { Contains(); PrintTest(); } - - From 0b01f0e35956b87ef21ced00cedf7906d4d85d51 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 18 Oct 2019 00:37:57 -0400 Subject: [PATCH 093/573] Handle extern function methods too --- Source/Dafny/Compiler.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 7efc7f62396..5bff5ac9aa9 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -3452,15 +3452,24 @@ void CompileFunctionCallExpr(FunctionCallExpr e, TargetWriter wr, bool inLetExpr Function f = e.Function; wr = EmitCoercionIfNecessary(f.ResultType, e.Type, e.tok, wr); - - if (f.IsStatic) { + + string qual = ""; + string compileName = ""; + if (f.IsExtern(out qual, out compileName) && qual != null) { + // ****************************************************************** + // TODO: Add an overrideable function for the double colon used here + // ****************************************************************** + wr.Write("{0}::", qual); + } else if (f.IsStatic) { wr.Write("{0}::", TypeName_Companion(e.Receiver.Type, wr, e.tok, f)); + compileName = IdName(f); } else { wr.Write("("); tr(e.Receiver, wr, inLetExprBody); wr.Write(")->"); + compileName = IdName(f); } - wr.Write(IdName(f)); + wr.Write(compileName); List typeArgs; if (f.TypeArgs.Count != 0) { typeArgs = f.TypeArgs.ConvertAll(ta => e.TypeArgumentSubstitutions[ta]); From 057c6a5721aaa5de9aa56e58acd45752d85576c8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 18 Oct 2019 01:15:10 -0400 Subject: [PATCH 094/573] Fix tuple default --- Binaries/DafnyRuntime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 2da216e5306..5a754b6ade8 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -92,7 +92,7 @@ struct Tuple2 { Tuple2() { t0 = get_default(NULL); - t1 = get_default(NULL); + t1 = get_default(NULL); } Tuple2(T0 _t0, T1 _t1) { From 3dca343ebc318b4c41ba53e78184329b363b6c8c Mon Sep 17 00:00:00 2001 From: Jay Bosamiya Date: Fri, 18 Oct 2019 10:26:15 -0400 Subject: [PATCH 095/573] Fix includes for DafnyRuntime.h for [shared_ptr] --- Binaries/DafnyRuntime.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 5a754b6ade8..1bc537873fc 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include From b552ea510fc1c4b0dd4a5c2a218fe5dcfe56b213 Mon Sep 17 00:00:00 2001 From: Jay Bosamiya Date: Tue, 22 Oct 2019 16:21:53 -0400 Subject: [PATCH 096/573] Introduce 3-, 4-, and 5- tuples --- Binaries/DafnyRuntime.h | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 1bc537873fc..845d07c9daa 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -105,6 +105,87 @@ struct Tuple2 { T1 get_1() { return t1; } }; +template +struct Tuple3 { + T0 t0; + T1 t1; + T2 t2; + + Tuple3() { + t0 = get_default(NULL); + t1 = get_default(NULL); + t2 = get_default(NULL); + } + + Tuple3(T0 _t0, T1 _t1, T2 _t2) { + t0 = _t0; + t1 = _t1; + t2 = _t2; + } + + T0 get_0() { return t0; } + T1 get_1() { return t1; } + T2 get_2() { return t2; } +}; + +template +struct Tuple4 { + T0 t0; + T1 t1; + T2 t2; + T3 t3; + + Tuple4() { + t0 = get_default(NULL); + t1 = get_default(NULL); + t2 = get_default(NULL); + t3 = get_default(NULL); + } + + Tuple4(T0 _t0, T1 _t1, T2 _t2, T3 _t3) { + t0 = _t0; + t1 = _t1; + t2 = _t2; + t3 = _t3; + } + + T0 get_0() { return t0; } + T1 get_1() { return t1; } + T2 get_2() { return t2; } + T3 get_3() { return t3; } +}; + +template +struct Tuple5 { + T0 t0; + T1 t1; + T2 t2; + T3 t3; + T4 t4; + + Tuple5() { + t0 = get_default(NULL); + t1 = get_default(NULL); + t2 = get_default(NULL); + t3 = get_default(NULL); + t4 = get_default(NULL); + } + + Tuple5(T0 _t0, T1 _t1, T2 _t2, T3 _t3, T4 _t4) { + t0 = _t0; + t1 = _t1; + t2 = _t2; + t3 = _t3; + t4 = _t4; + } + + T0 get_0() { return t0; } + T1 get_1() { return t1; } + T2 get_2() { return t2; } + T3 get_3() { return t3; } + T3 get_4() { return t4; } +}; + /********************************************************* * SEQUENCES * *********************************************************/ From 08d1a09f4128cecd317b36c7570554a048a41f12 Mon Sep 17 00:00:00 2001 From: Jay Bosamiya Date: Tue, 22 Oct 2019 16:39:17 -0400 Subject: [PATCH 097/573] Introduce ostream operators for tuples for use with print --- Binaries/DafnyRuntime.h | 68 ++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 17 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 845d07c9daa..f982c7dad8e 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -91,20 +91,27 @@ struct Tuple2 { T0 t0; T1 t1; - Tuple2() { + Tuple2() { t0 = get_default(NULL); t1 = get_default(NULL); } - - Tuple2(T0 _t0, T1 _t1) { + + Tuple2(T0 _t0, T1 _t1) { t0 = _t0; t1 = _t1; } - T0 get_0() { return t0; } - T1 get_1() { return t1; } + T0 get_0() const { return t0; } + T1 get_1() const { return t1; } }; +template +inline ostream& operator<<(ostream& out, const Tuple2& val){ + out << val.get_0(); + out << val.get_1(); + return out; +} + template struct Tuple3 { T0 t0; @@ -123,11 +130,19 @@ struct Tuple3 { t2 = _t2; } - T0 get_0() { return t0; } - T1 get_1() { return t1; } - T2 get_2() { return t2; } + T0 get_0() const { return t0; } + T1 get_1() const { return t1; } + T2 get_2() const { return t2; } }; +template +inline ostream& operator<<(ostream& out, const Tuple3& val){ + out << val.get_0(); + out << val.get_1(); + out << val.get_2(); + return out; +} + template struct Tuple4 { T0 t0; @@ -149,12 +164,21 @@ struct Tuple4 { t3 = _t3; } - T0 get_0() { return t0; } - T1 get_1() { return t1; } - T2 get_2() { return t2; } - T3 get_3() { return t3; } + T0 get_0() const { return t0; } + T1 get_1() const { return t1; } + T2 get_2() const { return t2; } + T3 get_3() const { return t3; } }; +template +inline ostream& operator<<(ostream& out, const Tuple4& val){ + out << val.get_0(); + out << val.get_1(); + out << val.get_2(); + out << val.get_3(); + return out; +} + template struct Tuple5 { T0 t0; @@ -179,13 +203,23 @@ struct Tuple5 { t4 = _t4; } - T0 get_0() { return t0; } - T1 get_1() { return t1; } - T2 get_2() { return t2; } - T3 get_3() { return t3; } - T3 get_4() { return t4; } + T0 get_0() const { return t0; } + T1 get_1() const { return t1; } + T2 get_2() const { return t2; } + T3 get_3() const { return t3; } + T3 get_4() const { return t4; } }; +template +inline ostream& operator<<(ostream& out, const Tuple5& val){ + out << val.get_0(); + out << val.get_1(); + out << val.get_2(); + out << val.get_3(); + out << val.get_4(); + return out; +} + /********************************************************* * SEQUENCES * *********************************************************/ From e3a12a9f7bf928c2305ac985ee7e211b1172ab5d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 23 Oct 2019 22:25:34 -0400 Subject: [PATCH 098/573] Add known limitations --- Test/c++/LIMITATIONS | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Test/c++/LIMITATIONS diff --git a/Test/c++/LIMITATIONS b/Test/c++/LIMITATIONS new file mode 100644 index 00000000000..1c59fa2ee64 --- /dev/null +++ b/Test/c++/LIMITATIONS @@ -0,0 +1,5 @@ +- No higher order functions even for array init. Use extern newArrayFill (see extern.dfy) or similar +- Avoid bare constants. Put them in the class using them +- We currently only support tuples up to arity 5. A common place where you might go over that limit is print statements, which tuple the arguments +- We don't support BigIntegers, so do not use int, or arr.Length, or sequence length, etc. + From dbbc539cdce4e56e18aea11e0cc8b993b6edae7e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 28 Oct 2019 16:33:19 -0400 Subject: [PATCH 099/573] Fix a find-replace error --- Test/c++/seqs.dfy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index d6db209c7c9..c9873ecde3d 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,4 +1,4 @@ -newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 type fixed = t:seq | |t| == 2 witness [0,0] From 7d44105dbcbd005139fcddb400be2d115a3cda73 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 28 Oct 2019 16:44:26 -0400 Subject: [PATCH 100/573] Take a different approach to emitting array-to-seq --- Source/Dafny/Compiler-cpp.cs | 3 ++- Test/c++/seqs.dfy | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 6cc554b3fdb..c2743b42d90 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1756,7 +1756,8 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { string typeName = ""; - if (source.Type is UserDefinedType udt && udt.ResolvedClass != null && + + if (source.Type.TypeArgs.Count == 0 && source.Type is UserDefinedType udt && udt.ResolvedClass != null && udt.ResolvedClass is TypeSynonymDecl tsd) { // Hack to workaround type synonyms wrapped around the actual array type // TODO: Come up with a more systematic way of resolving this! diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index c9873ecde3d..029e81faaa0 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,7 +1,17 @@ +newtype{:nativeType "byte"} uint8 = i:int | 0 <= i < 0x100 newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 type fixed = t:seq | |t| == 2 witness [0,0] +type buffer = a:array? | a == null || a.Length < 0x100000000 +type buffer_t = buffer + +method BufferTest(b:buffer_t) + requires b != null +{ + var t := b[..]; +} + method Test(name:string, b:bool) requires b; { From 8d415f6f374992cd0ac05a2d87efe985fd1e656b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Nov 2019 13:43:13 -0500 Subject: [PATCH 101/573] Add some bit-vector tests and corresponding fixes --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/Makefile | 2 +- Test/c++/bit-vectors.dfy | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 Test/c++/bit-vectors.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c2743b42d90..b077cab10d9 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1383,7 +1383,6 @@ protected override void EmitStringLiteral(string str, bool isVerbatim, TextWrite } protected override TargetWriter EmitBitvectorTruncation(BitvectorType bvType, bool surroundByUnchecked, TargetWriter wr) { - throw NotSupported("EmitBitvectorTruncation"); string nativeName = null, literalSuffix = null; bool needsCastAfterArithmetic = false; if (bvType.NativeType != null) { @@ -1391,6 +1390,7 @@ protected override TargetWriter EmitBitvectorTruncation(BitvectorType bvType, bo } if (bvType.NativeType == null) { + throw NotSupported("EmitBitvectorTruncation with BigInteger value"); wr.Write("("); var middle = wr.Fork(); wr.Write(").mod(new BigNumber(2).exponentiatedBy({0}))", bvType.Width); diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 399b1e24bc2..6cc505a4f55 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -22,7 +22,7 @@ vars: echo $(EXECS) %.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) - $(DAFNY) /compile:0 /spillTargetCode:3 /compileTarget:cpp Extern.h $< + $(DAFNY) /timeLimit:10 /compile:0 /spillTargetCode:3 /compileTarget:cpp Extern.h $< %.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< diff --git a/Test/c++/bit-vectors.dfy b/Test/c++/bit-vectors.dfy new file mode 100644 index 00000000000..680407acb48 --- /dev/null +++ b/Test/c++/bit-vectors.dfy @@ -0,0 +1,25 @@ +newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 + +method BasicOps(b0:bv64, b1:bv64) { + var r0:bv64 := b0 & b1; + var r1:bv64 := b0 | b1; + var r2:bv64 := b0 ^ b1; + var r3:bv64 := b0 ^ 0xffff_ffff_ffff_ffff; + var r4:bv64 := b0 << 4; +} + +lemma {:axiom} as_int_as_bv64(a: bv64) + ensures (a as int) as bv64 == a + +method Casts(u0:uint64) +{ + var r0:bv64 := u0 as bv64 << 1; + as_int_as_bv64(u0 as bv64 << 1); + var r1:uint64 := (u0 as bv64 << 1) as uint64; +} + + +method Main() { + BasicOps(72, 15); + Casts(42); +} From 2afda1a26bc509dcfa7be4fd947736ede4638cb4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Nov 2019 14:08:02 -0500 Subject: [PATCH 102/573] Add some basic tests for function methods and compiler support thereof --- Source/Dafny/Compiler-cpp.cs | 27 +++++++++++++++++++++++++++ Test/c++/functions.dfy | 17 +++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 Test/c++/functions.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b077cab10d9..cb071b3dfe9 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -645,6 +645,32 @@ public void Finish() { } } protected BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { + if (!createBody) { + return null; + } + + if (typeArgs.Count != 0) { + wr.WriteLine(DeclareTemplate(typeArgs)); + } + + wr.Write("{0}{1} {2}", + isStatic ? "static " : "", + TypeName(resultType, wr, tok), + name); + + wr.Write("("); + int nIns = WriteFormals("", formals, wr); + + var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); + + /* + var r = new TargetWriter(w.IndentLevel); + EmitReturn(m.Outs, r); + w.BodySuffix = r.ToString(); + */ + + return w; + /* wr.Write("{0}{1} {2}", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); if (typeArgs != null && typeArgs.Count != 0) { throw NotSupported(String.Format("type parameters in function {0}", name), tok); @@ -664,6 +690,7 @@ public void Finish() { } return w; } } + */ } List UsedTypeParameters(DatatypeDecl dt) { diff --git a/Test/c++/functions.dfy b/Test/c++/functions.dfy new file mode 100644 index 00000000000..e1c91a97383 --- /dev/null +++ b/Test/c++/functions.dfy @@ -0,0 +1,17 @@ +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 + +function method Test(x:uint32) : uint64 { + x as uint64 + 1 +} + +function method Seqs(s:seq, x:uint32, default_val:T) : T + requires |s| < 1000; +{ + if |s| as uint32 > x then s[x] else default_val +} + + +method Main() { + var y := Test(12); +} From 818b072cfbc333949d8092b7db6501e4171beae3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Nov 2019 14:37:11 -0500 Subject: [PATCH 103/573] Support taking the length of a sequence if we know it will be in bounds --- Source/Dafny/Compiler-cpp.cs | 5 ++--- Test/c++/seqs.dfy | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index cb071b3dfe9..92cfbfd522b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2223,10 +2223,9 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, // Optimize constant to avoid intermediate BigInteger wr.Write("{0}({1})", GetNativeTypeName(toNative), literal); } else if (u != null && u.Op == UnaryOpExpr.Opcode.Cardinality) { - // Optimize .Count to avoid intermediate BigInteger - wr.Write("{0}(", GetNativeTypeName(toNative)); + wr.Write("({0})(", GetNativeTypeName(toNative)); TrParenExpr(u.E, wr, inLetExprBody); - wr.Write(".CardinalityInt())"); + wr.Write(".length())"); } else if (m != null && m.MemberName == "Length" && m.Obj.Type.IsArrayType) { // Optimize .Length to avoid intermediate BigInteger wr.Write("{0}(", GetNativeTypeName(toNative)); diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index 029e81faaa0..d93ca5bafd2 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -6,6 +6,12 @@ type fixed = t:seq | |t| == 2 witness [0,0] type buffer = a:array? | a == null || a.Length < 0x100000000 type buffer_t = buffer +method BoundedLength(s:seq) + requires |s| < 10; +{ + var x := |s| as uint32; +} + method BufferTest(b:buffer_t) requires b != null { From f4772b138c308eb38bd26acdeef84da189bfec82 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Nov 2019 15:00:24 -0500 Subject: [PATCH 104/573] Add a test and handling for dividing possibly negative numbers --- Binaries/DafnyRuntime.h | 25 +++++++++++++++++++++++++ Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/ints.dfy | 28 +++++++++++++++++----------- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index f982c7dad8e..a87ac2c3124 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -220,6 +220,31 @@ inline ostream& operator<<(ostream& out, const Tuple5& val){ return out; } +/********************************************************* + * MATH * + *********************************************************/ + + +int64 EuclideanDivision_int64(int64 a, int64 b) { + if (0 <= a) { + if (0 <= b) { + // +a +b: a/b + return (int64)((uint64) a / (uint64) b); + } else { + // +a -b: -(a/(-b)) + return -(int64)((uint64) a / (uint64) -b); + } + } else { + if (0 <= b) { + // -a +b: -((-a-1)/b) - 1 + return -(int64)((((uint64) (-(a + 1)))/ (uint64) b) - 1); + } else { + // -a -b: ((-a-1)/(-b)) + 1 + return (int64)((((uint64) (-(a + 1)))/ (uint64) -b) + 1); + } + } +} + /********************************************************* * SEQUENCES * *********************************************************/ diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 92cfbfd522b..4b4f1521895 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2076,7 +2076,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, var nt = AsNativeType(resultType); if (nt.LowerBound < BigInteger.Zero) { // Want Euclidean division for signed types - staticCallString = "_dafny.Div" + Capitalize(GetNativeTypeName(AsNativeType(resultType))); + staticCallString = "EuclideanDivision_" + GetNativeTypeName(AsNativeType(resultType)); } else { // Native division is fine for unsigned opString = "/"; diff --git a/Test/c++/ints.dfy b/Test/c++/ints.dfy index bab3de7944b..e49edaf952c 100644 --- a/Test/c++/ints.dfy +++ b/Test/c++/ints.dfy @@ -1,16 +1,22 @@ -//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 -//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 -//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 -//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 -//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 +newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 +newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 +newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 +newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 -//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 -//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 -//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 -//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 -//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 +newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 +newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 +newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 +newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 +newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 + +method Division(a:int64) + requires 0 <= a < 0x1_0000_0000; +{ + var z := a / 2; +} method Main() { var x:uint32 := 40; From 56b32f3d6cb8dadbf1d8006af0dacb165e0c9136 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Nov 2019 15:09:34 -0500 Subject: [PATCH 105/573] Fix bug in handling datatype constructors with ghost variables --- Source/Dafny/Compiler-cpp.cs | 13 ++++++++++--- Test/c++/datatypes.dfy | 6 +++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4b4f1521895..bfc1f30c012 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -329,7 +329,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Create a constructor with no arguments var wc = ws.NewNamedBlock("{0}()", DtT_protected); foreach (var arg in ctor.Formals) { - wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); + if (!arg.IsGhost) { + wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); + } } // Overload the comparison operator @@ -402,7 +404,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); foreach (Formal arg in ctor.Formals) { - wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + if (!arg.IsGhost) { + wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + } } wc.WriteLine("return result;"); } @@ -414,7 +418,10 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { wd.WriteLine("tag = {0}::TAG_{1};", DtT_protected, default_ctor.CompileName); foreach (Formal arg in default_ctor.Formals) { - wd.WriteLine("v_{0}.{1} = {2};", default_ctor.CompileName, arg.CompileName, DefaultValue(arg.Type, wd, arg.tok)); + if (!arg.IsGhost) { + wd.WriteLine("v_{0}.{1} = {2};", default_ctor.CompileName, arg.CompileName, + DefaultValue(arg.Type, wd, arg.tok)); + } } } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 398ac620f4c..fdf3048b58d 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,4 +1,9 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + +datatype Op = + | NoOp + | PushOp(ghost id: int) + datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) @@ -76,4 +81,3 @@ method Main() { Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); } - From 6516e1ea89df97f2581e40c2c40c1de3bef21f3f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 10 Nov 2019 12:44:11 -0500 Subject: [PATCH 106/573] Attempting to workaround template instantiation issues. These fixes help, but not enough --- Binaries/DafnyRuntime.h | 36 +++++++++++++++++++++--------------- Source/Dafny/Compiler-cpp.cs | 2 +- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index a87ac2c3124..1e928b5d8de 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -92,8 +92,8 @@ struct Tuple2 { T1 t1; Tuple2() { - t0 = get_default(NULL); - t1 = get_default(NULL); + t0 = get_default((T0*)NULL); + t1 = get_default((T1*)NULL); } Tuple2(T0 _t0, T1 _t1) { @@ -119,9 +119,9 @@ struct Tuple3 { T2 t2; Tuple3() { - t0 = get_default(NULL); - t1 = get_default(NULL); - t2 = get_default(NULL); + t0 = get_default((T0*)NULL); + t1 = get_default((T1*)NULL); + t2 = get_default((T2*)NULL); } Tuple3(T0 _t0, T1 _t1, T2 _t2) { @@ -151,10 +151,10 @@ struct Tuple4 { T3 t3; Tuple4() { - t0 = get_default(NULL); - t1 = get_default(NULL); - t2 = get_default(NULL); - t3 = get_default(NULL); + t0 = get_default((T0*)NULL); + t1 = get_default((T1*)NULL); + t2 = get_default((T2*)NULL); + t3 = get_default((T3*)NULL); } Tuple4(T0 _t0, T1 _t1, T2 _t2, T3 _t3) { @@ -188,11 +188,11 @@ struct Tuple5 { T4 t4; Tuple5() { - t0 = get_default(NULL); - t1 = get_default(NULL); - t2 = get_default(NULL); - t3 = get_default(NULL); - t4 = get_default(NULL); + t0 = get_default((T0*)NULL); + t1 = get_default((T1*)NULL); + t2 = get_default((T2*)NULL); + t3 = get_default((T3*)NULL); + t4 = get_default((T4*)NULL); } Tuple5(T0 _t0, T1 _t1, T2 _t2, T3 _t3, T4 _t4) { @@ -286,7 +286,7 @@ struct DafnySequence { return ret; } - // TODO: isPrefixOf, isPropoerPrefixOf + // TODO: isPrefixOf, isProperPrefixOf DafnySequence concatenate(DafnySequence other) { DafnySequence ret(seq.size() + other.seq.size()); @@ -351,6 +351,12 @@ struct DafnySequence { vector seq; }; +template +DafnySequence get_default(DafnySequence *) { + DafnySequence ret(0); + return ret; +} + template bool operator==(const DafnySequence &s0, const DafnySequence &s1) { return s0.equals(s1); diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index bfc1f30c012..05a4cd2d6da 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1008,7 +1008,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp // Assume the external definition includes a default value return String.Format("{1}::get_{0}_default()", IdProtect(udt.Name), udt.ResolvedClass.Module.CompileName); } else if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { - return String.Format("get_default<{0}>(NULL)", IdProtect(udt.Name)); + return String.Format("get_default<{0}>(({0}*)NULL)", IdProtect(udt.Name)); } else { return "nullptr"; //return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); From d70c7b089e7e3fac28509dedf64074fedf050526 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 10 Nov 2019 17:11:13 -0500 Subject: [PATCH 107/573] Try a new approach to providing default values --- Binaries/DafnyRuntime.h | 80 ++++++++++++++++++++++-------------- Source/Dafny/Compiler-cpp.cs | 12 ++++-- 2 files changed, 57 insertions(+), 35 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 1e928b5d8de..db79635383b 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -68,19 +68,35 @@ class IntegerRange { * DEFAULTS * *********************************************************/ -template -T get_default(T*); - -template <> -bool get_default(bool*) { return true; } -template <> -int get_default(int*) { return 0; } -template <> -unsigned int get_default(unsigned int*) { return 0; } -template <> -unsigned long get_default(unsigned long*) { return 0; } -template <> -unsigned long long get_default(unsigned long long*) { return 0; } +template +struct get_default { + static T call(); +}; + +template<> +struct get_default { + static bool call() { return true; } +}; + +template<> +struct get_default { + static int call() { return 0; } +}; + +template<> +struct get_default { + static unsigned int call() { return 0; } +}; + +template<> +struct get_default { + static unsigned long call() { return 0; } +}; + +template<> +struct get_default { + static unsigned long long call() { return 0; } +}; /********************************************************* * TUPLES * @@ -92,8 +108,8 @@ struct Tuple2 { T1 t1; Tuple2() { - t0 = get_default((T0*)NULL); - t1 = get_default((T1*)NULL); + t0 = get_default::call(); + t1 = get_default::call(); } Tuple2(T0 _t0, T1 _t1) { @@ -119,9 +135,9 @@ struct Tuple3 { T2 t2; Tuple3() { - t0 = get_default((T0*)NULL); - t1 = get_default((T1*)NULL); - t2 = get_default((T2*)NULL); + t0 = get_default::call(); + t1 = get_default::call(); + t2 = get_default::call(); } Tuple3(T0 _t0, T1 _t1, T2 _t2) { @@ -151,10 +167,10 @@ struct Tuple4 { T3 t3; Tuple4() { - t0 = get_default((T0*)NULL); - t1 = get_default((T1*)NULL); - t2 = get_default((T2*)NULL); - t3 = get_default((T3*)NULL); + t0 = get_default::call(); + t1 = get_default::call(); + t2 = get_default::call(); + t3 = get_default::call(); } Tuple4(T0 _t0, T1 _t1, T2 _t2, T3 _t3) { @@ -188,11 +204,11 @@ struct Tuple5 { T4 t4; Tuple5() { - t0 = get_default((T0*)NULL); - t1 = get_default((T1*)NULL); - t2 = get_default((T2*)NULL); - t3 = get_default((T3*)NULL); - t4 = get_default((T4*)NULL); + t0 = get_default::call(); + t1 = get_default::call(); + t2 = get_default::call(); + t3 = get_default::call(); + t4 = get_default::call(); } Tuple5(T0 _t0, T1 _t1, T2 _t2, T3 _t3, T4 _t4) { @@ -352,10 +368,12 @@ struct DafnySequence { }; template -DafnySequence get_default(DafnySequence *) { - DafnySequence ret(0); - return ret; -} +struct get_default > { + static DafnySequence call() { + DafnySequence ret; + return ret; + } +}; template bool operator==(const DafnySequence &s0, const DafnySequence &s1) { diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 05a4cd2d6da..5c9665ca47f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -45,12 +45,16 @@ protected override void EmitHeader(Program program, TargetWriter wr) { protected override void EmitFooter(Program program, TargetWriter wr) { foreach (var dt in this.datatypeDecls) { - var wd = wr.NewBlock(String.Format("{0} {1}::{2}{3} get_default({1}::{2}{3}* ignored)", - DeclareTemplate(dt.TypeArgs), + var wd = wr.NewBlock(String.Format("template <{0}>\nstruct get_default<{1}::{2}{3} >", + TypeParameters(dt.TypeArgs), + dt.Module.CompileName, + dt.CompileName, + TemplateMethod(dt.TypeArgs)), ";"); + var wc = wd.NewBlock(String.Format("static {0}::{1}{2} call()", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs))); - wd.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs)); + wc.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs)); } } @@ -1008,7 +1012,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp // Assume the external definition includes a default value return String.Format("{1}::get_{0}_default()", IdProtect(udt.Name), udt.ResolvedClass.Module.CompileName); } else if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { - return String.Format("get_default<{0}>(({0}*)NULL)", IdProtect(udt.Name)); + return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); } else { return "nullptr"; //return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); From f9a697c1d573da73dde28314d371cf6767d15e53 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 10 Nov 2019 21:55:10 -0500 Subject: [PATCH 108/573] Pass the module name to CreateClass, since we need it on the C++ side --- Source/Dafny/Compiler-Csharp.cs | 8 ++++---- Source/Dafny/Compiler-cpp.cs | 6 +++--- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Compiler-js.cs | 8 ++++---- Source/Dafny/Compiler.cs | 8 ++++---- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index f8c7b7e1837..76bdec4442b 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -114,7 +114,7 @@ string TypeParameters(List targs) { return Util.Comma(targs, tp => IdName(tp)); } - protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { wr.Write("public partial class {0}", name); if (typeParameters != null && typeParameters.Count != 0) { wr.Write("<{0}>", TypeParameters(typeParameters)); @@ -172,7 +172,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri // } var cw = - CreateClass(IdName(iter), iter.TypeArgs, wr) as CsharpCompiler.ClassWriter; + CreateClass(iter.Module.CompileName, IdName(iter), iter.TypeArgs, wr) as CsharpCompiler.ClassWriter; var w = cw.InstanceMemberWriter; // here come the fields Constructor ct = null; @@ -618,7 +618,7 @@ string DtCreateName(DatatypeCtor ctor) { } protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - var cw = CreateClass(IdName(nt), null, wr) as CsharpCompiler.ClassWriter; + var cw = CreateClass(nt.Module.CompileName, IdName(nt), null, wr) as CsharpCompiler.ClassWriter; var w = cw.StaticMemberWriter; if (nt.NativeType != null) { var wEnum = w.NewNamedBlock("public static System.Collections.Generic.IEnumerable<{0}> IntegerRange(BigInteger lo, BigInteger hi)", GetNativeTypeName(nt.NativeType)); @@ -638,7 +638,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { - ClassWriter cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as ClassWriter; + ClassWriter cw = CreateClass(sst.Module.CompileName, IdName(sst), sst.TypeArgs, wr) as ClassWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var sw = new TargetWriter(cw.InstanceMemberWriter.IndentLevel, true); TrExpr(sst.Witness, sw, false); diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5c9665ca47f..81fae19ad1b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -141,7 +141,7 @@ protected Exception NotSupported(String msg, Bpl.IToken tok) { } - protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } @@ -488,7 +488,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { throw NotSupported(String.Format("non-native newtype {0}", nt)); } var className = "class_" + IdName(nt); - var cw = CreateClass(className, null, wr) as CppCompiler.ClassWriter; + var cw = CreateClass(nt.Module.CompileName, className, null, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); @@ -525,7 +525,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); var className = "class_" + IdName(sst); - var cw = CreateClass(className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; + var cw = CreateClass(sst.Module.CompileName, className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 56ec5ca4335..b67f5afb026 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -166,7 +166,7 @@ private void EmitImport(Import import, TargetWriter importWriter, TargetWriter i protected override string GetHelperModuleName() => "_dafny"; - protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { return CreateClass(name, isExtern, fullPrintName, typeParameters, superClasses, tok, wr, includeRtd: true, includeEquals: true); } diff --git a/Source/Dafny/Compiler-js.cs b/Source/Dafny/Compiler-js.cs index e7d5f454371..c86150c5dc8 100644 --- a/Source/Dafny/Compiler-js.cs +++ b/Source/Dafny/Compiler-js.cs @@ -56,7 +56,7 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, protected override string GetHelperModuleName() => "_dafny"; - protected override IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { var w = wr.NewBlock(string.Format("$module.{0} = class {0}" + (isExtern ? " extends $module.{0}" : ""), name), ";"); w.Write("constructor ("); if (typeParameters != null) { @@ -108,7 +108,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri // } // } - var cw = CreateClass(IdName(iter), iter.TypeArgs, wr) as JavaScriptCompiler.ClassWriter; + var cw = CreateClass(iter.Module.CompileName, IdName(iter), iter.TypeArgs, wr) as JavaScriptCompiler.ClassWriter; var w = cw.MethodWriter; var instanceFieldsWriter = cw.FieldWriter; // here come the fields @@ -479,7 +479,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - var cw = CreateClass(IdName(nt), null, wr) as JavaScriptCompiler.ClassWriter; + var cw = CreateClass(nt.Module.CompileName, IdName(nt), null, wr) as JavaScriptCompiler.ClassWriter; var w = cw.MethodWriter; if (nt.NativeType != null) { var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); @@ -505,7 +505,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { - var cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as JavaScriptCompiler.ClassWriter; + var cw = CreateClass(sst.Module.CompileName, IdName(sst), sst.TypeArgs, wr) as JavaScriptCompiler.ClassWriter; var w = cw.MethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 5bff5ac9aa9..4bc549fbf9d 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -87,13 +87,13 @@ protected interface IClassWriter { TextWriter/*?*/ ErrorWriter(); void Finish(); } - protected IClassWriter CreateClass(string name, List/*?*/ typeParameters, TargetWriter wr) { - return CreateClass(name, false, null, typeParameters, null, null, wr); + protected IClassWriter CreateClass(string moduleName, string name, List/*?*/ typeParameters, TargetWriter wr) { + return CreateClass(moduleName, name, false, null, typeParameters, null, null, wr); } /// /// "tok" can be "null" if "superClasses" is. /// - protected abstract IClassWriter CreateClass(string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr); + protected abstract IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr); /// /// "tok" can be "null" if "superClasses" is. /// @@ -603,7 +603,7 @@ public void Compile(Program program, TargetWriter wrx) { } } if (include) { - var cw = CreateClass(IdName(cl), classIsExtern, cl.FullName, cl.TypeArgs, cl.TraitsTyp, cl.tok, wr); + var cw = CreateClass(d.Module.CompileName, IdName(cl), classIsExtern, cl.FullName, cl.TypeArgs, cl.TraitsTyp, cl.tok, wr); CompileClassMembers(cl, cw); cw.Finish(); } else { From dd5def0d0d350c646d15b9a5e1bcd344d1d8114c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 10 Nov 2019 21:55:31 -0500 Subject: [PATCH 109/573] Add specializations of get_default for classes --- Source/Dafny/Compiler-cpp.cs | 51 +++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 81fae19ad1b..4f1db0d1550 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -20,10 +20,12 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade : base(reporter) { this.headers = otherHeaders; this.datatypeDecls = new List(); + this.classDefaults = new List(); } private ReadOnlyCollection headers; private List datatypeDecls; + private List classDefaults; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -56,6 +58,10 @@ protected override void EmitFooter(Program program, TargetWriter wr) { TemplateMethod(dt.TypeArgs))); wc.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs)); } + + foreach (var classDefault in classDefaults) { + wr.WriteLine(classDefault); + } } public override void EmitCallToMain(Method mainMethod, TargetWriter wr) { @@ -94,8 +100,11 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, private string TypeParameters(List targs) { Contract.Requires(cce.NonNullElements(targs)); Contract.Ensures(Contract.Result() != null); - - return Util.Comma(targs, tp => "typename " + IdName(tp)); + if (targs != null) { + return Util.Comma(targs, tp => "typename " + IdName(tp)); + } else { + return ""; + } } private string DeclareTemplate(List typeArgs) { @@ -115,19 +124,28 @@ private string DeclareTemplate(List typeArgs) { } private string TemplateMethod(List typeArgs) { - var targs = ""; - if (typeArgs.Count > 0) { - targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => ta.CompileName)); + if (typeArgs != null) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => ta.CompileName)); + } + return targs; + } else { + return ""; } - return targs; } private string TemplateMethod(List typeArgs) { - var targs = ""; - if (typeArgs.Count > 0) { - targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => TypeName(ta, null, null))); + if (typeArgs != null) { + var targs = ""; + if (typeArgs.Count > 0) { + targs = String.Format("<{0}>", Util.Comma(typeArgs, ta => TypeName(ta, null, null))); + } + + return targs; + } else { + return ""; } - return targs; } protected override string GetHelperModuleName() => "_dafny"; @@ -155,6 +173,19 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool w.Write("public:\n"); w.WriteLine("// Default constructor\n {0}() {{}}", name); + + // Create the code for the specialization of get_default + var fullName = moduleName + "::" + name; + var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", + TypeParameters(typeParameters), + fullName, + TemplateMethod(typeParameters)); + getDefaultStr += String.Format("static shared_ptr<{0}{1} > call() {{\n", + fullName, + TemplateMethod(typeParameters)); + getDefaultStr += String.Format("return shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); + getDefaultStr += "}\n};"; + this.classDefaults.Add(getDefaultStr); //w.Write("// Constructor\n"); //w2.Write(string.Format("{0}(", name)); From dc18776c8d2627d500b0419937aba1046f82e9f4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 12 Nov 2019 00:13:13 -0500 Subject: [PATCH 110/573] Add support for recursively defined datatypes. Test case compiles but crashes. More work is needed --- Source/Dafny/Compiler-cpp.cs | 79 ++++++++++++++++++++++++++++-------- Test/c++/datatypes.dfy | 21 ++++++++++ 2 files changed, 82 insertions(+), 18 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4f1db0d1550..4d18bd73b9a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -282,6 +282,26 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri return wIter; */ } + protected bool IsRecursiveConstructor(DatatypeDecl dt, DatatypeCtor ctor) { + foreach (var dtor in ctor.Destructors) { + if (dtor.Type is UserDefinedType t) { + if (t.ResolvedClass == dt) { + return true; + } + } + } + + return false; + } + protected bool IsRecursiveDatatype(DatatypeDecl dt) { + foreach (var ctor in dt.Ctors) { + if (IsRecursiveConstructor(dt, ctor)) { + return true; + } + } + return false; + } + protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Given: // datatype Example1 = Example1(u:uint32, b:bool) @@ -325,12 +345,18 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Tuple types are declared once and for all in DafnyRuntime.h return; } - + this.datatypeDecls.Add(dt); string DtT = dt.CompileName; string DtT_protected = IdProtect(DtT); + if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! + // Add some forward declarations + wr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); + wr.WriteLine("bool operator==(const {0} &left, const {0} &right); ", DtT_protected); + } + // Optimize a not-uncommon case if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; @@ -389,11 +415,13 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members var i = 0; - var argNames = new List(); foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { - wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); - argNames.Add(FormalName(arg, i)); + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive declaration needs to use a pointer + wstruct.WriteLine("shared_ptr<{0}> {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + } else { + wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + } i++; } } @@ -401,8 +429,16 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the comparison operator wstruct.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", structName); wstruct.Write("\treturn true "); - foreach (var arg in argNames) { - wstruct.WriteLine("\t\t&& left.{0} == right.{0}", arg); + + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer + wstruct.WriteLine("\t\t&& *(left.{0}) == *(right.{0})", FormalName(arg, i)); + } else { + wstruct.WriteLine("\t\t&& left.{0} == right.{0}", FormalName(arg, i)); + } + i++; + } } wstruct.WriteLine(";\n}"); @@ -423,15 +459,6 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) { - var argNames = new List(); - foreach (Formal arg in ctor.Formals) - { - if (!arg.IsGhost) - { - argNames.Add(arg.CompileName); - } - } - using (var wc = ws.NewNamedBlock("static {0} create_{1}({2})", DtT_protected, ctor.CompileName, DeclareFormals(ctor.Formals))) { @@ -440,7 +467,12 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { - wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // This is a recursive destuctor, so we need to allocate space and copy the input in + wc.WriteLine("result.v_{0}.{1} = make_shared<{2}>({1});", ctor.CompileName, arg.CompileName, DtT_protected); + } else { + wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + } } } wc.WriteLine("return result;"); @@ -1723,7 +1755,9 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, } } - protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValue, Type expectedType, TargetWriter wr) { + protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValue, Type expectedType, TargetWriter wr) { + var preSource = wr.Fork(); + wr.Write("("); var wSource = wr.Fork(); if (isLValue && member is ConstantField) { wr.Write("->{0}", member.CompileName); @@ -1752,6 +1786,10 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu } var dt = dtor2.EnclosingClass as IndDatatypeDecl; if (dt.Ctors.Count > 1) { + if (dtor2.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // This a recursively defined datatype; need to dereference the pointer + preSource.Write("*"); + } wr.Write(".v_{0}.{1}", dtor2.EnclosingCtors[0].CompileName, sf.CompileName); } else { wr.Write(".{0}", sf.CompileName); @@ -1764,6 +1802,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu } else { wr.Write("->{0}", IdName(member)); } + wr.Write(")"); return wSource; } @@ -1883,7 +1922,11 @@ protected override void EmitDestructor(string source, Formal dtor, int formalNon wr.Write("({0})[{1}]", source, formalNonGhostIndex); } else { var dtorName = FormalName(dtor, formalNonGhostIndex); - wr.Write("({0}){1}.v_{3}.{2}", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName, ctor.CompileName); + if (dtor.Type is UserDefinedType udt && udt.ResolvedClass == ctor.EnclosingDatatype) { + // Recursively defined datatype requires a dereference here + wr.Write("*"); + } + wr.Write("(({0}){1}.v_{3}.{2})", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName, ctor.CompileName); } } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index fdf3048b58d..e42ea9748f6 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -69,6 +69,24 @@ method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { } } +datatype IntList = + | Nil + | Cons(hd:uint32, tl:IntList) + +method IntListLen(l:IntList) returns (len:uint32) +{ + match l { + case Nil => len := 0; + case Cons(hd, tl) => + var len_rest := IntListLen(tl); + if len_rest < 0xFFFFFFFF { + len := len_rest + 1; + } else { + len := len_rest; + } + } +} + method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); @@ -80,4 +98,7 @@ method Main() { Comparison(Example1(42, true), Example1(42, true), Ex4b, Ex4b); Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); + + var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); + print len; } From 826f4aaeef6cdd5905666bce118c61250ceeccef Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 12 Nov 2019 11:52:21 -0500 Subject: [PATCH 111/573] Narrow down the scope of the problem --- Test/c++/Makefile | 2 +- Test/c++/datatypes.dfy | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 6cc505a4f55..8c940425145 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -9,7 +9,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log -CXXFLAGS += -Wall -Wextra -Wpedantic -std=c++11 -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++11 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index e42ea9748f6..8ea5d476f2f 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,6 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +/* datatype Op = | NoOp | PushOp(ghost id: int) @@ -68,7 +69,7 @@ method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { print "Example4s are not equal\n"; } } - +*/ datatype IntList = | Nil | Cons(hd:uint32, tl:IntList) @@ -88,17 +89,17 @@ method IntListLen(l:IntList) returns (len:uint32) } method Main() { - var e1 := Example1(22, false); - var e2 := Ex2a(42); - Callee(e2); - e2 := Ex2b(true); - Callee(e2); - TestDestructor(); - GenericTest(); - Comparison(Example1(42, true), Example1(42, true), Ex4b, Ex4b); - Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); - Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); - - var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); +// var e1 := Example1(22, false); +// var e2 := Ex2a(42); +// Callee(e2); +// e2 := Ex2b(true); +// Callee(e2); +// TestDestructor(); +// GenericTest(); +// Comparison(Example1(42, true), Example1(42, true), Ex4b, Ex4b); +// Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); +// Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); + + var len := IntListLen(Cons(15, Nil)); //Cons(18, Cons(330, Nil)))); print len; } From c532ac8a752641647cf17e6684adbf63d43885f3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 12 Nov 2019 16:41:39 -0500 Subject: [PATCH 112/573] Lame fix for segfault. The segfault seems to be a bad interaction between union and shared_ptr --- Source/Dafny/Compiler-cpp.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4d18bd73b9a..15b48f18d59 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -451,7 +451,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { ws.Write("enum {"); ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm.CompileName))); ws.Write("} tag;\n"); - var wu = ws.NewBlock("union ", ";"); + // TODO: The union doesn't play nicely with shared_ptr, so for now, use more memory than needed + //var wu = ws.NewBlock("union ", ";"); + var wu = ws; foreach (var ctor in dt.Ctors) { wu.WriteLine("struct {2}_{0}{1} v_{0};", ctor.CompileName, TemplateMethod(dt.TypeArgs), DtT_protected); } From 4c4f4d7df0b788b823dc71eca4ac987b4ecb0351 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 14 Nov 2019 16:59:15 -0500 Subject: [PATCH 113/573] Restore the generality of the parent Compiler class --- Source/Dafny/Compiler-cpp.cs | 2 ++ Source/Dafny/Compiler.cs | 31 +++++++++---------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 15b48f18d59..2a66dd99ebc 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -34,6 +34,8 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade new string DafnyMapClass = "DafnyMap"; public override string TargetLanguage => "Cpp"; + protected override string ModuleSeparator => "::"; + protected override string ClassAccessor => "->"; protected override void EmitHeader(Program program, TargetWriter wr) { wr.WriteLine("// Dafny program {0} compiled into Cpp", program.Name); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 4bc549fbf9d..1db059d5f02 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -24,6 +24,8 @@ public Compiler(ErrorReporter reporter) { } public abstract string TargetLanguage { get; } + protected virtual string ModuleSeparator { get => "."; } + protected virtual string ClassAccessor { get => "."; } Stack copyInstrWriters = new Stack(); // a buffer that stores copy instructions generated by letExpr that uses out param. protected Method enclosingMethod; // non-null when a method body is being translated @@ -2642,29 +2644,17 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { } if (receiverReplacement != null) { wr.Write(IdProtect(receiverReplacement)); -// ****************************************************************** -// TODO: Add an overrideable function for this -// ****************************************************************** - wr.Write("->{0}", IdName(s.Method)); + wr.Write("{0}{1}", ClassAccessor, IdName(s.Method)); } else if (!s.Method.IsStatic) { TrParenExpr(s.Receiver, wr, false); -// ****************************************************************** -// TODO: Add an overrideable function for this -// ****************************************************************** - wr.Write("->{0}", IdName(s.Method)); + wr.Write("{0}{1}", ClassAccessor, IdName(s.Method)); } else { string qual, compileName; if (s.Method.IsExtern(out qual, out compileName) && qual != null) { - // ****************************************************************** - // TODO: Add an overrideable function for the double colon used here - // ****************************************************************** - wr.Write("{0}::{1}", qual, compileName); + wr.Write("{0}{1}{2}", qual, ModuleSeparator, compileName); } else { wr.Write(TypeName_Companion(s.Receiver.Type, wr, s.Tok, s.Method)); -// ****************************************************************** -// TODO: Add an overrideable function for this -// ****************************************************************** - wr.Write("::{0}", IdName(s.Method)); + wr.Write("{0}{1}", ModuleSeparator, IdName(s.Method)); } } List typeArgs; @@ -3456,17 +3446,14 @@ void CompileFunctionCallExpr(FunctionCallExpr e, TargetWriter wr, bool inLetExpr string qual = ""; string compileName = ""; if (f.IsExtern(out qual, out compileName) && qual != null) { - // ****************************************************************** - // TODO: Add an overrideable function for the double colon used here - // ****************************************************************** - wr.Write("{0}::", qual); + wr.Write("{0}{1}", qual, ModuleSeparator); } else if (f.IsStatic) { - wr.Write("{0}::", TypeName_Companion(e.Receiver.Type, wr, e.tok, f)); + wr.Write("{0}{1}", TypeName_Companion(e.Receiver.Type, wr, e.tok, f), ModuleSeparator); compileName = IdName(f); } else { wr.Write("("); tr(e.Receiver, wr, inLetExprBody); - wr.Write(")->"); + wr.Write("){0}", ClassAccessor); compileName = IdName(f); } wr.Write(compileName); From 669c866e51730ec93f436b7e67306dd35100cf2f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 15 Nov 2019 13:38:29 -0500 Subject: [PATCH 114/573] Another fix for the generic compiler --- Source/Dafny/Compiler-cpp.cs | 2 +- Source/Dafny/Compiler.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 2a66dd99ebc..2bdaaaae2b6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -98,7 +98,7 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, return w; */ } - + private string TypeParameters(List targs) { Contract.Requires(cce.NonNullElements(targs)); Contract.Ensures(Contract.Result() != null); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 1db059d5f02..401d8375856 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -463,7 +463,7 @@ protected virtual void EmitIndexCollectionUpdate(out TargetWriter wSource, out T protected abstract void EmitApplyExpr(Type functionType, Bpl.IToken tok, Expression function, List arguments, bool inLetExprBody, TargetWriter wr); protected abstract TargetWriter EmitBetaRedex(List boundVars, List arguments, string typeArgs, List boundTypes, Type resultType, Bpl.IToken resultTok, bool inLetExprBody, TargetWriter wr); protected virtual void EmitConstructorCheck(string source, DatatypeCtor ctor, TargetWriter wr) { - wr.Write("{0}.is_{1}()", source, ctor.CompileName); + wr.Write("{0}.is_{1}", source, ctor.CompileName); } /// /// EmitDestructor is somewhat similar to following "source" with a call to EmitMemberSelect. From 0c3f38e03d1ad5bf336e3766f62008bb56080321 Mon Sep 17 00:00:00 2001 From: Jay Bosamiya Date: Mon, 18 Nov 2019 11:18:40 -0500 Subject: [PATCH 115/573] Introduce `get_default`s for vector and shared_ptr --- Binaries/DafnyRuntime.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index db79635383b..c324a6e5d08 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -98,6 +98,21 @@ struct get_default { static unsigned long long call() { return 0; } }; +template +struct get_default> { + static vector call() { + vector ret; + return ret; + } +}; + +template +struct get_default> { + static shared_ptr call() { + return make_shared(get_default::call()); + } +}; + /********************************************************* * TUPLES * *********************************************************/ From bd8932d63db6ddf0b5df53fc4aa9d899b3568425 Mon Sep 17 00:00:00 2001 From: Jay Bosamiya Date: Mon, 25 Nov 2019 18:45:30 -0500 Subject: [PATCH 116/573] Fix stupid typo --- Binaries/DafnyRuntime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index c324a6e5d08..c6a93606e6d 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -238,7 +238,7 @@ struct Tuple5 { T1 get_1() const { return t1; } T2 get_2() const { return t2; } T3 get_3() const { return t3; } - T3 get_4() const { return t4; } + T4 get_4() const { return t4; } }; template From 3a29bb02655b8cfa70c107c0510c1550312e5854 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 25 Nov 2019 21:21:12 -0500 Subject: [PATCH 117/573] Add the option to include source line info in the compiled code --- Source/Dafny/Compiler-cpp.cs | 14 +++++++++++++- Source/Dafny/Compiler.cs | 5 ++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 2bdaaaae2b6..9c6fe8557e6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -162,6 +162,7 @@ protected Exception NotSupported(String msg, Bpl.IToken tok) { protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + EmitLineInfo(wr, tok); if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } @@ -347,6 +348,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Tuple types are declared once and for all in DafnyRuntime.h return; } + + EmitLineInfo(wr, dt.tok); this.datatypeDecls.Add(dt); @@ -537,7 +540,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - + EmitLineInfo(wr, nt.tok); if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { string nt_name_def, literalSuffice_def; @@ -582,6 +585,8 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { if (sst.Name == "nat") { return; // C++ does not support Nats } + + EmitLineInfo(wr, sst.tok); string templateDecl = ""; if (sst.Var.Type is SeqType s) { @@ -726,6 +731,7 @@ public void Finish() { } if (!createBody) { return null; } + EmitLineInfo(wr, tok); if (typeArgs.Count != 0) { wr.WriteLine(DeclareTemplate(typeArgs)); @@ -1174,6 +1180,12 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke return t; } + protected override void EmitLineInfo(TextWriter wr, Bpl.IToken tok) { + if (tok != null && tok.line > 0) { + wr.WriteLine("\n#line {0} \"{1}\"", tok.line, tok.filename); + } + } + // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 401d8375856..d36c60c3b72 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -169,6 +169,9 @@ protected string TypeName_Companion(TopLevelDecl cls, TextWriter wr, Bpl.IToken protected virtual Type NativeForm(Type type) { return type; } + + // By default, don't emit anything. Children can do something language specific + protected virtual void EmitLineInfo(TextWriter wr, Bpl.IToken tok) { } protected abstract bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam, TextWriter wr); /// @@ -1584,7 +1587,7 @@ protected override void VisitOneStmt(Statement stmt) { void TrStmt(Statement stmt, TargetWriter wr) { Contract.Requires(stmt != null); Contract.Requires(wr != null); - + EmitLineInfo(wr, stmt.Tok); if (stmt.IsGhost) { var v = new CheckHasNoAssumes_Visitor(this, wr); v.Visit(stmt); From 9b24acca4da30fd18dcc3fbda4381b8594b28aef Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 25 Nov 2019 22:52:56 -0500 Subject: [PATCH 118/573] Revert "Add the option to include source line info in the compiled code" The #line directive appears to be more complex than expected. This reverts commit 3a29bb02655b8cfa70c107c0510c1550312e5854. --- Source/Dafny/Compiler-cpp.cs | 14 +------------- Source/Dafny/Compiler.cs | 5 +---- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 9c6fe8557e6..2bdaaaae2b6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -162,7 +162,6 @@ protected Exception NotSupported(String msg, Bpl.IToken tok) { protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { - EmitLineInfo(wr, tok); if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } @@ -348,8 +347,6 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Tuple types are declared once and for all in DafnyRuntime.h return; } - - EmitLineInfo(wr, dt.tok); this.datatypeDecls.Add(dt); @@ -540,7 +537,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - EmitLineInfo(wr, nt.tok); + if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { string nt_name_def, literalSuffice_def; @@ -585,8 +582,6 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { if (sst.Name == "nat") { return; // C++ does not support Nats } - - EmitLineInfo(wr, sst.tok); string templateDecl = ""; if (sst.Var.Type is SeqType s) { @@ -731,7 +726,6 @@ public void Finish() { } if (!createBody) { return null; } - EmitLineInfo(wr, tok); if (typeArgs.Count != 0) { wr.WriteLine(DeclareTemplate(typeArgs)); @@ -1180,12 +1174,6 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke return t; } - protected override void EmitLineInfo(TextWriter wr, Bpl.IToken tok) { - if (tok != null && tok.line > 0) { - wr.WriteLine("\n#line {0} \"{1}\"", tok.line, tok.filename); - } - } - // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index d36c60c3b72..401d8375856 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -169,9 +169,6 @@ protected string TypeName_Companion(TopLevelDecl cls, TextWriter wr, Bpl.IToken protected virtual Type NativeForm(Type type) { return type; } - - // By default, don't emit anything. Children can do something language specific - protected virtual void EmitLineInfo(TextWriter wr, Bpl.IToken tok) { } protected abstract bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam, TextWriter wr); /// @@ -1587,7 +1584,7 @@ protected override void VisitOneStmt(Statement stmt) { void TrStmt(Statement stmt, TargetWriter wr) { Contract.Requires(stmt != null); Contract.Requires(wr != null); - EmitLineInfo(wr, stmt.Tok); + if (stmt.IsGhost) { var v = new CheckHasNoAssumes_Visitor(this, wr); v.Visit(stmt); From df6ee4be187240374662575b0d6d61d4e3015c86 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 2 Dec 2019 22:58:04 -0500 Subject: [PATCH 119/573] Avoid name clashes with our return value variable. Emit a proper call to the empty map --- Source/Dafny/Compiler-cpp.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 2bdaaaae2b6..983171e344c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -466,20 +466,20 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { using (var wc = ws.NewNamedBlock("static {0} create_{1}({2})", DtT_protected, ctor.CompileName, DeclareFormals(ctor.Formals))) { - wc.WriteLine("{0}{1} result;", DtT_protected, TemplateMethod(dt.TypeArgs)); - wc.WriteLine("result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); + wc.WriteLine("{0}{1} COMPILER_result;", DtT_protected, TemplateMethod(dt.TypeArgs)); + wc.WriteLine("COMPILER_result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // This is a recursive destuctor, so we need to allocate space and copy the input in - wc.WriteLine("result.v_{0}.{1} = make_shared<{2}>({1});", ctor.CompileName, arg.CompileName, DtT_protected); + wc.WriteLine("COMPILER_result.v_{0}.{1} = make_shared<{2}>({1});", ctor.CompileName, arg.CompileName, DtT_protected); } else { - wc.WriteLine("result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + wc.WriteLine("COMPILER_result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); } } } - wc.WriteLine("return result;"); + wc.WriteLine("return COMPILER_result;"); } } @@ -1070,7 +1070,8 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is SeqType) { return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, true)); } else if (xType is MapType) { - return "_dafny.Map.Empty"; + var m = (MapType) xType; + return String.Format("DafnyMap<{0},{1}>::empty()", TypeName(m.Domain, wr, tok), TypeName(m.Range, wr, tok)); } var udt = (UserDefinedType)xType; From 184c9e554c4f7064354d48e5087238a670101fec Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 2 Dec 2019 22:58:32 -0500 Subject: [PATCH 120/573] Add a test case and better definitions for map equality. --- Binaries/DafnyRuntime.h | 4 ++-- Test/c++/maps.dfy | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index c6a93606e6d..9adcaff7b0d 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -649,7 +649,7 @@ struct DafnyMap { } - bool equals(DafnyMap other) { + bool equals(const DafnyMap other) const { if (map.size() != other.size()) { return false; } for (const auto& kv : map) { @@ -668,7 +668,7 @@ struct DafnyMap { template -bool operator==(DafnyMap &s0, DafnyMap &s1) { +bool operator==(const DafnyMap &s0, const DafnyMap &s1) { return s0.equals(s1); } diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy index 933600fe47e..b6264dd8481 100644 --- a/Test/c++/maps.dfy +++ b/Test/c++/maps.dfy @@ -1,3 +1,4 @@ +/* newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method Test(name:string, b:bool) @@ -9,8 +10,13 @@ method Test(name:string, b:bool) print name, ": This is *** UNEXPECTED *** !!!!\n"; } } +*/ + +datatype map_holder = map_holder(m:map) method Basic() { + var f:map_holder; + /* var s:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; var t:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; @@ -34,6 +40,7 @@ method Basic() { Test("Keys membership 2", 2 in s_keys); Test("Keys membership 3", 3 in s_keys); Test("Keys membership 4", 4 in s_keys); + */ } /* From 509d85774857b33a2076e89993afe55426f1a583 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 2 Dec 2019 23:02:04 -0500 Subject: [PATCH 121/573] Restore the other map tests --- Test/c++/maps.dfy | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy index b6264dd8481..732e613ade7 100644 --- a/Test/c++/maps.dfy +++ b/Test/c++/maps.dfy @@ -1,4 +1,3 @@ -/* newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method Test(name:string, b:bool) @@ -10,13 +9,11 @@ method Test(name:string, b:bool) print name, ": This is *** UNEXPECTED *** !!!!\n"; } } -*/ datatype map_holder = map_holder(m:map) method Basic() { var f:map_holder; - /* var s:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; var t:map := map[1 := 0, 2 := 1, 3 := 2, 4 := 3]; @@ -40,7 +37,6 @@ method Basic() { Test("Keys membership 2", 2 in s_keys); Test("Keys membership 3", 3 in s_keys); Test("Keys membership 4", 4 in s_keys); - */ } /* From c19cc5bf8eb2e7fa41bb0ef39cd617640098e008 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 2 Dec 2019 23:32:27 -0500 Subject: [PATCH 122/573] Add a test for extern classes --- Test/c++/Extern.h | 8 +++++++- Test/c++/extern.dfy | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h index 1cd55b68efa..7ed75469515 100644 --- a/Test/c++/Extern.h +++ b/Test/c++/Extern.h @@ -23,7 +23,13 @@ namespace Extern { } return ret; } - /* + + class ExternClass { + public: + bool my_method0(uint64 a) { (void)a; return true; } + bool my_method1(uint64 c) { (void)c; return false; } + }; +/* class __default { public: diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy index 99744f38464..09e1237a5a7 100644 --- a/Test/c++/extern.dfy +++ b/Test/c++/extern.dfy @@ -5,6 +5,12 @@ module {:extern "Extern"} Extern { method {:extern "Extern", "newArrayFill"} newArrayFill(n: uint64, t: T) returns (ar: array) type {:extern "struct"} state + + class {:extern} ExternClass { + constructor {:extern "Extern", "ExternClass"}() + method {:extern "Extern", "my_method0"} my_method0(a:uint64) returns (b:bool) + method {:extern "Extern", "my_method1"} my_method1(c:uint64) returns (d:bool) + } } module TestMod { @@ -25,9 +31,17 @@ module TestMod { } } + method TestClass(e:ExternClass) { + var x := e.my_method0(0); + var y := e.my_method1(1); + } + method Main() { var a:array := newArrayFill(5, 42); var d := new D(21); var b:array := newArrayFill(3, d); + + var e:ExternClass := new ExternClass(); + TestClass(e); } } From 89c7e9760876019259fc12a4438d1bcac96a3170 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 6 Dec 2019 20:54:31 -0500 Subject: [PATCH 123/573] Eliminate a C++ compiler warning --- Source/Dafny/Compiler-cpp.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 983171e344c..009c51826a2 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -408,7 +408,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } else { // Create one struct for each constructor @@ -430,8 +430,10 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the comparison operator wstruct.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", structName); + + var preReturn = wstruct.Fork(); wstruct.Write("\treturn true "); - + i = 0; foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer @@ -442,6 +444,11 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { i++; } } + + if (i == 0) { // Avoid a warning from the C++ compiler + preReturn.WriteLine("(void)left; (void) right;"); + } + wstruct.WriteLine(";\n}"); // Overload the not-comparison operator From 66668190d6fccda525d0046674fb0ddf85fd5bf1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 6 Dec 2019 21:07:09 -0500 Subject: [PATCH 124/573] Emit forward declarations for datatypes and classes, then emit datatype definitions, and then everything else --- Source/Dafny/Compiler-cpp.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 009c51826a2..6c098b58480 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -26,7 +26,12 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade private ReadOnlyCollection headers; private List datatypeDecls; private List classDefaults; - + + private TargetWriter declarationsWr = null; + private TargetWriter moduleDeclarationsWr = null; + private TargetWriter definitionsWr = null; + private TargetWriter dtDefnWr = null; + // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; new string DafnyMultiSetClass = "DafnyMultiset"; @@ -45,6 +50,9 @@ protected override void EmitHeader(Program program, TargetWriter wr) { } // TODO: Include appropriate .h file here //ReadRuntimeSystem("DafnyRuntime.h", wr); + + this.declarationsWr = wr.ForkSection(); + this.definitionsWr = wr.ForkSection(); } protected override void EmitFooter(Program program, TargetWriter wr) { @@ -78,6 +86,8 @@ protected override BlockTargetWriter CreateStaticMain(IClassWriter cw) { protected override TargetWriter CreateModule(string moduleName, bool isDefault, bool isExtern, string/*?*/ libraryName, TargetWriter wr) { var s = string.Format("namespace {0} ", IdProtect(moduleName)); + this.moduleDeclarationsWr = this.declarationsWr.NewBigBlock(s, "// end of " + s + " declarations"); + this.dtDefnWr = this.definitionsWr.NewBigBlock(s, "// end of " + s + " definitions"); return wr.NewBigBlock(s, "// end of " + s); /* if (!isExtern || libraryName != null) { @@ -168,8 +178,10 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool if (typeParameters != null && typeParameters.Count > 0) { wr.WriteLine(DeclareTemplate(typeParameters)); + moduleDeclarationsWr.WriteLine(DeclareTemplate(typeParameters)); } + moduleDeclarationsWr.WriteLine("class {0};", name); var w = wr.NewBlock(string.Format("class {0}", name), ";"); //w = w.NewBlock("public:", null, BlockTargetWriter.BraceStyle.Nothing, BlockTargetWriter.BraceStyle.Nothing); w.Write("public:\n"); @@ -352,6 +364,10 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { string DtT = dt.CompileName; string DtT_protected = IdProtect(DtT); + + // Forward declaration of the type + this.moduleDeclarationsWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); + wr = this.dtDefnWr; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations From 4efea1b45b7beade1e5aa42b9537f7992b910872 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 6 Dec 2019 21:31:28 -0500 Subject: [PATCH 125/573] Emit better destructors --- Source/Dafny/Compiler-cpp.cs | 9 +++++++-- Test/c++/datatypes.dfy | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 6c098b58480..49b08f7bfa2 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1947,14 +1947,19 @@ protected override void EmitConstructorCheck(string source, DatatypeCtor ctor, T protected override void EmitDestructor(string source, Formal dtor, int formalNonGhostIndex, DatatypeCtor ctor, List typeArgs, Type bvType, TargetWriter wr) { if (ctor.EnclosingDatatype is TupleTypeDecl) { - wr.Write("({0})[{1}]", source, formalNonGhostIndex); + wr.Write("({0}).get_{1}()", source, formalNonGhostIndex); } else { var dtorName = FormalName(dtor, formalNonGhostIndex); if (dtor.Type is UserDefinedType udt && udt.ResolvedClass == ctor.EnclosingDatatype) { // Recursively defined datatype requires a dereference here wr.Write("*"); } - wr.Write("(({0}){1}.v_{3}.{2})", source, ctor.EnclosingDatatype is CoDatatypeDecl ? "._D()" : "", dtorName, ctor.CompileName); + + if (ctor.EnclosingDatatype.Ctors.Count > 1) { + wr.Write("(({0}).v_{2}.{1})", source, dtorName, ctor.CompileName); + } else { + wr.Write("(({0}).{1})", source, dtorName); + } } } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index e42ea9748f6..8a8697a3bc9 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -16,6 +16,21 @@ type Ex3Sub = d:Example3 | d.e.b witness Example3(Example1(42, true)) datatype DtPointer = DtPointer(s:seq) datatype DtPointerHolder = DtPointerHolder(e:DtPointer) | Other(f:bool) +method Matcher(e:Example1) { + match e { + case Example1(u, b) => print u, b; + } +} + +method TupleMatch(e1:Example2, e2:Example2) { + match (e1, e2) { + case (Ex2a(u1), Ex2a(u2)) => print u1, u2, "\n"; + case (Ex2b(u1), Ex2a(u2)) => print u1, u2, "\n"; + case (Ex2a(u1), Ex2b(u2)) => print u1, u2, "\n"; + case (Ex2b(u1), Ex2b(u2)) => print u1, u2, "\n"; + } +} + method Callee(e:Example2) { match e { case Ex2a(u) => print "Case A: ", u, "\n"; From 439a1e4e9e95a8a5339830a04bba954e6ac6c919 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 7 Dec 2019 00:11:32 -0500 Subject: [PATCH 126/573] Improve DafnySet equality --- Binaries/DafnyRuntime.h | 6 +++--- Source/Dafny/Compiler-cpp.cs | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 9adcaff7b0d..043238c00af 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -440,7 +440,7 @@ struct DafnySet { return DafnySet(); } - bool IsSubsetOf(const DafnySet& other) { + bool IsSubsetOf(const DafnySet& other) const { if (set.size() > other.set.size()) { return false; } @@ -507,7 +507,7 @@ struct DafnySet { bool isEmpty() const { return set.empty(); } - bool equals(DafnySet other) { + bool equals(const DafnySet other) const { return IsSubsetOf(other) && other.IsSubsetOf(*this); } @@ -517,7 +517,7 @@ struct DafnySet { }; template -bool operator==(DafnySet &s0, DafnySet &s1) { +bool operator==(const DafnySet &s0, const DafnySet &s1) { return s0.equals(s1); } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 49b08f7bfa2..f8e3f2c00a5 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1087,7 +1087,8 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var t = (BitvectorType)xType; return t.NativeType != null ? "0" : "new BigNumber(0)"; } else if (xType is SetType) { - return "_dafny.Set.Empty"; + var s = (SetType) xType; + return String.Format("DafnySet<{0}>::empty()", TypeName(s.Arg, wr, tok)); } else if (xType is MultiSetType) { return "_dafny.MultiSet.Empty"; } else if (xType is SeqType) { From 23ee6700f18d6b8c3e523db662389f28ebe67ac6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 7 Dec 2019 10:57:31 -0500 Subject: [PATCH 127/573] Add support for inequality --- Binaries/DafnyRuntime.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 043238c00af..3497e418ef1 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -395,6 +395,11 @@ bool operator==(const DafnySequence &s0, const DafnySequence &s1) { return s0.equals(s1); } +template +bool operator!=(const DafnySequence &s0, const DafnySequence &s1) { + return !s0.equals(s1); +} + inline ostream& operator<<(ostream& out, const DafnySequence& val){ for (auto const& c:val.seq) { out << c; @@ -521,6 +526,11 @@ bool operator==(const DafnySet &s0, const DafnySet &s1) { return s0.equals(s1); } +template +bool operator!=(const DafnySet &s0, const DafnySet &s1) { + return !s0.equals(s1); +} + template inline ostream& operator<<(ostream& out, const DafnySet& val){ for (auto const& c:val.set) { @@ -672,6 +682,11 @@ bool operator==(const DafnyMap &s0, const DafnyMap &s1) { return s0.equals(s1); } +template +bool operator!=(const DafnyMap &s0, const DafnyMap &s1) { + return !s0.equals(s1); +} + template inline ostream& operator<<(ostream& out, const DafnyMap& val){ for (auto const& kv:val.map) { From 3015873d6861cfebe8d0509399b2a747c1060769 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 18:43:52 -0500 Subject: [PATCH 128/573] Add a test for mutual recursion --- Test/c++/recursion.dfy | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Test/c++/recursion.dfy diff --git a/Test/c++/recursion.dfy b/Test/c++/recursion.dfy new file mode 100644 index 00000000000..dde2f6bbe7e --- /dev/null +++ b/Test/c++/recursion.dfy @@ -0,0 +1,18 @@ + +method R0(x:bool) +{ + if x { + R1(false); + } +} + +method R1(y:bool) +{ + if y { + R0(false); + } +} + +method Main() { + R0(true); +} From d9ad13c41aac8edfa9304f57c1e7f12ba3e920d8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 18:44:01 -0500 Subject: [PATCH 129/573] Declare method bodies outside class definitions, so we can handle mutually recursive functions --- Source/Dafny/Compiler-cpp.cs | 64 +++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index f8e3f2c00a5..e8650c8e01b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -27,8 +27,10 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade private List datatypeDecls; private List classDefaults; + // Forward declarations of class and struct names private TargetWriter declarationsWr = null; private TargetWriter moduleDeclarationsWr = null; + // Datatype definitions private TargetWriter definitionsWr = null; private TargetWriter dtDefnWr = null; @@ -87,7 +89,7 @@ protected override BlockTargetWriter CreateStaticMain(IClassWriter cw) { protected override TargetWriter CreateModule(string moduleName, bool isDefault, bool isExtern, string/*?*/ libraryName, TargetWriter wr) { var s = string.Format("namespace {0} ", IdProtect(moduleName)); this.moduleDeclarationsWr = this.declarationsWr.NewBigBlock(s, "// end of " + s + " declarations"); - this.dtDefnWr = this.definitionsWr.NewBigBlock(s, "// end of " + s + " definitions"); + this.dtDefnWr = this.definitionsWr.NewBigBlock(s, "// end of " + s + " datatype definitions"); return wr.NewBigBlock(s, "// end of " + s); /* if (!isExtern || libraryName != null) { @@ -211,7 +213,7 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool } */ var methodWriter = w; - return new ClassWriter(name, this, methodWriter, fieldWriter, wr); + return new ClassWriter(name, this, w, wr, fieldWriter, wr); } protected override bool SupportsProperties { get => false; } @@ -579,7 +581,7 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { } var className = "class_" + IdName(nt); var cw = CreateClass(nt.Module.CompileName, className, null, wr) as CppCompiler.ClassWriter; - var w = cw.MethodWriter; + var w = cw.MethodDeclWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); if (nt.NativeType == null) { @@ -616,7 +618,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { var className = "class_" + IdName(sst); var cw = CreateClass(sst.Module.CompileName, className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; - var w = cw.MethodWriter; + var w = cw.MethodDeclWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); @@ -668,26 +670,29 @@ protected override void GetNativeInfo(NativeType.Selection sel, out string name, protected class ClassWriter : IClassWriter { public string ClassName; public readonly CppCompiler Compiler; - public readonly BlockTargetWriter MethodWriter; + public readonly BlockTargetWriter MethodDeclWriter; + public readonly TargetWriter MethodWriter; public readonly BlockTargetWriter FieldWriter; public readonly TargetWriter Finisher; - public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter methodWriter, BlockTargetWriter fieldWriter, TargetWriter finisher) { + public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter methodDeclWriter, TargetWriter methodWriter, BlockTargetWriter fieldWriter, TargetWriter finisher) { Contract.Requires(compiler != null); + Contract.Requires(methodDeclWriter != null); Contract.Requires(methodWriter != null); Contract.Requires(fieldWriter != null); this.ClassName = className; this.Compiler = compiler; + this.MethodDeclWriter = methodDeclWriter; this.MethodWriter = methodWriter; this.FieldWriter = fieldWriter; this.Finisher = finisher; } public BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody) { - return Compiler.CreateMethod(m, createBody, MethodWriter); + return Compiler.CreateMethod(m, createBody, MethodDeclWriter, MethodWriter); } public BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member) { - return Compiler.CreateFunction(name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodWriter); + return Compiler.CreateFunction(member.EnclosingClass.CompileName, member.EnclosingClass.TypeArgs, name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); } public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member) { return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodWriter); @@ -702,7 +707,7 @@ public void DeclareField(string name, List targs, bool isStatic, public void Finish() { } } - protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, TargetWriter wr) { + protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, BlockTargetWriter wdr, TargetWriter wr) { string targetReturnTypeReplacement = null; foreach (var p in m.Outs) { if (!p.IsGhost) { @@ -720,20 +725,35 @@ public void Finish() { } return null; } - if (m.TypeArgs.Count != 0) { + if (m.TypeArgs.Count != 0) { + wdr.WriteLine(DeclareTemplate(m.TypeArgs)); wr.WriteLine(DeclareTemplate(m.TypeArgs)); } - wr.Write("{0}{1} {2}", - m.IsStatic ? "static " : "", + if (m.EnclosingClass.TypeArgs != null && m.EnclosingClass.TypeArgs.Count > 0) { + wr.WriteLine(DeclareTemplate(m.EnclosingClass.TypeArgs)); + } + + wr.Write("{0} {1}{2}::{3}", + targetReturnTypeReplacement ?? "void", + m.EnclosingClass.CompileName, + TemplateMethod(m.EnclosingClass.TypeArgs), + IdName(m)); + + wdr.Write("{0}{1} {2}", + m.IsStatic ? "static " : "", targetReturnTypeReplacement ?? "void", IdName(m)); wr.Write("("); + wdr.Write("("); int nIns = WriteFormals("", m.Ins, wr); + WriteFormals("", m.Ins, wdr); if (targetReturnTypeReplacement == null) { WriteFormals(nIns == 0 ? "" : ", ", m.Outs, wr); + WriteFormals(nIns == 0 ? "" : ", ", m.Outs, wdr); } + wdr.Write(");\n"); var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); @@ -745,23 +765,35 @@ public void Finish() { } return w; } - protected BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { + protected BlockTargetWriter/*?*/ CreateFunction(string className, List classArgs, string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, BlockTargetWriter wdr, TargetWriter wr) { if (!createBody) { return null; } - if (typeArgs.Count != 0) { + if (typeArgs.Count != 0) { + wdr.WriteLine(DeclareTemplate(typeArgs)); + wr.WriteLine(DeclareTemplate(typeArgs)); + } + if (classArgs != null && classArgs.Count != 0) { wr.WriteLine(DeclareTemplate(typeArgs)); } - wr.Write("{0}{1} {2}", - isStatic ? "static " : "", + wdr.Write("{0}{1} {2}", + isStatic ? "static " : "", + TypeName(resultType, wr, tok), + name); + wr.Write("{0} {1}{2}::{3}", TypeName(resultType, wr, tok), + className, + TemplateMethod(classArgs), name); + wdr.Write("("); wr.Write("("); + WriteFormals("", formals, wdr); int nIns = WriteFormals("", formals, wr); + wdr.Write(");"); var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); /* From 57eeb9297a9be411044da23fb27e89b072897178 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 20:15:19 -0500 Subject: [PATCH 130/573] Add Tuple-based support for multiple returns --- Source/Dafny/Compiler-cpp.cs | 21 +++++++++------------ Test/c++/returns.dfy | 12 ++++++++++++ 2 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 Test/c++/returns.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index e8650c8e01b..ef6a7aaa5ea 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -708,17 +708,12 @@ public void Finish() { } } protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, BlockTargetWriter wdr, TargetWriter wr) { + List nonGhostOuts = m.Outs.Where(o => !o.IsGhost).ToList(); string targetReturnTypeReplacement = null; - foreach (var p in m.Outs) { - if (!p.IsGhost) { - if (targetReturnTypeReplacement == null) { - targetReturnTypeReplacement = TypeName(p.Type, wr, p.tok); - } else if (targetReturnTypeReplacement != null) { - // there's more than one out-parameter, so bail - targetReturnTypeReplacement = null; - break; - } - } + if (nonGhostOuts.Count == 1) { + targetReturnTypeReplacement = TypeName(nonGhostOuts[0].Type, wr, nonGhostOuts[0].tok); + } else if (nonGhostOuts.Count > 1) { + targetReturnTypeReplacement = String.Format("struct Tuple{0}{1}", nonGhostOuts.Count, TemplateMethod(nonGhostOuts.ConvertAll(n => n.Type))); } if (!createBody) { @@ -1330,7 +1325,7 @@ protected override void EmitOutParameterSplits(string outCollector, List EmitAssignment(actualOutParamNames[0], null, outCollector, null, wr); } else { for (var i = 0; i < actualOutParamNames.Count; i++) { - wr.WriteLine("{0} = {1}[{2}];", actualOutParamNames[i], outCollector, i); + wr.WriteLine("{0} = {1}.get_{2}();", actualOutParamNames[i], outCollector, i); } } } @@ -1362,8 +1357,10 @@ protected override void EmitReturn(List outParams, TargetWriter wr) { outParams = outParams.Where(f => !f.IsGhost).ToList(); if (!outParams.Any()) { wr.WriteLine("return;"); + } else if (outParams.Count == 1) { + wr.WriteLine("return {0};", IdName(outParams[0])); } else { - wr.WriteLine("return {0};", Util.Comma(outParams, IdName)); + wr.WriteLine("return Tuple{0}{1}({2});", outParams.Count, TemplateMethod(outParams.ConvertAll(o => o.Type)), Util.Comma(outParams, IdName)); } } diff --git a/Test/c++/returns.dfy b/Test/c++/returns.dfy new file mode 100644 index 00000000000..5370b8b58ea --- /dev/null +++ b/Test/c++/returns.dfy @@ -0,0 +1,12 @@ +newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 + +method multi() returns (x:uint64, y:uint64) +{ + x := 1; + y := 2; +} + +method Main() +{ + var x, y := multi(); +} From d659674e795b365df658bc4172b2868d1a1b3837 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 20:30:14 -0500 Subject: [PATCH 131/573] Emit more template declarations --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index ef6a7aaa5ea..7c990437fe1 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -374,7 +374,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations wr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); - wr.WriteLine("bool operator==(const {0} &left, const {0} &right); ", DtT_protected); + wr.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, TemplateMethod(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); } // Optimize a not-uncommon case From 67931816a4f98edd108d90f9104e2ed50ec2d090 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 21:01:48 -0500 Subject: [PATCH 132/573] Handle another case of Length usage --- Source/Dafny/Compiler-cpp.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7c990437fe1..a6cf0c12e3b 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2376,9 +2376,9 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, wr.Write(".length())"); } else if (m != null && m.MemberName == "Length" && m.Obj.Type.IsArrayType) { // Optimize .Length to avoid intermediate BigInteger - wr.Write("{0}(", GetNativeTypeName(toNative)); + wr.Write("({0})(", GetNativeTypeName(toNative)); TrParenExpr(m.Obj, wr, inLetExprBody); - wr.Write(".LenInt(0))"); + wr.Write("->size())"); } else { // no optimization applies; use the standard translation TrParenExpr(e.E, wr, inLetExprBody); From 3c2030f2835978f2a4af338895e3831d9b0126a5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 21:45:53 -0500 Subject: [PATCH 133/573] Define all of the classes before the class-method definitions --- Source/Dafny/Compiler-cpp.cs | 63 +++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index a6cf0c12e3b..76b4a683c56 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -28,11 +28,14 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade private List classDefaults; // Forward declarations of class and struct names - private TargetWriter declarationsWr = null; - private TargetWriter moduleDeclarationsWr = null; + private TargetWriter modDeclsWr = null; + private TargetWriter modDeclWr = null; // Datatype definitions - private TargetWriter definitionsWr = null; - private TargetWriter dtDefnWr = null; + private TargetWriter dtDefsWr = null; + private TargetWriter dtDefWr = null; + // Class declarations + private TargetWriter classDeclsWr = null; + private TargetWriter classDeclWr = null; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -53,8 +56,9 @@ protected override void EmitHeader(Program program, TargetWriter wr) { // TODO: Include appropriate .h file here //ReadRuntimeSystem("DafnyRuntime.h", wr); - this.declarationsWr = wr.ForkSection(); - this.definitionsWr = wr.ForkSection(); + this.modDeclsWr = wr.ForkSection(); + this.dtDefsWr = wr.ForkSection(); + this.classDeclsWr = wr.ForkSection(); } protected override void EmitFooter(Program program, TargetWriter wr) { @@ -88,8 +92,9 @@ protected override BlockTargetWriter CreateStaticMain(IClassWriter cw) { protected override TargetWriter CreateModule(string moduleName, bool isDefault, bool isExtern, string/*?*/ libraryName, TargetWriter wr) { var s = string.Format("namespace {0} ", IdProtect(moduleName)); - this.moduleDeclarationsWr = this.declarationsWr.NewBigBlock(s, "// end of " + s + " declarations"); - this.dtDefnWr = this.definitionsWr.NewBigBlock(s, "// end of " + s + " datatype definitions"); + this.modDeclWr = this.modDeclsWr.NewBigBlock(s, "// end of " + s + " declarations"); + this.dtDefWr = this.dtDefsWr.NewBigBlock(s, "// end of " + s + " datatype definitions"); + this.classDeclWr = this.classDeclsWr.NewBigBlock(s, "// end of " + s + " class declarations"); return wr.NewBigBlock(s, "// end of " + s); /* if (!isExtern || libraryName != null) { @@ -177,18 +182,24 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } + + var classDeclWriter = modDeclWr; + var classDefWriter = this.classDeclWr; if (typeParameters != null && typeParameters.Count > 0) { - wr.WriteLine(DeclareTemplate(typeParameters)); - moduleDeclarationsWr.WriteLine(DeclareTemplate(typeParameters)); + classDeclWriter.WriteLine(DeclareTemplate(typeParameters)); + classDefWriter.WriteLine(DeclareTemplate(typeParameters)); } - moduleDeclarationsWr.WriteLine("class {0};", name); - var w = wr.NewBlock(string.Format("class {0}", name), ";"); - //w = w.NewBlock("public:", null, BlockTargetWriter.BraceStyle.Nothing, BlockTargetWriter.BraceStyle.Nothing); - w.Write("public:\n"); + var methodDeclWriter = classDefWriter.NewBlock(string.Format("class {0}", name), ";"); + var methodDefWriter = wr; + + + classDeclWriter.WriteLine("class {0};", name); + + methodDeclWriter.Write("public:\n"); - w.WriteLine("// Default constructor\n {0}() {{}}", name); + methodDeclWriter.WriteLine("// Default constructor\n {0}() {{}}", name); // Create the code for the specialization of get_default var fullName = moduleName + "::" + name; @@ -202,18 +213,10 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool getDefaultStr += String.Format("return shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); getDefaultStr += "}\n};"; this.classDefaults.Add(getDefaultStr); + + var fieldWriter = methodDeclWriter; - //w.Write("// Constructor\n"); - //w2.Write(string.Format("{0}(", name)); - //var fieldWriter = w.NewBlock(")"); - var fieldWriter = w; - /* - if (fullPrintName != null) { - fieldWriter.WriteLine("this._tname = \"{0}\";", fullPrintName); - } - */ - var methodWriter = w; - return new ClassWriter(name, this, w, wr, fieldWriter, wr); + return new ClassWriter(name, this, methodDeclWriter, methodDefWriter, fieldWriter, wr); } protected override bool SupportsProperties { get => false; } @@ -368,8 +371,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { string DtT_protected = IdProtect(DtT); // Forward declaration of the type - this.moduleDeclarationsWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); - wr = this.dtDefnWr; + this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); + wr = this.dtDefWr; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations @@ -614,11 +617,13 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { } else { templateDecl = DeclareTemplate(sst.Var.Type.TypeArgs); } - wr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); + this.modDeclWr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); + var className = "class_" + IdName(sst); var cw = CreateClass(sst.Module.CompileName, className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; var w = cw.MethodDeclWriter; + if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new TargetWriter(w.IndentLevel, true); TrExpr(sst.Witness, witness, false); From c866eeb33b7c764a58c0482364965b367ea5078e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 8 Dec 2019 22:04:44 -0500 Subject: [PATCH 134/573] Improve handling of seqs of class types --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/seqs.dfy | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 76b4a683c56..13acaeae5a6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1124,7 +1124,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is MultiSetType) { return "_dafny.MultiSet.Empty"; } else if (xType is SeqType) { - return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, true)); + return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, !inAutoInitContext)); } else if (xType is MapType) { var m = (MapType) xType; return String.Format("DafnyMap<{0},{1}>::empty()", TypeName(m.Domain, wr, tok), TypeName(m.Range, wr, tok)); diff --git a/Test/c++/seqs.dfy b/Test/c++/seqs.dfy index d93ca5bafd2..ea58195caa8 100644 --- a/Test/c++/seqs.dfy +++ b/Test/c++/seqs.dfy @@ -1,6 +1,15 @@ newtype{:nativeType "byte"} uint8 = i:int | 0 <= i < 0x100 newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +class C { + var x:uint8; +} + +method TestSeqOfClass() returns (s:seq) +{ + return []; +} + type fixed = t:seq | |t| == 2 witness [0,0] type buffer = a:array? | a == null || a.Length < 0x100000000 @@ -85,4 +94,5 @@ method Main() { ValueEquality(); Contains(); PrintTest(); + var c := TestSeqOfClass(); } From 71ec4dd1b8f2fdb9ea466c6172c382514d6b0c46 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Dec 2019 01:03:07 -0500 Subject: [PATCH 135/573] Improve handling of generic defaults --- Source/Dafny/Compiler-cpp.cs | 9 +++++---- Test/c++/datatypes.dfy | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 13acaeae5a6..3e0ff463b08 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1124,7 +1124,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is MultiSetType) { return "_dafny.MultiSet.Empty"; } else if (xType is SeqType) { - return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, !inAutoInitContext)); + return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, false)); } else if (xType is MapType) { var m = (MapType) xType; return String.Format("DafnyMap<{0},{1}>::empty()", TypeName(m.Domain, wr, tok), TypeName(m.Range, wr, tok)); @@ -1138,6 +1138,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (inAutoInitContext && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); } else { + return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); return "nullptr"; //return string.Format("{0}.Default", RuntimeTypeDescriptor(udt, udt.tok, wr)); } @@ -1932,9 +1933,9 @@ protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo udt.ResolvedClass is TypeSynonymDecl tsd) { // Hack to workaround type synonyms wrapped around the actual array type // TODO: Come up with a more systematic way of resolving this! - typeName = TypeName(tsd.Rhs.TypeArgs[0], wr, source.tok, null, true); + typeName = TypeName(tsd.Rhs.TypeArgs[0], wr, source.tok, null, false); } else { - typeName = TypeName(source.Type.TypeArgs[0], wr, source.tok, null, true); + typeName = TypeName(source.Type.TypeArgs[0], wr, source.tok, null, false); } wr.Write("DafnySequence<{0}>::SeqFromArray", typeName); //var arr = source.Type.AsArrayType; @@ -1952,7 +1953,7 @@ protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo } protected override void EmitSeqConstructionExpr(SeqConstructionExpr expr, bool inLetExprBody, TargetWriter wr) { - wr.Write("DafnySequence<{0}>::Create(", TypeName(expr.Type, wr, expr.tok, null, true)); + wr.Write("DafnySequence<{0}>::Create(", TypeName(expr.Type, wr, expr.tok, null, false)); TrExpr(expr.N, wr, inLetExprBody); wr.Write(", "); TrExpr(expr.Initializer, wr, inLetExprBody); diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 8a8697a3bc9..3fc25ee276c 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -8,6 +8,7 @@ datatype Example1 = Example1(u:uint32, b:bool) datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) datatype Example4 = Ex4a | Ex4b +datatype Example5 = Ex5a(v:V) | Ex5b(b:bool) type Ex1Sub = d:Example1 | d.u == 0 witness Example1(0, true) type Ex2Sub = d:Example2 | d.Ex2a? && d.u == 0 witness Ex2a(0) @@ -49,6 +50,10 @@ method TestDestructor() { } } +method TestGenericDefault() { + var x:Option>; +} + datatype Option = None | Some(value:V) datatype Err = Fail(err:bool) | Ok(value:V) From 0cfff67e207e3e824d1246b1fc42cb3894fa5eeb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Dec 2019 17:40:41 -0800 Subject: [PATCH 136/573] Try to unify C++ and C# handling of extern --- Source/Dafny/Compiler.cs | 2 +- Test/c++/Extern.h | 18 +++++++++++------- Test/c++/ExternFramework.cs | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 Test/c++/ExternFramework.cs diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 401d8375856..78d3fc5f9f6 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -2651,7 +2651,7 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { } else { string qual, compileName; if (s.Method.IsExtern(out qual, out compileName) && qual != null) { - wr.Write("{0}{1}{2}", qual, ModuleSeparator, compileName); + wr.Write("{0}{1}{2}{1}{3}", qual, ModuleSeparator, s.Method.EnclosingClass.CompileName, compileName); } else { wr.Write(TypeName_Companion(s.Receiver.Type, wr, s.Tok, s.Method)); wr.Write("{0}{1}", ModuleSeparator, IdName(s.Method)); diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h index 7ed75469515..c37baa0f094 100644 --- a/Test/c++/Extern.h +++ b/Test/c++/Extern.h @@ -15,14 +15,18 @@ namespace Extern { return ret; } - template - static shared_ptr> newArrayFill(uint64 size, T v) { - shared_ptr> ret = make_shared>(size); - for (uint64 i = 0; i < size; i++) { - (*ret)[i] = v; + class __default { + public: + + template + static shared_ptr> newArrayFill(uint64 size, T v) { + shared_ptr> ret = make_shared>(size); + for (uint64 i = 0; i < size; i++) { + (*ret)[i] = v; + } + return ret; } - return ret; - } + }; class ExternClass { public: diff --git a/Test/c++/ExternFramework.cs b/Test/c++/ExternFramework.cs new file mode 100644 index 00000000000..e8594fb4b5d --- /dev/null +++ b/Test/c++/ExternFramework.cs @@ -0,0 +1,22 @@ + +namespace Extern { + public class __default { + public static T[] @newArrayFill(ulong n, T t) + { + T[] res = new T[n]; + for (ulong i = 0; i < n; i++) { + res[i] = t; + } + return res; + } + } + + public class state { + } + + public class ExternClass { + public bool my_method0(ulong a) { return true; } + public bool my_method1(ulong c) { return false; } + } + +} From 2004a8eda0ea8d1c00f24ab6313813b6bcef71a2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 9 Dec 2019 17:40:55 -0800 Subject: [PATCH 137/573] Add enough lambda support to handle datatype updates --- Source/Dafny/Compiler-cpp.cs | 6 ++---- Test/c++/datatypes.dfy | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 3e0ff463b08..cbe8efd9171 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2010,8 +2010,7 @@ protected override BlockTargetWriter CreateLambda(List inTypes, Bpl.IToken } protected override TargetWriter CreateIIFE_ExprBody(Expression source, bool inLetExprBody, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { - throw NotSupported("CreateIIFE_ExprBody-A", sourceTok); - var w = wr.NewExprBlock("function ({0})", bvName); + var w = wr.NewExprBlock("[&]({0} {1}) -> {2} ", TypeName(sourceType, wr, sourceTok), bvName, TypeName(resultType, wr, resultTok)); w.Write("return "); w.BodySuffix = ";" + w.NewLine; TrParenExpr(source, wr, inLetExprBody); @@ -2019,8 +2018,7 @@ protected override TargetWriter CreateIIFE_ExprBody(Expression source, bool inLe } protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceType, Bpl.IToken sourceTok, Type resultType, Bpl.IToken resultTok, string bvName, TargetWriter wr) { - throw NotSupported("CreateIIFE_ExprBody-B", sourceTok); - var w = wr.NewExprBlock("function ({0})", bvName); + var w = wr.NewExprBlock("[&]({0} {1}) -> {2} ", TypeName(sourceType, wr, sourceTok), bvName, TypeName(resultType, wr, resultTok)); w.Write("return "); w.BodySuffix = ";" + w.NewLine; wr.Write("({0})", source); diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 3fc25ee276c..d9e3ee518e1 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -39,6 +39,11 @@ method Callee(e:Example2) { } } +method DtUpdate(e:Example1) +{ + var x := e.(u := 0); +} + method TestDestructor() { var e1 := Example1(22, false); var x := e1.u; From 0627c9a14912f0fdf56217a938cfff0e4bf5ade2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 10 Dec 2019 12:59:39 -0800 Subject: [PATCH 138/573] Emit custom hashing routines for our datatypes, so they can be used in sets --- Source/Dafny/Compiler-cpp.cs | 67 ++++++++++++++++++++++++++++++++++-- Source/Dafny/Compiler.cs | 2 +- Test/c++/datatypes.dfy | 1 - Test/c++/sets.dfy | 13 +++++++ 4 files changed, 78 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index cbe8efd9171..7f4623a498a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -36,6 +36,8 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade // Class declarations private TargetWriter classDeclsWr = null; private TargetWriter classDeclWr = null; + // Hash definitions + private TargetWriter hashWr = null; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -59,6 +61,7 @@ protected override void EmitHeader(Program program, TargetWriter wr) { this.modDeclsWr = wr.ForkSection(); this.dtDefsWr = wr.ForkSection(); this.classDeclsWr = wr.ForkSection(); + this.hashWr = wr.ForkSection(); } protected override void EmitFooter(Program program, TargetWriter wr) { @@ -128,7 +131,7 @@ private string TypeParameters(List targs) { private string DeclareTemplate(List typeArgs) { var targs = ""; - if (typeArgs.Count > 0) { + if (typeArgs != null && typeArgs.Count > 0) { targs = String.Format("template <{0}>", TypeParameters(typeArgs)); } return targs; @@ -136,7 +139,7 @@ private string DeclareTemplate(List typeArgs) { private string DeclareTemplate(List typeArgs) { var targs = ""; - if (typeArgs.Count > 0) { + if (typeArgs != null && typeArgs.Count > 0) { targs = String.Format("template <{0}>", Util.Comma(typeArgs, t => "typename " + TypeName(t, null, null))); } return targs; @@ -429,7 +432,20 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.Module.CompileName + "::" + DtT_protected; + var hwr = hashWr.NewBlock(string.Format("struct hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); + owr.WriteLine("size_t seed = 0;"); + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + } + } + owr.WriteLine("return seed;"); } else { // Create one struct for each constructor @@ -474,6 +490,29 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the not-comparison operator wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); + + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.Module.CompileName + "::" + structName; + var hwr = hashWr.NewBlock(string.Format("struct hash<{0}{1}>", fullName, TemplateMethod(dt.TypeArgs)), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullName, TemplateMethod(dt.TypeArgs))); + owr.WriteLine("size_t seed = 0;"); + int argCount = 0; + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // Recursive destructor needs to use a pointer + owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + } else { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + } + argCount++; + } + } + if (argCount == 0) { + owr.WriteLine("(void)x;"); + } + owr.WriteLine("return seed;"); } // Declare the overall tagged union @@ -561,6 +600,28 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + // Define a custom hasher for the struct as a whole + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullStructName = dt.Module.CompileName + "::" + DtT_protected; + var hwr2 = hashWr.NewBlock(string.Format("struct hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); + var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); + owr2.WriteLine("size_t seed = 0;"); + owr2.WriteLine("hash_combine(seed, (uint64)x.tag);"); + foreach (var ctor in dt.Ctors) { + var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", ctor.CompileName)); + ifwr.WriteLine("hash_combine(seed, x.v_{2});", dt.Module.CompileName, DtT_protected, ctor.CompileName, TemplateMethod(dt.TypeArgs)); + } + owr2.WriteLine("return seed;"); + + if (IsRecursiveDatatype(dt)) { + // Emit a custom hasher for a pointer to this type + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + hwr2 = hashWr.NewBlock(string.Format("struct hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); + owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const shared_ptr<{0}{1}>& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); + owr2.WriteLine("struct hash<{0}{1}> hasher;", fullStructName, TemplateMethod(dt.TypeArgs)); + owr2.WriteLine("std::size_t h = hasher(*x);"); + owr2.WriteLine("return h;"); + } } } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 78d3fc5f9f6..70c9b75315f 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -3446,7 +3446,7 @@ void CompileFunctionCallExpr(FunctionCallExpr e, TargetWriter wr, bool inLetExpr string qual = ""; string compileName = ""; if (f.IsExtern(out qual, out compileName) && qual != null) { - wr.Write("{0}{1}", qual, ModuleSeparator); + wr.Write("{0}{1}{2}{1}", qual, ModuleSeparator, e.Function.EnclosingClass.CompileName); } else if (f.IsStatic) { wr.Write("{0}{1}", TypeName_Companion(e.Receiver.Type, wr, e.tok, f), ModuleSeparator); compileName = IdName(f); diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index d9e3ee518e1..317b3eef451 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -59,7 +59,6 @@ method TestGenericDefault() { var x:Option>; } - datatype Option = None | Some(value:V) datatype Err = Fail(err:bool) | Ok(value:V) diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index 4a04b0b8426..132486c8732 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -1,5 +1,18 @@ newtype{:uint32iveType "uint"} uint32 = i:int | 0 <= i < 0x100000000 +datatype Example0 = Example0(u:uint32, b:bool) + +method Test0(e0:Example0) +{ + var s := { e0 }; +} + +datatype Example1 = Ex1a(u:uint32) | Ex1b(b:bool) +method Test1(t0:Example1) +{ + var t := { t0 }; +} + method Test(name:string, b:bool) requires b; { From 9097cce79830f5e0c883160cd953de12eeaa9889 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 10 Dec 2019 13:33:32 -0800 Subject: [PATCH 139/573] Further improvements to the hash definitions --- Binaries/DafnyRuntime.h | 8 ++++---- Source/Dafny/Compiler-cpp.cs | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 3497e418ef1..45080b6a5e8 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -412,7 +412,7 @@ struct hash> { size_t operator()(const DafnySequence& s) const { size_t seed = 0; for (size_t i = 0; i < s.seq.size(); i++) { - hash_combine(seed, s.seq[i]); + hash_combine(seed, s.seq[i]); } return seed; } @@ -544,7 +544,7 @@ struct hash> { size_t operator()(const DafnySet& s) const { size_t seed = 0; for (auto const& elt:s.set) { - hash_combine(seed, elt); + hash_combine(seed, elt); } return seed; } @@ -700,8 +700,8 @@ struct hash> { size_t operator()(const DafnyMap& s) const { size_t seed = 0; for (auto const& kv:s.map) { - hash_combine(seed, kv.first); - hash_combine(seed, kv.second); + hash_combine(seed, kv.first); + hash_combine(seed, kv.second); } return seed; } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7f4623a498a..4687c01c211 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -436,13 +436,13 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.Module.CompileName + "::" + DtT_protected; + var fullName = dt.Module.CompileName + "::" + DtT_protected + TemplateMethod(dt.TypeArgs); var hwr = hashWr.NewBlock(string.Format("struct hash<{0}>", fullName), ";"); var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); foreach (var arg in ctor.Formals) { if (!arg.IsGhost) { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); } } owr.WriteLine("return seed;"); @@ -493,18 +493,18 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.Module.CompileName + "::" + structName; - var hwr = hashWr.NewBlock(string.Format("struct hash<{0}{1}>", fullName, TemplateMethod(dt.TypeArgs)), ";"); - var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullName, TemplateMethod(dt.TypeArgs))); + var fullName = dt.Module.CompileName + "::" + structName + TemplateMethod(dt.TypeArgs); + var hwr = hashWr.NewBlock(string.Format("struct hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); int argCount = 0; foreach (var arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer - owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); } else { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.Name); + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); } argCount++; } From bc228cc4c3179cf069520d15e1e5b8e1b80692e9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 10 Dec 2019 13:58:32 -0800 Subject: [PATCH 140/573] A few fixes to sizes --- Binaries/DafnyRuntime.h | 1 + Source/Dafny/Compiler-cpp.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 45080b6a5e8..d8c6df61fc9 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -335,6 +335,7 @@ struct DafnySequence { } uint64 length () { return seq.size(); } + uint64 size() { return length(); } DafnySequence update(uint64 i, T t) { DafnySequence ret(*this); diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 4687c01c211..dabf722abc6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2438,7 +2438,7 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, } else if (u != null && u.Op == UnaryOpExpr.Opcode.Cardinality) { wr.Write("({0})(", GetNativeTypeName(toNative)); TrParenExpr(u.E, wr, inLetExprBody); - wr.Write(".length())"); + wr.Write(".size())"); } else if (m != null && m.MemberName == "Length" && m.Obj.Type.IsArrayType) { // Optimize .Length to avoid intermediate BigInteger wr.Write("({0})(", GetNativeTypeName(toNative)); From 6f20ee6c3f78882b80975b9660f2e8a42d5cef66 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 12 Dec 2019 17:39:10 -0500 Subject: [PATCH 141/573] Improve handling of tail recursion --- Source/Dafny/Compiler-cpp.cs | 6 +++++- Test/c++/recursion.dfy | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index dabf722abc6..c1b597653b8 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -817,6 +817,10 @@ public void Finish() { } wdr.Write(");\n"); var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); + if (m.IsTailRecursive) { + w.WriteLine("goto TAIL_CALL_START;"); // Avoid warning about unused label + w.WriteLine("TAIL_CALL_START: ;"); // Extra semicolon in case there are no additional statements after this + } if (targetReturnTypeReplacement != null) { var r = new TargetWriter(w.IndentLevel); @@ -1052,7 +1056,7 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { } protected override void EmitJumpToTailCallStart(TargetWriter wr) { - //wr.WriteLine("continue TAIL_CALL_START;"); + wr.WriteLine("goto TAIL_CALL_START;"); } protected void Warn(string msg, Bpl.IToken tok) { diff --git a/Test/c++/recursion.dfy b/Test/c++/recursion.dfy index dde2f6bbe7e..6a8f9569e09 100644 --- a/Test/c++/recursion.dfy +++ b/Test/c++/recursion.dfy @@ -1,18 +1,35 @@ +newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 method R0(x:bool) { if x { + print "x\n"; R1(false); - } + } else { + print "!x\n"; + } } method R1(y:bool) { if y { + print "y\n"; R0(false); + } else { + print "!y\n"; + } +} + +method CallSelf(x:uint32) { + if x == 0 { + print "Done\n"; + } else { + print x, "\n"; + CallSelf(x - 1); } } method Main() { R0(true); + CallSelf(3); } From f0bd29a2d1a625daec2af983bdc54be5d5653948 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 12 Dec 2019 17:40:27 -0500 Subject: [PATCH 142/573] Make EuclideanDivision_int64 inline --- Binaries/DafnyRuntime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index d8c6df61fc9..8efac2cf40f 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -256,7 +256,7 @@ inline ostream& operator<<(ostream& out, const Tuple5& val){ *********************************************************/ -int64 EuclideanDivision_int64(int64 a, int64 b) { +inline int64 EuclideanDivision_int64(int64 a, int64 b) { if (0 <= a) { if (0 <= b) { // +a +b: a/b From 8313ec473e11a63d0a430517fbf40e1dd088da6e Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Tue, 17 Dec 2019 15:22:48 -0800 Subject: [PATCH 143/573] Fix parser makefile to work on Linux --- Source/Dafny/Makefile | 17 +++++++++++++++-- .../Coco/src/{parser.frame => Parser.frame} | 0 .../Coco/src/{scanner.frame => Scanner.frame} | 0 3 files changed, 15 insertions(+), 2 deletions(-) rename third_party/Coco/src/{parser.frame => Parser.frame} (100%) rename third_party/Coco/src/{scanner.frame => Scanner.frame} (100%) diff --git a/Source/Dafny/Makefile b/Source/Dafny/Makefile index f48f8f75373..c4b6ef44ff5 100644 --- a/Source/Dafny/Makefile +++ b/Source/Dafny/Makefile @@ -13,8 +13,21 @@ COCO = $(COCO_EXE_DIR)\Coco.exe # nmake that. --KRML all: Parser.cs -Parser.cs: $(FRAME_DIR)\scanner.frame $(FRAME_DIR)\parser.frame Dafny.atg - $(COCO) Dafny.atg -namespace Microsoft.Dafny -frames $(FRAME_DIR) +PARSER_PREREQS=$(FRAME_DIR)\Scanner.frame $(FRAME_DIR)\Parser.frame +ifeq ($(shell uname),Linux) +# Linux needs forward slashes. Maybe those are okay on windows too? +E_PARSER_PREREQS=$(subst \,/,$(PARSER_PREREQS)) +# Linux needs to invoke the parser via mono. +E_COCO=mono $(subst \,/,$(COCO)) +E_FRAME_DIR=$(subst \,/,$(FRAME_DIR)) +else +# Windows +E_PARSER_PREREQS=$(PARSER_PREREQS) +E_COCO=$(COCO) +E_FRAME_DIR=$(FRAME_DIR) +endif +Parser.cs: $(E_PARSER_PREREQS) Dafny.atg + $(E_COCO) Dafny.atg -namespace Microsoft.Dafny -frames $(E_FRAME_DIR) clean: if exist Scanner.cs del Scanner.cs diff --git a/third_party/Coco/src/parser.frame b/third_party/Coco/src/Parser.frame similarity index 100% rename from third_party/Coco/src/parser.frame rename to third_party/Coco/src/Parser.frame diff --git a/third_party/Coco/src/scanner.frame b/third_party/Coco/src/Scanner.frame similarity index 100% rename from third_party/Coco/src/scanner.frame rename to third_party/Coco/src/Scanner.frame From cd015a0ca94e40c2022a6b3fef7e39c51d6a029e Mon Sep 17 00:00:00 2001 From: Jon Howell Date: Tue, 17 Dec 2019 15:23:25 -0800 Subject: [PATCH 144/573] Always treat abstract modules as abstract, even absent IronDafny flag --- Source/Dafny/Dafny.atg | 2 +- Source/Dafny/Parser.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 3219b161d27..b8aa8e5f105 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -860,7 +860,7 @@ TopDecl<. ModuleDefinition module, List membersDefaultClass, bo | IteratorDecl (. module.TopLevelDecls.Add(iter); .) | TraitDecl (. module.TopLevelDecls.Add(trait); .) | ClassMemberDecl + !isTopLevel && isAbstract> ) . SubModuleDecl diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index 6428ac4bc00..fcbcd61f36c 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -913,7 +913,7 @@ void TopDecl(ModuleDefinition module, List membersDefaultClass, } case 46: case 47: case 48: case 49: case 50: case 51: case 60: case 61: case 65: case 66: case 67: case 104: { ClassMemberDecl(dmod, membersDefaultClass, false, !DafnyOptions.O.AllowGlobals, -!isTopLevel && DafnyOptions.O.IronDafny && isAbstract); +!isTopLevel && isAbstract); break; } default: SynErr(156); break; From e7aa7b40774c73281551ea92b1b0bf987ea19f22 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 13 Dec 2019 22:53:36 -0500 Subject: [PATCH 145/573] Don't emit unnecessary casts --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/bit-vectors.dfy | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index c1b597653b8..50f9819667a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1625,7 +1625,7 @@ protected override TargetWriter EmitBitvectorTruncation(BitvectorType bvType, bo var middle = wr.Fork(); wr.Write(").mod(new BigNumber(2).exponentiatedBy({0}))", bvType.Width); return middle; - } else if (bvType.NativeType.Bitwidth != bvType.Width) { + } else if (bvType.NativeType.Bitwidth == bvType.Width) { // no truncation needed return wr; } else { diff --git a/Test/c++/bit-vectors.dfy b/Test/c++/bit-vectors.dfy index 680407acb48..4cb45e322bc 100644 --- a/Test/c++/bit-vectors.dfy +++ b/Test/c++/bit-vectors.dfy @@ -1,5 +1,11 @@ newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 +function method bit(i: uint64) : bv64 + requires i < 64 + { + 1 as bv64 << i + } + method BasicOps(b0:bv64, b1:bv64) { var r0:bv64 := b0 & b1; var r1:bv64 := b0 | b1; @@ -10,6 +16,7 @@ method BasicOps(b0:bv64, b1:bv64) { lemma {:axiom} as_int_as_bv64(a: bv64) ensures (a as int) as bv64 == a + ensures (a as int) < 0x10000000000000000 method Casts(u0:uint64) { @@ -18,8 +25,8 @@ method Casts(u0:uint64) var r1:uint64 := (u0 as bv64 << 1) as uint64; } - method Main() { BasicOps(72, 15); Casts(42); + var b := bit(10); } From fe86ca45dc09d406abd9b2e9b28ae3112e5d6a37 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 19 Dec 2019 10:35:59 +0000 Subject: [PATCH 146/573] Compile destructors as methods, so that we can dynamically dispatch for constructors that share the same destructor. --- Source/Dafny/Compiler-cpp.cs | 36 +++++++++++++++++++++++++++++++++++- Test/c++/datatypes.dfy | 17 +++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 50f9819667a..228c601cfb3 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -597,6 +597,40 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } ws.WriteLine(";\n}"); + // Create destructors + foreach (var ctor in dt.Ctors) { + foreach (var dtor in ctor.Destructors) { + if (dtor.EnclosingCtors[0] == ctor) { + var arg = dtor.CorrespondingFormals[0]; + if (!arg.IsGhost && arg.HasName) { + var returnType = TypeName(arg.Type, wr, arg.tok); + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // This is a recursive destuctor, so return a pointer + returnType = String.Format("shared_ptr<{0}>", returnType); + } + using (var wDtor = ws.NewNamedBlock("{0} dtor_{1}()", returnType, + arg.CompileName)) { + if (dt.IsRecordType) { + wDtor.WriteLine("return this.{0};", IdName(arg)); + } else { + var n = dtor.EnclosingCtors.Count; + for (int i = 0; i < n - 1; i++) { + var ctor_i = dtor.EnclosingCtors[i]; + Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[i].CompileName); + wDtor.WriteLine("if (is_{0}()) {{ return v_{0}.{1}; }}", + ctor_i.CompileName, IdName(arg)); + } + + Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[n - 1].CompileName); + wDtor.WriteLine("return v_{0}.{1}; ", + dtor.EnclosingCtors[n - 1].CompileName, IdName(arg)); + } + } + } + } + } + } + // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); @@ -1919,7 +1953,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu // This a recursively defined datatype; need to dereference the pointer preSource.Write("*"); } - wr.Write(".v_{0}.{1}", dtor2.EnclosingCtors[0].CompileName, sf.CompileName); + wr.Write(".dtor_{0}()", sf.CompileName); } else { wr.Write(".{0}", sf.CompileName); } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 317b3eef451..7ceacfe7759 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -93,6 +93,22 @@ method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { } } + +datatype Dup = Dup1(b:bool, x:uint32) | Dup2(x:uint32) + +method DupTest(d:Dup) +{ + var y := d.x; + print y; + print "\n"; +} + +method DupTestTest() +{ + DupTest(Dup1(false, 42)); + DupTest(Dup2(330)); +} + datatype IntList = | Nil | Cons(hd:uint32, tl:IntList) @@ -122,6 +138,7 @@ method Main() { Comparison(Example1(42, true), Example1(42, true), Ex4b, Ex4b); Comparison(Example1(42, false), Example1(42, true), Ex4a, Ex4a); Comparison(Example1(2, false), Example1(42, false), Ex4a, Ex4b); + DupTestTest(); var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); print len; From 86a1b946f50e71de33f21e5f7585ff6aee621ccc Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Tue, 31 Dec 2019 15:34:23 -0500 Subject: [PATCH 147/573] add .expect files for all the cpp tests `make test` will now compare the outputs against the .expect files --- Test/c++/Makefile | 3 ++- Test/c++/arrays.expect | 3 +++ Test/c++/bit-vectors.expect | 0 Test/c++/class.expect | 11 ++++++++++ Test/c++/datatypes.expect | 15 ++++++++++++++ Test/c++/extern.expect | 0 Test/c++/functions.expect | 0 Test/c++/generic.expect | 0 Test/c++/hello.expect | 1 + Test/c++/ints.expect | 1 + Test/c++/maps.expect | 15 ++++++++++++++ Test/c++/recursion.expect | 6 ++++++ Test/c++/returns.expect | 0 Test/c++/run_cpp_tests.py | 40 +++++++++++++++++++++++++++++++++++++ Test/c++/seqs.expect | 13 ++++++++++++ Test/c++/sets.expect | 26 ++++++++++++++++++++++++ Test/c++/tuple.expect | 0 Test/c++/while.expect | 17 ++++++++++++++++ 18 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 Test/c++/arrays.expect create mode 100644 Test/c++/bit-vectors.expect create mode 100644 Test/c++/class.expect create mode 100644 Test/c++/datatypes.expect create mode 100644 Test/c++/extern.expect create mode 100644 Test/c++/functions.expect create mode 100644 Test/c++/generic.expect create mode 100644 Test/c++/hello.expect create mode 100644 Test/c++/ints.expect create mode 100644 Test/c++/maps.expect create mode 100644 Test/c++/recursion.expect create mode 100644 Test/c++/returns.expect create mode 100644 Test/c++/run_cpp_tests.py create mode 100644 Test/c++/seqs.expect create mode 100644 Test/c++/sets.expect create mode 100644 Test/c++/tuple.expect create mode 100644 Test/c++/while.expect diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 8c940425145..3a2844e5e59 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -31,7 +31,8 @@ $(EXECS): % : %.cpp $(DAFNY_RUNTIME_CPP) $(CXX) $(CXXFLAGS) -o $@ $< test: $(EXECS) - for e in $(EXECS); do echo; echo "*******************"; echo "Running $$e"; echo "*******************"; echo; ./$$e; done | tee $(TEST_LOG) + python run_cpp_tests.py $(EXECS) +#for e in $(EXECS); do echo; echo "*******************"; echo "Running $$e"; echo "*******************"; echo; ./$$e; done | tee $(TEST_LOG) # grep unexpected $(TEST_LOG) # if [ $$? -ne 0 ]; then # echo "FAILED A TEST" diff --git a/Test/c++/arrays.expect b/Test/c++/arrays.expect new file mode 100644 index 00000000000..ed3cca109a9 --- /dev/null +++ b/Test/c++/arrays.expect @@ -0,0 +1,3 @@ +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 +17 +It's null diff --git a/Test/c++/bit-vectors.expect b/Test/c++/bit-vectors.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/class.expect b/Test/c++/class.expect new file mode 100644 index 00000000000..ec9e7fc4ea8 --- /dev/null +++ b/Test/c++/class.expect @@ -0,0 +1,11 @@ +1 1 0 +103 102 102 106 105 105 +203 17 0 18 8 9 69 70 +202 17 0 18 8 9 69 70 +202 17 0 18 8 9 69 70 +0 18 9 70 +0 18 9 70 +0 18 9 70 +EqualityReflexive: This is expected +ClassAndPtrDiffer: This is expected +DeepEquality: This is expected diff --git a/Test/c++/datatypes.expect b/Test/c++/datatypes.expect new file mode 100644 index 00000000000..f2bf4a9cf8a --- /dev/null +++ b/Test/c++/datatypes.expect @@ -0,0 +1,15 @@ +Case A: 42 +Case B: 1 +This is expected +42 +1 +Got some:32 +Example1s are equal +Example4s are equal +Example1s are not equal +Example4s are equal +Example1s are not equal +Example4s are not equal +42 +330 +3 \ No newline at end of file diff --git a/Test/c++/extern.expect b/Test/c++/extern.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/functions.expect b/Test/c++/functions.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/generic.expect b/Test/c++/generic.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/hello.expect b/Test/c++/hello.expect new file mode 100644 index 00000000000..802992c4220 --- /dev/null +++ b/Test/c++/hello.expect @@ -0,0 +1 @@ +Hello world diff --git a/Test/c++/ints.expect b/Test/c++/ints.expect new file mode 100644 index 00000000000..5fcb7b811cb --- /dev/null +++ b/Test/c++/ints.expect @@ -0,0 +1 @@ +Result is z = 42 diff --git a/Test/c++/maps.expect b/Test/c++/maps.expect new file mode 100644 index 00000000000..9f3d7137bb5 --- /dev/null +++ b/Test/c++/maps.expect @@ -0,0 +1,15 @@ +Identity: This is expected +ValuesIdentity: This is expected +KeyMembership: This is expected +Value1: This is expected +Value2: This is expected +Update Inequality: This is expected +Update Immutable 1: This is expected +Update Immutable 2: This is expected +Update Result: This is expected +Update Others: This is expected +Keys equal: This is expected +Keys membership 1: This is expected +Keys membership 2: This is expected +Keys membership 3: This is expected +Keys membership 4: This is expected diff --git a/Test/c++/recursion.expect b/Test/c++/recursion.expect new file mode 100644 index 00000000000..1ea14926e89 --- /dev/null +++ b/Test/c++/recursion.expect @@ -0,0 +1,6 @@ +x +!y +3 +2 +1 +Done diff --git a/Test/c++/returns.expect b/Test/c++/returns.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/run_cpp_tests.py b/Test/c++/run_cpp_tests.py new file mode 100644 index 00000000000..5978f47fd64 --- /dev/null +++ b/Test/c++/run_cpp_tests.py @@ -0,0 +1,40 @@ +from __future__ import print_function + +import os +import sys +import subprocess + +def in_color(green, text): + return ("\x1B[01;32m" if green else "\x1B[01;31m") + text + "\x1B[0m" + +def in_red(text): + return in_color(False, text) + +def in_green(text): + return in_color(True, text) + +def get_result(test): + proc = subprocess.Popen(["./" + test], stdin=subprocess.PIPE, + stdout=subprocess.PIPE) + out, err = proc.communicate() + ret = proc.wait() + + if ret != 0: + return in_red("ERROR") + + with open(test + ".expect", "rb") as f: + expected_out = f.read() + + if out != expected_out: + return in_red("WRONG") + return in_green("correct") + +def run_test(test): + print(test, " ... ", get_result(test)) + +def run_tests(tests): + for test in tests: + run_test(test) + +if __name__ == "__main__": + run_tests(sys.argv[1:]) diff --git a/Test/c++/seqs.expect b/Test/c++/seqs.expect new file mode 100644 index 00000000000..16f5f9d22ea --- /dev/null +++ b/Test/c++/seqs.expect @@ -0,0 +1,13 @@ +Head second:2 +Trunc first:2 +Head trunc: This is expected +Combine: This is expected +Replace1: This is expected +Replace2: This is expected +Immutability: This is expected +ValueEquality: This is expected +Membership 1: This is expected +Membership 2: This is expected +Membership 3: This is expected +Membership 3 value equality: This is expected +Hello world! diff --git a/Test/c++/sets.expect b/Test/c++/sets.expect new file mode 100644 index 00000000000..2002a44e9a3 --- /dev/null +++ b/Test/c++/sets.expect @@ -0,0 +1,26 @@ +Identity: This is expected +ValuesIdentity: This is expected +DiffIdentity: This is expected +DiffIdentitySelf: This is expected +ProperSubsetIdentity: This is expected +ProperSubset: This is expected +SelfSubset: This is expected +OtherSubset: This is expected +UnionIdentity: This is expected +Membership: This is expected +NonMembership1: This is expected +NonMembership2: This is expected +SeqMembership1: This is expected +SeqMembership2: This is expected +SeqMembership3: This is expected +SeqNonMembership1: This is expected +SeqNonMembership2: This is expected +SeqNonMembership3: This is expected +SeqMembershipValue1: This is expected +SeqMembershipValue2: This is expected +SeqMembershipValue3: This is expected +SetComprehensionInEquality: This is expected +SetComprehensionInMembership: This is expected +0 +LetSuchThatMembership: This is expected +LetSuchThatValue: This is expected diff --git a/Test/c++/tuple.expect b/Test/c++/tuple.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/c++/while.expect b/Test/c++/while.expect new file mode 100644 index 00000000000..9a44de1e2a3 --- /dev/null +++ b/Test/c++/while.expect @@ -0,0 +1,17 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 + +0 +1 +2 +3 +4 +5 From cad5cf0fb80f1a55c254f3d7451e47bf75d52c08 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Fri, 20 Dec 2019 00:03:05 -0500 Subject: [PATCH 148/573] faster array slicing * When slicing an array into a sequence, don't copy the entire array. Only copy the slice you want. (Similar to 164f10136165abaebd8084acb58a114d10e93f2e, which is analogous for the C# compiler) * Implement << for DafnySequence (in order to run arrays.dfy test). --- Binaries/DafnyRuntime.h | 37 ++++++++++++++++++++++++++-- Source/Dafny/Compiler-cpp.cs | 47 +++++++++++++++++++++++++++--------- Test/c++/arrays.dfy | 2 -- Test/c++/arrays.expect | 5 ++++ 4 files changed, 76 insertions(+), 15 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 8efac2cf40f..71346386a1b 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -301,6 +301,11 @@ struct DafnySequence { vector a_seq(*arr); seq = a_seq; } + + DafnySequence(shared_ptr> arr, uint64 lo, uint64 hi) { + seq.resize(hi - lo); + std::copy(arr->begin() + lo, arr->begin() + hi, seq.begin()); + } DafnySequence(initializer_list il) { vector a_seq(il); @@ -312,6 +317,21 @@ struct DafnySequence { return ret; } + static DafnySequence SeqFromArrayPrefix(shared_ptr> arr, uint64 hi) { + DafnySequence ret(arr, 0, hi); + return ret; + } + + static DafnySequence SeqFromArraySuffix(shared_ptr> arr, uint64 lo) { + DafnySequence ret(arr, lo, arr->size()); + return ret; + } + + static DafnySequence SeqFromArraySlice(shared_ptr> arr, uint64 lo, uint64 hi) { + DafnySequence ret(arr, lo, hi); + return ret; + } + static DafnySequence Create(initializer_list il) { DafnySequence ret(il); return ret; @@ -334,8 +354,8 @@ struct DafnySequence { return seq[i]; } - uint64 length () { return seq.size(); } - uint64 size() { return length(); } + uint64 length () const { return seq.size(); } + uint64 size() const { return length(); } DafnySequence update(uint64 i, T t) { DafnySequence ret(*this); @@ -383,6 +403,19 @@ struct DafnySequence { vector seq; }; +template +std::ostream& operator<<(std::ostream& os, const DafnySequence& s) +{ + os << "["; + for (size_t i = 0; i < s.size(); i++) { + os << s.seq[i]; + if (i != s.size() - 1) { + os << ", "; + } + } + return os << "]"; +} + template struct get_default > { static DafnySequence call() { diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 228c601cfb3..928cd7b5f8e 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2036,18 +2036,43 @@ protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo } else { typeName = TypeName(source.Type.TypeArgs[0], wr, source.tok, null, false); } - wr.Write("DafnySequence<{0}>::SeqFromArray", typeName); - //var arr = source.Type.AsArrayType; - // wr.Write("DafnySequence<{0}>::SeqFromArray", TypeName(arr., wr, source.tok, null, true)); - //wr.Write("DafnySequence<{0}>::SeqFromArray", IdName(source.GetType().AsArrayType.TypeArgs[0])); - } - TrParenExpr(source, wr, inLetExprBody); + if (lo == null) { + if (hi == null) { + wr.Write("DafnySequence<{0}>::SeqFromArray", typeName); + TrParenExpr(source, wr, inLetExprBody); + } else { + wr.Write("DafnySequence<{0}>::SeqFromArrayPrefix(", typeName); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(","); + TrParenExpr(hi, wr, inLetExprBody); + wr.Write(")"); + } + } else { + if (hi == null) { + wr.Write("DafnySequence<{0}>::SeqFromArraySuffix(", typeName); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(","); + TrParenExpr(lo, wr, inLetExprBody); + wr.Write(")"); + } else { + wr.Write("DafnySequence<{0}>::SeqFromArraySlice(", typeName); + TrParenExpr(source, wr, inLetExprBody); + wr.Write(","); + TrParenExpr(lo, wr, inLetExprBody); + wr.Write(","); + TrParenExpr(hi, wr, inLetExprBody); + wr.Write(")"); + } + } + } else { + TrParenExpr(source, wr, inLetExprBody); - if (hi != null) { - TrParenExpr(".take", hi, wr, inLetExprBody); - } - if (lo != null) { - TrParenExpr(".drop", lo, wr, inLetExprBody); + if (hi != null) { + TrParenExpr(".take", hi, wr, inLetExprBody); + } + if (lo != null) { + TrParenExpr(".drop", lo, wr, inLetExprBody); + } } } diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index abf788ed903..4ebf397c89d 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -53,7 +53,6 @@ method Main() { PrintArray(a, 23); var n := LinearSearch(a, 23, 17); print n, "\n"; - /* var s : seq := a[..]; print s, "\n"; s := a[2..16]; @@ -66,7 +65,6 @@ method Main() { // Conversion to sequence should copy elements (sequences are immutable!) a[0] := 42; print s, "\n"; - */ PrintArray(null, 0); } diff --git a/Test/c++/arrays.expect b/Test/c++/arrays.expect index ed3cca109a9..1bd1f6d130c 100644 --- a/Test/c++/arrays.expect +++ b/Test/c++/arrays.expect @@ -1,3 +1,8 @@ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 17 +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] +[20, 21, 22] +[0, 1, 2, 3, 4, 5, 6, 7] +[0, 1, 2, 3, 4, 5, 6, 7] It's null From 3a1533e99d7a568686630b99c88fa12dc1b0ba08 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Tue, 31 Dec 2019 16:30:35 -0500 Subject: [PATCH 149/573] implement DafnySequence as a pointer to an array --- Binaries/DafnyRuntime.h | 180 ++++++++++++++++++++++++---------------- Test/c++/Makefile | 2 +- 2 files changed, 111 insertions(+), 71 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 71346386a1b..0d0b3d4754b 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -6,6 +6,7 @@ #include #include #include +#include using namespace std; @@ -276,44 +277,81 @@ inline int64 EuclideanDivision_int64(int64 a, int64 b) { } } +template +T* global_empty_ptr = new T[0]; + /********************************************************* * SEQUENCES * *********************************************************/ template struct DafnySequence { - DafnySequence() { + shared_ptr sptr; + T* start; + size_t len; + + DafnySequence() { + sptr = nullptr; + start = global_empty_ptr; + len = 0; } - - DafnySequence(uint64 len) { - vector a_seq(len); - seq = a_seq; + + explicit DafnySequence(uint64 len) { + sptr = shared_ptr (new T[len], std::default_delete()); + start = &*sptr; + this->len = len; } - - DafnySequence(string s) { - seq = vector(s.begin(), s.end()); + + explicit DafnySequence(string const& s) { + len = s.size(); + sptr = shared_ptr (new char[len], std::default_delete()); + memcpy(&*sptr, s.c_str(), s.size()); + start = &*sptr; } - + DafnySequence(const DafnySequence& other) { - seq = vector(other.seq); + sptr = other.sptr; + start = other.start; + len = other.len; } - - DafnySequence(shared_ptr> arr) { - vector a_seq(*arr); - seq = a_seq; + + // Update one element + DafnySequence(const DafnySequence& other, uint64 i, T t) { + len = other.length(); + sptr = shared_ptr (new T[len], std::default_delete()); + start = &*sptr; + + std::copy(other.start, other.start + len, start); + start[i] = t; + } + + explicit DafnySequence(shared_ptr> arr) { + len = arr->size(); + sptr = shared_ptr (new T[len], std::default_delete()); + start = &*sptr; + std::copy(arr->begin(), arr->end(), start); } DafnySequence(shared_ptr> arr, uint64 lo, uint64 hi) { - seq.resize(hi - lo); - std::copy(arr->begin() + lo, arr->begin() + hi, seq.begin()); + len = hi - lo; + sptr = shared_ptr (new T[len], std::default_delete()); + start = &*sptr; + std::copy(arr->begin() + lo, arr->begin() + hi, start); } - + DafnySequence(initializer_list il) { - vector a_seq(il); - seq = a_seq; + len = il.size(); + sptr = shared_ptr (new T[len], std::default_delete()); + start = &*sptr; + + int i = 0; + for (T const& t : il) { + start[i] = t; + i++; + } } - + static DafnySequence SeqFromArray(shared_ptr> arr) { - DafnySequence ret(arr); + DafnySequence ret(arr); return ret; } @@ -334,73 +372,75 @@ struct DafnySequence { static DafnySequence Create(initializer_list il) { DafnySequence ret(il); - return ret; + return ret; } - + // TODO: isPrefixOf, isProperPrefixOf - + DafnySequence concatenate(DafnySequence other) { - DafnySequence ret(seq.size() + other.seq.size()); - for (uint64 i = 0; i < seq.size(); i++) { - ret.seq[i] = seq[i]; - } - for (uint64 i = 0; i < other.seq.size(); i++) { - ret.seq[i + seq.size()] = other.seq[i]; - } - return ret; + DafnySequence ret(this->size() + other.size()); + std::copy(this->ptr(), this->ptr() + this->size(), ret.ptr()); + std::copy(other.ptr(), other.ptr() + other.size(), ret.ptr() + this->size()); + return ret; } - - T select(uint64 i) { - return seq[i]; + + T select(uint64 i) const { + return start[i]; } - - uint64 length () const { return seq.size(); } - uint64 size() const { return length(); } - - DafnySequence update(uint64 i, T t) { - DafnySequence ret(*this); - ret.seq[i] = t; + + uint64 length () const { return len; } + uint64 size() const { return len; } + + DafnySequence update(uint64 i, T t) const { + DafnySequence ret(*this, i, t); return ret; } - - bool contains(T t) { - for (uint64 i = 0; i < seq.size(); i++) { - if (seq[i] == t) { + + bool contains(T t) const { + for (uint64 i = 0; i < size(); i++) { + if (select(i) == t) { return true; } } return false; } - + // Returns the subsequence of values [lo..hi) - DafnySequence subsequence(uint64 lo, uint64 hi) { - DafnySequence ret(hi - lo); - for (uint64 i = 0; i < ret.seq.size(); i++) { - ret.seq[i] = seq[i + lo]; - } + DafnySequence subsequence(uint64 lo, uint64 hi) const { + DafnySequence ret; + ret.sptr = sptr; + ret.start = start + lo; + ret.len = hi - lo; return ret; } - + // Returns the subsequence of values [lo..length()) - DafnySequence drop(uint64 lo) { - return subsequence(lo, seq.size()); + DafnySequence drop(uint64 lo) const { + return subsequence(lo, size()); } - + // Returns the subsequence of values [0..hi) - DafnySequence take(uint64 hi) { + DafnySequence take(uint64 hi) const { return subsequence(0, hi); } - + // TODO: slice - bool equals(const DafnySequence other) const { - return seq == other.seq; + bool equals(const DafnySequence other) const { + if (size() != other.size()) { + return false; + } + for (size_t i = 0; i < size(); i++) { + if (start[i] != other.start[i]) { + return false; + } + } + return true; } - - + + T* ptr() const { return start; } + // TODO: toString - - vector seq; }; template @@ -408,7 +448,7 @@ std::ostream& operator<<(std::ostream& os, const DafnySequence& s) { os << "["; for (size_t i = 0; i < s.size(); i++) { - os << s.seq[i]; + os << s.select(i); if (i != s.size() - 1) { os << ", "; } @@ -435,9 +475,9 @@ bool operator!=(const DafnySequence &s0, const DafnySequence &s1) { } inline ostream& operator<<(ostream& out, const DafnySequence& val){ - for (auto const& c:val.seq) { - out << c; - } + for (size_t i = 0; i < val.size(); i++) { + out << val.select(i); + } return out; } @@ -445,8 +485,8 @@ template struct hash> { size_t operator()(const DafnySequence& s) const { size_t seed = 0; - for (size_t i = 0; i < s.seq.size(); i++) { - hash_combine(seed, s.seq[i]); + for (size_t i = 0; i < s.size(); i++) { + hash_combine(seed, s.select(i)); } return seed; } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 3a2844e5e59..a2f6d592368 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -9,7 +9,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log -CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++11 -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++14 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) From 3f9bf4e0db5af1d3ed9b17841dedd375685c9b5a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 6 Jan 2020 22:43:26 -0500 Subject: [PATCH 150/573] Move extern declarations earlier --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 928cd7b5f8e..7755368ff46 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1334,7 +1334,7 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - wr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); + modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); } else { Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, d.FullName, compileTypeHint.AsStringLiteral()); } From f13105bce7b87b4c889f325e7a74d894c9d5e0d0 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 7 Jan 2020 00:27:45 -0500 Subject: [PATCH 151/573] Separate the declaration and definition of datatypes enough to resolve more dependency-ordering issues in the QUIC code --- Source/Dafny/Compiler-cpp.cs | 44 ++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7755368ff46..3443343b66c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -30,9 +30,9 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade // Forward declarations of class and struct names private TargetWriter modDeclsWr = null; private TargetWriter modDeclWr = null; - // Datatype definitions - private TargetWriter dtDefsWr = null; - private TargetWriter dtDefWr = null; + // Datatype declarations + private TargetWriter dtDeclsWr = null; + private TargetWriter dtDeclWr = null; // Class declarations private TargetWriter classDeclsWr = null; private TargetWriter classDeclWr = null; @@ -59,7 +59,7 @@ protected override void EmitHeader(Program program, TargetWriter wr) { //ReadRuntimeSystem("DafnyRuntime.h", wr); this.modDeclsWr = wr.ForkSection(); - this.dtDefsWr = wr.ForkSection(); + this.dtDeclsWr = wr.ForkSection(); this.classDeclsWr = wr.ForkSection(); this.hashWr = wr.ForkSection(); } @@ -96,7 +96,7 @@ protected override BlockTargetWriter CreateStaticMain(IClassWriter cw) { protected override TargetWriter CreateModule(string moduleName, bool isDefault, bool isExtern, string/*?*/ libraryName, TargetWriter wr) { var s = string.Format("namespace {0} ", IdProtect(moduleName)); this.modDeclWr = this.modDeclsWr.NewBigBlock(s, "// end of " + s + " declarations"); - this.dtDefWr = this.dtDefsWr.NewBigBlock(s, "// end of " + s + " datatype definitions"); + this.dtDeclWr = this.dtDeclsWr.NewBigBlock(s, "// end of " + s + " datatype declarations"); this.classDeclWr = this.classDeclsWr.NewBigBlock(s, "// end of " + s + " class declarations"); return wr.NewBigBlock(s, "// end of " + s); /* @@ -324,7 +324,7 @@ protected bool IsRecursiveDatatype(DatatypeDecl dt) { return false; } - protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { + protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Given: // datatype Example1 = Example1(u:uint32, b:bool) // datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) @@ -375,25 +375,26 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Forward declaration of the type this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); - wr = this.dtDefWr; + var wdecl = this.dtDeclWr; + var wdef = writer; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations - wr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); - wr.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, TemplateMethod(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); + wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); + wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, TemplateMethod(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); } // Optimize a not-uncommon case if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; - var ws = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); + var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); // Declare the struct members var i = 0; var argNames = new List(); foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { - ws.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + ws.WriteLine("{0} {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); argNames.Add(FormalName(arg, i)); i++; } @@ -414,7 +415,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } // Create a constructor with no arguments - var wc = ws.NewNamedBlock("{0}()", DtT_protected); + ws.WriteLine("{0}();", DtT_protected); + var wc = wdef.NewNamedBlock("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)); foreach (var arg in ctor.Formals) { if (!arg.IsGhost) { wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); @@ -432,7 +434,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); @@ -451,15 +453,15 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Create one struct for each constructor foreach (var ctor in dt.Ctors) { string structName = string.Format("{0}_{1}", DtT_protected, ctor.CompileName); - var wstruct = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); + var wstruct = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members var i = 0; foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive declaration needs to use a pointer - wstruct.WriteLine("shared_ptr<{0}> {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + wstruct.WriteLine("shared_ptr<{0}> {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); } else { - wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wr, arg.tok), FormalName(arg, i)); + wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); } i++; } @@ -516,7 +518,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } // Declare the overall tagged union - var ws = wr.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); + var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.Write("enum {"); ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm.CompileName))); ws.Write("} tag;\n"); @@ -551,7 +553,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { } // Declare a default constructor - using (var wd = ws.NewNamedBlock(String.Format("{0}()", DtT_protected))) { + ws.WriteLine("{0}();", DtT_protected); + using (var wd = wdef.NewNamedBlock(String.Format("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)))) { var default_ctor = dt.Ctors[0]; // Arbitrarily choose the first one wd.WriteLine("tag = {0}::TAG_{1};", DtT_protected, default_ctor.CompileName); foreach (Formal arg in default_ctor.Formals) @@ -586,7 +589,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { ws.WriteLine("bool is_{0}() const {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - wr.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdef.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } // Overload the comparison operator @@ -603,7 +607,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter wr) { if (dtor.EnclosingCtors[0] == ctor) { var arg = dtor.CorrespondingFormals[0]; if (!arg.IsGhost && arg.HasName) { - var returnType = TypeName(arg.Type, wr, arg.tok); + var returnType = TypeName(arg.Type, ws, arg.tok); if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // This is a recursive destuctor, so return a pointer returnType = String.Format("shared_ptr<{0}>", returnType); From 11b2cba54aae8bb115407a68903dc37797f776ce Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Wed, 8 Jan 2020 15:27:23 -0500 Subject: [PATCH 152/573] mark the is_* functions inline so they can be put in a header file --- Source/Dafny/Compiler-cpp.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 3443343b66c..b742a5cf1c2 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -434,7 +434,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wdecl.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); @@ -590,7 +590,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { foreach (var ctor in dt.Ctors) { ws.WriteLine("bool is_{0}() const {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); wdecl.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - wdef.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); } // Overload the comparison operator From 477b30166edaa979c34aaac08b7dab23f7e29573 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Wed, 8 Jan 2020 09:11:47 -0500 Subject: [PATCH 153/573] DafnyArray --- Binaries/DafnyRuntime.h | 63 +++++++++++++++++++++++++----------- Source/Dafny/Compiler-cpp.cs | 41 ++++++++++++++++++----- Test/c++/Extern.h | 6 ++-- 3 files changed, 80 insertions(+), 30 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 0d0b3d4754b..386506204fd 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -99,14 +99,6 @@ struct get_default { static unsigned long long call() { return 0; } }; -template -struct get_default> { - static vector call() { - vector ret; - return ret; - } -}; - template struct get_default> { static shared_ptr call() { @@ -277,12 +269,45 @@ inline int64 EuclideanDivision_int64(int64 a, int64 b) { } } +/********************************************************* + * ARRAYS + *********************************************************/ + template -T* global_empty_ptr = new T[0]; +struct DafnyArray { + shared_ptr> vec; + + DafnyArray() { } + DafnyArray(size_t len) { + vec = make_shared>(len); + } + + static DafnyArray Null() { return DafnyArray(); } + static DafnyArray New(size_t len) { return DafnyArray(len); } + + size_t size() const { return vec->size(); } + T& at(uint64 idx) const { return (*vec)[idx]; } + + bool operator==(DafnyArray const& other) const { + return vec == other.vec; + } +}; + +template +struct get_default> { + static DafnyArray call() { + DafnyArray ret; + return ret; + } +}; /********************************************************* * SEQUENCES * *********************************************************/ + +template +T* global_empty_ptr = new T[0]; + template struct DafnySequence { shared_ptr sptr; @@ -324,18 +349,18 @@ struct DafnySequence { start[i] = t; } - explicit DafnySequence(shared_ptr> arr) { - len = arr->size(); + explicit DafnySequence(DafnyArray arr) { + len = arr.size(); sptr = shared_ptr (new T[len], std::default_delete()); start = &*sptr; - std::copy(arr->begin(), arr->end(), start); + std::copy(arr.vec->begin(), arr.vec->end(), start); } - DafnySequence(shared_ptr> arr, uint64 lo, uint64 hi) { + DafnySequence(DafnyArray arr, uint64 lo, uint64 hi) { len = hi - lo; sptr = shared_ptr (new T[len], std::default_delete()); start = &*sptr; - std::copy(arr->begin() + lo, arr->begin() + hi, start); + std::copy(arr.vec->begin() + lo, arr.vec->begin() + hi, start); } DafnySequence(initializer_list il) { @@ -350,22 +375,22 @@ struct DafnySequence { } } - static DafnySequence SeqFromArray(shared_ptr> arr) { + static DafnySequence SeqFromArray(DafnyArray arr) { DafnySequence ret(arr); return ret; } - static DafnySequence SeqFromArrayPrefix(shared_ptr> arr, uint64 hi) { + static DafnySequence SeqFromArrayPrefix(DafnyArray arr, uint64 hi) { DafnySequence ret(arr, 0, hi); return ret; } - static DafnySequence SeqFromArraySuffix(shared_ptr> arr, uint64 lo) { - DafnySequence ret(arr, lo, arr->size()); + static DafnySequence SeqFromArraySuffix(DafnyArray arr, uint64 lo) { + DafnySequence ret(arr, lo, arr.size()); return ret; } - static DafnySequence SeqFromArraySlice(shared_ptr> arr, uint64 lo, uint64 hi) { + static DafnySequence SeqFromArraySlice(DafnyArray arr, uint64 lo, uint64 hi) { DafnySequence ret(arr, lo, hi); return ret; } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b742a5cf1c2..e3cb6262c77 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1141,7 +1141,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* //TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; if (at.Dims == 1) { - return "shared_ptr>"; + return "DafnyArray<" + TypeName(elType, wr, tok, null, false) + ">"; } else { throw NotSupported("Multi-dimensional arrays"); } @@ -1279,8 +1279,9 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (((NonNullTypeDecl)td).Class is ArrayClassDecl) { // non-null array type; we know how to initialize them var arrayClass = (ArrayClassDecl)((NonNullTypeDecl)td).Class; + Type elType = UserDefinedType.ArrayElementType(xType); if (arrayClass.Dims == 1) { - return "nullptr"; + return string.Format("DafnyArray<{0}>::Null()", TypeName(udt, wr, tok)); } else { return string.Format("_dafny.newArray(nullptr, {0})", Util.Comma(arrayClass.Dims, _ => "0")); } @@ -1448,7 +1449,19 @@ protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWri } protected override void EmitNull(Type type, TargetWriter wr) { - wr.Write("nullptr"); + var xType = type.NormalizeExpand(); + if (xType.IsArrayType) { + ArrayClassDecl at = xType.AsArrayType; + Contract.Assert(at != null); // follows from xType.IsArrayType + Type elType = UserDefinedType.ArrayElementType(xType); + if (at.Dims == 1) { + wr.Write("DafnyArray<{0}>::Null()", TypeName(elType, wr, null)); + } else { + throw NotSupported("Multi-dimensional arrays"); + } + } else { + wr.Write("nullptr"); + } } // ----- Statements ------------------------------------------------------------- @@ -1553,7 +1566,7 @@ protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List>(", TypeName(elmtType, wr, tok)); + wr.Write("DafnyArray<{0}>::New(", TypeName(elmtType, wr, tok)); TrExpr(dimensions[0], wr, false); wr.Write(")"); } else { @@ -1573,7 +1586,19 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { if (e is StaticReceiverExpr) { wr.Write(TypeName(e.Type, wr, e.tok)); } else if (e.Value == null) { - wr.Write("nullptr"); + var xType = e.Type.NormalizeExpand(); + if (xType.IsArrayType) { + ArrayClassDecl at = xType.AsArrayType; + Contract.Assert(at != null); // follows from xType.IsArrayType + Type elType = UserDefinedType.ArrayElementType(xType); + if (at.Dims == 1) { + wr.Write("DafnyArray<{0}>::Null()", TypeName(elType, wr, null)); + } else { + throw NotSupported("Multi-dimensional arrays"); + } + } else { + wr.Write("nullptr"); + } } else if (e.Value is bool) { wr.Write((bool)e.Value ? "true" : "false"); } else if (e is CharLiteralExpr) { @@ -1976,7 +2001,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu protected override TargetWriter EmitArraySelect(List indices, Type elmtType, TargetWriter wr) { var w = wr.Fork(); foreach (var index in indices) { - wr.Write("->at({0})", index); + wr.Write(".at({0})", index); } return w; } @@ -1985,7 +2010,7 @@ protected override TargetWriter EmitArraySelect(List indices, Type e Contract.Assert(indices != null && 1 <= indices.Count); // follows from precondition var w = wr.Fork(); foreach (var index in indices) { - wr.Write("->at("); + wr.Write(".at("); TrExpr(index, wr, inLetExprBody); wr.Write(")"); } @@ -2510,7 +2535,7 @@ protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, // Optimize .Length to avoid intermediate BigInteger wr.Write("({0})(", GetNativeTypeName(toNative)); TrParenExpr(m.Obj, wr, inLetExprBody); - wr.Write("->size())"); + wr.Write(".size())"); } else { // no optimization applies; use the standard translation TrParenExpr(e.E, wr, inLetExprBody); diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h index c37baa0f094..14b53e230ee 100644 --- a/Test/c++/Extern.h +++ b/Test/c++/Extern.h @@ -19,10 +19,10 @@ namespace Extern { public: template - static shared_ptr> newArrayFill(uint64 size, T v) { - shared_ptr> ret = make_shared>(size); + static DafnyArray newArrayFill(uint64 size, T v) { + DafnyArray ret = DafnyArray::New(size); for (uint64 i = 0; i < size; i++) { - (*ret)[i] = v; + ret.at(i) = v; } return ret; } From 21060d2bb735876c40b84e18f3567bb9433ec729 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 10:21:14 -0500 Subject: [PATCH 154/573] address bryan's code review comments --- Binaries/DafnyRuntime.h | 7 +++++-- Source/Dafny/Compiler-cpp.cs | 20 ++++++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 386506204fd..38676b71294 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -291,6 +291,9 @@ struct DafnyArray { bool operator==(DafnyArray const& other) const { return vec == other.vec; } + + typename vector::iterator begin() { return vec->begin(); } + typename vector::iterator end() { return vec->end(); } }; template @@ -353,14 +356,14 @@ struct DafnySequence { len = arr.size(); sptr = shared_ptr (new T[len], std::default_delete()); start = &*sptr; - std::copy(arr.vec->begin(), arr.vec->end(), start); + std::copy(arr.begin(), arr.end(), start); } DafnySequence(DafnyArray arr, uint64 lo, uint64 hi) { len = hi - lo; sptr = shared_ptr (new T[len], std::default_delete()); start = &*sptr; - std::copy(arr.vec->begin() + lo, arr.vec->begin() + hi, start); + std::copy(arr.begin() + lo, arr.begin() + hi, start); } DafnySequence(initializer_list il) { diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index e3cb6262c77..346e2293256 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1448,7 +1448,7 @@ protected override string GenerateLhsDecl(string target, Type/*?*/ type, TextWri return "auto " + target; } - protected override void EmitNull(Type type, TargetWriter wr) { + protected void EmitNullText(Type type, TextWriter wr) { var xType = type.NormalizeExpand(); if (xType.IsArrayType) { ArrayClassDecl at = xType.AsArrayType; @@ -1464,6 +1464,10 @@ protected override void EmitNull(Type type, TargetWriter wr) { } } + protected override void EmitNull(Type type, TargetWriter wr) { + EmitNullText(type, wr); + } + // ----- Statements ------------------------------------------------------------- protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { @@ -1586,19 +1590,7 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { if (e is StaticReceiverExpr) { wr.Write(TypeName(e.Type, wr, e.tok)); } else if (e.Value == null) { - var xType = e.Type.NormalizeExpand(); - if (xType.IsArrayType) { - ArrayClassDecl at = xType.AsArrayType; - Contract.Assert(at != null); // follows from xType.IsArrayType - Type elType = UserDefinedType.ArrayElementType(xType); - if (at.Dims == 1) { - wr.Write("DafnyArray<{0}>::Null()", TypeName(elType, wr, null)); - } else { - throw NotSupported("Multi-dimensional arrays"); - } - } else { - wr.Write("nullptr"); - } + EmitNullText(e.Type, wr); } else if (e.Value is bool) { wr.Write((bool)e.Value ? "true" : "false"); } else if (e is CharLiteralExpr) { From 762380d1224f93e3d9eb2389cf9f2d719ba33664 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 15:45:26 -0500 Subject: [PATCH 155/573] fix bug in the TypeInitializationValue --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/class.dfy | 21 ++++++++++++++++++++- Test/c++/class.expect | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 346e2293256..280dd1facb5 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1281,7 +1281,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var arrayClass = (ArrayClassDecl)((NonNullTypeDecl)td).Class; Type elType = UserDefinedType.ArrayElementType(xType); if (arrayClass.Dims == 1) { - return string.Format("DafnyArray<{0}>::Null()", TypeName(udt, wr, tok)); + return string.Format("DafnyArray<{0}>::Null()", TypeName(elType, wr, tok)); } else { return string.Format("_dafny.newArray(nullptr, {0})", Util.Comma(arrayClass.Dims, _ => "0")); } diff --git a/Test/c++/class.dfy b/Test/c++/class.dfy index c05b9b2853b..e4b4bd46bbc 100644 --- a/Test/c++/class.dfy +++ b/Test/c++/class.dfy @@ -6,23 +6,40 @@ class MyClass { const c:uint32 := 17 static const d: uint32 static const e:uint32 := 18 + + var ar: array + constructor (x: uint32) requires x < 100; ensures this.a < 300; ensures this.b < 300; + ensures fresh(this.ar); { a := 100 + x; b := 200 + x; + ar := new uint32[5]; } function method F(): uint32 { 8 } static function method G(): uint32 { 9 } method M() returns (r: uint32) { r := 69; } static method N() returns (r: uint32) { return 70; } + + method stuffWithAr() + modifies this + modifies this.ar + { + print "stuffWithAr\n"; + this.ar := new uint32[5]; + this.ar[0] := 5; + print this.ar[0]; + print "\n"; + } } method CallEm(c: MyClass, t: MyClass, i: MyClass) requires c.a as int + t.a as int + i.a as int < 1000; + ensures c.ar == old(c.ar) modifies c, t, i { // instance fields @@ -92,7 +109,8 @@ method CallEm(c: MyClass, t: MyClass, i: MyClass) } -method TestMyClass() { +method TestMyClass() +{ var c := new MyClass(3); var t := new MyClass(2); var i := new MyClass(2); @@ -101,6 +119,7 @@ method TestMyClass() { var t3 : MyClass; t3 := t; CallEm(c, t, i); + c.stuffWithAr(); } diff --git a/Test/c++/class.expect b/Test/c++/class.expect index ec9e7fc4ea8..375c472fa76 100644 --- a/Test/c++/class.expect +++ b/Test/c++/class.expect @@ -6,6 +6,8 @@ 0 18 9 70 0 18 9 70 0 18 9 70 +stuffWithAr +5 EqualityReflexive: This is expected ClassAndPtrDiffer: This is expected DeepEquality: This is expected From be869782491158f1eb1c8f6afd7cc70d075121aa Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 16:16:39 -0500 Subject: [PATCH 156/573] fix another issue with nullptr instead of ::Null() --- Source/Dafny/Compiler-cpp.cs | 12 +++++++++++- Test/c++/arrays.dfy | 25 +++++++++++++++++++++++++ Test/c++/arrays.expect | 4 ++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 280dd1facb5..86440336820 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1299,7 +1299,17 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { return "0"; } else { - return "nullptr"; + if (cl is ArrayClassDecl) { + var arrayClass = (ArrayClassDecl)cl; + Type elType = UserDefinedType.ArrayElementType(xType); + if (arrayClass.Dims == 1) { + return string.Format("DafnyArray<{0}>::Null()", TypeName(elType, wr, tok)); + } else { + throw NotSupported("Multi-dimensional arrays"); + } + } else { + return "nullptr_2"; + } } } else if (cl is DatatypeDecl) { var dt = (DatatypeDecl)cl; diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index 4ebf397c89d..09c1597a9c6 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -11,6 +11,23 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 //newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 //newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 +method returnANullArray() returns (a: array?) +ensures a == null +{ + a := null; +} + +method returnANonNullArray() returns (a: array?) +ensures a != null +ensures a.Length == 5 +{ + a := new uint32[5]; + a[0] := 1; + a[1] := 2; + a[2] := 3; + a[3] := 4; + a[4] := 5; +} method LinearSearch(a: array, len:uint32, key: uint32) returns (n: uint32) requires a.Length == len as int @@ -67,6 +84,14 @@ method Main() { print s, "\n"; PrintArray(null, 0); + + print "Null array:\n"; + var a1 := returnANullArray(); + PrintArray(a1, 5); + + print "Non-Null array:\n"; + var a2 := returnANonNullArray(); + PrintArray(a2, 5); } diff --git a/Test/c++/arrays.expect b/Test/c++/arrays.expect index 1bd1f6d130c..56c6527fda3 100644 --- a/Test/c++/arrays.expect +++ b/Test/c++/arrays.expect @@ -6,3 +6,7 @@ [0, 1, 2, 3, 4, 5, 6, 7] [0, 1, 2, 3, 4, 5, 6, 7] It's null +Null array: +It's null +Non-Null array: +1 2 3 4 5 From 17395be55e810c173dfddb496ac0042df391d2e0 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 16:21:17 -0500 Subject: [PATCH 157/573] oops, fix thing I did for testing --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 86440336820..9178fc3e547 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1308,7 +1308,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp throw NotSupported("Multi-dimensional arrays"); } } else { - return "nullptr_2"; + return "nullptr"; } } } else if (cl is DatatypeDecl) { From 9f710ce3910893cb4d4f32cedc37078d888fed3f Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 16:52:27 -0500 Subject: [PATCH 158/573] make DafnyArray hashable --- Binaries/DafnyRuntime.h | 7 +++++++ Test/c++/arrays.dfy | 10 ++++++++++ Test/c++/arrays.expect | 2 ++ 3 files changed, 19 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 38676b71294..90bb1af073c 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -520,6 +520,13 @@ struct hash> { } }; +template +struct hash> { + size_t operator()(const DafnyArray& s) const { + return std::hash>>()(s.vec); + } +}; + /********************************************************* * SETS * *********************************************************/ diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index 09c1597a9c6..5a83cc1c836 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -60,6 +60,8 @@ method PrintArray(a:array?, len:uint32) } } +datatype ArrayDatatype = AD(ar: array) + method Main() { var a := new uint32[23]; var i := 0; @@ -92,6 +94,14 @@ method Main() { print "Non-Null array:\n"; var a2 := returnANonNullArray(); PrintArray(a2, 5); + + print "Array in datatype:\n"; + var someAr := new uint32[3]; + someAr[0] := 1; + someAr[0] := 3; + someAr[0] := 9; + var ad := AD(someAr); + PrintArray(ad.ar, 3); } diff --git a/Test/c++/arrays.expect b/Test/c++/arrays.expect index 56c6527fda3..d5f7538c6ab 100644 --- a/Test/c++/arrays.expect +++ b/Test/c++/arrays.expect @@ -10,3 +10,5 @@ Null array: It's null Non-Null array: 1 2 3 4 5 +Array in datatype: +9 0 0 From 74b427179e9bd85e3e8fa0e83dbab13fac3a7d77 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 10 Jan 2020 16:53:23 -0500 Subject: [PATCH 159/573] Handle extern, argument-consuming constructors properly --- Source/Dafny/Compiler-cpp.cs | 17 ++++++++++++++++- Test/c++/Extern.h | 5 +++++ Test/c++/extern.dfy | 8 ++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b742a5cf1c2..1b7cff41221 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1537,13 +1537,28 @@ protected override BlockTargetWriter CreateForeachLoop(string boundVar, Type/*?* protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCall, TargetWriter wr) { var cl = (type.NormalizeExpand() as UserDefinedType)?.ResolvedClass; if (cl != null && cl.Name == "object") { - wr.Write("_dafny.NewObject()"); + //wr.Write("_dafny.NewObject()"); + NotSupported("Tried to emit new generic object, which C++ doesn't do", tok); } else { + var ctor = initCall == null ? null : (Constructor)initCall.Method; // correctness of cast follows from precondition of "EmitNew" //string targs = type.TypeArgs.Count > 0 // ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; //wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); + string q, n; + if (ctor != null && ctor.IsExtern(out q, out n)) { + // the arguments of any external constructor are placed here + string sep = ""; + for (int i = 0; i < ctor.Ins.Count; i++) { + Formal p = ctor.Ins[i]; + if (!p.IsGhost) { + wr.Write(sep); + TrExpr(initCall.Args[i], wr, false); + sep = ", "; + } + } + } wr.Write(")"); } } diff --git a/Test/c++/Extern.h b/Test/c++/Extern.h index c37baa0f094..03c1c5c5727 100644 --- a/Test/c++/Extern.h +++ b/Test/c++/Extern.h @@ -33,6 +33,11 @@ namespace Extern { bool my_method0(uint64 a) { (void)a; return true; } bool my_method1(uint64 c) { (void)c; return false; } }; + + class ExternClass2 { + public: + ExternClass2(uint64 x) { (void)x; } + }; /* class __default { diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy index 09e1237a5a7..f79e76ad908 100644 --- a/Test/c++/extern.dfy +++ b/Test/c++/extern.dfy @@ -11,6 +11,10 @@ module {:extern "Extern"} Extern { method {:extern "Extern", "my_method0"} my_method0(a:uint64) returns (b:bool) method {:extern "Extern", "my_method1"} my_method1(c:uint64) returns (d:bool) } + + class {:extern} ExternClass2 { + constructor {:extern "Extern", "ExternClass2"}(x:uint64) + } } module TestMod { @@ -36,6 +40,10 @@ module TestMod { var y := e.my_method1(1); } + method TestExternClass2() { + var x := new ExternClass2(42); + } + method Main() { var a:array := newArrayFill(5, 42); var d := new D(21); From 783b441392fc794fc4e03774a86176951bbee50d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 13 Jan 2020 14:12:06 -0500 Subject: [PATCH 160/573] Add access to underlying pointer --- Binaries/DafnyRuntime.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 90bb1af073c..bc4da2c410f 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -291,6 +291,8 @@ struct DafnyArray { bool operator==(DafnyArray const& other) const { return vec == other.vec; } + + T* ptr() const { return vec->data(); } typename vector::iterator begin() { return vec->begin(); } typename vector::iterator end() { return vec->end(); } From ab7e7f6866274333d3b905cc32f4b239bdcdad2c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 13 Jan 2020 22:07:58 -0500 Subject: [PATCH 161/573] Split C++ output into a header file and a .cpp file --- Source/Dafny/Compiler-cpp.cs | 19 +++++++++++++++---- Test/c++/{Extern.h => ExternDefs.h} | 0 Test/c++/Makefile | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) rename Test/c++/{Extern.h => ExternDefs.h} (100%) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 1b7cff41221..6d30c13f915 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -38,6 +38,8 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade private TargetWriter classDeclWr = null; // Hash definitions private TargetWriter hashWr = null; + // Defaults + private TargetWriter defaultWr = null; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -55,13 +57,22 @@ protected override void EmitHeader(Program program, TargetWriter wr) { foreach (var header in this.headers) { wr.WriteLine("#include \"{0}\"", header); } + + var filenameNoExtension = program.Name.Substring(0, program.Name.Length - 4); + var headerFileName = String.Format("{0}.h", filenameNoExtension); + wr.WriteLine("#include \"{0}\"", headerFileName); + + var headerFileWr = wr.NewFile(headerFileName); + headerFileWr.WriteLine("// Dafny program {0} compiled into Cpp", program.Name); + headerFileWr.WriteLine("#include \"DafnyRuntime.h\""); // TODO: Include appropriate .h file here //ReadRuntimeSystem("DafnyRuntime.h", wr); - this.modDeclsWr = wr.ForkSection(); - this.dtDeclsWr = wr.ForkSection(); - this.classDeclsWr = wr.ForkSection(); - this.hashWr = wr.ForkSection(); + this.modDeclsWr = headerFileWr.ForkSection(); + this.dtDeclsWr = headerFileWr.ForkSection(); + this.classDeclsWr = headerFileWr.ForkSection(); + this.hashWr = headerFileWr.ForkSection(); + this.defaultWr = headerFileWr.ForkSection(); } protected override void EmitFooter(Program program, TargetWriter wr) { diff --git a/Test/c++/Extern.h b/Test/c++/ExternDefs.h similarity index 100% rename from Test/c++/Extern.h rename to Test/c++/ExternDefs.h diff --git a/Test/c++/Makefile b/Test/c++/Makefile index a2f6d592368..2edf5c639c1 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -22,7 +22,7 @@ vars: echo $(EXECS) %.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) - $(DAFNY) /timeLimit:10 /compile:0 /spillTargetCode:3 /compileTarget:cpp Extern.h $< + $(DAFNY) /timeLimit:10 /compile:0 /spillTargetCode:3 /compileTarget:cpp ExternDefs.h $< %.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< From 2bb07cfa0a29e09957248939be057704e5d249fc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 14 Jan 2020 13:47:24 -0500 Subject: [PATCH 162/573] Two more features --- Binaries/DafnyRuntime.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index bc4da2c410f..97c9c2b9c02 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -281,12 +281,16 @@ struct DafnyArray { DafnyArray(size_t len) { vec = make_shared>(len); } + DafnyArray(vector contents) { + vec = make_shared>(contents.start(), contents.end()); + } static DafnyArray Null() { return DafnyArray(); } static DafnyArray New(size_t len) { return DafnyArray(len); } size_t size() const { return vec->size(); } T& at(uint64 idx) const { return (*vec)[idx]; } + T& operator[](uint64 idx) const { return at(idx); } bool operator==(DafnyArray const& other) const { return vec == other.vec; From c296cbd7db17a72a06e95571c004ca3b7ca28d52 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 9 Jan 2020 19:50:58 -0500 Subject: [PATCH 163/573] fix some portability issues --- Binaries/DafnyRuntime.h | 21 ++++++++++----------- Source/Dafny/Compiler-cpp.cs | 12 ++++++------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 90bb1af073c..eac10c629a7 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -329,13 +329,6 @@ struct DafnySequence { this->len = len; } - explicit DafnySequence(string const& s) { - len = s.size(); - sptr = shared_ptr (new char[len], std::default_delete()); - memcpy(&*sptr, s.c_str(), s.size()); - start = &*sptr; - } - DafnySequence(const DafnySequence& other) { sptr = other.sptr; start = other.start; @@ -471,6 +464,12 @@ struct DafnySequence { // TODO: toString }; +inline DafnySequence DafnySequenceFromString(string const& s) { + DafnySequence seq(s.size()); + memcpy(seq.ptr(), &s[0], s.size()); + return seq; +} + template std::ostream& operator<<(std::ostream& os, const DafnySequence& s) { @@ -510,7 +509,7 @@ inline ostream& operator<<(ostream& out, const DafnySequence& val){ } template -struct hash> { +struct std::hash> { size_t operator()(const DafnySequence& s) const { size_t seed = 0; for (size_t i = 0; i < s.size(); i++) { @@ -521,7 +520,7 @@ struct hash> { }; template -struct hash> { +struct std::hash> { size_t operator()(const DafnyArray& s) const { return std::hash>>()(s.vec); } @@ -649,7 +648,7 @@ inline ostream& operator<<(ostream& out, const DafnySet& val){ } template -struct hash> { +struct std::hash> { size_t operator()(const DafnySet& s) const { size_t seed = 0; for (auto const& elt:s.set) { @@ -805,7 +804,7 @@ inline ostream& operator<<(ostream& out, const DafnyMap& val){ } template -struct hash> { +struct std::hash> { size_t operator()(const DafnyMap& s) const { size_t seed = 0; for (auto const& kv:s.map) { diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 41d5a3c5be6..d764f640788 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -439,7 +439,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullName = dt.Module.CompileName + "::" + DtT_protected + TemplateMethod(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct hash<{0}>", fullName), ";"); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); foreach (var arg in ctor.Formals) { @@ -496,7 +496,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullName = dt.Module.CompileName + "::" + structName + TemplateMethod(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct hash<{0}>", fullName), ";"); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); int argCount = 0; @@ -641,7 +641,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Define a custom hasher for the struct as a whole hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullStructName = dt.Module.CompileName + "::" + DtT_protected; - var hwr2 = hashWr.NewBlock(string.Format("struct hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); + var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); owr2.WriteLine("size_t seed = 0;"); owr2.WriteLine("hash_combine(seed, (uint64)x.tag);"); @@ -654,9 +654,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { if (IsRecursiveDatatype(dt)) { // Emit a custom hasher for a pointer to this type hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - hwr2 = hashWr.NewBlock(string.Format("struct hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); + hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const shared_ptr<{0}{1}>& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); - owr2.WriteLine("struct hash<{0}{1}> hasher;", fullStructName, TemplateMethod(dt.TypeArgs)); + owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, TemplateMethod(dt.TypeArgs)); owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); } @@ -1668,7 +1668,7 @@ void EmitIntegerLiteral(BigInteger i, TextWriter wr) { protected override void EmitStringLiteral(string str, bool isVerbatim, TextWriter wr) { var n = str.Length; - wr.Write("DafnySequence("); + wr.Write("DafnySequenceFromString("); if (!isVerbatim) { wr.Write("\"{0}\"", str); } else { From 102ad0267c13eed1fa3229425e4a106a308c9c62 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Fri, 10 Jan 2020 16:26:57 -0500 Subject: [PATCH 164/573] implement DafnyArray without a vector to avoid an extra pointer indirection and initialization overhead --- Binaries/DafnyRuntime.h | 23 ++++++++++++++--------- Test/c++/arrays.dfy | 4 ++-- Test/c++/arrays.expect | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index eac10c629a7..973e7dcbc0d 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -275,25 +275,26 @@ inline int64 EuclideanDivision_int64(int64 a, int64 b) { template struct DafnyArray { - shared_ptr> vec; + shared_ptr sptr; + size_t len; DafnyArray() { } - DafnyArray(size_t len) { - vec = make_shared>(len); + DafnyArray(size_t len) : len(len) { + sptr = shared_ptr (new T[len], std::default_delete()); } static DafnyArray Null() { return DafnyArray(); } static DafnyArray New(size_t len) { return DafnyArray(len); } - size_t size() const { return vec->size(); } - T& at(uint64 idx) const { return (*vec)[idx]; } + size_t size() const { return len; } + T& at(uint64 idx) const { return *(sptr.get() + idx); } bool operator==(DafnyArray const& other) const { - return vec == other.vec; + return sptr == other.sptr; } - typename vector::iterator begin() { return vec->begin(); } - typename vector::iterator end() { return vec->end(); } + T* begin() const { return sptr.get(); } + T* end() const { return sptr.get() + len; } }; template @@ -522,7 +523,11 @@ struct std::hash> { template struct std::hash> { size_t operator()(const DafnyArray& s) const { - return std::hash>>()(s.vec); + size_t seed = 0; + for (size_t i = 0; i < s.size(); i++) { + hash_combine(seed, s.at(i)); + } + return seed; } }; diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index 5a83cc1c836..000221b532d 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -98,8 +98,8 @@ method Main() { print "Array in datatype:\n"; var someAr := new uint32[3]; someAr[0] := 1; - someAr[0] := 3; - someAr[0] := 9; + someAr[1] := 3; + someAr[2] := 9; var ad := AD(someAr); PrintArray(ad.ar, 3); } diff --git a/Test/c++/arrays.expect b/Test/c++/arrays.expect index d5f7538c6ab..2ce9320d8c2 100644 --- a/Test/c++/arrays.expect +++ b/Test/c++/arrays.expect @@ -11,4 +11,4 @@ It's null Non-Null array: 1 2 3 4 5 Array in datatype: -9 0 0 +1 3 9 From 023700f0d959946518f6370450cd8d2b0e6eed4e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 14 Jan 2020 22:52:15 -0500 Subject: [PATCH 165/573] A few more bits of functionality --- Binaries/DafnyRuntime.h | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 581df5b1335..8eea1b40a3c 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -282,8 +282,22 @@ struct DafnyArray { DafnyArray(size_t len) : len(len) { sptr = shared_ptr (new T[len], std::default_delete()); } - DafnyArray(vector contents) { - vec = make_shared>(contents.start(), contents.end()); + DafnyArray(vector contents) : DafnyArray(contents.size()) { + for (uint64 i = 0; i < contents.size(); i++) { + sptr[i] = contents[i]; + } + } + + void assign(T* start, T* end) { + uint64 i = 0; + while (start < end) { + *(sptr.get() + i) = *start; + start++; + } + } + + DafnyArray(T* start, T* end) : DafnyArray((end - start)/sizeof(T)) { + assign(start, end); } static DafnyArray Null() { return DafnyArray(); } @@ -297,10 +311,17 @@ struct DafnyArray { return sptr == other.sptr; } - T* ptr() const { return vec->data(); } + T* ptr() const { return sptr.get(); } T* begin() const { return sptr.get(); } T* end() const { return sptr.get() + len; } + + void clear_and_resize(uint64 new_len) { + shared_ptr new_sptr = shared_ptr (new T[new_len], std::default_delete()); + sptr = new_sptr; + } + + }; template From c547380deda7d91d94d8093a8af9fe1c9f2f0978 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 15 Jan 2020 10:47:30 -0500 Subject: [PATCH 166/573] Bug fix for initialization routine --- Binaries/DafnyRuntime.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 8eea1b40a3c..37fbcf2f624 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -289,9 +289,10 @@ struct DafnyArray { } void assign(T* start, T* end) { - uint64 i = 0; + T* src = sptr.get(); while (start < end) { - *(sptr.get() + i) = *start; + *src = *start; + src++; start++; } } From f5920671de51fdea9f52f0409444fe51e8c20d3c Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 23 Jan 2020 17:00:59 -0500 Subject: [PATCH 167/573] fix type alias in DafnyRuntime.h (uint32 was incorrectly typedef'ed to 64-bit ints depending on platform) --- Binaries/DafnyRuntime.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 37fbcf2f624..bdceb29cea8 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -7,6 +7,7 @@ #include #include #include +#include using namespace std; @@ -16,15 +17,15 @@ class _dafny { }; -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned long uint32; -typedef unsigned long long uint64; +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; -typedef char int8; -typedef short int16; -typedef long int32; -typedef long long int64; +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; /********************************************************* * UTILITIES * From 993ca58091e00fa4d981690da554eee1f32d164f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 12:12:54 -0500 Subject: [PATCH 168/573] Experiment with using C++17 variant for datatypes --- Binaries/DafnyRuntime.h | 1 + Source/Dafny/Compiler-cpp.cs | 85 +++++++++++++++++++----------------- Test/c++/Makefile | 2 +- Test/c++/datatypes.dfy | 22 +++++----- 4 files changed, 58 insertions(+), 52 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index bdceb29cea8..2cc39cc189a 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -8,6 +8,7 @@ #include #include #include +#include using namespace std; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 2d4de709712..f71d669f28f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -334,6 +334,15 @@ protected bool IsRecursiveDatatype(DatatypeDecl dt) { } return false; } + + // Uniform naming convention + protected string DatatypeSubStructName(DatatypeCtor ctor, bool inclTemplateArgs = false) { + string args = ""; + if (inclTemplateArgs) { + args = TemplateMethod(ctor.EnclosingDatatype.TypeArgs); + } + return String.Format("{0}_{1}{2}", IdProtect(ctor.EnclosingDatatype.CompileName), ctor.CompileName, args); + } protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Given: @@ -461,9 +470,9 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { owr.WriteLine("return seed;"); } else { - // Create one struct for each constructor + /*** Create one struct for each constructor ***/ foreach (var ctor in dt.Ctors) { - string structName = string.Format("{0}_{1}", DtT_protected, ctor.CompileName); + string structName = DatatypeSubStructName(ctor); var wstruct = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members var i = 0; @@ -528,18 +537,10 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { owr.WriteLine("return seed;"); } - // Declare the overall tagged union + /*** Declare the overall tagged union ***/ var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); - ws.Write("enum {"); - ws.Write(Util.Comma(dt.Ctors, nm => String.Format(" TAG_{0}", nm.CompileName))); - ws.Write("} tag;\n"); - // TODO: The union doesn't play nicely with shared_ptr, so for now, use more memory than needed - //var wu = ws.NewBlock("union ", ";"); - var wu = ws; - foreach (var ctor in dt.Ctors) { - wu.WriteLine("struct {2}_{0}{1} v_{0};", ctor.CompileName, TemplateMethod(dt.TypeArgs), DtT_protected); - } - + ws.WriteLine("variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); + // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) { @@ -547,18 +548,20 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { DtT_protected, ctor.CompileName, DeclareFormals(ctor.Formals))) { wc.WriteLine("{0}{1} COMPILER_result;", DtT_protected, TemplateMethod(dt.TypeArgs)); - wc.WriteLine("COMPILER_result.tag = {0}::TAG_{1};", DtT_protected, ctor.CompileName); + wc.WriteLine("{0} COMPILER_result_subStruct;", DatatypeSubStructName(ctor, true)); + foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // This is a recursive destuctor, so we need to allocate space and copy the input in - wc.WriteLine("COMPILER_result.v_{0}.{1} = make_shared<{2}>({1});", ctor.CompileName, arg.CompileName, DtT_protected); + wc.WriteLine("COMPILER_result_subStruct.{0} = make_shared<{1}>({0});", arg.CompileName, DtT_protected); } else { - wc.WriteLine("COMPILER_result.v_{0}.{1} = {1};", ctor.CompileName, arg.CompileName); + wc.WriteLine("COMPILER_result_subStruct.{0} = {0};", arg.CompileName); } } } + wc.WriteLine("COMPILER_result.v = COMPILER_result_subStruct;"); wc.WriteLine("return COMPILER_result;"); } } @@ -567,14 +570,15 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { ws.WriteLine("{0}();", DtT_protected); using (var wd = wdef.NewNamedBlock(String.Format("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)))) { var default_ctor = dt.Ctors[0]; // Arbitrarily choose the first one - wd.WriteLine("tag = {0}::TAG_{1};", DtT_protected, default_ctor.CompileName); + wd.WriteLine("{0} COMPILER_result_subStruct;", DatatypeSubStructName(default_ctor, true)); foreach (Formal arg in default_ctor.Formals) { if (!arg.IsGhost) { - wd.WriteLine("v_{0}.{1} = {2};", default_ctor.CompileName, arg.CompileName, + wd.WriteLine("COMPILER_result_subStruct.{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wd, arg.tok)); } } + wd.WriteLine("v = COMPILER_result_subStruct;"); } // Declare a default destructor @@ -582,36 +586,29 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Declare a default copy constructor (just in case any of our components are non-trivial, i.e., contain smart_ptr) using (var wcc = ws.NewNamedBlock(String.Format("{0}(const {0} &other)", DtT_protected))) { - wcc.WriteLine("tag = other.tag;"); - foreach (var ctor in dt.Ctors) { - wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); - } + wcc.WriteLine("v = other.v;"); } // Declare a default copy assignment operator (just in case any of our components are non-trivial, i.e., contain smart_ptr) using (var wcc = ws.NewNamedBlock(String.Format("{0}& operator=(const {0} other)", DtT_protected))) { - wcc.WriteLine("tag = other.tag;"); - foreach (var ctor in dt.Ctors) { - wcc.WriteLine("if (tag == {0}::TAG_{1}) {{ v_{1} = other.v_{1}; }}", DtT_protected, ctor.CompileName); - } + wcc.WriteLine("v = other.v;"); wcc.WriteLine("return *this;"); } // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { - ws.WriteLine("bool is_{0}() const {{ return tag == {1}{2}::TAG_{0}; }}", ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - wdecl.WriteLine("{0}\nbool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return d.tag == {2}{3}::TAG_{1}; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + var name = DatatypeSubStructName(ctor); + var holds = String.Format("holds_alternative<{0}{1}>", name, TemplateMethod(dt.TypeArgs)); + ws.WriteLine("bool is_{0}() const {{ return {1}(v); }}", name, holds); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return {4}(d.v); }}", + DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); } // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); - ws.Write("\treturn false"); - foreach (var ctor in dt.Ctors) { - ws.WriteLine("\t\t|| (left.is_{0}() && right.is_{0}() && left.v_{0} == right.v_{0})", ctor.CompileName); - } - ws.WriteLine(";\n}"); - + ws.WriteLine("\treturn left.v == right.v;\n}"); + // Create destructors foreach (var ctor in dt.Ctors) { foreach (var dtor in ctor.Destructors) { @@ -631,14 +628,16 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { var n = dtor.EnclosingCtors.Count; for (int i = 0; i < n - 1; i++) { var ctor_i = dtor.EnclosingCtors[i]; + var ctor_name = DatatypeSubStructName(ctor_i); Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[i].CompileName); - wDtor.WriteLine("if (is_{0}()) {{ return v_{0}.{1}; }}", - ctor_i.CompileName, IdName(arg)); + wDtor.WriteLine("if (is_{0}()) {{ return get<{0}{1}>(v).{2}; }}", + ctor_name, TemplateMethod(dt.TypeArgs), IdName(arg)); } Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[n - 1].CompileName); - wDtor.WriteLine("return v_{0}.{1}; ", - dtor.EnclosingCtors[n - 1].CompileName, IdName(arg)); + var final_ctor_name = DatatypeSubStructName(dtor.EnclosingCtors[n - 1], true); + wDtor.WriteLine("return get<{0}>(v).{1}; ", + final_ctor_name, IdName(arg)); } } } @@ -650,11 +649,14 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); // Define a custom hasher for the struct as a whole + /* hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullStructName = dt.Module.CompileName + "::" + DtT_protected; var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); owr2.WriteLine("size_t seed = 0;"); + owr2.WriteLine(""); + owr2.WriteLine("hash_combine(seed, (uint64)x.tag);"); foreach (var ctor in dt.Ctors) { var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", ctor.CompileName)); @@ -671,6 +673,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); } + */ } } @@ -2159,7 +2162,7 @@ protected override TargetWriter EmitBetaRedex(List boundVars, List typeArgs, Type bvType, TargetWriter wr) { @@ -2173,7 +2176,7 @@ protected override void EmitDestructor(string source, Formal dtor, int formalNon } if (ctor.EnclosingDatatype.Ctors.Count > 1) { - wr.Write("(({0}).v_{2}.{1})", source, dtorName, ctor.CompileName); + wr.Write("(({0}).dtor_{1}())", source, dtorName); } else { wr.Write("(({0}).{1})", source, dtorName); } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 2edf5c639c1..15bc6eeda17 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -9,7 +9,7 @@ DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log -CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++14 -I$(DAFNY_RUNTIME_DIR) +CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 7ceacfe7759..c9b164f5755 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,5 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 - +/* datatype Op = | NoOp | PushOp(ghost id: int) @@ -9,7 +9,7 @@ datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) datatype Example3 = Example3(e:Example1) datatype Example4 = Ex4a | Ex4b datatype Example5 = Ex5a(v:V) | Ex5b(b:bool) - +datatype Example6 = Ex6a(u:uint32) | Ex6b(b:bool) | Ex6c(u:uint32, s:seq) type Ex1Sub = d:Example1 | d.u == 0 witness Example1(0, true) type Ex2Sub = d:Example2 | d.Ex2a? && d.u == 0 witness Ex2a(0) type Ex3Sub = d:Example3 | d.e.b witness Example3(Example1(42, true)) @@ -58,11 +58,11 @@ method TestDestructor() { method TestGenericDefault() { var x:Option>; } - +*/ datatype Option = None | Some(value:V) -datatype Err = Fail(err:bool) | Ok(value:V) - +//datatype Err = Fail(err:bool) | Ok(value:V) +/* method matcher(e:Err) { match e { case Fail(s) => print s; @@ -70,14 +70,14 @@ method matcher(e:Err) { } print "\n"; } - +*/ method GenericTest() { var v:Option := Some(32); - matcher(Ok(42)); - matcher(Fail(true)); +// matcher(Ok(42)); +// matcher(Fail(true)); if v.Some? { print "Got some:", v.value, "\n"; } } - +/* method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { if x0 == x1 { print "Example1s are equal\n"; @@ -108,7 +108,8 @@ method DupTestTest() DupTest(Dup1(false, 42)); DupTest(Dup2(330)); } - +*/ +/* datatype IntList = | Nil | Cons(hd:uint32, tl:IntList) @@ -143,3 +144,4 @@ method Main() { var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); print len; } +*/ From f9042aa5f7b745bcf96efae7cacc83cdebebbefe Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 12:19:02 -0500 Subject: [PATCH 169/573] Fix member select --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index f71d669f28f..84dc92bf785 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1992,7 +1992,7 @@ protected override TargetWriter EmitMemberSelect(MemberDecl member, bool isLValu // Ugly hack of a check to figure out if this is a datatype query: f.Constructor? //wr = EmitCoercionIfNecessary(from:sf2.Type, to:expectedType, tok:null, wr:wr); wSource = wr.Fork(); - wr.Write(".{0}()", fieldName); + wr.Write(".is_{0}_{1}()", IdProtect(sf2.EnclosingClass.CompileName), fieldName.Substring(3)); } else if (!isLValue && member is SpecialField sf) { string compiledName, preStr, postStr; GetSpecialFieldInfo(sf.SpecialId, sf.IdParam, out compiledName, out preStr, out postStr); From cc39a2fe0c275a0162a1591a786b03c4713e4b47 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 12:21:05 -0500 Subject: [PATCH 170/573] Restore remaining datatype tests --- Test/c++/datatypes.dfy | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index c9b164f5755..28533d40b72 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -1,5 +1,5 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -/* + datatype Op = | NoOp | PushOp(ghost id: int) @@ -55,14 +55,14 @@ method TestDestructor() { } } +datatype Option = None | Some(value:V) + method TestGenericDefault() { var x:Option>; } -*/ -datatype Option = None | Some(value:V) -//datatype Err = Fail(err:bool) | Ok(value:V) -/* +datatype Err = Fail(err:bool) | Ok(value:V) + method matcher(e:Err) { match e { case Fail(s) => print s; @@ -70,14 +70,14 @@ method matcher(e:Err) { } print "\n"; } -*/ + method GenericTest() { var v:Option := Some(32); -// matcher(Ok(42)); -// matcher(Fail(true)); + matcher(Ok(42)); + matcher(Fail(true)); if v.Some? { print "Got some:", v.value, "\n"; } } -/* + method Comparison(x0:Example1, x1:Example1, y0:Example4, y1:Example4) { if x0 == x1 { print "Example1s are equal\n"; @@ -108,8 +108,7 @@ method DupTestTest() DupTest(Dup1(false, 42)); DupTest(Dup2(330)); } -*/ -/* + datatype IntList = | Nil | Cons(hd:uint32, tl:IntList) @@ -144,4 +143,3 @@ method Main() { var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); print len; } -*/ From 9421f580868ff254f00f5f651e387419c2d005d9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 12:48:02 -0500 Subject: [PATCH 171/573] Emit custom hashing. Now passing all unit tests --- Source/Dafny/Compiler-cpp.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 84dc92bf785..85257e9a71d 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -649,18 +649,17 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); // Define a custom hasher for the struct as a whole - /* hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullStructName = dt.Module.CompileName + "::" + DtT_protected; var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); owr2.WriteLine("size_t seed = 0;"); - owr2.WriteLine(""); - - owr2.WriteLine("hash_combine(seed, (uint64)x.tag);"); + var index = 0; foreach (var ctor in dt.Ctors) { - var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", ctor.CompileName)); - ifwr.WriteLine("hash_combine(seed, x.v_{2});", dt.Module.CompileName, DtT_protected, ctor.CompileName, TemplateMethod(dt.TypeArgs)); + var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); + ifwr.WriteLine("hash_combine(seed, {0});", index); + ifwr.WriteLine("hash_combine(seed, get<{0}::{1}>(x.v));", dt.Module.CompileName, DatatypeSubStructName(ctor, true)); + index++; } owr2.WriteLine("return seed;"); @@ -673,7 +672,6 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); } - */ } } From ad79884c61452553322dd616675f07b2eef2158e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 13:19:15 -0500 Subject: [PATCH 172/573] Remove top-level "using namespace std;" --- Binaries/DafnyRuntime.h | 72 ++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 2cc39cc189a..3b737688563 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -10,11 +10,9 @@ #include #include -using namespace std; - class _dafny { public: - static void Print(string s) { cout << s << endl; } + static void Print(std::string s) { std::cout << s << std::endl; } }; @@ -102,9 +100,9 @@ struct get_default { }; template -struct get_default> { - static shared_ptr call() { - return make_shared(get_default::call()); +struct get_default> { + static std::shared_ptr call() { + return std::make_shared(get_default::call()); } }; @@ -132,7 +130,7 @@ struct Tuple2 { }; template -inline ostream& operator<<(ostream& out, const Tuple2& val){ +inline std::ostream& operator<<(std::ostream& out, const Tuple2& val){ out << val.get_0(); out << val.get_1(); return out; @@ -162,7 +160,7 @@ struct Tuple3 { }; template -inline ostream& operator<<(ostream& out, const Tuple3& val){ +inline std::ostream& operator<<(std::ostream& out, const Tuple3& val){ out << val.get_0(); out << val.get_1(); out << val.get_2(); @@ -197,7 +195,7 @@ struct Tuple4 { }; template -inline ostream& operator<<(ostream& out, const Tuple4& val){ +inline std::ostream& operator<<(std::ostream& out, const Tuple4& val){ out << val.get_0(); out << val.get_1(); out << val.get_2(); @@ -237,7 +235,7 @@ struct Tuple5 { }; template -inline ostream& operator<<(ostream& out, const Tuple5& val){ +inline std::ostream& operator<<(std::ostream& out, const Tuple5& val){ out << val.get_0(); out << val.get_1(); out << val.get_2(); @@ -277,14 +275,14 @@ inline int64 EuclideanDivision_int64(int64 a, int64 b) { template struct DafnyArray { - shared_ptr sptr; + std::shared_ptr sptr; size_t len; DafnyArray() { } DafnyArray(size_t len) : len(len) { - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); } - DafnyArray(vector contents) : DafnyArray(contents.size()) { + DafnyArray(std::vector contents) : DafnyArray(contents.size()) { for (uint64 i = 0; i < contents.size(); i++) { sptr[i] = contents[i]; } @@ -320,7 +318,7 @@ struct DafnyArray { T* end() const { return sptr.get() + len; } void clear_and_resize(uint64 new_len) { - shared_ptr new_sptr = shared_ptr (new T[new_len], std::default_delete()); + std::shared_ptr new_sptr = std::shared_ptr (new T[new_len], std::default_delete()); sptr = new_sptr; } @@ -344,7 +342,7 @@ T* global_empty_ptr = new T[0]; template struct DafnySequence { - shared_ptr sptr; + std::shared_ptr sptr; T* start; size_t len; @@ -355,7 +353,7 @@ struct DafnySequence { } explicit DafnySequence(uint64 len) { - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); start = &*sptr; this->len = len; } @@ -369,7 +367,7 @@ struct DafnySequence { // Update one element DafnySequence(const DafnySequence& other, uint64 i, T t) { len = other.length(); - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); start = &*sptr; std::copy(other.start, other.start + len, start); @@ -378,21 +376,21 @@ struct DafnySequence { explicit DafnySequence(DafnyArray arr) { len = arr.size(); - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); start = &*sptr; std::copy(arr.begin(), arr.end(), start); } DafnySequence(DafnyArray arr, uint64 lo, uint64 hi) { len = hi - lo; - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); start = &*sptr; std::copy(arr.begin() + lo, arr.begin() + hi, start); } - DafnySequence(initializer_list il) { + DafnySequence(std::initializer_list il) { len = il.size(); - sptr = shared_ptr (new T[len], std::default_delete()); + sptr = std::shared_ptr (new T[len], std::default_delete()); start = &*sptr; int i = 0; @@ -422,7 +420,7 @@ struct DafnySequence { return ret; } - static DafnySequence Create(initializer_list il) { + static DafnySequence Create(std::initializer_list il) { DafnySequence ret(il); return ret; } @@ -495,7 +493,7 @@ struct DafnySequence { // TODO: toString }; -inline DafnySequence DafnySequenceFromString(string const& s) { +inline DafnySequence DafnySequenceFromString(std::string const& s) { DafnySequence seq(s.size()); memcpy(seq.ptr(), &s[0], s.size()); return seq; @@ -532,7 +530,7 @@ bool operator!=(const DafnySequence &s0, const DafnySequence &s1) { return !s0.equals(s1); } -inline ostream& operator<<(ostream& out, const DafnySequence& val){ +inline std::ostream& operator<<(std::ostream& out, const DafnySequence& val){ for (size_t i = 0; i < val.size(); i++) { out << val.select(i); } @@ -571,15 +569,15 @@ struct DafnySet { } DafnySet(const DafnySet& other) { - set = unordered_set(other.set); + set = std::unordered_set(other.set); } - DafnySet(initializer_list il) { - unordered_set a_set(il); + DafnySet(std::initializer_list il) { + std::unordered_set a_set(il); set = a_set; } - static DafnySet Create(initializer_list il) { + static DafnySet Create(std::initializer_list il) { DafnySet ret(il); return ret; } @@ -646,7 +644,7 @@ struct DafnySet { return ret; } - unordered_set Elements() { + std::unordered_set Elements() { return set; } @@ -661,7 +659,7 @@ struct DafnySet { // TODO: toString - unordered_set set; + std::unordered_set set; }; template @@ -675,7 +673,7 @@ bool operator!=(const DafnySet &s0, const DafnySet &s1) { } template -inline ostream& operator<<(ostream& out, const DafnySet& val){ +inline std::ostream& operator<<(std::ostream& out, const DafnySet& val){ for (auto const& c:val.set) { out << c; } @@ -704,15 +702,15 @@ struct DafnyMap { } DafnyMap(const DafnyMap& other) { - map = unordered_map(other.map); + map = std::unordered_map(other.map); } - DafnyMap(initializer_list> il) { - unordered_map a_map(il); + DafnyMap(std::initializer_list> il) { + std::unordered_map a_map(il); map = a_map; } - static DafnyMap Create(initializer_list> il) { + static DafnyMap Create(std::initializer_list> il) { DafnyMap ret(il); return ret; } @@ -816,7 +814,7 @@ struct DafnyMap { // TODO: hash // TODO: toString - unordered_map map; + std::unordered_map map; }; @@ -831,7 +829,7 @@ bool operator!=(const DafnyMap &s0, const DafnyMap &s1) { } template -inline ostream& operator<<(ostream& out, const DafnyMap& val){ +inline std::ostream& operator<<(std::ostream& out, const DafnyMap& val){ for (auto const& kv:val.map) { out << "(" << kv.first << " -> " << kv.second << ")"; } From c2f7a2c85232a363e11646ae47f6fea0d9db9a37 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Thu, 13 Feb 2020 13:36:58 -0500 Subject: [PATCH 173/573] add some notes on linear type ideas --- linear-notes/LruImpl.i.dfy | 388 +++++++++++++++++++++++++++++ linear-notes/LruModel.i.dfy | 197 +++++++++++++++ linear-notes/LruUsageExample.i.dfy | 36 +++ linear-notes/notes.txt | 222 +++++++++++++++++ 4 files changed, 843 insertions(+) create mode 100644 linear-notes/LruImpl.i.dfy create mode 100644 linear-notes/LruModel.i.dfy create mode 100644 linear-notes/LruUsageExample.i.dfy create mode 100644 linear-notes/notes.txt diff --git a/linear-notes/LruImpl.i.dfy b/linear-notes/LruImpl.i.dfy new file mode 100644 index 00000000000..69a408ab634 --- /dev/null +++ b/linear-notes/LruImpl.i.dfy @@ -0,0 +1,388 @@ +include "LruModel.i.dfy" +// +// An LRU-queue. +// + +module LruImpl { + import opened NativeTypes + import opened Sequences + import opened LruModel`Internal + import MutableMap + import opened Options + + lemma lemmaRemoveNonPresentKeyFromQueue(q: LruQueue, x: uint64) + requires x !in q + requires WF(q) + ensures LruModel.Remove(q, x) == q + { + if |q| == 0 { + } else { + lemmaRemoveNonPresentKeyFromQueue(q[..|q|-1], x); + } + } + + lemma LemmaQueueCountEqInterpCount(q: LruQueue) + requires WF(q) + ensures |I(q)| == |q| + { + reveal_distinct(); + if |q| == 0 { + } else { + LemmaQueueCountEqInterpCount(q[..|q| - 1]); + assert I(q) == I(q[..|q|-1]) + {q[|q|-1]}; + assert |I(q)| + == |I(q[..|q|-1]) + {q[|q|-1]}| + == |I(q[..|q|-1])| + |{q[|q|-1]}| + == |q[..|q|-1]| + 1 + == |q|; + } + } + + lemma lemmaGetRemoveQueueIndex(q: LruQueue, x: uint64) + returns (j: int) + requires x in q + requires WF(q) + ensures 0 <= j < |q| + ensures q[j] == x + ensures LruModel.Remove(q, x) == q[..j] + q[j+1..] + { + assert |q| > 0; + if q[|q| - 1] == x { + j := |q| - 1; + reveal_distinct(); + lemmaRemoveNonPresentKeyFromQueue(q[..|q|-1], x); + } else { + j := lemmaGetRemoveQueueIndex(q[..|q|-1], x); + } + } + + class Node { + var prev: Node?; + var next: Node?; + var value: uint64; + + constructor (p: Node?, n: Node?, v: uint64) + ensures prev == p + ensures next == n + ensures value == v + { + prev := p; + next := n; + value := v; + } + } + + class LruImplQueue { + ghost var Queue: LruQueue; + ghost var Repr: set; + + var nodemap: MutableMap.ResizingHashMap; + var head_node: Node?; + var tail_node: Node?; + + protected predicate Inv() + reads this, Repr + ensures Inv() ==> this in Repr + ensures Inv() ==> WF(Queue) + { + && nodemap in Repr + && nodemap.Repr <= Repr + && nodemap.Inv() + && Repr == {this} + nodemap.Repr + nodemap.I().contents.Values + && this !in nodemap.Repr + && nodemap.I().contents.Values !! nodemap.Repr + && (|Queue| == 0 ==> ( + && head_node == null + && tail_node == null + && nodemap.I().contents == map[] + )) + && (forall i | 0 <= i < |Queue| :: Queue[i] in nodemap.I().contents) + && (forall ref | ref in nodemap.I().contents :: ref in Queue) + && (forall ref | ref in nodemap.I().contents :: nodemap.I().contents[ref].value == ref) + && (|Queue| > 0 ==> + && head_node == nodemap.I().contents[Queue[0]] + && tail_node == nodemap.I().contents[Queue[|Queue| - 1]] + && nodemap.I().contents[Queue[0]].prev == null + && nodemap.I().contents[Queue[|Queue| - 1]].next == null + ) + && (forall i | 0 <= i < |Queue| - 1 :: + nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]) + && (forall i | 0 <= i < |Queue| - 1 :: + nodemap.I().contents[Queue[i]] == nodemap.I().contents[Queue[i+1]].prev) + && nodemap.Repr !! nodemap.I().contents.Values + && WF(Queue) + } + + constructor () + ensures Inv() + ensures Queue == Empty() + ensures fresh(Repr) + { + var m := new MutableMap.ResizingHashMap(128); + + nodemap := m; + head_node := null; + tail_node := null; + + Queue := []; + Repr := {this} + m.Repr + m.Contents.Values; + } + + method Remove(x: uint64) + requires Inv() + ensures Inv() + ensures Queue == LruModel.Remove(old(Queue), x) + ensures Repr <= old(Repr) + modifies this, this.Repr + { + ghost var oldContents := nodemap.I().contents; + ghost var oldQueue := Queue; + + var node := nodemap.RemoveAndGet(x); + if node.Some? { + var prev := node.value.prev; + var next := node.value.next; + + ghost var j := lemmaGetRemoveQueueIndex(Queue, x); + if (j > 0) { + assert oldContents[x].prev == oldContents[Queue[j-1]]; + } + if (j < |Queue| - 1) { + assert oldContents[x].next == oldContents[Queue[j+1]]; + } + + if (prev == null) { + head_node := next; + } else { + prev.next := next; + } + + if (next == null) { + tail_node := prev; + } else { + next.prev := prev; + } + + Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; + Queue := LruModel.Remove(Queue, x); + + forall k | 0 <= k < |Queue| ensures Queue[k] in nodemap.I().contents + { + reveal_distinct(); + if k < j { + assert oldQueue[k] == Queue[k]; + assert oldQueue[k] in oldContents; + assert oldQueue[k] != x; + assert oldQueue[k] in nodemap.I().contents; + } else { + assert oldQueue[k+1] == Queue[k]; + assert oldQueue[k+1] in oldContents; + assert oldQueue[k+1] != x; + assert oldQueue[k+1] in nodemap.I().contents; + } + } + + forall ref | ref in nodemap.I().contents ensures ref in Queue + { + assert ref in oldContents; + var k :| 0 <= k < |oldQueue| && oldQueue[k] == ref; + assert k != j; + if k < j { + assert Queue[k] == ref; + } else { + assert Queue[k-1] == ref; + } + } + + forall k | 0 <= k < |Queue| - 1 + ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev + { + if k < j-1 { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } else if k == j-1 { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } else { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } + } + + forall i | 0 <= i < |Queue| - 1 + ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] + { + if i < j - 1 { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } else if i == j-1 { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } else { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } + } + } else { + assert nodemap.I().contents == oldContents; + lemmaRemoveNonPresentKeyFromQueue(Queue, x); + + forall k | 0 <= k < |Queue| - 1 + ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev + { + } + + forall i | 0 <= i < |Queue| - 1 + ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] + { + } + } + + LruRemove(oldQueue, x); + } + + lemma LemmaMapCountEqInterpCount() + requires Inv() + ensures |I(Queue)| == nodemap.Count as int + { + assert I(Queue) == nodemap.I().contents.Keys; + assert |I(Queue)| + == |nodemap.I().contents.Keys| + ==|nodemap.I().contents| + == nodemap.Count as int; + } + + method Use(x: uint64) + requires Inv() + requires |I(Queue)| <= 0x1_0000_0000 + ensures Inv() + ensures Queue == LruModel.Use(old(Queue), x) + ensures forall x | x in Repr :: x in old(Repr) || fresh(x) + modifies this, this.Repr + { + ghost var oldContents := nodemap.I().contents; + ghost var oldQueue := Queue; + LemmaMapCountEqInterpCount(); + + var node := nodemap.Get(x); + if node.Some? { + var prev := node.value.prev; + var next := node.value.next; + + ghost var j := lemmaGetRemoveQueueIndex(Queue, x); + if (j > 0) { + assert oldContents[x].prev == oldContents[Queue[j-1]]; + } + if (j < |Queue| - 1) { + assert oldContents[x].next == oldContents[Queue[j+1]]; + } + + if (next != null) { + if (prev == null) { + head_node := next; + } else { + prev.next := next; + } + + next.prev := prev; + + node.value.prev := tail_node; + node.value.next := null; + if (tail_node != null) { + tail_node.next := node.value; + } else { + head_node := node.value; + } + tail_node := node.value; + + Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; + Queue := LruModel.Remove(Queue, x) + [x]; + + forall i | 0 <= i < |Queue| - 1 + ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] + { + if i == |Queue| - 2 { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } else if i == j-1 { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } else if i < j-1 { + assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; + } else { + assert nodemap.I().contents[Queue[i]].next + == old(nodemap.I()).contents[old(Queue)[i+1]].next + == old(nodemap.I()).contents[old(Queue)[i+2]] + == nodemap.I().contents[Queue[i+1]]; + } + } + + forall k | 0 <= k < |Queue| - 1 + ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev + { + if k < j-1 { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } else if k == j-1 { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } else { + assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; + } + } + } else { + Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; + Queue := LruModel.Remove(Queue, x) + [x]; + } + } else { + lemmaRemoveNonPresentKeyFromQueue(Queue, x); + + var newnode := new Node(tail_node, null, x); + assert newnode.next == null; + if (tail_node != null) { + tail_node.next := newnode; + } else { + head_node := newnode; + } + tail_node := newnode; + + nodemap.Insert(x, newnode); + + Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; + Queue := oldQueue + [x]; + + assert Queue[|Queue| - 1] == x; + assert nodemap.I().contents[x] == newnode; + assert newnode.next == null; + assert nodemap.I().contents[Queue[|Queue| - 1]].next == null; + forall ref | ref in nodemap.I().contents ensures nodemap.I().contents[ref].value == ref + { + } + forall i | 0 <= i < |Queue| ensures Queue[i] in nodemap.I().contents + { + if (i == |Queue| - 1) { + } else { + } + } + } + + LruUse(oldQueue, x); + } + + method Next() + returns (x: uint64) + requires |I(Queue)| > 0 + requires Inv() + ensures x == LruModel.Next(Queue) + { + LemmaQueueCountEqInterpCount(Queue); + assert head_node != null; + x := head_node.value; + } + + method NextOpt() + returns (x: Option) + requires Inv() + ensures x == LruModel.NextOpt(Queue) + { + LruModel.reveal_NextOpt(); + LemmaQueueCountEqInterpCount(Queue); + if head_node != null { + x := Some(head_node.value); + } else { + x := None; + } + } + + } +} diff --git a/linear-notes/LruModel.i.dfy b/linear-notes/LruModel.i.dfy new file mode 100644 index 00000000000..1228c3381a0 --- /dev/null +++ b/linear-notes/LruModel.i.dfy @@ -0,0 +1,197 @@ +include "../Base/NativeTypes.s.dfy" +include "../Base/sequences.i.dfy" +include "../Base/Option.s.dfy" +include "MutableMapImpl.i.dfy" +// +// An LRU-queue. +// + +module LruModel { + export S provides LruQueue, WF, I, Empty, Remove, Use, Pop, Next, LruUse, NextOpt, LruRemove, NativeTypes, Options + + export Internal reveals * + export extends S + + import opened NativeTypes + import opened Sequences + import opened Options + + // Index-0: Least recently used + // Index-1: Most recently used + type LruQueue = seq + + predicate {:opaque} distinct(q: seq) + { + forall i, j | 0 <= i < |q| && 0 <= j < |q| && i != j :: q[i] != q[j] + } + + predicate WF(q: LruQueue) + { + distinct(q) + } + + function I(q: LruQueue) : set + { + set x | x in q + } + + function Empty() : (q : LruQueue) + ensures I(q) == {} + ensures WF(q) + { + reveal_distinct(); + [] + } + + function Remove(q: LruQueue, x: uint64) : LruQueue + { + if |q| == 0 then [] else ( + if Last(q) == x then Remove(DropLast(q), x) else Remove(DropLast(q), x) + [Last(q)] + ) + } + + function Use(q: LruQueue, x: uint64) : LruQueue + { + Remove(q, x) + [x] + } + + function Next(q: LruQueue) : (x : uint64) + requires |I(q)| > 0 + ensures x in I(q) + { + q[0] + } + + function {:opaque} NextOpt(q: LruQueue) : (x : Option) + ensures x.Some? ==> x.value in I(q) + ensures x.None? ==> I(q) == {} + { + if q == [] then None else Some(q[0]) + } + + function Pop(q: LruQueue) : (LruQueue, uint64) + requires |I(q)| > 0 + { + (q[1..], q[0]) + } + + lemma LruRemoveGetIndex(q: LruQueue, x: uint64, j: int) + returns (i: int) + requires WF(q) + requires 0 <= j < |Remove(q, x)| + ensures 0 <= i < |q| + ensures q[i] == Remove(q, x)[j]; + { + if j + 1 == |Remove(q, x)| && q[|q| - 1] != x { + i := |q| - 1; + } else { + i := LruRemoveGetIndex(DropLast(q), x, j); + } + } + + lemma LruRemoveGetIndex2(q: LruQueue, x: uint64, j1: int, j2: int) + returns (i1: int, i2: int) + requires WF(q) + requires 0 <= j1 < |Remove(q, x)| + requires 0 <= j2 < |Remove(q, x)| + requires j1 != j2 + ensures 0 <= i1 < |q| + ensures 0 <= i2 < |q| + ensures i1 != i2 + ensures q[i1] == Remove(q, x)[j1]; + ensures q[i2] == Remove(q, x)[j2]; + { + if j2 + 1 == |Remove(q, x)| && q[|q| - 1] != x { + i1 := LruRemoveGetIndex(DropLast(q), x, j1); + i2 := |q| - 1; + } else if j1 + 1 == |Remove(q, x)| && q[|q| - 1] != x { + i2 := LruRemoveGetIndex(DropLast(q), x, j2); + i1 := |q| - 1; + } else { + i1, i2 := LruRemoveGetIndex2(DropLast(q), x, j1, j2); + } + } + + lemma LruRemoveGetIndexRev(q: LruQueue, x: uint64, i: int) + returns (j: int) + requires WF(q) + requires 0 <= i < |q| + requires q[i] != x + ensures 0 <= j < |Remove(q, x)| + ensures q[i] == Remove(q, x)[j]; + { + if i + 1 == |q| { + j := |Remove(q,x)| - 1; + } else { + j := LruRemoveGetIndexRev(DropLast(q), x, i); + } + } + + lemma LruRemove(q: LruQueue, x: uint64) + requires WF(q) + ensures WF(Remove(q, x)) + ensures I(Remove(q, x)) == I(q) - {x} + { + if |q| == 0 { + } else { + LruRemove(DropLast(q), x); + if q[|q| - 1] != x { + reveal_distinct(); + forall i, j | 0 <= i < |Remove(q,x)| && 0 <= j < |Remove(q,x)| && i != j + ensures Remove(q,x)[i] != Remove(q,x)[j] + { + var i1, j1 := LruRemoveGetIndex2(q, x, i, j); + } + } + } + + var a := I(Remove(q, x)); + var b := I(q) - {x}; + forall r | r in a + ensures r in b + { + var j :| 0 <= j < |Remove(q, x)| && Remove(q, x)[j] == r; + var j1 := LruRemoveGetIndex(q, x, j); + } + forall r | r in b + ensures r in a + { + var i :| 0 <= i < |q| && q[i] == r; + var j := LruRemoveGetIndexRev(q, x, i); + } + } + + lemma notInRemove(q: LruQueue, x: uint64, i: int) + requires 0 <= i < |Remove(q,x)| + ensures Remove(q,x)[i] != x + { + if i + 1 == |Remove(q, x)| && q[|q| - 1] != x { + } else { + notInRemove(DropLast(q), x, i); + } + } + + lemma LruUse(q: LruQueue, x: uint64) + requires WF(q) + ensures WF(Use(q, x)) + ensures I(Use(q, x)) == I(q) + {x} + { + LruRemove(q, x); + reveal_distinct(); + forall i, j | 0 <= i < |Use(q,x)| && 0 <= j < |Use(q,x)| && i != j + ensures Use(q,x)[i] != Use(q,x)[j] + { + if (i == |Use(q,x)| - 1) { + notInRemove(q, x, j); + } else if (j == |Use(q,x)| - 1) { + notInRemove(q, x, i); + } else { + } + } + assert I(Use(q, x)) + == I(Remove(q,x) + [x]) + == I(Remove(q,x)) + {x} + == (I(q) - {x}) + {x} + == I(q) + {x}; + } +} diff --git a/linear-notes/LruUsageExample.i.dfy b/linear-notes/LruUsageExample.i.dfy new file mode 100644 index 00000000000..804a07ea45a --- /dev/null +++ b/linear-notes/LruUsageExample.i.dfy @@ -0,0 +1,36 @@ +include "LruModel.i.dfy" +include "LruImpl.i.dfy" + +module LruUsageExample { + import LruModel + import LruImpl + + // Some special syntax or something + implement + !LruModel.LruQueue + with + class LruImpl.LruImplQueue + + function remove2(queue: !LruModel.LruQueue, x: uint64, y: uint64) : + (queue': !LruModel.LruQueue) + requires LruModel.WF(queue) + { + var queue0 := queue; + var queue1 := LruModel.Remove(queue0, x); + var queue2 := LruModel.Remove(queue1, x); + queue2 + } + + // This would be translated into the following: + // + // method remove2Impl(queue: LruImpl.LruImplQueue, x: uint64, y: uint64) + // requires queue.Inv() + // modifies queue.Repr + // ensures fresh(queue.Repr - old(queue.Repr)) + // ensures queue.Inv() + // ensures queue.I() == remove2(old(queue.I()), x, y) + // { + // queue.Remove(x); + // queue.Remove(y); + // } +} diff --git a/linear-notes/notes.txt b/linear-notes/notes.txt new file mode 100644 index 00000000000..d08a9061160 --- /dev/null +++ b/linear-notes/notes.txt @@ -0,0 +1,222 @@ +I want to be able to write our stateful computations +in a functional manner, since it's easier to work +with expressions for verification. We'd then want +the expressions compiled to actual, performant stateful code. + +To illustrate, a common pattern we use is to define a function +and then a method which implements the function. + + datatype Foo = Foo(x: int) + + function Set5(foo: Foo) : Foo { + foo.(x := 5) + } + + class FooImpl { + x: int; + + Repr: set; + + function I() : Foo { + Foo(this.x) + } + } + + method Set5Impl(foo: FooImpl) + modifies foo.Repr + ensures fresh(foo.Repr - old(foo.Repr)) + ensures foo.I() == Set5(old(foo.I())) + { + foo.x := 5; + } + +We'd like to automatically generate the `FooImpl` class and +`Set5Impl` method from `Foo` and `Set5`. + +For this to be possible, a function like `Set5` needs to use +its arguments linearly - or at least, those arguments which +are going to replaced by a stateful class implementation. + + datatype Foo = Foo(x: int) + + function Invalid(foo: Foo) : (Foo, Foo) { + (foo.(x := 5), foo.(x := 6)) + } + +This obviously wouldn't be translatable into a method +implementation without somehow cloning `foo`. +(Cloning would need to be made explicit.) + +=== More examples === + +We want an expression that will compile as: + + method Add1ToElement5(s: array) + { + s[5].x := s[5].x + 1 + } + +We could try (`!` denotes a linear type): + + function Add1ToElement5(s: !seq) + requires |s| >= 6 + { + // We want to write + // s[5 := s[5].(x := s[5].x + 1)] + // but that's not linear. + // (our dafny code frequently uses idioms like this). + + // Instead we could write something like: + + s.update(5, lambda foo: !Foo . + foo.update_x(lambda y: int . y + 1)) + + // This is a little annoying because Dafny's support + // for higher order functions is not great. + } + +In general it's actually kind of annoying to only be able +to use something linearly and it would be good to have +mechanisms that allow for borrowing a linear type into a +non-linear type which would only be used immutably, a la +Rust's borrowing semantics. Wadler's paper also has some limited +support for this, I think. + +=== Mutation vs returning new === + +Returning to the Set5 example, there are actually two ways +to translate this: + + function Set5(foo: !Foo) : !Foo { + foo.(x := 5) + } + + method Set5Impl1(foo: FooImpl) + modifies foo.Repr + ensures fresh(foo.Repr - old(foo.Repr)) + ensures foo.I() == Set5(old(foo.I())) + { + foo.x := 5; + } + + method Set5Impl2(foo: FooImpl) returns (foo': FooImpl) + modifies foo.Repr + ensures fresh(foo'.Repr - old(foo.Repr)) + ensures foo'.I() == Set5(old(foo.I())) + { + var foo' := foo; + foo.x := 5; + } + +Of course, some functions would only work with the second style: + + function Set5'(foo: !Foo) : !Foo { + Foo(5) // datatype constructor + } + + method Set5'Impl2(foo: FooImpl) returns (foo': FooImpl) + modifies foo.Repr + ensures fresh(foo'.Repr - old(foo.Repr)) + ensures foo'.I() == Set5(old(foo.I())) + { + foo' := new Foo(5); // constructor is translated to `new` + } + +We need some kind of syntax to specify which style any particular +argument is. + +=== Sequences === + +Sequences are kind of tricky to use right. We'd need some special +constructs. Consider some code we might want to write: + +Suppose we're given a function/method with this signature: + + function Transform(bucket: !Bucket) : (bucket': !Bucket) + + method TransformImpl(bucket: BucketImpl) returns (bucket': BucketImpl) + modifies bucket.Repr + ensures bucket'.I() == Transform(old(bucket)) + +We want to write code which translates into this: + + method ModifySeqImpl(s: seq, i: int) + returns (s': seq) + modifies SequenceRepr(s) + ensures ISeq(s') == modifySeq(old(ISeq(s))) + { + var left := s[0..i]; + var mid := s[i]; + var mid' := TransformImpl(mid); + s' := left + [mid']; + } + +It's not obvious how to do this since s is used more than once, +even though no particular element is used more than once. + +We need some kind of sequence destructuring construct: + + function ModifySeq(s: !seq, i: int) + { + var left, mid := splice(s, [0..i], [i]); + var mid' := Transform(mid); + left + [mid'] + } + +The `splice` call would have preconditions that the provided ranges +don't intersect. + +Some open questions: when does a sequence translate to a sequence +vs an array? Any reason to not always be an array? + +=== Immutatable datatypes === + +The motivation is to auto-translate linear types into mutable class +types. Why stop there? We could auto-translate immutable types +into immutable types. What's the point? Maybe we have an immutable map +implementation, but for the verification reasoning, it's easier to +just think of it as an ordinary Dafny map for dafny proofs, without +having to write interpretation function calls everywhere. + +(TODO is there a good example of where we'd use this in Veribetrfs +codebase?) + +=== Garbage collection === + +In a linear type system, every linear value has to be +used exactly once. In an affine type system, every +affine value must be used *at most* once. + +We could either have a linear type system, with explicit +`free` statements to free up memory for objects we don't need anymore, +or use an affine type system with the free statements inserted +automatically. + +Compare to C++'s std::unique_ptr. This is used affinely and +the destructor is implicity called via RAII when the std::unique_ptr +goes out of scope. + +NOTE: While this helps somewhat with refcounting, it +doesn't help with refcounting for immutable objects which are shared +freely. + +=== Control-flow === + +If the point is to implement everything functionally, how do we +implement, e.g., while-loops, which only exist in imperative dafny +code? + +What I tend to do right now is just implement everything +recursively, but if this is done right (e.g., with tail calls) +then it can easily be transformed into a CFG. Dafny already does +this for single methods, at the very least. + +=== Non-linear implementations encapsulated as types === + +Sometimes we might want to implement the mutable version of a +custom linear type with our own custom implementation that is proven +correct using dafny's usual set-based dynamic frames. +Such a class would need to adhere to the Repr idioms. + +See the example in this directory, where an LRU queue is implemented +with a doubly-linked list and abstracted as a simple sequence. From 0246e50de7ae88c38cc9e67b0e72c18c618a761b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 13:44:41 -0500 Subject: [PATCH 174/573] Clean up more places where we were relying on std being open. --- Source/Dafny/Compiler-cpp.cs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 85257e9a71d..5a22ac2ff43 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -217,14 +217,14 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool // Create the code for the specialization of get_default var fullName = moduleName + "::" + name; - var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", + var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", TypeParameters(typeParameters), fullName, TemplateMethod(typeParameters)); - getDefaultStr += String.Format("static shared_ptr<{0}{1} > call() {{\n", + getDefaultStr += String.Format("static std::shared_ptr<{0}{1} > call() {{\n", fullName, TemplateMethod(typeParameters)); - getDefaultStr += String.Format("return shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); + getDefaultStr += String.Format("return std::shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); getDefaultStr += "}\n};"; this.classDefaults.Add(getDefaultStr); @@ -479,7 +479,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive declaration needs to use a pointer - wstruct.WriteLine("shared_ptr<{0}> {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); + wstruct.WriteLine("std::shared_ptr<{0}> {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); } else { wstruct.WriteLine("{0} {1};", TypeName(arg.Type, wdecl, arg.tok), FormalName(arg, i)); } @@ -524,7 +524,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer - owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); + owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); } else { owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok), arg.CompileName); } @@ -539,7 +539,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { /*** Declare the overall tagged union ***/ var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); - ws.WriteLine("variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); + ws.WriteLine("std::variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) @@ -555,7 +555,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { if (!arg.IsGhost) { if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // This is a recursive destuctor, so we need to allocate space and copy the input in - wc.WriteLine("COMPILER_result_subStruct.{0} = make_shared<{1}>({0});", arg.CompileName, DtT_protected); + wc.WriteLine("COMPILER_result_subStruct.{0} = std::make_shared<{1}>({0});", arg.CompileName, DtT_protected); } else { wc.WriteLine("COMPILER_result_subStruct.{0} = {0};", arg.CompileName); } @@ -598,7 +598,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { var name = DatatypeSubStructName(ctor); - var holds = String.Format("holds_alternative<{0}{1}>", name, TemplateMethod(dt.TypeArgs)); + var holds = String.Format("std::holds_alternative<{0}{1}>", name, TemplateMethod(dt.TypeArgs)); ws.WriteLine("bool is_{0}() const {{ return {1}(v); }}", name, holds); wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs)); wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return {4}(d.v); }}", @@ -618,7 +618,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { var returnType = TypeName(arg.Type, ws, arg.tok); if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // This is a recursive destuctor, so return a pointer - returnType = String.Format("shared_ptr<{0}>", returnType); + returnType = String.Format("std::shared_ptr<{0}>", returnType); } using (var wDtor = ws.NewNamedBlock("{0} dtor_{1}()", returnType, arg.CompileName)) { @@ -630,13 +630,13 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { var ctor_i = dtor.EnclosingCtors[i]; var ctor_name = DatatypeSubStructName(ctor_i); Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[i].CompileName); - wDtor.WriteLine("if (is_{0}()) {{ return get<{0}{1}>(v).{2}; }}", + wDtor.WriteLine("if (is_{0}()) {{ return std::get<{0}{1}>(v).{2}; }}", ctor_name, TemplateMethod(dt.TypeArgs), IdName(arg)); } Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[n - 1].CompileName); var final_ctor_name = DatatypeSubStructName(dtor.EnclosingCtors[n - 1], true); - wDtor.WriteLine("return get<{0}>(v).{1}; ", + wDtor.WriteLine("return std::get<{0}>(v).{1}; ", final_ctor_name, IdName(arg)); } } @@ -658,7 +658,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { foreach (var ctor in dt.Ctors) { var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); ifwr.WriteLine("hash_combine(seed, {0});", index); - ifwr.WriteLine("hash_combine(seed, get<{0}::{1}>(x.v));", dt.Module.CompileName, DatatypeSubStructName(ctor, true)); + ifwr.WriteLine("hash_combine(seed, std::get<{0}::{1}>(x.v));", dt.Module.CompileName, DatatypeSubStructName(ctor, true)); index++; } owr2.WriteLine("return seed;"); @@ -666,8 +666,8 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { if (IsRecursiveDatatype(dt)) { // Emit a custom hasher for a pointer to this type hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); - owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const shared_ptr<{0}{1}>& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); + hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); + owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, TemplateMethod(dt.TypeArgs)); owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); @@ -1496,7 +1496,7 @@ protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { //wr.Write("_dafny::Print("); //TrExpr(arg, wr, false); //wr.WriteLine(");"); - wr.Write("cout << ("); + wr.Write("std::cout << ("); TrExpr(arg, wr, false); wr.WriteLine(");"); } From aac89fb539a0173a7862da35428a6394d75b900e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 13 Feb 2020 13:48:25 -0500 Subject: [PATCH 175/573] Clean more --- Test/c++/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 15bc6eeda17..c7397d49fac 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -1,6 +1,7 @@ DAFNYS=$(wildcard *.dfy) CPPS=$(subst .dfy,.cpp,$(DAFNYS)) +DOT_H_S=$(subst .dfy,.h,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY_DIR=../.. DAFNY=$(DAFNY_DIR)/Binaries/dafny @@ -41,4 +42,4 @@ test: $(EXECS) # fi clean: - rm -f *.cpp $(EXECS) $(TEST_LOG) + rm -f *.cpp *cs $(DOT_H_S) $(EXECS) $(TEST_LOG) From 4074490b864d471d295c5e53a4a552a0d1278ba5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 19 Feb 2020 11:16:05 -0500 Subject: [PATCH 176/573] More examples and thoughts on linearity --- linear-notes/cogent.txt | 74 ++++++++++++++ linear-notes/yi-examples.txt | 191 +++++++++++++++++++++++++++++++++++ 2 files changed, 265 insertions(+) create mode 100644 linear-notes/cogent.txt create mode 100644 linear-notes/yi-examples.txt diff --git a/linear-notes/cogent.txt b/linear-notes/cogent.txt new file mode 100644 index 00000000000..61391ed9f93 --- /dev/null +++ b/linear-notes/cogent.txt @@ -0,0 +1,74 @@ + linear datatype Foo = Foo(x: int) + + function Set5(foo: Foo) : Foo { + foo.(x := 5) + } + +This should be okay, because x is a base type and hence sharable + + function Inc5(foo: Foo) : Foo { + foo.(x := foo.x + 5) + } + + +Desugar: foo.(x := foo.x + 5) +Into: + take tmp_foo {x = tmp_x} = foo in + put tmp_foo.x := tmp_x + 5 + +Though maybe this isn't needed because x isn't linear? +Better example: + + + linear datatype Bar = Bar(s:linear seq, t:linear seq) + + function NewSeq(b:Bar, m:seq) : Bar { + b.(s := m) + } + + Should be disallowed because we drop b.s + + function NewSeq(b:Bar, m:seq) : Bar { + free(b.s); + b.(s := m) + } + + Should be okay + + function NewSeq(b:Bar) : Bar { + free(b.s); + b.(s := b.t) + } + + Should be okay because it becomes: + + take tmp_b {t = tmp_t} = b in + put tmp_b.s := tmp_t + + and the result is a tmp_b where the t field is inaccessible + +For sequences, maybe we can use the same take/put approach and rely on +extra proof obligations to handle aliasing: + + function Add1ToElement5(s: linear seq ) + requires |s| > 5 + { + s[5].x := s[5].x + 1 + } + +desugars to: + + take tmp_s {s[5] = foo} = s in // Where this makes 5 inaccessible in tmp_s + take tmp_foo {x = tmp_x} = foo in + put tmp_foo.x := tmp_x + 5 + put tmp_s[5] := tmp_foo + +How do we track accessiblility? For any given variable, it's a static property, +since additional take operations will produce new values. But a sequence might +have more than one index inaccessible, since you could do several takes in a row. +So we maintain a set (variable or function return value?) for each value that +returns all (in)accessible locations, and each index operation proves +that the attempted index is (not)in the (in)accessible set? Doing a put +operation on a sequence would have a similar requirement. + + diff --git a/linear-notes/yi-examples.txt b/linear-notes/yi-examples.txt new file mode 100644 index 00000000000..c8c43c60187 --- /dev/null +++ b/linear-notes/yi-examples.txt @@ -0,0 +1,191 @@ +module eexample { + +datatype table = table(legs: int) + +/* + in the examples, we assume arguments are all linear + t is being used linearly in this example +*/ + +function method set_leg(t: table) : table +{ + t.(legs := 4) +} + +/* + maybe we allow the datatype update syntax to be linear as well + despite t being mentioned twice here? + but we need to make sure that the destination of the update must match the source of the update? +*/ + +function method add_leg(t: table) : table +{ + t.(legs := t.legs + 1) +} + +/* + in the above case we have a linear function that borrows and returns the same t + we want to extract the above as in-place-update, but should we return the pointer? + we can do this: + + void add_leg(shared_ptr t) { + t->legs = t->legs + 1; + } + + it can also be extracted as: + + shared_ptr
add_leg(shared_ptr
t) { + t->legs = t->legs + 1; + return t; + } + + we can even extract add_leg as: + + shared_ptr
add_leg(shared_ptr
t) { + shared_ptr
t_ = make_shared
(*t); // use the copy constructor + t_->legs = t_->legs + 1; + return t_; + } + + but then this would just make a copy, and does not take advantage of the linearlity +*/ + +function method add_leg_copy(t: table) : table +{ + table(t.legs + 1) +} + +/* + in this case we have a linear function that borrows t, but does not return t. + instead, we get a "new" table back, so we want to extract it as: + + shared_ptr
add_leg_copy(shared_ptr
t) { + return make_shared
(t_->legs + 1); // use the table constructor + } +*/ + +/* + now maybe look at single level "nested" example, and how the extraction will workout +*/ + +datatype room = room(big_table: table, small_table: table) + +function method add_leg_big_table(r: room) : room +{ + r.(big_table := add_leg(r.big_table)) +} + +/* + using the second style, shold we be ignoring the return value from a linear function + since it borrows and returns the same thing? + + shared_ptr add_leg_big_table(shared_ptr r) { + shared_ptr
t_ = add_leg(r->big_table); + // t_ is just unused here? + return r; + } +*/ + +function method add_leg_big_table_bad(r: room) : room +{ + r.(big_table := add_leg(r.small_table)) +} + +/* + seems to me the above case should not be allowed + the destination of the update does not match the source of the update + we cannot extract this as an in place update for either tables +*/ + +function method add_leg_big_table_copy(r: room) : room +{ + r.(big_table := add_leg_copy(r.big_table)) +} + +/* + now in above case, we do want to reassign big_table: + + shared_ptr add_leg_big_table(shared_ptr r) { + shared_ptr
t = add_leg_copy(r->big_table); + r->big_table = t; + return r; + } + + so it seems like despite add_leg_copy and add_leg have the same signature + the extraction on the caller side might need to change + so the information needs to be carried somewhere +*/ + +/* + now maybe look at a sequence example, seems like it gets tricker +*/ + +function method add_leg_first_table_okay(ts: seq
) : seq
+ requires |ts| > 1; +{ + ts[0 := add_leg(ts[0])] +} + +/* + we also want to extract the above as in-place-update + + shared_ptr>> add_leg_first_table(shared_ptr>> ts) { + shared_ptr
t = add_leg(ts[0]); + return ts; + } + + for the extraction to work, we have to disallow different indicies being passed in. + the following cannot be compiled as an in place update + again, the destination of the update does not match the source of the update + maybe we just use a separate syntactic construct for in-place, linear update? +*/ + +function method add_leg_first_table_bad(ts: seq
) : seq
+ requires |ts| > 1; +{ + ts[1 := add_leg(ts[0])] +} + +/* + conceptually, this one should be okay, since a new copy is returned +*/ + +function method add_leg_first_table_maybe_okay(ts: seq
) : seq
+ requires |ts| > 1; +{ + ts[1 := add_leg_copy(ts[0])] +} + +/* + seems like we should be able to extract it this way: + + shared_ptr>> add_leg_first_table_maybe_okay(shared_ptr>> ts) { + temp = add_leg_copy(ts[0]); // will envoke the constructor + ts[1] = temp; + return ts; + } + + a slightly more complicated example: +*/ + +function method keep_some_tables(ts: seq
) : seq
+ requires |ts| > 5; +{ + var ts_0 := add_leg_first_table_okay(ts); + var ts_1 := add_leg_first_table_okay(ts_0); + ts_1[0..3] +} + +/* + ideally we would like to do: + + shared_ptr>> keep_some_tables(shared_ptr>> ts) + { + add_leg_first_table_okay(ts); + add_leg_first_table_okay(ts); + ts.resize(3); + return ts; + }` +*/ + +} \ No newline at end of file From b559d14831438786562938db1d3350ed272bb988 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 20 Feb 2020 09:28:28 -0500 Subject: [PATCH 177/573] Emit a pragma once into headers --- Source/Dafny/Compiler-cpp.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5a22ac2ff43..0ffa631a593 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -63,7 +63,8 @@ protected override void EmitHeader(Program program, TargetWriter wr) { wr.WriteLine("#include \"{0}\"", headerFileName); var headerFileWr = wr.NewFile(headerFileName); - headerFileWr.WriteLine("// Dafny program {0} compiled into Cpp", program.Name); + headerFileWr.WriteLine("// Dafny program {0} compiled into a Cpp header file", program.Name); + headerFileWr.WriteLine("#pragma once"); headerFileWr.WriteLine("#include \"DafnyRuntime.h\""); // TODO: Include appropriate .h file here //ReadRuntimeSystem("DafnyRuntime.h", wr); From 2ccf4aa3f9f0649b38314d0e4d916950163a86bc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 20 Feb 2020 14:50:37 -0500 Subject: [PATCH 178/573] Rollback C# sequence optimizations in favor of changes made on master --- Binaries/DafnyRuntime.cs | 145 +++++++--------------------- Source/DafnyRuntime/DafnyRuntime.cs | 145 +++++++--------------------- 2 files changed, 70 insertions(+), 220 deletions(-) diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs index ab093b5646b..70b124c372a 100755 --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -799,14 +799,6 @@ public Set Values { public abstract class Sequence { - private readonly ArraySegment segment; - public Sequence(T[] ee) { - T[] backing = ee; - segment = new ArraySegment(backing); - } - private Sequence(ArraySegment segment_) { - segment = segment_; - } public static Sequence Empty { get { return new ArraySequence(new T[0]); @@ -833,46 +825,37 @@ public static Sequence _DafnyDefaultValue() { return Empty; } public int Count { - get { return segment.Count; } - } - public long LongCount { - get { return segment.Count; } - } - public IList Elements { - get { - return segment; - } + get { return (int)LongCount; } } public abstract long LongCount { get; } public abstract T[] Elements { get; } public IEnumerable UniqueElements { get { - var st = Set.FromCollection((IEnumerable) segment); + var st = Set.FromElements(Elements); return st.Elements; } } public T Select(ulong index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(long index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(uint index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(int index) { return Elements[index]; } public T Select(BigInteger index) { - return Elements[(int) index]; + return Elements[(int)index]; } public Sequence Update(long index, T t) { - T[] dst = new T[segment.Count]; - ((ICollection) segment).CopyTo(dst, 0); - dst[index] = t; - return new Sequence(dst); + T[] a = (T[])Elements.Clone(); + a[index] = t; + return new ArraySequence(a); } public Sequence Update(ulong index, T t) { return Update((long)index, t); @@ -881,23 +864,24 @@ public Sequence Update(BigInteger index, T t) { return Update((long)index, t); } public bool Equals(Sequence other) { - int n = segment.Count; - return n == other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n == other.Elements.Length && EqualUntil(other, n); } public override bool Equals(object other) { return other is Sequence && Equals((Sequence)other); } public override int GetHashCode() { - if (segment == null || segment.Count == 0) + T[] elmts = Elements; + if (elmts == null || elmts.Length == 0) return 0; var hashCode = 0; - for (var i = 0; i < Elements.Count; i++) { - hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(Elements[i]); + for (var i = 0; i < elmts.Length; i++) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(elmts[i]); } return hashCode; } public override string ToString() { - if (segment.Array is char[]) { + if (Elements is char[]) { var s = ""; foreach (var t in Elements) { s += t.ToString(); @@ -916,46 +900,44 @@ public override string ToString() { bool EqualUntil(Sequence other, int n) { T[] elmts = Elements, otherElmts = other.Elements; for (int i = 0; i < n; i++) { - if (!Dafny.Helpers.AreEqual(Elements[i], other.Elements[i])) + if (!object.Equals(elmts[i], otherElmts[i])) return false; } return true; } public bool IsProperPrefixOf(Sequence other) { - int n = segment.Count; - return n < other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n < other.Elements.Length && EqualUntil(other, n); } public bool IsPrefixOf(Sequence other) { - int n = segment.Count; - return n <= other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n <= other.Elements.Length && EqualUntil(other, n); } public Sequence Concat(Sequence other) { - if (segment.Count == 0) + if (Count == 0) return other; - else if (other.segment.Count == 0) + else if (other.Count == 0) return this; - T[] a = new T[segment.Count + other.segment.Count]; - Elements.CopyTo(a, 0); - other.Elements.CopyTo(a, Elements.Count); - return new Sequence(a); + return new ConcatSequence(this, other); } public bool Contains(G g) { if (g == null || g is T) { var t = (T)(object)g; - int n = Elements.Count; + var elmts = Elements; + int n = elmts.Length; for (int i = 0; i < n; i++) { - if (Dafny.Helpers.AreEqual(t, Elements[i])) + if (object.Equals(t, elmts[i])) return true; } } return false; } public Sequence Take(long m) { - if (segment.Count == m) + if (Elements.LongLength == m) return this; - // System.Array.Copy(elmts, a, m); - System.Diagnostics.Debug.Assert(m <= segment.Count); - return new Sequence(new ArraySegment(segment.Array, segment.Offset, (int) m)); + T[] a = new T[m]; + System.Array.Copy(Elements, a, m); + return new ArraySequence(a); } public Sequence Take(ulong n) { return Take((long)n); @@ -966,8 +948,9 @@ public Sequence Take(BigInteger n) { public Sequence Drop(long m) { if (m == 0) return this; - System.Diagnostics.Debug.Assert(m <= segment.Count); - return new Sequence(new ArraySegment(segment.Array, segment.Offset + (int) m, segment.Count - (int) m)); + T[] a = new T[Elements.Length - m]; + System.Array.Copy(Elements, m, a, 0, Elements.Length - m); + return new ArraySequence(a); } public Sequence Drop(ulong n) { return Drop((long)n); @@ -1282,65 +1265,7 @@ public static BigInteger EuclideanModulus(BigInteger a, BigInteger b) { public static Sequence SeqFromArray(T[] array) { return new ArraySequence((T[])array.Clone()); } - - public static Sequence SeqFromArrayPrefix(T[] array, long n) { - T[] ar = new T[n]; - System.Array.Copy(array, 0, ar, 0, n); - return new Sequence(ar); - } - - public static Sequence SeqFromArrayPrefix(T[] array, ulong n) { - return SeqFromArrayPrefix(array, (long)n); - } - - public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { - return SeqFromArrayPrefix(array, (long)n); - } - - public static Sequence SeqFromArraySuffix(T[] array, long n) { - T[] ar = new T[array.Length - n]; - System.Array.Copy(array, n, ar, 0, array.Length - n); - return new Sequence(ar); - } - - public static Sequence SeqFromArraySuffix(T[] array, ulong n) { - return SeqFromArraySuffix(array, (long) n); - } - public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { - return SeqFromArraySuffix(array, (long) n); - } - - public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { - T[] ar = new T[hi - lo]; - System.Array.Copy(array, lo, ar, 0, hi - lo); - return new Sequence(ar); - } - public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, long lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, long hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, long hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - - // In .NET version 4.5, it it possible to mark a method with "AggressiveInlining", which says to inline the + // In .NET version 4.5, it is possible to mark a method with "AggressiveInlining", which says to inline the // method if possible. Method "ExpressionSequence" would be a good candidate for it: // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static U ExpressionSequence(T t, U u) diff --git a/Source/DafnyRuntime/DafnyRuntime.cs b/Source/DafnyRuntime/DafnyRuntime.cs index ab093b5646b..70b124c372a 100755 --- a/Source/DafnyRuntime/DafnyRuntime.cs +++ b/Source/DafnyRuntime/DafnyRuntime.cs @@ -799,14 +799,6 @@ public Set Values { public abstract class Sequence { - private readonly ArraySegment segment; - public Sequence(T[] ee) { - T[] backing = ee; - segment = new ArraySegment(backing); - } - private Sequence(ArraySegment segment_) { - segment = segment_; - } public static Sequence Empty { get { return new ArraySequence(new T[0]); @@ -833,46 +825,37 @@ public static Sequence _DafnyDefaultValue() { return Empty; } public int Count { - get { return segment.Count; } - } - public long LongCount { - get { return segment.Count; } - } - public IList Elements { - get { - return segment; - } + get { return (int)LongCount; } } public abstract long LongCount { get; } public abstract T[] Elements { get; } public IEnumerable UniqueElements { get { - var st = Set.FromCollection((IEnumerable) segment); + var st = Set.FromElements(Elements); return st.Elements; } } public T Select(ulong index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(long index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(uint index) { - return Elements[(int) index]; + return Elements[index]; } public T Select(int index) { return Elements[index]; } public T Select(BigInteger index) { - return Elements[(int) index]; + return Elements[(int)index]; } public Sequence Update(long index, T t) { - T[] dst = new T[segment.Count]; - ((ICollection) segment).CopyTo(dst, 0); - dst[index] = t; - return new Sequence(dst); + T[] a = (T[])Elements.Clone(); + a[index] = t; + return new ArraySequence(a); } public Sequence Update(ulong index, T t) { return Update((long)index, t); @@ -881,23 +864,24 @@ public Sequence Update(BigInteger index, T t) { return Update((long)index, t); } public bool Equals(Sequence other) { - int n = segment.Count; - return n == other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n == other.Elements.Length && EqualUntil(other, n); } public override bool Equals(object other) { return other is Sequence && Equals((Sequence)other); } public override int GetHashCode() { - if (segment == null || segment.Count == 0) + T[] elmts = Elements; + if (elmts == null || elmts.Length == 0) return 0; var hashCode = 0; - for (var i = 0; i < Elements.Count; i++) { - hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(Elements[i]); + for (var i = 0; i < elmts.Length; i++) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ Dafny.Helpers.GetHashCode(elmts[i]); } return hashCode; } public override string ToString() { - if (segment.Array is char[]) { + if (Elements is char[]) { var s = ""; foreach (var t in Elements) { s += t.ToString(); @@ -916,46 +900,44 @@ public override string ToString() { bool EqualUntil(Sequence other, int n) { T[] elmts = Elements, otherElmts = other.Elements; for (int i = 0; i < n; i++) { - if (!Dafny.Helpers.AreEqual(Elements[i], other.Elements[i])) + if (!object.Equals(elmts[i], otherElmts[i])) return false; } return true; } public bool IsProperPrefixOf(Sequence other) { - int n = segment.Count; - return n < other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n < other.Elements.Length && EqualUntil(other, n); } public bool IsPrefixOf(Sequence other) { - int n = segment.Count; - return n <= other.segment.Count && EqualUntil(other, n); + int n = Elements.Length; + return n <= other.Elements.Length && EqualUntil(other, n); } public Sequence Concat(Sequence other) { - if (segment.Count == 0) + if (Count == 0) return other; - else if (other.segment.Count == 0) + else if (other.Count == 0) return this; - T[] a = new T[segment.Count + other.segment.Count]; - Elements.CopyTo(a, 0); - other.Elements.CopyTo(a, Elements.Count); - return new Sequence(a); + return new ConcatSequence(this, other); } public bool Contains(G g) { if (g == null || g is T) { var t = (T)(object)g; - int n = Elements.Count; + var elmts = Elements; + int n = elmts.Length; for (int i = 0; i < n; i++) { - if (Dafny.Helpers.AreEqual(t, Elements[i])) + if (object.Equals(t, elmts[i])) return true; } } return false; } public Sequence Take(long m) { - if (segment.Count == m) + if (Elements.LongLength == m) return this; - // System.Array.Copy(elmts, a, m); - System.Diagnostics.Debug.Assert(m <= segment.Count); - return new Sequence(new ArraySegment(segment.Array, segment.Offset, (int) m)); + T[] a = new T[m]; + System.Array.Copy(Elements, a, m); + return new ArraySequence(a); } public Sequence Take(ulong n) { return Take((long)n); @@ -966,8 +948,9 @@ public Sequence Take(BigInteger n) { public Sequence Drop(long m) { if (m == 0) return this; - System.Diagnostics.Debug.Assert(m <= segment.Count); - return new Sequence(new ArraySegment(segment.Array, segment.Offset + (int) m, segment.Count - (int) m)); + T[] a = new T[Elements.Length - m]; + System.Array.Copy(Elements, m, a, 0, Elements.Length - m); + return new ArraySequence(a); } public Sequence Drop(ulong n) { return Drop((long)n); @@ -1282,65 +1265,7 @@ public static BigInteger EuclideanModulus(BigInteger a, BigInteger b) { public static Sequence SeqFromArray(T[] array) { return new ArraySequence((T[])array.Clone()); } - - public static Sequence SeqFromArrayPrefix(T[] array, long n) { - T[] ar = new T[n]; - System.Array.Copy(array, 0, ar, 0, n); - return new Sequence(ar); - } - - public static Sequence SeqFromArrayPrefix(T[] array, ulong n) { - return SeqFromArrayPrefix(array, (long)n); - } - - public static Sequence SeqFromArrayPrefix(T[] array, BigInteger n) { - return SeqFromArrayPrefix(array, (long)n); - } - - public static Sequence SeqFromArraySuffix(T[] array, long n) { - T[] ar = new T[array.Length - n]; - System.Array.Copy(array, n, ar, 0, array.Length - n); - return new Sequence(ar); - } - - public static Sequence SeqFromArraySuffix(T[] array, ulong n) { - return SeqFromArraySuffix(array, (long) n); - } - public static Sequence SeqFromArraySuffix(T[] array, BigInteger n) { - return SeqFromArraySuffix(array, (long) n); - } - - public static Sequence SeqFromArraySlice(T[] array, long lo, long hi) { - T[] ar = new T[hi - lo]; - System.Array.Copy(array, lo, ar, 0, hi - lo); - return new Sequence(ar); - } - public static Sequence SeqFromArraySlice(T[] array, long lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, long lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, long hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, ulong lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, long hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, ulong hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - public static Sequence SeqFromArraySlice(T[] array, BigInteger lo, BigInteger hi) { - return SeqFromArraySlice(array, (long)lo, (long)hi); - } - - // In .NET version 4.5, it it possible to mark a method with "AggressiveInlining", which says to inline the + // In .NET version 4.5, it is possible to mark a method with "AggressiveInlining", which says to inline the // method if possible. Method "ExpressionSequence" would be a good candidate for it: // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static U ExpressionSequence(T t, U u) From 22d63feed0c363935b0b5c38f4122837443f8668 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 20 Feb 2020 15:23:38 -0500 Subject: [PATCH 179/573] Restore compilation of Dafny itself --- Source/Dafny/Compiler-cpp.cs | 11 +++++---- Source/Dafny/Compiler-java.cs | 12 +++++----- Source/Dafny/Compiler.cs | 4 ++-- Source/Dafny/DafnyOptions.cs | 1 - Source/DafnyDriver/DafnyDriver.cs | 40 +------------------------------ 5 files changed, 16 insertions(+), 52 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0ffa631a593..be190542814 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -345,7 +345,7 @@ protected string DatatypeSubStructName(DatatypeCtor ctor, bool inclTemplateArgs return String.Format("{0}_{1}{2}", IdProtect(ctor.EnclosingDatatype.CompileName), ctor.CompileName, args); } - protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { + protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { // Given: // datatype Example1 = Example1(u:uint32, b:bool) // datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) @@ -386,7 +386,7 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { if (dt is TupleTypeDecl) { // Tuple types are declared once and for all in DafnyRuntime.h - return; + return null; } this.datatypeDecls.Add(dt); @@ -674,9 +674,11 @@ protected override void DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { owr2.WriteLine("return h;"); } } + + return null; } - protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { + protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { @@ -716,6 +718,8 @@ protected override void DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { var d = TypeInitializationValue(udt, wr, nt.tok, false); wDefault.WriteLine("return {0};", d); } + + return cw; } protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { @@ -2458,7 +2462,6 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, callString = "IsProperSupersetOf"; break; case BinaryExpr.ResolvedOpcode.Disjoint: case BinaryExpr.ResolvedOpcode.MultiSetDisjoint: - case BinaryExpr.ResolvedOpcode.MapDisjoint: callString = "IsDisjointFrom"; break; case BinaryExpr.ResolvedOpcode.InSet: case BinaryExpr.ResolvedOpcode.InMultiSet: diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 7515f641d77..c8823095e65 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -275,11 +275,11 @@ private void AddImport(Import import){ } protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr){ - ClassWriter cw = CreateClass(IdName(sst), sst.TypeArgs, wr) as ClassWriter; + ClassWriter cw = CreateClass(sst.Module.CompileName, IdName(sst), sst.TypeArgs, wr) as ClassWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled){ var sw = new TargetWriter(cw.InstanceMemberWriter.IndentLevel, true); TrExpr(sst.Witness, sw, false); - cw.DeclareField("Witness", true, true, sst.Rhs, sst.tok, sst.Rhs.AsBitVectorType != null ? $"new {TypeName(sst.Witness.Type, sw, sst.tok)}({sw})" : sw.ToString()); + cw.DeclareField("Witness", sst.TypeArgs, true, true, sst.Rhs, sst.tok, sst.Rhs.AsBitVectorType != null ? $"new {TypeName(sst.Witness.Type, sw, sst.tok)}({sw})" : sw.ToString()); } } @@ -319,7 +319,7 @@ public BlockTargetWriter CreateConstructor(TopLevelDeclWithMembers c, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { Compiler.DeclareField(name, isStatic, isConst, type, tok, rhs, this); } public TextWriter/*?*/ ErrorWriter() => InstanceMemberWriter; @@ -750,7 +750,7 @@ protected string TypeName_UDT(string fullCompileName, List inArgs, Type ou // } // } // - protected override IClassWriter CreateClass(string name, bool isExtern, string /*?*/ fullPrintName, + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string /*?*/ fullPrintName, List /*?*/ typeParameters, List /*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { var javaName = isExtern ? FormatExternBaseClassName(name) : name; var filename = $"{ModulePath}/{javaName}.java"; @@ -2852,7 +2852,7 @@ protected override void EmitAbsurd(string message, TargetWriter wr, bool needIte } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr){ - var cw = CreateClass(IdName(nt), null, wr) as ClassWriter; + var cw = CreateClass(nt.Module.CompileName, IdName(nt), null, wr) as ClassWriter; var w = cw.StaticMemberWriter; if (nt.NativeType != null) { var nativeType = GetNativeTypeName(nt.NativeType); @@ -2868,7 +2868,7 @@ protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr){ var witness = new TargetWriter(w.IndentLevel, true); TrExpr(nt.Witness, witness, false); if (nt.NativeType == null) { - cw.DeclareField("Witness", true, true, nt.BaseType, nt.tok, witness.ToString()); + cw.DeclareField("Witness", nt.TypeArgs, true, true, nt.BaseType, nt.tok, witness.ToString()); } else { var nativeType = GetNativeTypeName(nt.NativeType); w.Write("public static {0} Witness = new {0}(", nativeType); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 8938046befd..f1a6bc08979 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -997,9 +997,9 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { var w = new TargetWriter(); TrExpr(cf.Rhs, w, false); var rhs = w.ToString(); - classWriter.DeclareField(f.CompileName, false, true, f.Type, f.tok, rhs); + classWriter.DeclareField(f.CompileName, c.TypeArgs, false, true, f.Type, f.tok, rhs); } else { - classWriter.DeclareField(f.CompileName, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); + classWriter.DeclareField(f.CompileName, c.TypeArgs, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true)); } if (!FieldsInTraits) { // Create getters and setters for "traits" in languages that don't allow for non-final field declarations. diff --git a/Source/Dafny/DafnyOptions.cs b/Source/Dafny/DafnyOptions.cs index d90ea00e2e4..badc88f2621 100644 --- a/Source/Dafny/DafnyOptions.cs +++ b/Source/Dafny/DafnyOptions.cs @@ -64,7 +64,6 @@ public enum PrintModes { Everything, DllEmbed, NoIncludes, NoGhost }; public bool Compile = true; [Flags] public enum CompilationTarget { Csharp = 1, JavaScript = 2, Go = 4, Java = 8, Cpp = 16, Php = 32 } - public enum CompilationTarget { Csharp = 1, JavaScript = 2, Go = 4, Cpp = 8 } public CompilationTarget CompileTarget = CompilationTarget.Csharp; public bool CompileVerbose = true; public string DafnyPrintCompiledFile = null; diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 4244be73894..4763323ce6a 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -173,39 +173,6 @@ public static ExitValue ProcessCommandLineArguments(string[] args, out List Date: Thu, 20 Feb 2020 15:31:10 -0500 Subject: [PATCH 180/573] Fix a bug in file processing due to a change in the way the logic now flows --- Source/DafnyDriver/DafnyDriver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 4763323ce6a..218c30004e3 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -153,7 +153,7 @@ public static ExitValue ProcessCommandLineArguments(string[] args, out List Date: Thu, 20 Feb 2020 22:27:47 -0500 Subject: [PATCH 181/573] Add an attribute compileName for a user-supplied name. This allows for stable naming of, say, modules, so that external code can reliably name them. --- Source/Dafny/DafnyAst.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index abe82908807..a0bd9e3ee5e 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -3548,8 +3548,11 @@ public string CompileName { get { if (compileName == null) { var externArgs = DafnyOptions.O.DisallowExterns ? null : Attributes.FindExpressions(this.Attributes, "extern"); + var compileNameArgs = Attributes.FindExpressions(this.Attributes, "compileName"); if (externArgs != null && 1 <= externArgs.Count && externArgs[0] is StringLiteralExpr) { compileName = (string)((StringLiteralExpr)externArgs[0]).Value; + } else if (compileNameArgs != null && 1 <= compileNameArgs.Count && compileNameArgs[0] is StringLiteralExpr) { + compileName = (string)((StringLiteralExpr)compileNameArgs[0]).Value; } else if (IsBuiltinName || externArgs != null) { compileName = Name; } else { From 2a18438c196c81f101fc0d7cf292440570bad855 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 21 Feb 2020 14:32:09 -0500 Subject: [PATCH 182/573] One approach to linearity --- linear-notes/yi-examples-linear.txt | 60 +++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 linear-notes/yi-examples-linear.txt diff --git a/linear-notes/yi-examples-linear.txt b/linear-notes/yi-examples-linear.txt new file mode 100644 index 00000000000..a032b3c3928 --- /dev/null +++ b/linear-notes/yi-examples-linear.txt @@ -0,0 +1,60 @@ +datatype table = table(legs: int) + +function method TableSetLegs(linear t:table, num:int) : linear table + ensures TableSetLegs(t).legs == num + +function method set_leg_const(linear t: table) : linear table +{ + TableSetLegs(t, 4) + // Sugar: t.(legs := 4) +} + +function method add_leg(linear t: table) : linear table +{ + TableSetLegs(t, t.legs + 1) // Is the double use of t allowed here? + // Sugar: t.(legs := t.legs + 1) +} + +datatype room = room(linear big_table: table, linear small_table: table) + +function method RoomGetBigTable(linear r:room) : (linear r':room, linear t:table) + requires r.has_big_table + ensures t == r.big_table + ensures r' == r.(has_big_table := false) + +function method RoomGetSmallTable(linear r:room) : (linear r':room, linear t:table) + requires r.has_small_table + ensures t == r.small_table + ensures r' == r.(has_small_table := false) + +function method RoomSetBigTable(linear r:room, linear t:table) : (linear r':room) + requires !r.has_big_table + ensures r' == r.(has_big_table := true).(big_table := t); + +function method add_leg_big_table(linear r: room) : linear room +{ + var r', big := RoomGetBigTable(r); + var big' := add_leg(big); + RoomSetBigTable(r', big') + // Sugar: r.(big_table := add_leg(r.big_table)) +} + +// This should fail: +function method add_leg_big_table_bad(linear r: room) : linear room +{ + var r', small := RoomGetSmallTable(r); + var small' := add_leg(small); + RoomSetBigTable(r', small') // Failed precondition: !r'.has_big_table + // Sugar: r.(big_table := add_leg(r.small_table)) +} + +function method add_leg_first_table_okay(linear ts: lseq
) : lseq
+ requires |ts| > 1; + requires lHas(ts)[0]; +{ + var ts', t := LSeqGet(ts, 0); + var t' := add_leg(t); + LSeqUpdate(ts', 0, t') + // Sugar: ts[0 := add_leg(ts[0])] +} + From 115edea85e66bd944ef4cb3959a46c1007209ae3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 12 Mar 2020 10:32:29 -0400 Subject: [PATCH 183/573] Revert "Add an attribute compileName for a user-supplied name. This allows for" This reverts commit d15a6c8d1bdd7c663a5869a75687773c889926a7. --- Source/Dafny/DafnyAst.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index a0bd9e3ee5e..abe82908807 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -3548,11 +3548,8 @@ public string CompileName { get { if (compileName == null) { var externArgs = DafnyOptions.O.DisallowExterns ? null : Attributes.FindExpressions(this.Attributes, "extern"); - var compileNameArgs = Attributes.FindExpressions(this.Attributes, "compileName"); if (externArgs != null && 1 <= externArgs.Count && externArgs[0] is StringLiteralExpr) { compileName = (string)((StringLiteralExpr)externArgs[0]).Value; - } else if (compileNameArgs != null && 1 <= compileNameArgs.Count && compileNameArgs[0] is StringLiteralExpr) { - compileName = (string)((StringLiteralExpr)compileNameArgs[0]).Value; } else if (IsBuiltinName || externArgs != null) { compileName = Name; } else { From d63cc8ccb7dcdc1aadf15d5cb94d330b4d68f91a Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 16 Mar 2020 19:55:13 -0700 Subject: [PATCH 184/573] Some initial support for linear variables, with basic linearity checking for some expressions and statements --- Source/Dafny/Cloner.cs | 10 +- Source/Dafny/Dafny.atg | 115 ++- Source/Dafny/DafnyAst.cs | 98 +- Source/Dafny/Parser.cs | 1742 ++++++++++++++++---------------- Source/Dafny/Resolver.cs | 198 +++- Source/Dafny/Rewriter.cs | 2 +- Source/Dafny/Scanner.cs | 193 ++-- Source/Dafny/Translator.cs | 12 +- Test/linear/Linear0.dfy | 123 +++ Test/linear/Linear0.dfy.expect | 19 + 10 files changed, 1427 insertions(+), 1085 deletions(-) create mode 100644 Test/linear/Linear0.dfy create mode 100644 Test/linear/Linear0.dfy.expect diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 5d7fb473ffb..b8c5e028c8e 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -200,7 +200,7 @@ public virtual Type CloneType(Type t) { } public Formal CloneFormal(Formal formal) { - Formal f = new Formal(Tok(formal.tok), formal.Name, CloneType(formal.Type), formal.InParam, formal.IsGhost, formal.IsOld); + Formal f = new Formal(Tok(formal.tok), formal.Name, CloneType(formal.Type), formal.InParam, formal.Usage, formal.IsOld); //if (f.Type is UserDefinedType && formal.Type is UserDefinedType) // ((UserDefinedType)f.Type).ResolvedClass = ((UserDefinedType)(formal.Type)).ResolvedClass; return f; @@ -208,7 +208,7 @@ public Formal CloneFormal(Formal formal) { public virtual BoundVar CloneBoundVar(BoundVar bv) { var bvNew = new BoundVar(Tok(bv.tok), bv.Name, CloneType(bv.SyntacticType)); - bvNew.IsGhost = bv.IsGhost; + bvNew.Usage = bv.Usage; return bvNew; } @@ -220,7 +220,7 @@ public VT CloneIVariable(VT v) where VT: IVariable { iv = CloneBoundVar((BoundVar)iv); } else if (iv is LocalVariable) { var local = (LocalVariable)iv; - iv = new LocalVariable(Tok(local.Tok), Tok(local.EndTok), local.Name, CloneType(local.OptionalType), local.IsGhost); + iv = new LocalVariable(Tok(local.Tok), Tok(local.EndTok), local.Name, CloneType(local.OptionalType), local.Usage); } else { Contract.Assume(false); // unexpected IVariable iv = null; // please compiler @@ -631,7 +631,7 @@ public virtual Statement CloneStmt(Statement stmt) { } else if (stmt is VarDeclStmt) { var s = (VarDeclStmt)stmt; - var lhss = s.Locals.ConvertAll(c => new LocalVariable(Tok(c.Tok), Tok(c.EndTok), c.Name, CloneType(c.OptionalType), c.IsGhost)); + var lhss = s.Locals.ConvertAll(c => new LocalVariable(Tok(c.Tok), Tok(c.EndTok), c.Name, CloneType(c.OptionalType), c.Usage)); r = new VarDeclStmt(Tok(s.Tok), Tok(s.EndTok), lhss, (ConcreteUpdateStatement)CloneStmt(s.Update)); } else if (stmt is LetStmt) { @@ -1337,7 +1337,7 @@ public override CasePattern CloneCasePattern(CasePattern pat) { public override BoundVar CloneBoundVar(BoundVar bv) { // The difference here from the overridden method is that we do CloneType(bv.Type) instead of CloneType(bv.SyntacticType) var bvNew = new BoundVar(Tok(bv.tok), bv.Name, CloneType(bv.Type)); - bvNew.IsGhost = bv.IsGhost; + bvNew.Usage = bv.Usage; return bvNew; } } diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 3219b161d27..0cc8ad7e144 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -36,8 +36,8 @@ int anonymousIds = 0; struct DeclModifierData { public bool IsAbstract; public IToken AbstractToken; - public bool IsGhost; - public IToken GhostToken; + public Usage Usage; + public IToken UsageToken; public bool IsStatic; public IToken StaticToken; public bool IsProtected; @@ -82,13 +82,13 @@ void CheckDeclModifiers(DeclModifierData dmod, string declCaption, AllowedDeclMo SemErr(dmod.AbstractToken, declCaption + " cannot be declared 'abstract'."); dmod.IsAbstract = false; } - if (dmod.IsGhost) { + if (dmod.Usage != Usage.Ordinary) { if ((allowed & AllowedDeclModifiers.AlreadyGhost) != 0) { - SemErr(dmod.GhostToken, declCaption + " cannot be declared ghost (they are 'ghost' by default)."); - dmod.IsGhost = false; + SemErr(dmod.UsageToken, declCaption + " cannot be declared ghost (they are 'ghost' by default)."); + dmod.Usage = Usage.Ordinary; } else if ((allowed & AllowedDeclModifiers.Ghost) == 0) { - SemErr(dmod.GhostToken, declCaption + " cannot be declared 'ghost'."); - dmod.IsGhost = false; + SemErr(dmod.UsageToken, declCaption + " cannot be declared 'ghost'."); + dmod.Usage = Usage.Ordinary; } } if (dmod.IsStatic && ((allowed & AllowedDeclModifiers.Static) == 0)) { @@ -209,7 +209,7 @@ bool IsAlternative() { bool FollowedByColon() { IToken x = la; - while (x.kind == _ident || x.kind == _openparen) + while (x.kind == _ident || x.kind == _openparen || x.kind == _linear) x = scanner.Peek(); return x.kind == _colon; } @@ -772,6 +772,9 @@ TOKENS requires = "requires". ensures = "ensures". ghost = "ghost". + linear = "linear". + shared = "shared". + inout = "inout". witness = "witness". lbrace = '{'. rbrace = '}'. @@ -834,7 +837,7 @@ Dafny DeclModifier = ( "abstract" (. dmod.IsAbstract = true; CheckAndSetToken(ref dmod.AbstractToken); .) - | "ghost" (. dmod.IsGhost = true; CheckAndSetToken(ref dmod.GhostToken); .) + | "ghost" (. dmod.Usage = Usage.Ghost; CheckAndSetToken(ref dmod.UsageToken); .) | "static" (. dmod.IsStatic = true; CheckAndSetToken(ref dmod.StaticToken); .) | "protected" (. dmod.IsProtected = true; CheckAndSetToken(ref dmod.ProtectedToken); .) ) @@ -1136,8 +1139,8 @@ FieldDecl<.DeclModifierData dmod, List/*!*/ mm.> SYNC "var" { Attribute } - FIdentType (. mm.Add(new Field(id, id.val, dmod.IsGhost, ty, attrs)); .) - { "," FIdentType (. mm.Add(new Field(id, id.val, dmod.IsGhost, ty, attrs)); .) + FIdentType (. mm.Add(new Field(id, id.val, dmod.Usage == Usage.Ghost, ty, attrs)); .) + { "," FIdentType (. mm.Add(new Field(id, id.val, dmod.Usage == Usage.Ghost, ty, attrs)); .) } OldSemi . @@ -1160,7 +1163,7 @@ ConstantFieldDecl<.DeclModifierData dmod, List/*!*/ mm, bool mo (. if (e == null && ty is InferredTypeProxy) { SemErr(id, "a const declaration must have a type or a RHS value"); } - mm.Add(new ConstantField(id, id.val, e, dmod.IsStatic, dmod.IsGhost, ty, attrs)); + mm.Add(new ConstantField(id, id.val, e, dmod.IsStatic, dmod.Usage == Usage.Ghost, ty, attrs)); .) OldSemi . @@ -1249,12 +1252,15 @@ OtherTypeDecl -/* isGhost always returns as false if allowGhostKeyword is false */ +GIdentType +/* usage always returns Ordinary if allowGhostKeyword is false */ = (. Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); - isGhost = false; isOld = allowNewKeyword; .) - { "ghost" (. if (allowGhostKeyword) { isGhost = true; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } .) + usage = Usage.Ordinary; isOld = allowNewKeyword; .) + { "ghost" (. if (allowGhostKeyword) { usage = Usage.Ghost; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } .) + | "shared" (. if (allowGhostKeyword) { usage = Usage.Shared; } else { SemErr(t, "formal cannot be declared 'shared' in this context"); } .) + | "inout" (. if (allowGhostKeyword) { usage = Usage.Inout; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } .) + | "linear" (. if (allowLinearKeyword) { usage = Usage.Linear; } else { SemErr(t, "formal cannot be declared 'linear' in this context"); } .) | "new" (. if (allowNewKeyword) { isOld = false; } else { SemErr(t, "formal cannot be declared 'new' in this context"); } .) } IdentType @@ -1287,13 +1293,13 @@ IdentType ":" Type . -LocalIdentTypeOptional +LocalIdentTypeOptional = (. IToken id; Type ty; Type optType = null; .) WildIdent [ ":" Type (. optType = ty; .) ] - (. var = new LocalVariable(id, id, id.val, optType == null ? new InferredTypeProxy() : optType, isGhost); .) + (. var = new LocalVariable(id, id, id.val, optType == null ? new InferredTypeProxy() : optType, usage); .) . IdentTypeOptional = (. Contract.Ensures(Contract.ValueAtReturn(out var) != null); @@ -1304,12 +1310,13 @@ IdentTypeOptional ] (. var = new BoundVar(id, id.val, optType == null ? new InferredTypeProxy() : optType); .) . -TypeIdentOptional +TypeIdentOptional = (.Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); Contract.Ensures(Contract.ValueAtReturn(out identName)!=null); - string name = null; id = Token.NoToken; ty = new BoolType()/*dummy*/; isGhost = false; .) - [ "ghost" (. isGhost = true; .) + string name = null; id = Token.NoToken; ty = new BoolType()/*dummy*/; usage = Usage.Ordinary; .) + [ "ghost" (. usage = Usage.Ghost; .) + | "linear" (. usage = Usage.Linear; .) ] ( TypeAndToken [ ":" @@ -1515,7 +1522,7 @@ MethodDecl ] [ KType (. if (!(isCoLemma || isIndLemma)) { SemErr(t, "type of _k can only be specified for inductive lemmas and co-lemmas"); } .) ] - (. var isCompilable = (isPlainOlMethod && !dmod.IsGhost) || isConstructor; .) + (. var isCompilable = (isPlainOlMethod && dmod.Usage == Usage.Ordinary) || isConstructor; .) Formals [ "returns" (. if (isConstructor) { SemErr(t, "constructors cannot have out-parameters"); } .) Formals @@ -1552,7 +1559,7 @@ MethodDecl(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } else { - m = new Method(tok, id.val, dmod.IsStatic, dmod.IsGhost, typeArgs, ins, outs, + m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage == Usage.Ghost, typeArgs, ins, outs, req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } m.BodyStartTok = bodyStart; @@ -1648,25 +1655,25 @@ Formals<.bool incoming, bool allowGhostKeyword, bool allowNewKeyword, List - (. formals.Add(new Formal(id, id.val, ty, incoming, isGhost, isOld)); .) - { "," GIdentType - (. formals.Add(new Formal(id, id.val, ty, incoming, isGhost, isOld)); .) + GIdentType + (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); .) + { "," GIdentType + (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); .) } ] ")" . FormalsOptionalIds<.List/*!*/ formals.> -= (. Contract.Requires(cce.NonNullElements(formals)); IToken/*!*/ id; Type/*!*/ ty; string/*!*/ name; bool isGhost; .) += (. Contract.Requires(cce.NonNullElements(formals)); IToken/*!*/ id; Type/*!*/ ty; string/*!*/ name; Usage usage; .) "(" [ - TypeIdentOptional (. formals.Add(new Formal(id, name, ty, true, isGhost)); .) - { "," TypeIdentOptional (. formals.Add(new Formal(id, name, ty, true, isGhost)); .) + TypeIdentOptional (. formals.Add(new Formal(id, name, ty, true, usage)); .) + { "," TypeIdentOptional (. formals.Add(new Formal(id, name, ty, true, usage)); .) } ] ")" @@ -1872,15 +1879,17 @@ FunctionDecl - (. Contract.Assert(!isGhost && !isOld); - result = new Formal(resultId, resultId.val, ty, false, false, false); + GIdentType + (. Contract.Assert(usage != Usage.Ghost && !isOld); + result = new Formal(resultId, resultId.val, ty, false, usage, false); .) ")" | Type + | "linear" Type + (. result = new Formal(Token.NoToken, "return", returnType, false, Usage.Linear, false); .) ) | "..." (. signatureEllipsis = t; .) ) @@ -2277,7 +2286,7 @@ NewArray<. out List ee, out Expression arrayElementInit, out List -= (. IToken x = null, assignTok = null; bool isGhost = false; += (. IToken x = null, assignTok = null; Usage usage = Usage.Ordinary; LocalVariable d; AssignmentRhs r; List lhss = new List(); @@ -2288,15 +2297,16 @@ VarDeclStatement<.out Statement/*!*/ s.> IToken endTok; s = dummyStmt; .) - [ "ghost" (. isGhost = true; x = t; .) + [ "ghost" (. usage = Usage.Ghost; x = t; .) + | "linear" (. usage = Usage.Linear; x = t; .) ] - "var" (. if (!isGhost) { x = t; } .) + "var" (. if (usage == Usage.Ordinary) { x = t; } .) ( IF(!IsLetStmt()) { Attribute } - LocalIdentTypeOptional (. lhss.Add(d); d.Attributes = attrs; attrs = null; .) + LocalIdentTypeOptional (. lhss.Add(d); d.Attributes = attrs; attrs = null; .) { "," { Attribute } - LocalIdentTypeOptional (. lhss.Add(d); d.Attributes = attrs; attrs = null; .) + LocalIdentTypeOptional (. lhss.Add(d); d.Attributes = attrs; attrs = null; .) } [ ":=" (. assignTok = t; .) Rhs (. rhss.Add(r); .) @@ -2332,7 +2342,7 @@ VarDeclStatement<.out Statement/*!*/ s.> Expression e = dummyExpr; IToken id = t; .) - CasePatternLocal + CasePatternLocal ( ":=" | { Attribute } ":|" (. SemErr(pat.tok, "LHS of assign-such-that expression must be variables, not general patterns"); .) @@ -3458,7 +3468,7 @@ StmtInExpr LetExpr = (. IToken x = null; - bool isGhost = false; + Usage usage = Usage.Ordinary; var letLHSs = new List>(); var letRHSs = new List(); CasePattern pat; @@ -3466,13 +3476,14 @@ LetExpr (. if (isGhost) { pat.Vars.Iter(bv => bv.IsGhost = true); } + "var" (. if (usage == Usage.Ordinary) { x = t; } .) + CasePattern (. pat.Vars.Iter(bv => bv.Usage = usage); letLHSs.Add(pat); .) - { "," CasePattern (. if (isGhost) { pat.Vars.Iter(bv => bv.IsGhost = true); } + { "," CasePattern (. pat.Vars.Iter(bv => bv.Usage = usage); letLHSs.Add(pat); .) } @@ -3589,7 +3600,7 @@ CasePattern<.out CasePattern pat.> /* CasePatternLocal is identical to CasePattern, except that it uses LocalVariable instead of BoundVar. Coco does * not have a way to make the patterns take a bounded type parameter. */ -CasePatternLocal<.out CasePattern pat, bool isGhost.> +CasePatternLocal<.out CasePattern pat, Usage usage.> = (. IToken id; List> arguments; LocalVariable local; pat = null; @@ -3597,16 +3608,16 @@ CasePatternLocal<.out CasePattern pat, bool isGhost.> ( IF(IsIdentParen()) Ident "(" (. arguments = new List>(); .) - [ CasePatternLocal (. arguments.Add(pat); .) - { "," CasePatternLocal (. arguments.Add(pat); .) + [ CasePatternLocal (. arguments.Add(pat); .) + { "," CasePatternLocal (. arguments.Add(pat); .) } ] ")" (. pat = new CasePattern(id, id.val, arguments); .) | "(" (. id = t; arguments = new List>(); .) - [ CasePatternLocal (. arguments.Add(pat); .) - { "," CasePatternLocal (. arguments.Add(pat); .) + [ CasePatternLocal (. arguments.Add(pat); .) + { "," CasePatternLocal (. arguments.Add(pat); .) } ] ")" (. // Parse parenthesis without an identifier as a built in tuple type. @@ -3614,7 +3625,7 @@ CasePatternLocal<.out CasePattern pat, bool isGhost.> string ctor = BuiltIns.TupleTypeCtorNamePrefix + arguments.Count; //use the TupleTypeCtors pat = new CasePattern(id, ctor, arguments); .) - | LocalIdentTypeOptional + | LocalIdentTypeOptional (. // This could be a LocalVariable of a parameter-less constructor and we may not know until resolution. // Nevertheless, we do put the local" into the CasePattern here (even though it will get thrown out // later if resolution finds the CasePattern to denote a parameter-less constructor), because this diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index d491239082e..7800dfc70bc 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -208,7 +208,7 @@ public void CreateArrowTypeDecl(int arity) { new TypeParameter(tok, "T" + x, TypeParameter.TPVarianceSyntax.Contravariance) : new TypeParameter(tok, "R", TypeParameter.TPVarianceSyntax.Covariant_Strict)); var tys = tps.ConvertAll(tp => (Type)(new UserDefinedType(tp))); - var args = Util.Map(Enumerable.Range(0, arity), i => new Formal(tok, "x" + i, tys[i], true, false)); + var args = Util.Map(Enumerable.Range(0, arity), i => new Formal(tok, "x" + i, tys[i], true, Usage.Ordinary)); var argExprs = args.ConvertAll(a => (Expression)new IdentifierExpr(tok, a.Name) { Var = a, Type = a.Type }); var readsIS = new FunctionCallExpr(tok, "reads", new ImplicitThisExpr(tok), tok, argExprs) { @@ -4020,7 +4020,7 @@ private static List CreateConstructors(List typeArg var formals = new List(); for (int i = 0; i < typeArgs.Count; i++) { var tp = typeArgs[i]; - var f = new Formal(Token.NoToken, i.ToString(), new UserDefinedType(Token.NoToken, tp), true, false); + var f = new Formal(Token.NoToken, i.ToString(), new UserDefinedType(Token.NoToken, tp), true, Usage.Ordinary); formals.Add(f); } var ctor = new DatatypeCtor(Token.NoToken, BuiltIns.TupleTypeCtorNamePrefix + typeArgs.Count, formals, null); @@ -4266,7 +4266,7 @@ public IteratorDecl(IToken tok, string name, ModuleDefinition module, List(); DecreasesFields = new List(); - YieldCountVariable = new LocalVariable(tok, tok, "_yieldCount", new EverIncreasingType(), true); + YieldCountVariable = new LocalVariable(tok, tok, "_yieldCount", new EverIncreasingType(), Usage.Ghost); YieldCountVariable.type = YieldCountVariable.OptionalType; // resolve YieldCountVariable here } @@ -4365,6 +4365,14 @@ public bool AllowsNontermination { } } + public enum Usage { + Ordinary, + Shared, + Linear, + Inout, + Ghost, + } + public abstract class MemberDecl : Declaration { public abstract string WhatKind { get; } public readonly bool HasStaticKeyword; @@ -4373,8 +4381,8 @@ public virtual bool IsStatic { return HasStaticKeyword || (EnclosingClass is ClassDecl && ((ClassDecl)EnclosingClass).IsDefaultClass); } } - protected readonly bool isGhost; - public bool IsGhost { get { return isGhost; } } + protected readonly Usage usage; + public bool IsGhost { get { return usage == Usage.Ghost; } } public bool IsInstanceIndependentConstant { get { var cf = this as ConstantField; @@ -4389,7 +4397,7 @@ public MemberDecl(IToken tok, string name, bool hasStaticKeyword, bool isGhost, Contract.Requires(tok != null); Contract.Requires(name != null); HasStaticKeyword = hasStaticKeyword; - this.isGhost = isGhost; + this.usage = isGhost ? Usage.Ghost : Usage.Ordinary; } /// /// Returns className+"."+memberName. Available only after resolution. @@ -4662,7 +4670,7 @@ public override bool CanBeRevealed() { } // - public new bool IsGhost { get { return this.isGhost; } } + public new bool IsGhost { get { return this.usage == Usage.Ghost; } } public List TypeArgs { get { return new List(); } } public List Ins { get { return new List(); } } public ModuleDefinition EnclosingModule { get { return this.EnclosingClass.Module; } } @@ -5081,6 +5089,12 @@ bool IsMutable { bool IsGhost { get; } + bool IsLinear { + get; + } + bool IsShared { + get; + } IToken Tok { get; } @@ -5138,6 +5152,16 @@ public bool IsGhost { throw new NotImplementedException(); } } + public bool IsLinear { + get { + throw new NotImplementedException(); + } + } + public bool IsShared { + get { + throw new NotImplementedException(); + } + } public IToken Tok { get { Contract.Ensures(Contract.Result() != null); @@ -5251,13 +5275,28 @@ Type IVariable.OptionalType { public abstract bool IsMutable { get; } - bool isGhost; // readonly after resolution - public bool IsGhost { + Usage usage; // readonly after resolution + public Usage Usage { get { - return isGhost; + return usage; } set { - isGhost = value; + usage = value; + } + } + public bool IsGhost { + get { + return Usage == Usage.Ghost; + } + } + public bool IsLinear { + get { + return Usage == Usage.Linear; + } + } + public bool IsShared { + get { + return Usage == Usage.Shared; } } public IToken Tok { @@ -5266,14 +5305,14 @@ public IToken Tok { } } - public NonglobalVariable(IToken tok, string name, Type type, bool isGhost) { + public NonglobalVariable(IToken tok, string name, Type type, Usage usage) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(type != null); this.tok = tok; this.name = name; this.type = type; - this.isGhost = isGhost; + this.usage = usage; } } @@ -5286,8 +5325,8 @@ public override bool IsMutable { } public readonly bool IsOld; - public Formal(IToken tok, string name, Type type, bool inParam, bool isGhost, bool isOld = false) - : base(tok, name, type, isGhost) { + public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, bool isOld = false) + : base(tok, name, type, usage) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(type != null); @@ -5317,7 +5356,7 @@ public override string CompileName { public class ImplicitFormal : Formal { public ImplicitFormal(IToken tok, string name, Type type, bool inParam, bool isGhost) - : base(tok, name, type, inParam, isGhost) { + : base(tok, name, type, inParam, isGhost ? Usage.Ghost : Usage.Ordinary) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(type != null); @@ -5333,7 +5372,7 @@ public override bool IsMutable { } public BoundVar(IToken tok, string name, Type type) - : base(tok, name, type, false) { + : base(tok, name, type, Usage.Ordinary) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(type != null); @@ -6794,14 +6833,14 @@ public class LocalVariable : IVariable, IAttributeBearingDeclaration { public readonly IToken EndTok; // typically a terminating semi-colon or end-curly-brace readonly string name; public Attributes Attributes; - public bool IsGhost; + public Usage Usage; [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(name != null); Contract.Invariant(OptionalType != null); } - public LocalVariable(IToken tok, IToken endTok, string name, Type type, bool isGhost) { + public LocalVariable(IToken tok, IToken endTok, string name, Type type, Usage usage) { Contract.Requires(tok != null); Contract.Requires(endTok != null); Contract.Requires(name != null); @@ -6814,7 +6853,7 @@ public LocalVariable(IToken tok, IToken endTok, string name, Type type, bool isG if (type is InferredTypeProxy) { ((InferredTypeProxy)type).KeepConstraints = true; } - this.IsGhost = isGhost; + this.Usage = usage; } public string Name { @@ -6880,16 +6919,31 @@ public bool IsMutable { return true; } } + public bool IsGhost { + get { + return this.Usage == Usage.Ghost; + } + } bool IVariable.IsGhost { get { - return this.IsGhost; + return this.Usage == Usage.Ghost; + } + } + bool IVariable.IsLinear { + get { + return false; + } + } + bool IVariable.IsShared { + get { + return false; } } /// /// This method retrospectively makes the LocalVariable a ghost. It is to be used only during resolution. /// public void MakeGhost() { - this.IsGhost = true; + this.Usage = Usage.Ghost; } IToken IVariable.Tok { get { diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index 6428ac4bc00..e43ab757b3d 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -92,23 +92,26 @@ public class Parser { public const int _requires = 70; public const int _ensures = 71; public const int _ghost = 72; - public const int _witness = 73; - public const int _lbrace = 74; - public const int _rbrace = 75; - public const int _lbracket = 76; - public const int _rbracket = 77; - public const int _openparen = 78; - public const int _closeparen = 79; - public const int _openAngleBracket = 80; - public const int _closeAngleBracket = 81; - public const int _eq = 82; - public const int _neq = 83; - public const int _neqAlt = 84; - public const int _star = 85; - public const int _notIn = 86; - public const int _ellipsis = 87; - public const int _reveal = 88; - public const int maxT = 155; + public const int _linear = 73; + public const int _shared = 74; + public const int _inout = 75; + public const int _witness = 76; + public const int _lbrace = 77; + public const int _rbrace = 78; + public const int _lbracket = 79; + public const int _rbracket = 80; + public const int _openparen = 81; + public const int _closeparen = 82; + public const int _openAngleBracket = 83; + public const int _closeAngleBracket = 84; + public const int _eq = 85; + public const int _neq = 86; + public const int _neqAlt = 87; + public const int _star = 88; + public const int _notIn = 89; + public const int _ellipsis = 90; + public const int _reveal = 91; + public const int maxT = 158; const bool _T = true; const bool _x = false; @@ -143,8 +146,8 @@ public class Parser { struct DeclModifierData { public bool IsAbstract; public IToken AbstractToken; - public bool IsGhost; - public IToken GhostToken; + public Usage Usage; + public IToken UsageToken; public bool IsStatic; public IToken StaticToken; public bool IsProtected; @@ -189,13 +192,13 @@ void CheckDeclModifiers(DeclModifierData dmod, string declCaption, AllowedDeclMo SemErr(dmod.AbstractToken, declCaption + " cannot be declared 'abstract'."); dmod.IsAbstract = false; } - if (dmod.IsGhost) { + if (dmod.Usage != Usage.Ordinary) { if ((allowed & AllowedDeclModifiers.AlreadyGhost) != 0) { - SemErr(dmod.GhostToken, declCaption + " cannot be declared ghost (they are 'ghost' by default)."); - dmod.IsGhost = false; + SemErr(dmod.UsageToken, declCaption + " cannot be declared ghost (they are 'ghost' by default)."); + dmod.Usage = Usage.Ordinary; } else if ((allowed & AllowedDeclModifiers.Ghost) == 0) { - SemErr(dmod.GhostToken, declCaption + " cannot be declared 'ghost'."); - dmod.IsGhost = false; + SemErr(dmod.UsageToken, declCaption + " cannot be declared 'ghost'."); + dmod.Usage = Usage.Ordinary; } } if (dmod.IsStatic && ((allowed & AllowedDeclModifiers.Static) == 0)) { @@ -316,7 +319,7 @@ bool IsAlternative() { bool FollowedByColon() { IToken x = la; - while (x.kind == _ident || x.kind == _openparen) + while (x.kind == _ident || x.kind == _openparen || x.kind == _linear) x = scanner.Peek(); return x.kind == _colon; } @@ -825,7 +828,7 @@ void Dafny() { // theModule should be a DefaultModuleDecl (actually, the singular DefaultModuleDecl) Contract.Assert(defaultModule != null); - while (la.kind == 89) { + while (la.kind == 92) { Get(); Expect(24); { @@ -870,7 +873,7 @@ void TopDecl(ModuleDefinition module, List membersDefaultClass, DeclModifier(ref dmod); } switch (la.kind) { - case 54: case 55: case 91: { + case 54: case 55: case 94: { SubModuleDecl(dmod, module, out submodule); var litmod = submodule as LiteralModuleDecl; if (litmod != null && litmod.ModuleDef.PrefixIds.Count != 0) { @@ -911,29 +914,29 @@ void TopDecl(ModuleDefinition module, List membersDefaultClass, module.TopLevelDecls.Add(trait); break; } - case 46: case 47: case 48: case 49: case 50: case 51: case 60: case 61: case 65: case 66: case 67: case 104: { + case 46: case 47: case 48: case 49: case 50: case 51: case 60: case 61: case 65: case 66: case 67: case 107: { ClassMemberDecl(dmod, membersDefaultClass, false, !DafnyOptions.O.AllowGlobals, !isTopLevel && DafnyOptions.O.IronDafny && isAbstract); break; } - default: SynErr(156); break; + default: SynErr(159); break; } } void DeclModifier(ref DeclModifierData dmod) { - if (la.kind == 90) { + if (la.kind == 93) { Get(); dmod.IsAbstract = true; CheckAndSetToken(ref dmod.AbstractToken); } else if (la.kind == 72) { Get(); - dmod.IsGhost = true; CheckAndSetToken(ref dmod.GhostToken); + dmod.Usage = Usage.Ghost; CheckAndSetToken(ref dmod.UsageToken); } else if (la.kind == 52) { Get(); dmod.IsStatic = true; CheckAndSetToken(ref dmod.StaticToken); } else if (la.kind == 53) { Get(); dmod.IsProtected = true; CheckAndSetToken(ref dmod.ProtectedToken); - } else SynErr(157); + } else SynErr(160); } void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDecl submodule) { @@ -948,9 +951,9 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec bool opened = false; CheckDeclModifiers(dmod, "Modules", AllowedDeclModifiers.Abstract | AllowedDeclModifiers.Protected); - if (la.kind == 91) { + if (la.kind == 94) { Get(); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); @@ -959,23 +962,23 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec Get(); NoUSIdent(out id); } - if (la.kind == 92) { + if (la.kind == 95) { Get(); ModuleName(out idRefined); } module = new ModuleDefinition(id, id.val, prefixIds, isAbstract, isProtected, false, idRefined, parent, attrs, false); module.IsToBeVerified = theVerifyThisFile; - Expect(74); + Expect(77); module.BodyStartTok = t; while (StartOf(1)) { TopDecl(module, namedModuleDefaultClassMembers, /* isTopLevel */ false, isAbstract); } - Expect(75); + Expect(78); module.BodyEndTok = t; module.TopLevelDecls.Add(new DefaultClassDecl(module, namedModuleDefaultClassMembers)); submodule = new LiteralModuleDecl(module, parent); } else if (la.kind == 54) { Get(); - if (la.kind == 93) { + if (la.kind == 96) { Get(); opened = true; } @@ -990,7 +993,7 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec idPath.Insert(0, id); submodule = new AliasModuleDecl(idPath, id, parent, opened, idExports); - } else if (la.kind == 94) { + } else if (la.kind == 97) { Get(); QualifiedModuleExport(out idPath, out idExports); submodule = new AliasModuleDecl(idPath, id, parent, opened, idExports); @@ -998,9 +1001,9 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec Get(); QualifiedModuleExport(out idPath, out idExports); submodule = new ModuleFacadeDecl(idPath, id, parent, opened, idExports); - } else SynErr(158); + } else SynErr(161); if (la.kind == 34) { - while (!(la.kind == 0 || la.kind == 34)) {SynErr(159); Get();} + while (!(la.kind == 0 || la.kind == 34)) {SynErr(162); Get();} Get(); errors.Deprecated(t, "the semi-colon that used to terminate a sub-module declaration has been deprecated; in the new syntax, just leave off the semi-colon"); } @@ -1018,8 +1021,8 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec if (la.kind == 1 || la.kind == 2) { ExportIdent(out exportId); } - while (la.kind == 95 || la.kind == 96 || la.kind == 97) { - if (la.kind == 95) { + while (la.kind == 98 || la.kind == 99 || la.kind == 100) { + if (la.kind == 98) { Get(); if (la.kind == 1 || la.kind == 2) { ModuleExportSignature(true, out exsig); @@ -1029,11 +1032,11 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec ModuleExportSignature(true, out exsig); exports.Add(exsig); } - } else if (la.kind == 85) { + } else if (la.kind == 88) { Get(); provideAll = true; - } else SynErr(160); - } else if (la.kind == 96) { + } else SynErr(163); + } else if (la.kind == 99) { Get(); if (la.kind == 1 || la.kind == 2) { ModuleExportSignature(false, out exsig); @@ -1043,10 +1046,10 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec ModuleExportSignature(false, out exsig); exports.Add(exsig); } - } else if (la.kind == 85) { + } else if (la.kind == 88) { Get(); revealAll = true; - } else SynErr(161); + } else SynErr(164); } else { Get(); ExportIdent(out id); @@ -1063,7 +1066,7 @@ void SubModuleDecl(DeclModifierData dmod, ModuleDefinition parent, out ModuleDec } submodule = new ModuleExportDecl(exportId, parent, exports, extends, provideAll, revealAll, isDefault); - } else SynErr(162); + } else SynErr(165); } void ClassDecl(DeclModifierData dmodClass, ModuleDefinition/*!*/ module, out ClassDecl/*!*/ c) { @@ -1079,16 +1082,16 @@ void ClassDecl(DeclModifierData dmodClass, ModuleDefinition/*!*/ module, out Cla CheckDeclModifiers(dmodClass, "Classes", AllowedDeclModifiers.None); DeclModifierData dmod; - while (!(la.kind == 0 || la.kind == 56)) {SynErr(163); Get();} + while (!(la.kind == 0 || la.kind == 56)) {SynErr(166); Get();} Expect(56); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 80) { + if (la.kind == 83) { GenericParameters(typeArgs, true); } - if (la.kind == 97) { + if (la.kind == 100) { Get(); Type(out trait); traits.Add(trait); @@ -1098,7 +1101,7 @@ void ClassDecl(DeclModifierData dmodClass, ModuleDefinition/*!*/ module, out Cla traits.Add(trait); } } - Expect(74); + Expect(77); bodyStart = t; while (StartOf(4)) { dmod = new DeclModifierData(); @@ -1107,7 +1110,7 @@ void ClassDecl(DeclModifierData dmodClass, ModuleDefinition/*!*/ module, out Cla } ClassMemberDecl(dmod, members, true, false, false); } - Expect(75); + Expect(78); c = new ClassDecl(id, id.val, module, typeArgs, members, attrs, traits); c.BodyStartTok = bodyStart; c.BodyEndTok = t; @@ -1125,21 +1128,21 @@ void DatatypeDecl(DeclModifierData dmod, ModuleDefinition/*!*/ module, out Datat bool co = false; CheckDeclModifiers(dmod, "Datatypes or codatatypes", AllowedDeclModifiers.None); - while (!(la.kind == 0 || la.kind == 58 || la.kind == 59)) {SynErr(164); Get();} + while (!(la.kind == 0 || la.kind == 58 || la.kind == 59)) {SynErr(167); Get();} if (la.kind == 58) { Get(); } else if (la.kind == 59) { Get(); co = true; - } else SynErr(165); - while (la.kind == 74) { + } else SynErr(168); + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 80) { + if (la.kind == 83) { GenericParameters(typeArgs, true); } - Expect(94); + Expect(97); bodyStart = t; if (la.kind == 27) { Get(); @@ -1150,7 +1153,7 @@ void DatatypeDecl(DeclModifierData dmod, ModuleDefinition/*!*/ module, out Datat DatatypeMemberDecl(ctors); } if (la.kind == 34) { - while (!(la.kind == 0 || la.kind == 34)) {SynErr(166); Get();} + while (!(la.kind == 0 || la.kind == 34)) {SynErr(169); Get();} Get(); errors.Deprecated(t, "the semi-colon that used to terminate a (co)datatype declaration has been deprecated; in the new syntax, just leave off the semi-colon"); } @@ -1175,11 +1178,11 @@ void NewtypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelDec CheckDeclModifiers(dmod, "Newtypes", AllowedDeclModifiers.None); Expect(62); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - Expect(94); + Expect(97); if (IsIdentColonOrBar()) { NoUSIdent(out bvId); if (la.kind == 25) { @@ -1194,7 +1197,7 @@ void NewtypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelDec Get(); witnessIsGhost = true; } - Expect(73); + Expect(76); Expression(out witness, false, true); } var witnessKind = witness == null ? SubsetTypeDecl.WKind.None : @@ -1203,7 +1206,7 @@ void NewtypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelDec } else if (StartOf(5)) { Type(out baseType); td = new NewtypeDecl(id, id.val, module, baseType, attrs); - } else SynErr(167); + } else SynErr(170); } void OtherTypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelDecl td) { @@ -1219,17 +1222,17 @@ void OtherTypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelD var kind = "Opaque type"; Expect(63); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - while (la.kind == 78) { + while (la.kind == 81) { TypeParameterCharacteristics(ref characteristics); } - if (la.kind == 80) { + if (la.kind == 83) { GenericParameters(typeArgs, true); } - if (la.kind == 94) { + if (la.kind == 97) { Get(); if (IsIdentColonOrBar()) { NoUSIdent(out bvId); @@ -1245,7 +1248,7 @@ void OtherTypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelD Get(); witnessIsGhost = true; } - Expect(73); + Expect(76); Expression(out witness, false, true); } var witnessKind = witness == null ? SubsetTypeDecl.WKind.None : @@ -1258,7 +1261,7 @@ void OtherTypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelD td = new TypeSynonymDecl(id, id.val, characteristics, typeArgs, module, ty, attrs); kind = "Type synonym"; - } else SynErr(168); + } else SynErr(171); } if (td == null) { if (module is DefaultModuleDecl) { @@ -1270,7 +1273,7 @@ void OtherTypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelD CheckDeclModifiers(dmod, kind, AllowedDeclModifiers.None); if (la.kind == 34) { - while (!(la.kind == 0 || la.kind == 34)) {SynErr(169); Get();} + while (!(la.kind == 0 || la.kind == 34)) {SynErr(172); Get();} Get(); errors.Deprecated(t, "the semi-colon that used to terminate an opaque-type declaration has been deprecated; in the new syntax, just leave off the semi-colon"); } @@ -1300,19 +1303,19 @@ void IteratorDecl(DeclModifierData dmod, ModuleDefinition module, out IteratorDe IToken bodyEnd = Token.NoToken; CheckDeclModifiers(dmod, "Iterators", AllowedDeclModifiers.None); - while (!(la.kind == 0 || la.kind == 64)) {SynErr(170); Get();} + while (!(la.kind == 0 || la.kind == 64)) {SynErr(173); Get();} Expect(64); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 78 || la.kind == 80) { - if (la.kind == 80) { + if (la.kind == 81 || la.kind == 83) { + if (la.kind == 83) { GenericParameters(typeArgs, true); } Formals(true, true, false, ins); - if (la.kind == 99 || la.kind == 100) { - if (la.kind == 99) { + if (la.kind == 102 || la.kind == 103) { + if (la.kind == 102) { Get(); } else { Get(); @@ -1320,14 +1323,14 @@ void IteratorDecl(DeclModifierData dmod, ModuleDefinition module, out IteratorDe } Formals(false, true, false, outs); } - } else if (la.kind == 87) { + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(171); + } else SynErr(174); while (StartOf(6)) { IteratorSpec(reads, mod, decreases, req, ens, yieldReq, yieldEns, ref readsAttrs, ref modAttrs, ref decrAttrs); } - if (la.kind == 74) { + if (la.kind == 77) { BlockStmt(out body, out bodyStart, out bodyEnd); } iter = new IteratorDecl(id, id.val, module, typeArgs, ins, outs, @@ -1352,16 +1355,16 @@ void TraitDecl(DeclModifierData dmodIn, ModuleDefinition/*!*/ module, out TraitD IToken bodyStart; DeclModifierData dmod; - while (!(la.kind == 0 || la.kind == 57)) {SynErr(172); Get();} + while (!(la.kind == 0 || la.kind == 57)) {SynErr(175); Get();} Expect(57); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 80) { + if (la.kind == 83) { GenericParameters(typeArgs, true); } - Expect(74); + Expect(77); bodyStart = t; while (StartOf(4)) { dmod = new DeclModifierData(); @@ -1370,7 +1373,7 @@ void TraitDecl(DeclModifierData dmodIn, ModuleDefinition/*!*/ module, out TraitD } ClassMemberDecl(dmod, members, true, false, false); } - Expect(75); + Expect(78); trait = new TraitDecl(id, id.val, module, typeArgs, members, attrs); trait.BodyStartTok = bodyStart; trait.BodyEndTok = t; @@ -1407,7 +1410,7 @@ void ClassMemberDecl(DeclModifierData dmod, List mm, bool allowConst MethodDecl(dmod, allowConstructors, isWithinAbstractModule, out m); mm.Add(m); - } else SynErr(173); + } else SynErr(176); } void Attribute(ref Attributes attrs) { @@ -1415,7 +1418,7 @@ void Attribute(ref Attributes attrs) { IToken x = null; var args = new List(); - Expect(74); + Expect(77); openBrace = t; Expect(25); colon = t; @@ -1424,7 +1427,7 @@ void Attribute(ref Attributes attrs) { if (StartOf(8)) { Expressions(args); } - Expect(75); + Expect(78); closeBrace = t; attrs = new UserSuppliedAttributes(x, openBrace, colon, closeBrace, args, attrs); } @@ -1459,7 +1462,7 @@ void QualifiedModuleExportSuffix(List ids, List exports) { if (la.kind == 1 || la.kind == 2) { ExportIdent(out id); exports.Add(id); - } else if (la.kind == 74) { + } else if (la.kind == 77) { Get(); ExportIdent(out id); exports.Add(id); @@ -1468,9 +1471,9 @@ void QualifiedModuleExportSuffix(List ids, List exports) { ExportIdent(out id); exports.Add(id); } - Expect(75); - } else SynErr(174); - } else SynErr(175); + Expect(78); + } else SynErr(177); + } else SynErr(178); } void QualifiedModuleExport(out List ids, out List exports) { @@ -1512,7 +1515,7 @@ void TypeNameOrCtorSuffix(out IToken id) { } else if (la.kind == 2) { Get(); id = t; - } else SynErr(176); + } else SynErr(179); } void Ident(out IToken/*!*/ x) { @@ -1528,13 +1531,13 @@ void GenericParameters(List/*!*/ typeArgs, bool allowVarianc TypeParameter.TPVarianceSyntax variance = TypeParameter.TPVarianceSyntax.NonVariant_Strict; // assignment is to please compiler characteristics = new TypeParameter.TypeParameterCharacteristics(false); - Expect(80); + Expect(83); if (StartOf(9)) { Variance(out variance); if (!allowVariance) { SemErr(t, "type-parameter variance is not allowed to be specified in this context"); } } NoUSIdent(out id); - while (la.kind == 78) { + while (la.kind == 81) { TypeParameterCharacteristics(ref characteristics); } typeArgs.Add(new TypeParameter(id, id.val, variance, characteristics)); @@ -1548,12 +1551,12 @@ void GenericParameters(List/*!*/ typeArgs, bool allowVarianc if (!allowVariance) { SemErr(t, "type-parameter variance is not allowed to be specified in this context"); } } NoUSIdent(out id); - while (la.kind == 78) { + while (la.kind == 81) { TypeParameterCharacteristics(ref characteristics); } typeArgs.Add(new TypeParameter(id, id.val, variance, characteristics)); } - Expect(81); + Expect(84); } void Type(out Type ty) { @@ -1567,17 +1570,17 @@ void FieldDecl(DeclModifierData dmod, List/*!*/ mm) { IToken/*!*/ id; Type/*!*/ ty; CheckDeclModifiers(dmod, "Fields", AllowedDeclModifiers.Ghost); - while (!(la.kind == 0 || la.kind == 60)) {SynErr(177); Get();} + while (!(la.kind == 0 || la.kind == 60)) {SynErr(180); Get();} Expect(60); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } FIdentType(out id, out ty); - mm.Add(new Field(id, id.val, dmod.IsGhost, ty, attrs)); + mm.Add(new Field(id, id.val, dmod.Usage == Usage.Ghost, ty, attrs)); while (la.kind == 26) { Get(); FIdentType(out id, out ty); - mm.Add(new Field(id, id.val, dmod.IsGhost, ty, attrs)); + mm.Add(new Field(id, id.val, dmod.Usage == Usage.Ghost, ty, attrs)); } OldSemi(); } @@ -1593,9 +1596,9 @@ void ConstantFieldDecl(DeclModifierData dmod, List/*!*/ mm, boo } CheckDeclModifiers(dmod, "Fields", AllowedDeclModifiers.Ghost | AllowedDeclModifiers.Static); - while (!(la.kind == 0 || la.kind == 61)) {SynErr(178); Get();} + while (!(la.kind == 0 || la.kind == 61)) {SynErr(181); Get();} Expect(61); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } CIdentType(out id, out ty); @@ -1607,7 +1610,7 @@ void ConstantFieldDecl(DeclModifierData dmod, List/*!*/ mm, boo if (e == null && ty is InferredTypeProxy) { SemErr(id, "a const declaration must have a type or a RHS value"); } - mm.Add(new ConstantField(id, id.val, e, dmod.IsStatic, dmod.IsGhost, ty, attrs)); + mm.Add(new ConstantField(id, id.val, e, dmod.IsStatic, dmod.Usage == Usage.Ghost, ty, attrs)); OldSemi(); } @@ -1654,35 +1657,39 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi } CheckDeclModifiers(dmod, caption, allowed); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } FuMe_Ident(out id); - if (la.kind == 78 || la.kind == 80) { - if (la.kind == 80) { + if (la.kind == 81 || la.kind == 83) { + if (la.kind == 83) { GenericParameters(typeArgs, false); } Formals(true, isFunctionMethod, isTwoState, formals); Expect(25); if (FollowedByColon()) { - Expect(78); + Expect(81); IToken resultId; Type ty; - bool isGhost; + Usage usage; bool isOld; - GIdentType(false, false, out resultId, out ty, out isGhost, out isOld); - Contract.Assert(!isGhost && !isOld); - result = new Formal(resultId, resultId.val, ty, false, false, false); + GIdentType(false, true, false, out resultId, out ty, out usage, out isOld); + Contract.Assert(usage != Usage.Ghost && !isOld); + result = new Formal(resultId, resultId.val, ty, false, usage, false); - Expect(79); + Expect(82); } else if (StartOf(5)) { Type(out returnType); - } else SynErr(179); - } else if (la.kind == 87) { + } else if (la.kind == 73) { + Get(); + Type(out returnType); + result = new Formal(Token.NoToken, "return", returnType, false, Usage.Linear, false); + } else SynErr(182); + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(180); + } else SynErr(183); } else if (la.kind == 47) { Get(); isPredicate = true; @@ -1700,16 +1707,16 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi } CheckDeclModifiers(dmod, caption, allowed); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); if (StartOf(10)) { - if (la.kind == 80) { + if (la.kind == 83) { GenericParameters(typeArgs, false); } missingOpenParen = true; - if (la.kind == 78) { + if (la.kind == 81) { Formals(true, isFunctionMethod, isTwoState, formals); missingOpenParen = false; } @@ -1718,10 +1725,10 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi Get(); SemErr(t, "predicates do not have an explicitly declared return type; it is always bool"); } - } else if (la.kind == 87) { + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(181); + } else SynErr(184); } else if (la.kind == 48) { Contract.Assert(!isTwoState); // the IsFunctionDecl check checks that "twostate" is not followed by "inductive" @@ -1731,15 +1738,15 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi CheckDeclModifiers(dmod, "Inductive predicates", AllowedDeclModifiers.AlreadyGhost | AllowedDeclModifiers.Static | AllowedDeclModifiers.Protected); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } FuMe_Ident(out id); - if (la.kind == 76 || la.kind == 78 || la.kind == 80) { - if (la.kind == 80) { + if (la.kind == 79 || la.kind == 81 || la.kind == 83) { + if (la.kind == 83) { GenericParameters(typeArgs, false); } - if (la.kind == 76) { + if (la.kind == 79) { KType(ref kType); } Formals(true, isFunctionMethod, false, formals); @@ -1747,10 +1754,10 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi Get(); SemErr(t, "inductive predicates do not have an explicitly declared return type; it is always bool"); } - } else if (la.kind == 87) { + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(182); + } else SynErr(185); } else if (la.kind == 50) { Contract.Assert(!isTwoState); // the IsFunctionDecl check checks that "twostate" is not followed by "copredicate" @@ -1759,15 +1766,15 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi CheckDeclModifiers(dmod, "Copredicates", AllowedDeclModifiers.AlreadyGhost | AllowedDeclModifiers.Static | AllowedDeclModifiers.Protected); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 76 || la.kind == 78 || la.kind == 80) { - if (la.kind == 80) { + if (la.kind == 79 || la.kind == 81 || la.kind == 83) { + if (la.kind == 83) { GenericParameters(typeArgs, false); } - if (la.kind == 76) { + if (la.kind == 79) { KType(ref kType); } Formals(true, isFunctionMethod, false, formals); @@ -1775,16 +1782,16 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi Get(); SemErr(t, "copredicates do not have an explicitly declared return type; it is always bool"); } - } else if (la.kind == 87) { + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(183); - } else SynErr(184); + } else SynErr(186); + } else SynErr(187); decreases = isIndPredicate || isCoPredicate ? null : new List(); while (StartOf(11)) { FunctionSpec(reqs, reads, ens, decreases); } - if (la.kind == 74) { + if (la.kind == 77) { FunctionBody(out body, out bodyStart, out bodyEnd); } if (!isWithinAbstractModule && DafnyOptions.O.DisallowSoundnessCheating && body == null && ens.Count > 0 && @@ -1849,7 +1856,7 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr string caption = ""; FixpointPredicate.KType kType = FixpointPredicate.KType.Unspecified; - while (!(StartOf(12))) {SynErr(185); Get();} + while (!(StartOf(12))) {SynErr(188); Get();} switch (la.kind) { case 65: { Get(); @@ -1871,7 +1878,7 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr | AllowedDeclModifiers.Protected; break; } - case 104: { + case 107: { Get(); isCoLemma = true; caption = "Comethods"; allowed = AllowedDeclModifiers.AlreadyGhost | AllowedDeclModifiers.Static @@ -1907,11 +1914,11 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr break; } - default: SynErr(186); break; + default: SynErr(189); break; } keywordToken = t; CheckDeclModifiers(dmod, caption, allowed); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } if (la.kind == 1 || la.kind == 2) { @@ -1925,29 +1932,29 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr } } - if (la.kind == 76 || la.kind == 78 || la.kind == 80) { - if (la.kind == 80) { + if (la.kind == 79 || la.kind == 81 || la.kind == 83) { + if (la.kind == 83) { GenericParameters(typeArgs, false); } - if (la.kind == 76) { + if (la.kind == 79) { KType(ref kType); if (!(isCoLemma || isIndLemma)) { SemErr(t, "type of _k can only be specified for inductive lemmas and co-lemmas"); } } - var isCompilable = (isPlainOlMethod && !dmod.IsGhost) || isConstructor; + var isCompilable = (isPlainOlMethod && dmod.Usage == Usage.Ordinary) || isConstructor; Formals(true, isCompilable, isTwoStateLemma, ins); - if (la.kind == 100) { + if (la.kind == 103) { Get(); if (isConstructor) { SemErr(t, "constructors cannot have out-parameters"); } Formals(false, isCompilable, false, outs); } - } else if (la.kind == 87) { + } else if (la.kind == 90) { Get(); signatureEllipsis = t; - } else SynErr(187); + } else SynErr(190); while (StartOf(13)) { MethodSpec(req, mod, ens, dec, ref decAttrs, ref modAttrs, caption, isConstructor); } - if (la.kind == 74) { + if (la.kind == 77) { if (isConstructor) { DividedBlockStmt dividedBody; DividedBlockStmt(out dividedBody, out bodyStart, out bodyEnd); @@ -1978,7 +1985,7 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } else { - m = new Method(tok, id.val, dmod.IsStatic, dmod.IsGhost, typeArgs, ins, outs, + m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage == Usage.Ghost, typeArgs, ins, outs, req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } m.BodyStartTok = bodyStart; @@ -1992,29 +1999,29 @@ void DatatypeMemberDecl(List/*!*/ ctors) { IToken/*!*/ id; List formals = new List(); - while (la.kind == 74) { + while (la.kind == 77) { Attribute(ref attrs); } NoUSIdent(out id); - if (la.kind == 78) { + if (la.kind == 81) { FormalsOptionalIds(formals); } ctors.Add(new DatatypeCtor(id, id.val, formals, attrs)); } void FormalsOptionalIds(List/*!*/ formals) { - Contract.Requires(cce.NonNullElements(formals)); IToken/*!*/ id; Type/*!*/ ty; string/*!*/ name; bool isGhost; - Expect(78); + Contract.Requires(cce.NonNullElements(formals)); IToken/*!*/ id; Type/*!*/ ty; string/*!*/ name; Usage usage; + Expect(81); if (StartOf(14)) { - TypeIdentOptional(out id, out name, out ty, out isGhost); - formals.Add(new Formal(id, name, ty, true, isGhost)); + TypeIdentOptional(out id, out name, out ty, out usage); + formals.Add(new Formal(id, name, ty, true, usage)); while (la.kind == 26) { Get(); - TypeIdentOptional(out id, out name, out ty, out isGhost); - formals.Add(new Formal(id, name, ty, true, isGhost)); + TypeIdentOptional(out id, out name, out ty, out usage); + formals.Add(new Formal(id, name, ty, true, usage)); } } - Expect(79); + Expect(82); } void FIdentType(out IToken/*!*/ id, out Type/*!*/ ty) { @@ -2026,14 +2033,14 @@ void FIdentType(out IToken/*!*/ id, out Type/*!*/ ty) { } else if (la.kind == 2) { Get(); id = t; - } else SynErr(188); + } else SynErr(191); Expect(25); Type(out ty); } void OldSemi() { if (la.kind == 34) { - while (!(la.kind == 0 || la.kind == 34)) {SynErr(189); Get();} + while (!(la.kind == 0 || la.kind == 34)) {SynErr(192); Get();} Get(); errors.DeprecatedStyle(t, "deprecated style: a semi-colon is not needed here"); } @@ -2049,7 +2056,7 @@ void CIdentType(out IToken/*!*/ id, out Type ty) { } else if (la.kind == 2) { Get(); id = t; - } else SynErr(190); + } else SynErr(193); if (la.kind == 25) { Get(); Type(out ty); @@ -2071,23 +2078,32 @@ void Expression(out Expression e, bool allowSemi, bool allowLambda, bool allowBi } void TypeParameterCharacteristics(ref TypeParameter.TypeParameterCharacteristics characteristics) { - Expect(78); + Expect(81); TPCharOption(ref characteristics); while (la.kind == 26) { Get(); TPCharOption(ref characteristics); } - Expect(79); + Expect(82); } - void GIdentType(bool allowGhostKeyword, bool allowNewKeyword, out IToken/*!*/ id, out Type/*!*/ ty, out bool isGhost, out bool isOld) { + void GIdentType(bool allowGhostKeyword, bool allowLinearKeyword, bool allowNewKeyword, out IToken/*!*/ id, out Type/*!*/ ty, out Usage usage, out bool isOld) { Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); - isGhost = false; isOld = allowNewKeyword; - while (la.kind == 72 || la.kind == 98) { + usage = Usage.Ordinary; isOld = allowNewKeyword; + while (StartOf(15)) { if (la.kind == 72) { Get(); - if (allowGhostKeyword) { isGhost = true; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } + if (allowGhostKeyword) { usage = Usage.Ghost; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } + } else if (la.kind == 74) { + Get(); + if (allowGhostKeyword) { usage = Usage.Shared; } else { SemErr(t, "formal cannot be declared 'shared' in this context"); } + } else if (la.kind == 75) { + Get(); + if (allowGhostKeyword) { usage = Usage.Inout; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } + } else if (la.kind == 73) { + Get(); + if (allowLinearKeyword) { usage = Usage.Linear; } else { SemErr(t, "formal cannot be declared 'linear' in this context"); } } else { Get(); if (allowNewKeyword) { isOld = false; } else { SemErr(t, "formal cannot be declared 'new' in this context"); } @@ -2111,7 +2127,7 @@ void WildIdent(out IToken x, bool allowWildcardId) { } - void LocalIdentTypeOptional(out LocalVariable var, bool isGhost) { + void LocalIdentTypeOptional(out LocalVariable var, Usage usage) { IToken id; Type ty; Type optType = null; WildIdent(out id, true); @@ -2120,7 +2136,7 @@ void LocalIdentTypeOptional(out LocalVariable var, bool isGhost) { Type(out ty); optType = ty; } - var = new LocalVariable(id, id, id.val, optType == null ? new InferredTypeProxy() : optType, isGhost); + var = new LocalVariable(id, id, id.val, optType == null ? new InferredTypeProxy() : optType, usage); } void IdentTypeOptional(out BoundVar var) { @@ -2136,14 +2152,19 @@ void IdentTypeOptional(out BoundVar var) { var = new BoundVar(id, id.val, optType == null ? new InferredTypeProxy() : optType); } - void TypeIdentOptional(out IToken/*!*/ id, out string/*!*/ identName, out Type/*!*/ ty, out bool isGhost) { + void TypeIdentOptional(out IToken/*!*/ id, out string/*!*/ identName, out Type/*!*/ ty, out Usage usage) { Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); Contract.Ensures(Contract.ValueAtReturn(out identName)!=null); - string name = null; id = Token.NoToken; ty = new BoolType()/*dummy*/; isGhost = false; - if (la.kind == 72) { - Get(); - isGhost = true; + string name = null; id = Token.NoToken; ty = new BoolType()/*dummy*/; usage = Usage.Ordinary; + if (la.kind == 72 || la.kind == 73) { + if (la.kind == 72) { + Get(); + usage = Usage.Ghost; + } else { + Get(); + usage = Usage.Linear; + } } if (StartOf(5)) { TypeAndToken(out id, out ty, false); @@ -2163,7 +2184,7 @@ void TypeIdentOptional(out IToken/*!*/ id, out string/*!*/ identName, out Type/* id = t; name = id.val; Expect(25); Type(out ty); - } else SynErr(191); + } else SynErr(194); if (name != null) { identName = name; } else { @@ -2326,7 +2347,7 @@ void TypeAndToken(out IToken tok, out Type ty, bool inExpressionContext) { break; } - case 78: { + case 81: { Get(); tok = t; tupleArgTypes = new List(); if (StartOf(5)) { @@ -2338,7 +2359,7 @@ void TypeAndToken(out IToken tok, out Type ty, bool inExpressionContext) { tupleArgTypes.Add(ty); } } - Expect(79); + Expect(82); if (tupleArgTypes.Count == 1) { // just return the type 'ty' } else { @@ -2363,16 +2384,16 @@ void TypeAndToken(out IToken tok, out Type ty, bool inExpressionContext) { ty = new UserDefinedType(e.tok, e); break; } - default: SynErr(192); break; + default: SynErr(195); break; } - if (la.kind == 107 || la.kind == 108 || la.kind == 109) { + if (la.kind == 110 || la.kind == 111 || la.kind == 112) { int arrowKind = 0; /* 0: any, 1: partial, 2: total */ Type t2; - if (la.kind == 107) { + if (la.kind == 110) { Get(); tok = t; arrowKind = 0; - } else if (la.kind == 108) { + } else if (la.kind == 111) { Get(); tok = t; arrowKind = 1; } else { @@ -2405,20 +2426,20 @@ void Formals(bool incoming, bool allowGhostKeyword, bool allowNewKeyword, List/*!*/ reads, List/*!*/ mod, List decreases, @@ -2428,7 +2449,7 @@ void IteratorSpec(List/*!*/ reads, List/*!*/ reads, List/*!*/ reads, List/*!*/ reads, List body = new List(); - Expect(74); + Expect(77); bodyStart = t; - while (StartOf(17)) { + while (StartOf(19)) { Stmt(body); } - Expect(75); + Expect(78); bodyEnd = t; block = new BlockStmt(bodyStart, bodyEnd, body); } @@ -2522,23 +2543,23 @@ void BlockStmt(out BlockStmt/*!*/ block, out IToken bodyStart, out IToken bodyEn void Variance(out TypeParameter.TPVarianceSyntax variance) { variance = TypeParameter.TPVarianceSyntax.NonVariant_Strict; // never used; here just to please the C# compiler - if (la.kind == 85) { + if (la.kind == 88) { Get(); variance = TypeParameter.TPVarianceSyntax.Covariant_Permissive; - } else if (la.kind == 101) { + } else if (la.kind == 104) { Get(); variance = TypeParameter.TPVarianceSyntax.Covariant_Strict; - } else if (la.kind == 102) { + } else if (la.kind == 105) { Get(); variance = TypeParameter.TPVarianceSyntax.NonVariant_Permissive; - } else if (la.kind == 103) { + } else if (la.kind == 106) { Get(); variance = TypeParameter.TPVarianceSyntax.Contravariance; - } else SynErr(196); + } else SynErr(199); } void TPCharOption(ref TypeParameter.TypeParameterCharacteristics characteristics) { - if (la.kind == 82) { + if (la.kind == 85) { Get(); characteristics.EqualitySupport = TypeParameter.EqualitySupportValue.Required; } else if (la.kind == 2) { @@ -2549,11 +2570,11 @@ void TPCharOption(ref TypeParameter.TypeParameterCharacteristics characteristics SemErr(t, "unexpected TPCharOption"); } - } else if (la.kind == 102) { + } else if (la.kind == 105) { Get(); - Expect(98); + Expect(101); characteristics.DisallowReferenceTypes = true; - } else SynErr(197); + } else SynErr(200); } void FuMe_Ident(out IToken id) { @@ -2563,19 +2584,19 @@ void FuMe_Ident(out IToken id) { } else if (la.kind == 2) { Get(); id = t; - } else SynErr(198); + } else SynErr(201); } void KType(ref FixpointPredicate.KType kType) { - Expect(76); + Expect(79); if (la.kind == 11) { Get(); kType = FixpointPredicate.KType.Nat; } else if (la.kind == 13) { Get(); kType = FixpointPredicate.KType.ORDINAL; - } else SynErr(199); - Expect(77); + } else SynErr(202); + Expect(80); } void MethodSpec(List req, List mod, List ens, @@ -2587,7 +2608,7 @@ void MethodSpec(List req, List mod, List req, List mod, List req, List mod, List req, List mod, List bodyProper = new List(); - Expect(74); + Expect(77); bodyStart = t; - while (StartOf(17)) { + while (StartOf(19)) { Stmt(bodyInit); } - if (la.kind == 98) { + if (la.kind == 101) { Get(); separatorTok = t; Expect(34); - while (StartOf(17)) { + while (StartOf(19)) { Stmt(bodyProper); } } - Expect(75); + Expect(78); bodyEnd = t; body = new DividedBlockStmt(bodyStart, bodyEnd, bodyInit, separatorTok, bodyProper); } @@ -2684,7 +2705,7 @@ void FrameExpression(out FrameExpression fe, bool allowSemi, bool allowLambda) { Ident(out id); fieldName = id.val; fe = new FrameExpression(id, new ImplicitThisExpr(id), fieldName); - } else SynErr(203); + } else SynErr(206); } void LabelIdent(out IToken id) { @@ -2694,7 +2715,7 @@ void LabelIdent(out IToken id) { } else if (la.kind == 2) { Get(); id = t; - } else SynErr(204); + } else SynErr(207); } void DecreasesList(List decreases, bool allowWildcard, bool allowLambda) { @@ -2736,7 +2757,7 @@ void NameSegmentForTypeName(out Expression e, bool inExpressionContext) { void GenericInstantiation(List gt) { Contract.Requires(cce.NonNullElements(gt)); Type/*!*/ ty; - Expect(80); + Expect(83); Type(out ty); gt.Add(ty); while (la.kind == 26) { @@ -2744,7 +2765,7 @@ void GenericInstantiation(List gt) { Type(out ty); gt.Add(ty); } - Expect(81); + Expect(84); } void FunctionSpec(List/*!*/ reqs, List/*!*/ reads, List/*!*/ ens, List decreases) { @@ -2753,7 +2774,7 @@ void FunctionSpec(List/*!*/ reqs, List/*!*/ reqs, List/*!*/ ss) { @@ -2836,14 +2857,14 @@ void OneStmt(out Statement/*!*/ s) { IToken bodyStart, bodyEnd; int breakCount; - while (!(StartOf(21))) {SynErr(209); Get();} + while (!(StartOf(23))) {SynErr(212); Get();} switch (la.kind) { - case 74: { + case 77: { BlockStmt(out bs, out bodyStart, out bodyEnd); s = bs; break; } - case 117: { + case 120: { AssertStmt(out s, false); break; } @@ -2851,35 +2872,35 @@ void OneStmt(out Statement/*!*/ s) { AssumeStmt(out s); break; } - case 118: { + case 121: { PrintStmt(out s); break; } - case 88: { + case 91: { RevealStmt(out s); break; } - case 1: case 2: case 3: case 4: case 10: case 12: case 23: case 24: case 27: case 78: case 145: case 146: case 147: case 148: case 149: case 150: case 151: case 153: { + case 1: case 2: case 3: case 4: case 10: case 12: case 23: case 24: case 27: case 81: case 148: case 149: case 150: case 151: case 152: case 153: case 154: case 156: { UpdateStmt(out s); break; } - case 60: case 72: { + case 60: case 72: case 73: { VarDeclStatement(out s); break; } - case 114: { + case 117: { IfStmt(out s); break; } - case 115: { + case 118: { WhileStmt(out s); break; } - case 116: { + case 119: { MatchStmt(out s); break; } - case 119: case 120: { + case 122: case 123: { ForallStmt(out s); break; } @@ -2887,11 +2908,11 @@ void OneStmt(out Statement/*!*/ s) { CalcStmt(out s); break; } - case 121: { + case 124: { ModifyStmt(out s); break; } - case 110: { + case 113: { Get(); LabelIdent(out id); Expect(25); @@ -2899,32 +2920,32 @@ void OneStmt(out Statement/*!*/ s) { s.Labels = new LListj&~LPyw__ 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�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 z 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

Yz;`e`=o!Sh)&j&0- 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

raGo`fJo?**^|v1Lt-vHp z{Z>D9$x|fFpep42*s4D#{Z)SgUrI!~7?D9In)FDM(dz-KUxU!1Sx>!5&_SG z^R0qCd#(M5+)w!y$DVSrM|0NFVb&Y2&dhVxW${w%gvUhL+&;e@CKA6I>zb;nS;C{T zS%Ngi4TVi(koFQZrmr=P>1&xAlxG=DWBOXtn7-CD#_PzmY=j5PA&nJ9E|nne*vt8H z<1N_gZgSDSS%Y`}=pFhO8j-5w)?ssht4$xaLWJX3=&VPX!sK45vgnO|WIi(LR9 z_?Tw)RIgQs3cf;SB&_J&;&F=6M!^@CZVA%DMAyF zUJ{xBlhCl(+USS$ho#k7dp7|Bdn{~gKOzl6jAQcDeo}u&YBJ!nV?y417ZZZG>Iz>}fgN%PFvh4mHoK1_8|v z3iSuJ=k^F8?3TyXIZP+F4_Yl+$Wu8y6p9$w5ikxou@J+>BUdbk9<2t(emr@Wefh2e z?#?cm}J_+*n&Q6H~&gDKvRvyV0Gj7n>0lLv`P zEy?c2<30VDx2fM0@<6+D1fpTIQ=zVMj26L9(; zk~{PqGL2g~jhNOR?gp7jr+HP?3p05{)lwpcM=Xa{C>Q6JfK^y@3L#~dM5khqB-;C@ zl4x%>M7s^|#xwINbjizH3H#C&SV6!Ux3Ck2>ukljvkXb+!MZh^$=OgoNN4*YV^|!BayWO9t;*XOD%x(25{uyrFaX#&bd^@j$9XyEfG@)1n6z*AdHsY zEsNyQ>G+CNFc){`Yqhs1F;C9g)9_qs#%5##`0APcthwa@B#~trs4-jNvd#n~ZQw1% z?jNd-RacI1#2)1bQ6DD7cd1N{g`AB^VO8gjZCkdnx`zT^$Gy+>nFn`dktwPIa7LGW)x3Yfqj%{87 z{!2_-QL>d0h4vV?4elYVi6jaSTnKW}>6M1d_pKNGM-_t9=(wNRLjUFvOoibD!_tMD zsYj7BibKe#*kk?KjfA=dEEkBAVHIbFV|mWnzIYo4@@>RHZvJ+XLq>f~=t5&8w6@vz zVh%>X8Jx-ivCB{GGaAjIau}S;gA7mDsE&?KBMGl}sdp!{WuAAJ=H1H;F>l9reoQKI zb+R|iO@(zKnz_k^+NCDHH3|I94%xxJgZ?431@h*_XJ#{A&YSA0BT>6>4p^5;xVQQ> zr8u zUX)%@H}8SRJ`k;uYD%(ZI6(K5mvP_PIG_?E!axd0sm@vZm%acCnZkp(P^;02*xk5d zeHFz7zZ(lE>1ZWJD0B(nFYu<&CA2o^xSlPPjkn<2^-xT+Lwb~0n(R^jb49nKocUq5 zqdbZ*(WC5cfRGz|Vr4i~Eq3K4E378HxgT5bOPu;_35D;Po;|@pD4O@Zq+G5SAcelx0 zI>S4Je$a!!Yv?RL0ODoCbfdQ%5D-Ri!1HLT0h&OLZBeI=u`9<1C6wbzSQ`ClMSf?V zZ-XL(m@xs4-XgWnZgQoP(GM7#7htw@UU({!Yt%L8X~6L72`SLQ^b25cEK~Oh=c;{S za4}17@B4(W8|-k_(JY&~BFWeZq;M0aity!O7wB{NDMXA)0swDdJ&Kgx4MyKUc$KT) zTtR^p zS08f&NrY$!EGYW0tp}6JKqh+1c2s;zJ;+ACZ}D;bs@mi<8fpt)K*Uz{+~J%877cI4 zu5ouIVkE-|@G=}RV^8BhqJ{;#GsQ|_5^?74Au3=-4N_x9QP&PtE_JaWN|y+2qw4ke z7^tTw7e-KZp~QwTDk@ZJlNf4aFF|GLT^x|;BDeT<%~;jRH2`S>xeSX|z+F#MV+b>~ zE?Zsx7KxD^^u#bKQj9g}-#(N0Hrxyh*jM@X|8R#O zq_q0qtAxh@C&a7a9BAH~IZc3fU*&H_t3Wf4R*|%+z5mcK2e@0+<6p(&PxpWuae>Th zXBORf3xH~VvA@Bg*ID}}khl~01kp4xNdrgxEG{2!^RI5^>$8zI7;I#Yogiv*0Wone z1Vf)!rU_6gayL1{?~>f#q{6x^Xx&DMDnMMvUwIIyIN9qyYyaX&UaQG(^=nR&GMpvg zMsbkJ-0}^!Oc)d;(=hA8hw=4NUjWw=I-f^NgsNua31G@8QnZ|?FOqaPV;xNumLrbJf^gneuJ%-<<$xsvih4zJ8qqzFRvgg4Zk#rJ6D-)rJ{sE_I zwZuzHx$+Yg@tox;Fj$Hwe~hf6(R4emodUB{3o@d9%5@xw1<5_cAGf}~*hKj<>jL+WhBeJIn7Sg6&Ik#BPx3y%7my(z4kF zuNm1)V+3$-guM<95a6iC@d+@5@*9x@#MxAJJkY@r0-hTQL2arAp2^z?^ku-S=i~u| zbiqBs&ZlJn;H|oO5k-K6vOS?p1hP=Arkc+bWZ`uRvY=k6jOb!Cik+t-aWk37>}Hpr zc8cgyz59Y9s~Y76l?p!xGld|5BeWx>SKPFLS69fMh~mjIBc23Ts$C1wH3|$uj)O>y z;5;)@6w!YeP7t~i66{cdiCdoV4G0v6M&DFRSOkIT>Cp1Wf6ynzY%Z5?kp7R20(p8!f8XhJ%>gfQ>MEHB?u!s6#p)eV428&K(OwG>X?AIcJMTdY}k zFq@l+pN&m-JJ?1jTO3@*l)B76jq))6v-?fXJ2!X{ zX^Qe$AP;(iHnm}x&aN0vH$n!ich7;UfXYGYAtgvrapZjDOI-|Q+CH%|Lh=JmEHSCb ztFA(LjZ4DUXZ8#&s<}SLQ8mA)aK_-!ykK-jhqwa_pxSVPnmhu!Ld12NMH>y6GgOc{ z6fgqT%|u>#KIY8G8>j$tMwJ`4|+22%k-Z#)avcNTX1`Npxa|*=oqa=*2-H7>Unw zQKUYKJ_@5T5UoqL#9x4m@ZV;U*4jA(vLlVo0(ah_YOfVW;BnrG9bj5Or){czNUj5( z{35V{r_neSwv9e%_8#bo-p1rJvJM9_4^o*ZistcwmE~z!X#9|e0Tr|%h#Va|HXnQ| zd^eBV87aNB*>`)6OzYuB5e+>julzDKK*hR$<8?7zo*+i)xzQl;x@+?Y6lYyKA*kOv zCBGM^$XT}zk0~-!uW%MIG~DdMdBgPcg{Oie(Wmt+^u7qTeJqC|%XfQ`yQOkg5i|;P z%A(@rca?Nz>%eaRR--t%nT-60Hc=_u1%7sOisIxAmWIn&QDoWetd)w~60Zf%EZ@zx z;siR=v3%!^uPchcsQ_{`GB-Kv7{5mRdSf**@-}wwSqP-2dsmw7O^c3qSlgs?|GI{q zqgE%abMw3J+^N#J(9MyM^zFcIO-$*QkBjqQnNi=(vIK+SV;+p=o@(&Uqv5A{;F9c^ zk&b#?>u^Rw5`8<>H+N8#p=`uNZYl_~Ny!MVkF#>rd(&y_nU#~W%wbb|3__sffaMlh zQ(*L(RSu6Q@0cbe04ob1pfkASR=A`D-CL{1G-&l~70yLzcUF(MJ8h^sUaMxe!rck} zu^H%;DT9OHyWy|+b!6$kAg4I9wC2X=u`&?udUhlE@>`kK`IU+MnOBK7l=-U z12&iIu-2MwwrAYy*wOg^#?pX6AVHI)xFBe_e|Mh>d-TCOg^iwW#o`q&s$#vSte9oyRYz z`(%G1#>4a_f)PA}CCp7+!wFkSMZs-LV0y@G{aSJk-z zEdB=t-M?XFRWr=Qv7+u6=}%SUcOll_=3;mTc-`MEUK|U8HCeuQ3w`aC{^+3&Gf7LX zq;!j8&AxWS8r#SkJ6eS`b^zhqQYPpHmPX{INa?!*a6}>nS8TJn;z7_u$)>kY+}GZD z8P^{uc&{k*l~+zlHkp}dvfMOT#wM@SO;(`EvXmyL>L$w~rB_(NaCxNaECHg)R3n!zN7DdK7` zwcrZ+K>g`+aXg-jM|hOXf?TQZ)&j8+k;On{f^mDXr`WpQPdky}PBw3% zJS*~f^8BfYVzjX87y)7~r|!sEONN0c!d!}9#U(Z+hz=jH#;?b50(Im>371{B3U7R4 zwOOx356z?fb4?AZieycix`D2HAtHuV$?b?^}8`# znA`SJilVnJ_5|Fd(cL$)%t_N)Xc$-CNGXJ@Wxa_Ry~TEhdkc)XMLl(e-rY@=sOu5m zjl{OzVooT9MB!UPOA92{kzfLe9b12;`VvijH?jo0YU9NbM{F<@Ud_H6IRzA#67vCj z5y}jt#^3iDY9DDU{GSyQ9lE0J-Inh&t?9p!nttCBXZThQkLKN?*IeMIpQZMVV;K(A z?47!lsuJC=&rljtybq(Cb2SQGs@8B7L`V6VxDUWkVmpP?6Ly$-WHM(tH0(f6*f^kq zPh;Z%WhzNiAjImhsh3`Gqq;+F>m!iCh{3Vg0Z$J0^bmd^5{&|Zgs;my5~+2#8bhTO zp;I>8_w5q@!TNv_adM(aGf_#6TkA1q<8c3lHwpcT9^ z=`hghZbgV7>~&f11<;3gGu#{u_b9d6E5khspUa2`BMubexd5@@0gqh?YUqrb0MDhv zB6DtZpS^!Ec9LMU8=zVFic}&B#S}memYOdxH3KYPS#wxB*3r$>d1Vww5NK+De0}Fr zx`)#-axWqZa{uVH+Nz*qKu7^J=G9yh;t>p6{1P!-0Vurl!IS+~@nMP1`ASt>KwV@T z?4;b>ZRv!&?o1RUQsyKVNn$FtSvk=eAOq|;v7yN4?#bn49?tD*;**@SBwx1X08bEE zOD0wfaQm`Rf>e}pHUX+KC}W5lKf;=^_ypj{DCQS2s_!AT(g%ZRRcly*bVF;t-w_We z4=0(&g4!>Eb#pB4Fx~B_^fT5=pZE`kN<6=L*0LLI{stwTh1mj>IJm zrCe7eu0eku_Qju#=Fl$e;TyC97%H56<%GqqLCfc8Ela)3{-Bsg>)XiA(!$0i^WEeN z$=XDhrF>bKg`eT1W|{ zqb>h__x5W?$G3Hfa~m#D6;^!Qq0!W+57@7zoR#xO zSC#7>TMgHUW?wRqyAB`@pAo9Kwcm_~Y|PIGCA^v^I-!J9T|TeyjAADJ>Ub)7f_m{- zk(_EccrNR}C2?a*z$1%K%pT ztp%Xeonm5020$Dsv4}ufuUDB|8|UytneF#0KY|wnqHqfu!-itX2;)t$0n)tbyR0kD z+6OpD|9-B{zsDt~$S;~koz9HfMrZAEdGiuS3%#SWt{V4&XtW&nqJBio6BsErW{LLk zy@}L5`tIIbSAqAaQ5pxL@ZKtK z!IJ1R1(;QfArp>B(g5u|0C>Hy7`!2tR{&ZXN8e(fA~B$7)K_E77fX3-@m74%`l^E- zAjfVOQzgb{K+Sb&fus;=lQSZnqbdiRI0pwaww_yn#%xJp@qvgOzbo{66%q!;3~ zy&shC3eZ$L_^gdoE~p zah=khwN!BE;eoGkd|7I5d>F7AXh`S+7fqe_ktPV?qm*U>WFkrY1ka&i1fLXe-ctCH znp&wriDW>Ck2aj+FHi%%OP8h2bT*-N&&J&tr?Cu~NcfO5fYDGIatn`rV8Y_ScqgbC zAHF6~A|wmcr>|l&5@v{#uKM*38do?iSY<1?Go&LXd6nPF>S(m}>o}z-6ZuZS`jCV* zPm2Lqx}I(%xnVV#U}7d`L@*SDE>6K$bY`1cd@`}MOW10-^h$u|D6N3Ln#i*HX5TGT zea7bI?MMb{j&M>LVGUcf{!TnzQ!LEM>l+8nx>eiBZ2nzH$RyY%Sj{g}(Y!56~^= z68~u{s5h#!8mi95t`%(^s16)B=>gjJJd}nrVPqL%L}QfHZ%hEEglJx4E78ErN5p;g z(3^y^0`70CCPJ6ed2$ylgTiE+>OYR2YEn%as>umm9U*-qj3BK7P-oqfz<7eyQ-oFv zXcL)d(AZhzrb7j0)VZP>ixea=uNBN({vkt|IqTj4a1eh6T9I^renv{s4*kwLQigf& ztbGVKSR8Q@=^k9!hka&m!t74&=L2K%`=Vz8Y1@KiO6F*dL0&yORY&UmBImQ}g4CJu z1Et4tF5wf-`~wwL5%aZh^>!w1+hEu1jtkO zmtP!hsL-|>7GRV|gpSc8l%qqk09pfSxfuBgl_L9$DAN`@RvHM+L`)xWXWKGrYx)67 z?Wm94vb?K00+k;b8pY)pKAx;`(r4*4zAZpM6h!6|v)sM7H^-_}1?-M~cbIBDXKgrT z8mc%AzIvcCT(2spCAGjm&Lt{S@tlUrmp9s+GwY|UVZk2P)dgm)q?uxY|73OYc zLZ6qVa`z3xQS{Sc?CDC(rwhD-IaKtHehxr_BFp@5u_|UHwg&B~WyM*)P>J~ZV zr%H3T;PEYaR0R92TKPr(K9-!IDkQ^>w41dV6)oS$j-?-oroGIs54&`*j%MF9y=u+_ z|F6h_jVw1HfxTgU$0{5VL-hSRn)hRn{GU=w{c@-`xLsB73TG|8!rxxJi>vu~f}2tJ zI|`}_7_mcVFdhd8Rl9qSf?nxV3Z~KEU8->#M;p9ft!a6j7f-3HR&dm)`eI&KP=Db| zgry)W(}(QkM)o1WQD7uG`5s&xqJ!6|hN++O>$o~fe~kjkua8RJKw?U>Ns{qq?x8@% zUiHD0(IK3Qd?Mcmtdl5qR5t;@ zpsaHt_xk;aLV-Z{xd?P$HAwhl*xh3ZSlkA9mcAdtv7;~j?mdX8i=Yhhd=s938QSf4 zzlWm&oIuD?AT=CKqr`~>hqQ&ih2V?i{rP&wVqwREfJ^~*jo7*-!`qD1QK0i;3SDkf z8UGq4hj;OnX}xM7*WWJvalaS3rSmvQ^%B(zLggSvH%cL{zkNsInw0k}6kcefv**~I zR7T~{#f{E+G!5N_GS1Z-0#W!o1H|au{qdI5gnd%e!1w)%*#k;}_*47tKne|a^$#A*mRXyF+B ziXVFFk1mS(dLbNO-VKu+YH!Pf@rKA>R`P9h$UUAZ_#r9YO345m3v5fYvg-XD?(nKy zX%8dN#n3x+ySg8CD4<=aSceg)I1`@(C6B@(#O!8I4j3Hpwf}8rp#BJGtsFvNIR;RU z0hAYXLO|X`|2%0BwO#X9)Rx+M+0EGPQ6n-pKA3d~26j{i2 z$0*QWd)@CW9vQH_`9)T%)mpqRmKFYR)D$bT-uX~VJklgsTi1dg+)+&P zL$M`yi@2`B_Y}`%QHs=2`G7kQRvVP^;|F&Q`kTA;JBNOkt>3NG@3_LCWQV>}a(A%{ zJ;+B-a`2mrw*~sk3Hr+#UAA7AZA6*1DAT5&w#$!iCB9xoW)yiuwr!EReEo5bt}0i4 zd{|a4z8l3*M;k6-F6N~NmwtU&fJ^WSJ}tv#ITRi%$@-o+Ph5-hz1F)1AAPGxbHm*8 z_AefYwbvTl#&Wfki8pk1M5le@U)TaFzy09{<5ul&9$t>nG#TsT9asy>)ckTuPZ%sv zv(1%9O*dC<%44n?)G6j_r8gw4dLJUFG_B(n07RqxmD?`3vdjPka zE02npt2T9`xoS`$bG1@kE>}>s54BxVu`ziQo1V3*<4dlQVCKW^I5j|XsGOplakXCF zieET*&0w3)fajBSKCItrRnj2)B^05-dR1?KNp(_}FRRsMy49WN&7T{DCDt6Y*#RcA1s}u1)=Eq&?T#Ps?F#-3_m1(hIC&w=YfJ5g9V2|$#*e^@E z2l%I$2o3P#F0lbV+FW^5uDNPc2b-$~m1(Y4s()Y1FThoiPEC&wrZ|j`P`m02QS)>Q zwX^g)TM2jJ7#TfzyR&XKZdgOLIu4~`KHR2)VAz?0c#Q@R+XW21CYW)6aRPvUVW9qK z-AbY*_=yYZP4Wz2tBZO>;PrOZW0sWZNGU^3f-*phIZZ6`{!AM#gJqOaP*NXrfxSN>3LhZUxiQ0}rV1cq~KvIc{iUHjvfTV7g zejKGWEtOoih7$vvnQE>)YLdBXQ)A6lgUZ)eQ7$2>b*-LFt}g2D`UZaanWhXOqaHJl z8`XWLbPXRjm>c#_g-w|pb)C6#sjG1n+k}-Pm6)~$ZAk5Y(S|`cklHbW#l&!-?mAIV z=Sua(-X|sI#1J$o>y^*i=#Spnk|AJSsrpwj7h;RrbS-~5aY9#frOjZIT9#};vqp}gkt+wwS99^a|o>TbGDWy#b>kac^j7tTQvfkB(=9QXq9 zMCDh#Q7mP3E&B5hPwDzdK4041=Xc_BZyZC%RK30DN#tDXaIV-5smcb~>@yyVy4D4ZZvzu@3(l?~` zTg>xDKEKi2H1VcV-++OYo2%VwzPYMVv-K6{rr11eQfHW}5_Ph<>QKj;s|s~EuCNP? z{TYXBQwi$2>6}e==KdFchM-pXb+HOnt&3r?ZU8!x@X1G3OyhgZ{<(?Qpr1N23BF#4 z*Iw(pqR1l}ZGsJ|>^n`2H{yu2?SBFrCUB)1B0lPBP|GSbJ)XQ6IZG|2-%ilf+NKtm zx5Mxj!Zv9s;8xCB9#b8=69JwCzrX)hH=1P12!sESg3usaIPJB!l{IM7c^*dy80Aw8=gU40w zjt!JCCbtULW4?@B=8$!hFUE>avg360b(t&+AwpL2wwi_(Gc*x=VV!qDtCs^}H)Ji3}w2 zx;In}5WcQ^^yBU)^6xTY}G=D(~7kKYBcCQ3Sn|9{uJDJ)X%|Ya-+U4a74OvI?2O zNx{Q8xR>qEZm+=LPTrd?EBwhP#E6ZnYzs%B2cWK_HAJ7rbkQ!KL`uQBKJtyTZV)I! z-RGkQDyjf))Dg6Ldtbn%LmhFGe5;P1%J)Nto&c2+uHW1$YNGv9yh9~rgRPaR%mWyF+0wb z$x)-tl}qKC0v#;f*W9e+&5uv&R%J2!+T6%u_KCTX#q2F}Ba7KqeM7Q&**urU>=|>@ z#EKu$H(1R6Xs&jv+ssvsx>;XwG5fW7*rY1WRf#G$R~>4;xvEgJaW%Fn_TG?m68q~E z&aks~Jb1mH<<@7qo#i}Ju&*pnB;ht(saG30YanrR|HYm7nnKcZUvLqrx=7<|HIP6a zzxOMRtal31CMfzysl959P<65N0J!B;e-c`SB(7V#6}8(^*x6`+9O_S+q13Q9CrWQj z;RkoWAWY8OjzM_{sH6_3I^{Uz6{Un9mGAbJqgUp-^=XbDYt1(0LUWMsb(ukb)l)6Q zo_i&TXWzF#_$MX{!e?h8ZblzS-iC7i333PJ%t~cv-pTR|2`xGI3w1jQY9i6TtV_WE z0%E~rDbS*pMjvNrh`I=yI}Ocgk^*g^E%dG|6C>ZWLetl)(w!l19y7%e`y;$%On2t$ z?o3SW&NE)=&XKx1Zvb?%M41(b-6@dnIP08jd4uHN&)gwr=?jwtRT9<#)jy zQd^ybR&|RPb<^VC&D#o9ByU?(;1MoWaPnzUUx$wZ(;&_?uyzCoSqS=|;OQ zy-!yReTgakB1^m5opmQAYFumA*l~$&^lnpQg{d)j++%UB#@p4wxZ=m(!BD6Xy+K{} z`IBJOqQ4cU{2MHBK&`a7{Pc{}xy%-8CIFQ(my0|s;jEj2XvAvo89ZXOC@-IZ@Tr$!iS0-tXxK9~r5#Qm^G02SryiD31yaTtK! zfpHz+bnVb2zBm;bPSo9Apb_HCCl5ryzv>dFu|$PBQJ28RoSf9`_JajxkH=O{(}>=` z<|RsQ&@`QmSjVdOPmZ^QD17&gdb|xNrbqSVQ5f&x7!_}^I9>9%J>Hu4G2Y&0yz=$* zI*fM;q$D%Y&o$N57HHwH$vmC{v?Qk;j>oZ=5F;f;@YxI4q{3yGM(sv*`d_7IDB1+f z=K%Mg#+8-)w}Kom_!qD!ec!?R(|8Yf@FhCVFGie5+}FiNswc5a?GZXjL;Qm$qaC%_1w+x1SPJ@O@l~Cp73r@2r;|VR0K~ zy0iUa_8Z{P>Z&r-gx*y8tW7BGw@b$^(xZDIQM!bX8>>qfp|uh<2lGaWoau3j<=P(P zUohdQ^e{aE$Ln`o!+K&aNYU4Pkv^Vx+$M(qN)@lr(`mFaO?ZPAn$%~H%QlOg)S%T7 z9y9Fy|9mp;b#HRs)QMrkzKZ1a0*>brRY~VVsEXj40ZXoDECSH)x8q@Qle7kvU>gi%*gJ%XnWxsiHxhAYU2; znP>Cf`U?fXB-Fp2ESCBPH9qC5yH`FDk2ia25#_cNeAFAq^k5bTphyw6zblx}OsbE6 zqOo@%YL2%c$RnvpR_o{g%mM5J#2^_6A%1J<`Fo;=^__hGvibgfM1e5y@QlT}!Yz8a zMu!IVPMJoB-w6^StN6S4woQfcEz)luTSO21J6Gw_ZR!bAdJ#*zcYB<7G{-l1YU5Q~ zJG1yR6tQuo?J4-a2$=udSQ%PZgC`!y;<;zW){89uk)<*r>OK_HEbovpV0kC}A;Iz% zKVq}I=-XgIZ?@%qftrho(JJU)7|P)z^0EeO^-HT zVb*#l+B%$VtwIHCONw`bId`p%R-I_Hnzg-qogT;==!jv~FFb7bd`CNKJI~Z6#qUFH zvEM_U(G;C;Pl|7Wo|OLxDuE6uqBT8+y4@R`cWj9Leiu=M5C6i4L;Ol?(O_`fXROyNhjHbh3a2`Y#j$OmbrNbX!ibO6DXRyi-^g z2Xm~hlJMXCJ#0snT|U}r8ZT2ly6M_`SgvAcbopczK1rFsUnK_j@*@UtDTDhXY5>7C zst4_tTIIb^+68m{js09JVK~&!@GiCmo^+|B8=L6pyu=qZEFd#5UYa2cC(7G)FcS1} zx8Xj|W9G0bz~da6tz1)LO%JMWM*Km`sjufh7WYitN9=9KOrqpUHL^o9xYN)V?GK^F z*mBKESE|!4&~)&x`TWJo7W8=69&51Cg+AHauQxu>+pm{nUw@iDuJbUj_^uIXTq7Tf z_%|LH1)Aj(RsOI6t51e{v_^zRRg!q#L8uMT&pTpcp;@3?PDA4d=v2$N*VSg1bd#$r zdagc`4?(p3El;ijV=GvXP5)?b}E7;75{w+V=#mX5*X9EU+@F={t> zzS{FZLaZv|{in%$o_185llKjLzdCte!uv;)_cgr#J@3)4mArZ3)z`JO%$q0lP2DQo zP@v7HRnuI%K(TBNkYulf_MGZBdxv4_L$DkSiI2eP7OQ{mX0W-%cWBlP7#s#ByeM(I zZ3o`Y!R;&Hd3ua(lzJazpP*qzw`9yc-`BX&4^1WaPqJjNb86rX+%seCq|CYF=pNUG5(1vP&Si;KwcR7?S?GH8^92tQ5oB}s$(v77kvodJpm}#` z40c>A8$P@AnWmO49o*RCt5!AhJ#6YR@4C7isSd5yu~of2u(r#B8kHfxJTQm7mOg!q z;p;BS43DpS1UnYI6jKfj|?}R%SFLDB+7Gi?>{(?2=DSWT)qbgnt zmn|vXiJ)DOh4Lo4Q^U_j<1rA3O=+2eog`ho0RDy-Y_rI!>xViqq5Om|?-k~!ZB$Jw z2_pEmoC*vSD}>gIv@GSOna4z=5_LDr6-o(b?UAU+esQBz0I4bU>)+_F`}+&;W1Y_0 z@5mDtophkQ0)$6RHAL2bUBj;I?p_dZvBVB30XL*{!9(k&+9@hLEhXC3pV5?-c^(@9 zN||_DLgu+qBFu4HdrupP#$~^GOI@6Jb0gpMvfsR^W+dKR%s0ClwCo}+p14Gly>xK2 zxsmY}9wNVFQ|CcR^X z+S{RwLJOR9wf9fD1=+=9i_D`-&rG(k7%iZD8OvY#o~=5QTlIE|>ged z)ND#M=w^tELw1myowa|(+=@Nn_Eloo!K-5`N!27;so;G1$X3k#=bg0L=j+;~;8-cR zn+rkn;g11g`*`_^Tmnb8sn>9cB?|~Jk9v&~Uio?D@kg`9M;8i5m_W8rz^8Cx#G!LZ zJ})}K^{+!cKEm$S#`_2|yIYr}cdL1}3|hMNM_tfwMVW6z?Sg1bPA~lCgM0Oj@XxXL zG$+@9lMmV{H-Z3b@7D7v_5H=%G;kvRWNx?$sN2kq%*h+`^uBgCi#6jW_Nx!#aYWW% zzL9Q!Nl$PbKfdn#QcQ!x!C(IU5B{c>BGuXaQpcFGQpfKvEOmUgsMOKp(o)Ai@pn== ze(|^dSEY_;FE4fETv_V4AAiHIDs^0bb*bZ!ic-g3eAoAyQpZI6t*$I}WG^XoT#COB z@K;i;|LX9&7Jn>j|DAAMspHT1>$SAhQI5Y>{Ao{4ws0r z%nkFJ0+H$#`r2ejl;UFe-6T)*@kn-#n(g56sF_`(w7?gWQCg7j#NNLm{Tp1!5TX_U zL-19)`nTeeuKtsn>0Bm}6XClv*mj442bm~ZE^L8Ysr3OpMkn~Kxpe-);j_d^WxtiV zK0Y0e;_x?xW_$p`^M$K*M8!6BgnT^HH!T&=kI z4`S=8@{hwNYzO|+Tozou7>c$t{&c};p>dkz(dtldqyB7XmqAWJ$yDj*=H80 zo%fLLXJ)I{d11}WC+wU>*3>*4F6s$cYkqBkqj{vK_L62Std!^}jGuxN+2XWXpBh6Y86xY7yp)XCaz;LA#e#@0wHk-xm<@%r z3;0TuLHOH@9gcPDM}$Y3nu+YgaH2xw9l%~6XtB0cAtMFcFwH?1997l_U54PG%RwQ; zg1Ny3+x8tB>hG(^_^fG}a7yzW!81sqV*&_LhSV^*GLP1q$Zavu{aR>{c~sR$j>bwb z93V;EMF(M3{pBw*owa{NOZ=kXC%-_yq*>%DS(=$qbtOyp{JGK+(gdZi%gm}egQed9 z4`62N?%{yYUh-aGfzV#K0X(4Vx=$V>(fK1E4#Q~R*vlj9IvxrRlJ-Pw3LGhSw}plf zOLEX2q6c%?^YN zLU`&qHSpeDiQiTDh0E|9xC~$1fZw}$j@$bp*e^Zz(7WVG?o4YlI_=PhxI=SsPz7UY zstQU2)5b9iZ5bh3PE@YoRkhzb?4p|&;>a6RQxdtjRgK;ENIXbiMLekB8hSV$1fn>L z50z2pU_{}Q&EF6Ck7H%s_cyE%jPM5Pn@Py&*>WS;8lvuFuKLPcWkFNLjIVp>d|5&O zo3qY$P8|-o^Mt2!HL~)&r8dqU4g^r_x15ZL_*U-O(6cHx{PBN;zeVTl#?Ir(n-)6M zmannOF-I|8{-|Hd5c)Up?O*U#A9)W=KL8^E>>BhN(LxM?;#7{FjgbPZT%2vbn+2$~ zyzR?pIMQ%yX6Lbq=c3;@3c^viHCr=Y$p6?AFR}~g=%<3ma+Xl@1UKlMkZA&Bs)5Bn z37PACT_E%L*@Vo#6v#C0*^tA*f0Y86JL)j@r*;cuva5!NKi-=PnQQs>HvKjer)Q#b zngGo*KD{1K1J?5^G3w&*=?-UI6Rv&=XHLKuvOh66bHg5rmFDJ}e^L4X!GeOjjvQgd znj{lak1C+UCtcCurlRDa;q-j2$E4!;WHP~tDo|I0G}oL)-bIFt6Oj%TauI78}4B^_{5NGOS> z_@OR3_`hlHtG{b>1CEPakBYXN__>LSTA?mU={HU-)KH2WY#$NenJ)@e51}p`{zHc@ z=(a;)sVC9*pTK|V(CKoJ2HOy7^FVwr)nJAhorq@rom=I2BF^|L4>aJi$Hn6}w(C=i zHR_mcPUve!AMc>`X~o}&9NevNt)QtkK)e4?;c+V?2y@Z(B{(Cs$HFmhWC8U8>e7O>#%=4&b$RjQWePYtY7_xuLdMu?N)OVude2+J_5 zaTXo}O)pZD4i~^w&P^LP?AKxwz$#(YbIhAiOn1F+UyOM!`X{#-)gNxLNA+A2y6#SN z{pktEI}p%&`9>ZWO4~rCY*5le|NVs6ngg{F+C!jooVBXV!6{Sh9;PC+8j@(rsc;05 z(UIjdtaFho5ttFcX^M)YhC9MP^kAAC97Ei$Iu3?r@~}QU34fvlVhCE_LHel2AGWzy zw&O1s*DkZX`VnadpZfEQ-O+j2O}UvU^$Q=K?PtxCB~8Xw86C>UhG{or@!ax{IfwiFzXoHPv+VRvUlr~y37_cSFk9Zc5D8EKLFUUgsvR1_#5V6fVdw-lEAW#4fPq5T} z6+<7)5lBCtG^qca@hocEjn3b`Y$3RMvhxek-#~P#h;!fxh*!-4VC8SX%6|z8tK~{R z=)i+Hd{BW0H1AnNpKa>H=p(f7IalNZyO1io-j8rCC63St{P=r>2JyDc5$cPdc|Dx9 zOzBR;Btu<{!*!8+G2%!aEl+)p+(e+`v}^*UzFm zJn9kUerTI|!I{$RD|pFSAkaIm2he}`RDd4a2pT4k1DbsoSyuvM&j5F&)M8cUMxL+1 z1;}QkP8Ye}r7C!?)WjIcj&IW?U>YZRd?SE*o*yIQk_*b`9=%g-Z)Gepsjn!EHIbIomA@OyzU2D8JLx(ti*K za{>m_Kzv8EiXW`S!0u0hyx;OP_elFZEZA=UPnV)_4-{sEb-(+^kdjC{+lNTZpV{aG z4>ECOo`4f<2>pm4OO@ZYjL+!om0Em5`7^sau0BYcigx6{odkw|X;dTGupMlrp)qq#5O>9{>>)uF* z03EmFm&OpZHtR9G4A&Kyeh|7@IAZ@3*^TLTZ%;X(w<9hAb76mbvEbnc^!KYlKhxje zJJ?T@RvHY?OD?yv(Ef@E#_hPM_7p>kJO;HgpHQ6=~{J0 zlL(GPpgJeTX-&scpG>M->y}e z8>Fk64vylmCVyyf@$>`eV06-+sp(-)2p@q_ln#W~r*z;^ z*0-+1bO5PQyD;0sQ}{jU@miL@4dv6@U+{D7_hkE;)e-?b;J50_rzsZyoXE;}W$Lb8 zAP?~1JDYTnvJ`nXJzm)pc{QMSgbt_yt|9hH3GQ%G=-xcBH(FUIEP`M#ZX?bPRe)(? zSB<1jpU@i4Pg`I4$#8ceojl5lTb=QN@RZ z9>em>$TX-9nv5+*nc=5E?1>NgJ6}_U;qfo@XX5kI^ymFNiHFhK=An;~+5IMQvGki| z6Fb)Uko-sSH8N#8o}UQzaYdfrQy*%>AL4^1-a|HTx3Y#}ToE6FjfR?vpdBxYPVEVs zC_64iRj)^Zuu$_Il4uss`+3mY=-i(1As?`tBF5uL`+1p%5J!hh?l^;^=Zdf94kaxO zIe)iE(v&RK6g(=9-c`dk!b@{=DiKa&AY02N|WAF}t)6QLyaJAFTH_O&@S`?lainSnW$yLl0X9#(sq{Y^!rbOM*QKIT2LUT61%KuBd*k|6MiOYjbcAm@M_ppFjh8+TMDQv$_{P0ngz%{oUd};4KD4d^hq7HqQ2nu#_V!Boc?|u;2p%k&_VJML(B_ zFW&fi>7t})jlb%wyBeGhw2DJ4h?UOu@N~G@1GBnmYOr+f77Z>;$9I?Nv=D?aLK-^X$e8;N|2&9w4NM1!&PamR6N?^V*ErEwgvfkbJKtf-_A!<}GyHwe(14;sM<}PL(36d@LI~a0 z`4KoJvH{_$eO%MG$?+m~Q&NlbM4p2So}Hk_*JQ7M;%kicuhd@ub_0$9hQFbfC&nmH zz$k>zSp+2=wKViEKxTQabPzsyKLOG!w2QvGNjWaH;Y0Fi#6N_Q+0NsP)JTO$;hY*D zwa8k4jEdO8Gbg1N;Vc6%Ll;L&1&RGWYgRvmZ_n|;LE1OwHHoi(*(_<40K68aQF^@!W)(@JG^T4Yrcui2e3$Jb18MA100~>W zX~=BjtUD0|$b3%479!JFw^Q@vFD%K|igsf=bk=5}6iiTg&bl8+V^ZL2TzN%D<*fZD zt|g8j!s+F2O3TV(Q+3jgt3yC)=x-O$O#ZYA_&HO4UTEi zAv3!KLM=$;mtYNuhk7$-IVB#d-@Ppv{nf-nt-9F6&@Am*5&`BU+GeL{OCiuR5yfnf z6ecX&ru`u9mk2-LH9+( zPu_ozcoLkDB8-8?$0qRP*NmeDg9Nr&)q*L(-GV8deHfe$@)lY|FT5`Tn!sK}v~<>f zE;|s26(?mPO~t!%%xo6p)s_@RCxZ*DL%do)$v>E}J`u0BDd1jTbp+$(L9PTk2W^NK z3nSQ`oEyY9MS{vU@&YLdUhsX7s=h^qc1bfgO?qxJ0~QjZniN~uo0psXT6oj}G_^C8 zaZxYlAjkZblioAJ23-q&yaJjNZ!m*JXCh-etj{QhBHQgG| zD4*@tNcRPK<%^H95P>)b5ft9j*5G<;L%3s<^P%<5-!;)mCWOrli&f?z5}WKWsBJ&% z4-Cb&gE83TI}maMVzNmfHUwqc@e!i2nK*3L+|1=4>ASP5QLpFc!bjUOq^S0mbKyH)ybk$Xesj6@2ydwO7l zE{PA*vU~L`qm;rpUTN9AcCs`K49M=q+8DFfuOqFt+2Mlw0EO8KUh811?QC#rqQQJ= zkO7L*8oX^mw+&t<4TkInyR?P93vw(b8jAfHID~lBb@vHD{KP!e$V=^Yu>^C_gZ>%w zT_SZO|T1%Gmm=e0oD$*!hn!HxFdcXa66GnY+Whl%epsD zWFO==1Qi`9!Hc|D01@ScrNzX?y7Iy_`!~r5K)=y_wWI#)YEQDeYO2Lp z5g+R(s%`Q9SG`45ka3Y6I7Qv^3S`T6)ScYqSXpnMmA1LTE-b*{@)YVJtQ26B69_!~ zPU2q0B$+)UJ;|&sJM=V;G%nkhVHnlup#g#DWS4bTF2redP~XSnod@yijJecUb+>)^ z$A5?l$?e1Q=K~j(Z)DfghQs*6;axKS7uxe5ItTOgU8k9+#N2;_<*K{6U+Ve)4^70k zg?{#_ z6Tv|-boLnCPJ}K^jBhvW(;OeY5utyA^PecuxjU7S{^TH+-bWD|o|Fqx#x<1e1(1+1 z)_}wu6rv-LwE)YPt*(N#(&T7D1i@JbX2(i(qh!O&p%K6-K~9qo4j7tDET<-$(RX15 zpNt@;Fu1=1McugpWD@`BT+r|l)q?d&ppKrQW5d_y_6!}ty)D!5sUzuke|A2twD01Y z-6B{3Y$gcbp{R3!9pyMo7QHh>$eheT4RdBCoM*I2xAIwMZuJbYPh~#_( zaBcTRx`D=%lS6#}U*kicuI;zyCEI@m*FV?(&*Te-q5wPelW^KzwlW}0Bn*cSDfWH9 z*l8&~TA?hjwN6|}b<%Li;#!y)4Rk#ybSUiOJwij_O^JCkPVcO;7-IXy*jswAFArhY zn@AK}l~F`5=$=JpaVWCub4z_Ed&AYJ@PuM(UJ?;d@c=svD%Rd@YQ;U=K<{ACWIGNW z%Je7allK?lJ;J4NHbCZSNyk(17yMfDpf+@JdI0EZry%a-4I?i&x{79c6uE2Ku?UCq z&D*L`($(Q$RdjW*&H|-wRi}@U*&v@6B+TFNe=z@j519YaDf5r(pPm0XHZSr)d2Y!P z@+?>^`B8W)`26JDBIx|MYfKxcvyR4ln=NHnC7E9Lj?k~kxjp0Jh0AiUUC5yo$O=>( zy(T-MFTUVE$w})bFUkxB5uXr=pmSwq>FB%?;+Bq^4V7gR8)Rk1#$}GzI ziIvk4WB#yLbUr)by_n8ozg4Ii(9K#61O{}nbX(`j90C22R?GTmm`qK_B19a@Mh9%F z)|^k~Gs#c8tklKU*EkwrRPLP9cUQKfi*DbX8t%3RBm^LO{s_hZO8O zq&=_$rVXh_2yjR)(C{*m1v=T==kENO-fGZGM?G`wT)>)YvDADXu)e0`utwmGqa|lS zK~&EP4;D^`-cOY1z*P@N#p;GVD)LD zAOOURXsyTuF4LLUX>FXxylt9 zvC0z~TH91T(7VSwya(JUAi?Kj?2gVXx^Kf`SR{_9P^74Fi3hWzc>-cMT7q$*a_TKQsc<2;# zcrrVDJUVn))hhy8nqu&TBh;71^)QSEa0B`^@Mt21LzjrNnjoh=j)Eu;jf%rGbQ6~bO?UnuSn$l;d zsP)v!GxZfSB&31=6^h~UtyNHIc?nIgi~r>&;YsY3d`g6=^rG-w1+~_es$3?E0;FBm+%h7@oUPQPv~*?!tgT`g zjc*Syv8>!?&UeXdG!#MCPM&gfdJ;Ln+&PGICack zt4V~gI!YqWy3y2X=%G7n84wx6hl3g;;(4`{9W0Jky68c9I+ZH+K|xz#EehxowY8ZG zGK8dbU3DQGOpT#0^mn1$>Cy2Yr&QIw$N8>Xxip;~u%63n!|02xUVdvWUCRUpv$i9F4IE#KIe~C}*FOK&Z5*@uaWl##ot~iNM!iVX0iAYAN|kcy z!!k!K2ki<-3C@pE!Owwn1KuaVxf(YBXCG(X6S(r~4e0~83|dQF0W2XCg4ShVJY0EFXvGR07sLq( zyC5aABDc&sL`^U-ewoED&&e&0E`b^NLudHkfHn~SOzH}LZn}4F`pM}o4sXu($G4g3 z_FFH?6zXY*bbm{pLL2J5TuPtty!z#7{UB;jYa#*n3|KB~)aYh{4}+;qW*$sS4o|?_ z++imFHktf3c7%E#_1dsU5ey+7I|c|}bnJ(~gEL83KR5XIH~!?{({Vk0@Xi3wp1^(F z?#k+9R|F{N7=y)o&9|#ocgv`LRHwsXQZ7wh|@7ffg{F=5&hC$Fk z=^Wv!`y_M)m1zUFFxVF6se$B2&HT!tk81B*5ZLudZwFs%WWcnLj^_Qv$Q@XN7Eza^ z-AyOYVeB(Jb>N9x`99@@CE`co`TRIX=M}1O_iy7x3qr-H}poiUtTj60hy~H@*%|_|y`SxLm$N269yn{lJ=8=bbi!YqcGX>Qj zdFz4d-&dHg%l6-}c7c0Wz-`Q!&FQ{T0dx31ohb)dkFtv*-ki;z28Ybex%RBf2_3R$ohvkS&pJ+5Up42wwqDNg{2VS zM|j?ncQ?LMS5N9o>k~u@Q1TObEAi}wY`&QKPZC0Ho(Np{U4@4{Rg7T_g+FyL7w%*^ zR2D&-x^xh>4jIJ=8x--mYL*R$&(_7j60h|>@i}1i!cpxUNEOHzhsRdWb!sH4IXK>e z>?keJLA6w6cgCRb$?5#qnw;6$5C6qmIaA#X4iEcS!%P*`hlcm{ zxS=2RZdLd%qiS$xU-x;Lh+2cH;_JfS=PViA`G(aB7mJ)gG_$31G)yGfore}jBNd=Y zp8F{|1p!4c2Jm!0%e)qZYD&A_BR>7_5S|LWayBGb3%5JQ@gsmLn}*v7^a%3s{NIFR z5zjmpfj^mNojPlKO?Yi%6`H-H7WU&{HFCd9 z$ZXV#5{kF|G!kE%NNzY~%`xK2=zs3;Mmro~GNXoExRjLE~R_Hq=ft)92GwZ~SW-V$yJpai5Uctx#s#i=c7 z3&B$7{r=Y8Gns_o>Hqz|d_G}j)?Rz9XWgFr^DJJulpRMR2%(}RCHnmNJ36dls{F0< zN45@It|5FGSGMJt!0i4VP@lsVAlOGMz2nXv{BTu)^f{?3{h&iTHtH-^FXJU*Nt6wGPL*6m%rzy(V*EXZ#H-9_f6hgsc$&m|pNSc=PnH+om zmDBTTk|B@*QEQStuc4NNDm&{|A6==VUgil!(#yE}*HmZ}x4flE*{Rpi)6~f5&Fz03 zA)RryMA6+Zs2lJ|b(t+uEXfwLhVLs=gUGz1)1&t2?DFpaxMBn%c4&^h3o)lh_rob^ z$X#7>c7++$+hL;zKON$TOyJtH9Ao)m*7bH@+OK=gT7v+n$^a1B+mY|Nr#6_6Kh;=p z2uRE-2|Rvo>55sUd>pxA76*Qvh43;>NG|?-g^6GSKTMp-n_DCXntzokyfhuh;SF8% zV7HA6FmW^*`|kF$^TN`OGRHGZ%!xSaQ~L5(r~9QVW|o@KDio?+G4n_|^zIA~&9ly` zo47+b(E0}ek0sA5js?MXHZ_u@aSgvTqaQ;{U+dz<^-8p5_os+nVZ3l!-uu)Y7u-HS z5+4TE7#!Z4pWn=Vz%O|C^P(Q7<$bjKTb!1+KCN-{-9R|lIe$d_FzSv9lb0b5MgrBm zlG?#qrY2gKz|Fn)A)d$k-Nj$*uszU=u0-RPz*U>Gz&?*7j zok`tJ`@aetcZ2gIXVO|{dygk82JRTeVrr%t8%j+fM7W))5zZ2aJJ!?Vq`RUmf92?P z5ycP-{$okjUyb{6w>b>G#x04uHQRtq-%BIG9rH)WQArhU!x<^OmnZr00w=v$^=Bmt zF_~}XV9iwzPVmK>R`Z`i(rQePeafw?(PTKCfing_6x_cAweN>c%b!2Z@h_U?j^8OP zzQbvGn~o2w32tL9Pf&UbSiAiA(NXlsvl8PwYngC=)Lv^ht)G<`!O2bs?o>iqIdGNf zTziwJV_pIM_3)p|reyTnkuGWhg@p^dL$L_zTg1)R0uGM{Sis?0zriT%qlrOLa0hI> zx5}1uXuXFoJ;6 zP!+~P`~mtD-)h;0#%)(E;{T*}Zisc-dkXLitq9!lfF?QJrmYb2bi6;(9>#wQt53_@ zL%5$%mF-0?Q#VjKFWUZRqBl++Rhult^!uXO3ohca<#UsTCpwe1!ZB>Y-^J{{$Mi`SWzRO$WcsTA$5 ztXTnN^)GE@jEs(bv?n%c6Q=~65N+RI5N+9C7P!ND84Z7FbSoU#oF7FeZI;%tL1&`ntsZ+W_GC7TQ?N$|W>QCtsx7;FoM8JB$Qn`Z zUFLH3jfT^ZVwT7$wb>}YljFV~cwEX#dYROf1@6u(c?OvIHy;Mq3LtHk;p#F8IS8_v zjf~x1n5wbdOb1(>NnIA8mi@&yi?ir`$r1>ylsOv8X1nWsXvS&uxh-bZv+}=S+-qa# zZ6~3+WjrlC#eqAj`yc>M++la1!I@r;>wfqdk(lVdH=X4Cp4g-hd;R;OuvqS>XmUJM zVX)Kw&jKqT;jB+0-X-T;y^?Ev+q|PWEb3m+Mt3@=bg?7E8_nIh>t~9BP-paPxVh4xnD^ewd91u=oLn(8mwMYAmij z7(Z~&{Ep0$gCA({mi11{UyH#J+oH+BGqO{4=P;HLr*5W&`O)gR61HpPM; zN81)!2%`rrXGhH=BgLR+B5CamckBE|YlCkrydtN4u5|8+q6u(7HFn_sNKgTWLH#Gk zhg&AYwmP9ExOV=;_%KaEk%%x#I!#;(>KSwrSi*M2f*;O*gg)Za=&kwY+TiwPT=|Bn z(Zq1DY%S-6lMQH5O*V72j+a5$#J;x|cPrm$l=gTzK1mJ7g0D8?hK;W${^cNbmh&87 z1wFmbdup+Jv)&QQFkDSU6VaY%qM-YC!hP(hD($F{_LdV(Owb{&tW8`XzkINhdOzj3l4i|fm`39 z5CM-LuskoRh8r!Zbwlv)2%S4ceI3$9=`!)JgK;+3OzsTRZu3P>%N~~fLso82KD6p2 z*;y)c>FM-xr{yEo_V8!|hg5|@3d+7Um)346D^=b{S0^*4w27b$^tNjB-=Wg2-+fB{G(wpM%)wov_rb_gGIQ?8| zi1%eZmZBh8GdgIwmTVRZ!;h4-d{VOT*l2Qv^aRo5+!AxriINYc@vwS={i#WAvF&E@ zA4Q+X5RlY-Q_KE>_=aqap~1z4ac+eUanb-<61^4P|AMYr@#j?t!8#o28Mq@_sl8GG zU%#r_QMhJ-z%eJ+=9^FW@TK+b{M0^dpmrtU>w&qgolQaY3#0JXgB1#0Ir7iw`rcv!TFc?7WTC)_8&40as5&8wa zgd;iV3q+K}EegX8zeh{x;Wz4xKEEsb{SNi}UDxk-L%-imeSRm9@jI%O95yd8r_>Wh z34HU3y0&q#=R=#7(V4tt(W~bwj1%P0&g3CT?zu zCeK}rfWGipG+#&l`BXgY6VKR~cK2>sjHGS<2>n+y@m*mR9!k#>b?q+-?XQ-{^#NhE zrP!#m77D8*UFcZ$^pZj)7Yh${b}*R-4I- zvBP%7-?0y=TaakN9)7N!>>{&i>&a}Cg=LhK^sdNbl+v2#(9Hl@w^bDRN5U#2rESy( z==E-p{%OGT?tb4=H-Iuf9w8+D1MNL;LAIFNC}Kmnb_Zwo#1{ksR;+i6``POJ^ z4XLU!TW7EtWvjTeFg#>-(m$W~HW#bDsTus=4l|_v^A6?qTV`i?29t6BA-_r%-23w$_oKx^=ea%Q>KFX|8N>1tPS_l35ve(!7u zg-?n=_deTj@P0QH!v*$C7;33wAq*MZmNA<6xLO}hj=eM4ct7DB;#;tJ-Ui_$RYpBT zrm2j0n1bVc&L(nFt-Bk=0>=a;j2ZqCD(z(CA*>;HcSIf#LbuXEF(+l||gQnwe-oQ5^-Ia0+42Pj_TM@f_N7qDW^H``*4_0ngce z1a1sNH9J1&=XTE*!@H}_Pech)E zrDVVvWjc?vmyr-EYN7jYu5H1B=Dn%cs{GeJwPU@EwR|;xynBT8RdJd!J&f6|x+DC$ zFHqNwJP_=eKO;Fk4~VY-7UCN!+%psv0~SA+}q@9O!A0lWHzYA53VYgZ@-mmebz z>tJZFv>n!-B&KU7y~L6~^*wqnh8H}9HBkEzsZ4@v@im+B*-XpYkGS;3n`_+maJxCY zW=eZ_*`DcZzuFPGw(Yp^vbNuTecln_yk#G$rS|TUFb0nght9s}_t(B~+_JT5GkL3;Y=3*`l(osiwjwp? zZfk$PWXiT>AE~0dcGBkd-NjQnCvA7vw(l;P(mrWz``g2&ti@j&eX^x5WmbW)O>_mJ z^+R($*CLAzCV|a$4hoK&w?Yfy-C2g>69I2H~~>JVTR< z(;iLQKkeIOCbU7xZlL9c;{1io(Ts|iJFm<=Z$t$9j}4eVese7`^JE^VEkGlC>q=ue-mZBQ@P(bVAE;H znbgZ+A4N4Mbm~ZO01f8^99jL86$(5hGSxgJ9Cf#uXD6%2IpFu+%=plY(qssL3fDS` zAzC<(a?I)ANOe?~f(JPB)p!|tl{sR%FFR>}pE8y=8z2S|~lAB>=Gw44x zYA?U@MGjCeP)za!D^D>odes}1RR(zm96KI66i+uSF@Epb{N@{+mKzD&J>D&#mywRE z_{4jJOv!uD$jdWJmvIME`W8w$3G}GYICItx)7WG8$yI80ML&OL zUahcer?rvj1k=rZlt_2P3lTTp2MBGYl{r8#JOMH0ARw?nA}&5US~GZIh4e5|&ol!e z>LtS0ZH5P+u}o<$oRwy{2WREMa8`N~X`>!J;}`VO%3}?^_D8qq{Ud$CD0`#3%lu&@ zs}^h#AHDD@EWmGvCHTaUJrIZ-$vp@;+EJkzBKzoMY~?uef>sS8-V7sMG~IUg(&>Zp z;(M)r-n<(0q@m!NUK8o%-}x#8f+o#d$5nCxf(xhggOg8D92SR;A7}6b25RKhpWSy& zRbFnVP|m$tY}p0Om43hLR`>S%-VK?4uTj5CzqA2$M;;2j4fdu?H~pu=gY%8!q55{t2YR)o`-J*AJG zhigSN0k`8wPl^)s93I2=@sk`fweDf4=>yC63l~~3_u=trn$6m2) zzxlyWgdgnpzDMs&$8C{d0G6=%9qbQLtcf*9K7^nXSq^;z4Rq==Aw;*u{0SISFL)lP zWEP5B3S&{fCBJr{67DT>&j^Ez&(p7@&q4o&8?N*`?ng@OpRlqCyAztxi`uf#zxd-r zKtI`sUTSLPPSNy|PK3#61w!Gce{Veayf7Ytd+_<;)Nt2`XYVUZM;pkuR!qa_pLfNZ z-On3m-N`})Q$Ph)&dAI?M0HlN`A)?iCT|vn3N%?Jk~k>wc?d@_;L21ytIe{_g-$k|1B)^Ys*jmGl+jmBho2r-XXFE{?7%r599;5$*W z%P#G{_mxw4^q<9dKD|YD!!o+dl>P(buUkFdZ6o_f^mzGXpg}-ZX6$9T#)uYeM;4}s4;{aDBikFRmB zFM<87LF%cQv?rGQYFVUUZ*}tIFT2mXuPc?c+4Qv7oE{_}GM(9rSYUbbEx2GYC%q+} zs(}fFza7stL~M?)l~-951e?hLt&n1`%sjw7)RyqK=`MhD^N++4yg}2cJHMC(F!zEKq;#&ZAU3sIExQv4jwW&$mJl^S;fiS9>YA$bLIz6m-NmeW$aJ+IqEVJX> zU$EER>b_ye_2E+|vyf0!15qXCiRbUiQNne0ax8%#6-lV<@NCwk+2jn{isHe1Wum(G zV#JEf(ROyUB#CbWH_lZFl+W6QHHk%~8iCh$f{pScd0#v41d<>EUVIF zQJs=##g9%p6{ZGY*(Bgyh;|!`UC^D>_oUN9@G3i%JsRdga(YB7Q_!>hZ|=)zzR=sE z^d5_Cabbx`KSLu)c2i<_qAFD<5JH}!7mq*Q%HwLCioEb@sa(-!R$hstl4WD|PPRVeq(RG8PSFr zACI6mc5i&4*6Ml!sr`zf1Be-N2fz&oGUMs;@XU`M2+K3b9p9dg9uVdpp;#tq;!1Qx zP@|$7r2r!(ocDnqS?jUmpbN*@ly0@h?3TK$TWT6SUyEZzqj<6^r)Z?Cqs@h~^vO#C zs42nJN68*anBGyM2bE^~5zH9-lf$*u;@_EtX5ybRf=1ziR(pE$RpMA0Z^OA^>%EnyXoq} zmK*za++hyDm>iZ|e;~nM~T%(TJ_TY|p7?(%(fi|hUk%oH~=e-|@T)9>!6bVZ3PGgisGSj2F#%9`(*2?ou1g zTlfz99q$xy1I%BSd5TJhn7{i!mz}?>57qGwGmA(6%lv_VGyXK5CQ9_z{ir%QesJO| zCGHj?c0_m2dmJRI=Y7>TwIW+(4hY;wf*p+XI@IQ7ohJ#+t;!@s@8% z%qw#e^QxSJb}wQ@?6&rrZzQni)xu+$Akfno@E$6Znu2I45*CMQSGfJHL6KnR!Xk4o z=e75LMb8;H1H84*s-w^=m9$A26v*pBEdnb0ZtP|DfhN6ox%Q#@X06;vnIOsgLe zKc2*y@nd5NcqPQPgw*CbtCHvDDC@|S1BUxrGW%iu3%M1%BzVCPiP zu&4RqAMm4symsok}MupPK4Q{CB)3^75pXT>}ddphPiLTR?Q?{ovd$9x8DL znNov!N(0-Ln-893`sk`&R1@Fjni&@^1Db-#qPqw?jN<2ESPQahWeM z?e9&{z@W$xdy3U*G0G!?XCGKFn!CB%oN0xdy+q^ERYAS0B%L_PMz+lh&F7FYGiVl6 zYZ>9ttZXoq6u9Hx$B9sJaT755!_0{h$1lTXRT?_ihSvc18}r}FZmke0%Su7a!z*=b ziSPZ{Cl!qyf)Br3`Pxg(xxeSuOLpD`UjJ@AbCB_)@Otf)U6m89#EgGgD%IKj?hQT4 zsz|gyk-)%sc6oXiDKmL|!s%9UiDUjE&yA{L9U@JVb+O}jOP8@V(F%f4t_aRKu;5b1 z9lwK#;P;hQ)#D^@;BZHoj$Xikxy!V^B)9^7RRMs-L6Qfd&?#9Es?q!aq=m48buM}y zj#kbfou>MYbQ+T4pRsJjz5Kt(w@kGun;`ThEuE-IN8ZctMA0h#C-$B)cJ#;}+p^nL zR;V&G0weFRWsCXW8WTA7Ma)XZcWiw5!^ms@!2$Ce##ZR4LFzq+G3z7NyeNutMx*_f zSPjonY*!4Hg%L&h!yzs{(sLBsBsMA@ti?73w^kc`h0s9j&Sib8;uGPmI zJicx6cJ#LK5w*e1_>oU;!@+B~Xw`V!$be8&;eX9pz2}~@1R<0o9Edky-!^D@8a=Zf zo^iO5z-h<^dM$&}j<0ZByTQSuc(@@=&n)y3Ir1r+Hv1dC(%PZXN|^__+QUgKKw6uk zYN(7!?l{UMRm>XI3qLk!Z5shMl%W=~|Ew1_M0N;uqN08 zyZJNx?LpqyX6AA6{Ytg#u+_LK($8=zfuX`o`+#QHfl`0;m@U77>gfdQVMr_E*>4}C zoF?#8>Mgr3Q)czXo*v)T`)-Fi1O8?Ue_clU@Z|jxjevPVmjnse zC~Rqixf=V|LSk#L>~ved_uN0phFq{Vz1y9IJRyDR)Xw}=%$>upF7r5+y3|?zk0?T9 zYO?<$hE*eVg8$<*n4eUs|Ksf_S4;fg7Hu^(y=f!^i6K^eO+^Zoo{Gx^WrKxNq4Vov0{rN5lQ&(}bc zq$WKMyBnoj9C!L!eNCKABNrB%{qL&sg(WGZK1jUU#HURx7Yc~nbO{=Anb}Mvo*w3! z(m_S$quW$YK+j;GYWf)>+*u{Wg>TTr(?0CNn8890qdej_;#|F@Vy#nRI{HR?78Ucr z=I=!WKGw?a|1!zTmOB#nRfGq9sxV?rXG3cyydE8# zx-UOQDH8kqQ~RZJeRnQQq(paHO=>qu7nJU_RY|?mo!;e{`h1q(vyx->Be{by5ysZa z0hVcwOFdQdfLOgAxL$;W81z}E z7!Ky3!OkyQ%5}9cO+aTVZR7nO!n&m(x}JBceT`Efep#MhyxeE@JbahICzh}G_7jTl zRMdJn(ectNU+F~ zTHpV$FS2f_CiC5FBYKHOc+cNQeSz=*%yxdReeWi%J)L^*+OFjO2n;r0O%Ry!Om9xh z$8ZrTxx?5_-et?Zgbu>IARHqPtN?vj6Ry#%(oA5!5R zTLKE0&pzw+AjW-dy_ox&AMXv8oCc1@3n@`u#$PFaL`{^1PqltX2GEr}=Q?&(c5^8BT5<)7IeXq{~p zOU;)=t%CB4yuKEBrgDz5lv&}|` zI|2;t=T>v7%IoDI&>yHVdh+GocC(HKYS$`JeMbWbg4!$eZT!9M6aq0WUdmqr-tu#s zSfRo^v2YzE6UCf7DrIa6;@oEQ%V^^|TWa{0rUi!Mg|7hEFv>(yj6 zvU1_Nn&d2dQbV)d5d`Oo0%z!1$m%53vh=frDBp>ObpU*f{wzj->i>?An?*37}B z9s)HNWcoQIJ{v>^{2YAtv7+VwO?=inzt){pMB{>RCb3{8Ts1NrqMMN%7hd{qzTDD7 zOW%Vs5Ftw#1f}G#p~mZqt1OGU@9VPyMgq>^Z9=KBDfs%haLe>^GE7Wnr$&Q+3A9e& z3x0tTDFdxaITce>h-)>)PVoKsD8fI>^FwEL1eV`IE43g%FnJ75bl>hX}rMv8dp&Ry;h$Z>YRXNxL2`Br`lhbrPbo{vm}&w zVM&ozd;}lTY6SnrEjEG2ch*ear7-Tm^7nX0%$7VagMYOTU&%h)%)?l4pZ7{+@+;me zzq6%#y}H@bd({xWZBt@oj6IcTbh2U)pT7J@c2je(Tgz8yP$haB^<2W+SKTsqDbPA` zm-l>+z&;4fMzww@FlVWWgTOr9mi7m8f*QirZhVx>E5tE2VCO+XAgeB5~VTeqH#i3B@yTb9_v#+jnnl z0xH03{t{K<$DquRBBM6=alchL(vF5`a5NpkR6H=b9Ua9`+x`&y$TG**k>@wNiw03n zKz%todYg_3mE!?)9ZTQNuQ~Jm!1A4TKDOsP+MapzG>;TJGfETJT53Dklp4!jK!N4I z^Z*XD%Bl>e_t4($cG3N#Y9mMdC1qdQ|fyCUosmWzqtg&or(c?-wI zlHP`mCB2Po=Fw#8OciTit9U7&<}Ch89UnRK&G?;a=twpBtNvYcVGHyb&8a7eT9z$* zY4{S4xwrh9)SRUjsd<7?nH7old;ShB?Tc&O{rG^JlHZ*Qf*FG{bT-tcj>xZZJ`F}g zBVR6(8k(aaw%pf4Y%bxY$=Uc#th4Qy`D;!^v2;f2!t~4r#8Lc2UT8ilBfE~4z*^&u zxYZY2Q^RXeT4LD5k+h^HF}$N%q&u(W%2K#gW{cG9o>-+jJ-u%p1;&_3>z-35<}VGi zj|h{?pZ;IVmuUh`2B62EDPK-tOG>Uh%>R6gVST22IjpU(e5uWBiM9K@xy(92ScNHs zv9GMz*iY7M)dWi3l&A>-F7q3)y!cq#5Uh|VcSd6-{(i-k&>B(FVOHC!P1vU1KKsUR*=Kk+ zfk$Pe8ON>Lik}JKJC-J)+=vz7MCd?jh&x=HtDxoUrJqh|O9T?AHSt+S@zErGpq#JW z0O)Q4N<{d`m&}fjA7toO4_GBmCSK_mj*IcdZttg0p7;RCyqb<#cW&Pdc!qdXtb$b=KF2yqTG~&fe zVx$BAnMTeW0}T_$i|6pzDemgBZ-qb6Qq)x_=%c2ub87O$N0 zL5=$lC((Ehe`St4*)kY}MVbi<skiX8ZArm{mi zrB;niyP-H9a7Uv`in-Ayv_0EXyYo1O3ddLYT zp=C`nGT6_{nWs0brm&OJp?>L)ZRsAk>daEw`Lj9qG6`!lw-n${P^Emi@jO;|$_L$F z=5D5#`$%~wb4dVqp76Biv{dbu#7M}hNw(KsOU9nMJ%gxX?t^}C4%8eve1Vv-Y)0G} zW*)tu-_Ns}-l#iuU)&u;BT9_=^IE$PbogY7@0kC$gRJ%o=JmIr*iPTs+;!`Ou_jsnlet5juR z+Deb4WJrPi%-WO9&j@x@bkc8F8$o5QeJl+`Py*f^6t^rsfGjG;0TZ%BPy!~~Fc%S+ zR8L?MbfjQc;0cl1DNxwK>CX7+siUtZvy$6&HOe`8Z(1O~XuE3u!__uloJ<&9wtRwD z4q14KBC`^a9Oo;zRr|Ajr-nf~d}4mCvWH7Rf+l^h4sSeii%wowz6Li)PrvYylb8$d zvft$IR&#;nFC)xqc4!sX$Zd?qyhKlXce;_Tqc^qeKG5>kpy8b@n+g-PXpU!>3B?xo z#wE=zGk3paAt}qb-wPlkU0l29>8)qN4?k$LNX8P6l&_)-bl7eL$IstcU(7`07B})< zEb)}hIGKn%>qhn^B2T!Haf!&2jFCQ>@<9OVO?eMk8<5S-&#Pk#Qg-TV2nvf5s2nRm zlhnmM*h)c`h%l94J9O8U1a?oyUZhR*fqMEYvm}?q?!ct ztjWBk-(=pBs6{O{(0tB(alrW`ay2`j%wK5o-YEWD3^IzJ#1yaNE9g`|$M~H-+pp7S z6SeOR-02H{9I#VXg{128Y+=^?PNhJJFKS*`8~jJ}^-Qle=VO@m*qmPfFPXcTYz_K} ze*Hg@sNFYk|K|_f|30ow?%)5P=>Mukf!2rFNVUOty?dQ)-moq+$-)s>?n#-<#UD+v z56hDoSmc^IyKMNjmd%BUxlbnMk}9(QmR@gh#LWI%dR#1VTn;qd4GV)YX1Tk} zDX3y)gv|UthTnn5)t@?DZHYc*Rs2ynG~jj;$-ZzGx!CJ_Ws`NF1GF3 z;`gPO^R{gFhX~m0td~VXRx)^{xt3fl8n?=RdZ$d3QU}>-xfyrg)7`;Pl_O|`RkXTg z@;wU~NW`^DYxbe1WX^dYm&x9+Hnh#X@8n=iPc-)I`}p{LXs&(D?t>ex7wd~coFTDM zj=ADvU{9WllGs`%%dF?Gr*O35aRnX}=5=tIJSlwl-5fMS_+!&!hYWx87(;M+NX9XQ z+&XZ(t{n*3`+A_398%CDi7)^rl(8ct`rxhfrAZrPajrs@{QMcorGrho194drt1Yl4A_7XSSzwKK74au)C7(7M&{tmvV zair~Sc#hi<_6P6|U0K_s{Gs|#O*^zXb8QdugYtX@P{0Ph+ocUCHifwjxs#XS>Y`j9 z&2aEcQcO_Stk99ORclMkhDWt(wFkSEMeKsXkg%PsORSyEUOotW9*3zh+EKmQljHD1w5$S| zu&UcQrj60WtWN&6O=*)UkH6jg8UFS}$@xaEvo`ZGlJ81s%<46A&!6WV*Z1eC>n-cb zl(8b2dQaLi2?}QS&mTq$vA!`^LG=F%e0M){FnrY+SaRSyEmM{Q-_gDBg$97HcfZS% z(sSqm`LS{bUv@$+Xa*t`>SVg5oG0P8nD_hpL}F~8ZLFF}!do%7^KxooYc z(&;kifaCi%ylkya9s+qe)#87;q=N0VmtO`78};^y{AH{A`xMI8tHhl4YwgNexx2E+ zbL#kbwM2NNl2xn?hh~!c-S3VgnIfA{LDa(%%S)j2Qz~V$HOmnqH?IA z@ICTguTx>AJ;YF+dX2F`#HTS#eoV5FV)#mo?g$sdW9D&f!ibs#;*5~svC739{igsdFsJ>0n;E7*vQi5I1d6@FFc3L?~_f;q>Ndp zP0Z@6EdX~^p;I%DbDh3mJN=VzY=Sc!XA zj-+5L`oY5FnB~kG`Ni)) zm0+^!3ck}dgfvstIjHJ&URB3dP0p$^|9qkoT#gHept!jEFZ|5iaNU~IoB|7&(N~J4?MY7MrpGrHphw_10sP_VIwvEtr#K}zyv{6@$!nO-e35x@x!gRh zkER;RZv0F>w%&YH=MYLFFFWwl#ogc3Yxguk_!slifmTcAp46KA_a@|Klz-hmPP*DkrtT*84h?I+ znd*zZAKJ<0#9Hr%HoY0jB&wR-@F%lA{E!+e>vpjCs@^EqLyQmlqoi;Dc_W@RBz<%7 z`pyjVeVP~KXM3RC2xBZIr>9WxiT8=#s0ifDkm)gA?OCPfmHX}V6#YMW(`nmsX#=be zzM*5+?+9`&!%kE2{{8megHF3LPWpuR#-EwlL%zQ;@ysEQ0U_fN@4z(@n-@bFEwzkx zEo#O31L$6N61SPWt9&WjP~p7jg1#Vk04}eQ&xL{=EHClLJ@%sWZ5nA0m!~m@y361g zfKMF-Y=4=3b?1Gsyv;)QJF5q@LC4V&GoQ5;1I=l)n}t)5ys#|2a;dGm#hhRG z2%=r~_M_Zn{}0t5BxnotPxc>mCrH^eEdD#X9ZJECqeApdtNd#fBqd!b=jE zJ53ozxs_O@N>ZdyoC)sMf?6(J?RzLHJKjoi7%BkzA|2eh;9Fz{RdCsiei=#Um6#uH{{@?K2Gd8j z%jB3{17##VDVveh))*SBFXXzjr10cnatr${7i*-~rS9;Oho*j_4P-NwJZzWIhZ5iH zT$e5IL-sx>FF)EIO?yXVpGRuEJE0icJ3IWbMNR^Fkn(l%3o&IN;YyzBk%fJ z?#!KT;o!2JQ2uyXh8NfM_Cw>N?TyGt;kT5vz7V);ZR*L$!VeprK0$&vaicBPxE{4m# zh(pdRJhz(1?R)`{g1~YGkcA)5ZzXyu(z-VsxNBqhcllHHCP+Ath`-qpd5`C8+4$dN zYpFyH^fI>m3Uk#1rHY#kbLigw1WcERq?xk`P$5+whsJS8O>)L*Y_S^`YDd-%F(3W? zevzHAhm|YnyEbi#UOg@ExoDEeSoq1RMEo}1yt5;6x8LJ^wzK5i+k|Z*i?@RlE`2Bw z{|&XC;On!fK>6CmtyCS<{0(50Mcq3^am`8m$1PsT+S_O&=x|k0>rT~@u{y(53B)gZmG0#EeFHr|)_Z;*;Ij@R z-+b$eJo8EH=TMlAR5fccZ-3vlP&iF?H8@yfUu^bQ<7*##tI;~qUyVh(SPdYx3EdXH za+*!(rnB&w*E^w)>VJOjJ}+1^Bw9Q$fz zrtG&W<2+IEuNF*I9REtD;?`iM;)?9c=T6C#HD}BIaC)Y!AzOCG8JV&eWkR<=(P;j5 zPZqR7AB;xxdA|nk7T>n3+hfu5^X97yl!c{Jz7&n7_3#n=*y%r-(fg>uTw@<~S`Ysn zCbfUKt!O*^R2_OV@G)O~Hyw|?@w}=-${i5u6R!e&xlZ&2eA>OH5|GTI@915tWo!^7 zX_Nx$vW}2;BNJSdzMfT16nHe}995=Lh5oBl&49eaz2vyR!fh9lgHBK!Im-Rl?xuDo zAz7BiU&r-1Z9Xj$EJ$UU_+KxcE0@1Q^0gTyf4kMknAT@{muZK*ttl1!Puw8*djwFK z2O3aK@>ycwpJ3r160rB62TD6cu(`$WOW?%3}gb|!CN(jFU{ z&$PNDZ=k^Z?oIJ^y$z4OQq@+j)B-?v8pOC%zN}N^-H--uT7VCyssNs2kLL=yT-jaTy3_lS+!uE9KyYCa`HOS5Lsn3yqd2_k{6ZLxZfyE4R-*qEc~=kZq#ipxASDTNiuS$R;G$Xp*-W7Ll^3k7g_#6p!Mf` z3A_LD@nEaaAl?*eN7AIGU)WG`%(fPM4K7 z-4$5=HCUFYd%HIxZdK3=VfV#!UEN9-k{~3EdK@p8Hy2dMB_Zq2q7n3yAm5zd?Y{tQ z!JW+`#o>v!GM51vICGp<`|KCRUHXf)Z2fM{l04F~u6K6TKjVDM+~A$>yBDh2e&@TP z_k2(IR?hkUhAOjEz2_Ti%?u7R2{<~zRhC6ZsE zO~9@5ksN!GfB{*q{rSmxD_V4jC_GPv$=l19G7IM6C0g&!Sh8sEH&v{tI$k*McL0(c zd!nt1H>An?(J#|eP>eMfx?L$9xIp&NyZ8K34~DGKPEAec**@EpUfYy;hB;N~43lHu z$v*oP&(=uw@&|MoGJi)lPjjVA3AC!Ig#9j8>m&G;=2M<8`n=12HaiYB+@*YXl8@ zEsc5V4_(}+`1wwA0rM}C;67$`CZP54LhB`(%}y3jpL=X;PudDOsFy?CsPnlPvQ*bU zge@yCm3e|8=i(Lf^7jGDa_eZXGs0l^Xhc6xo)p0?u}a)bv>52Sp8J#+6XDG*H5lV9 zHTH9dW2owrG~99bIYF+tlz&}rw(xykw(yYeW0G<5dEUG{Mi=-p71%pO!KAs;#jnjJ zEBiN1zVJ3(I0e|WV^f@Z`YSKfO7~5x9?OVo9=;h+cP4wHgx09^3VZx?`m42K`^NGQ;-@8Nhs-(Gdn2mXuo^TX48d03UU|#Wv;rG)W97!`s(hsG#I^cHp&gvG z&z1c)lpWte`cku;@U@k)t0sXFEn`NrB^Bp10YFPuZ*j1Gk=p?1(AO`H^y>E0FN#O- zLs+R1L&6T#C z4ssEDf9Z|5dLBip9hgL4WqI$-nxQVUut|KY>#ou(R)6|6N}P@s73iPLpses#bKv~# zDA3(ey_&r+0wI`zoWdiJwIH}wl~BtvgW=b)AMchRb8)+*b*Uaye7@4 zpYW)A$oK4B0^0CaKVzv?R#)7ht=^Q`>aTeGQegSpYK<#IoNOj?LgV3?WV0a0=<>Dp zxpg88wEmtS@J@$$u?9F0XXq_tu}U<_o*Bu=+>xSZ?wkq}LU#|*YH(V>pn36nKFIQU zo(LcnMjnT@#5`4Ys_H<|yuuMG>==$PxrSD~q<+En1>;%TGI<~R)!s!LVOCKsF(fq< z@AwWyTrfFaBOQAB_LqO2PH|IHY1mJ;$E-ET2%xE}%kZJSsLqlQYw4-P@gIaFft!NLx&|6nGpceU>q2b(#|MrHhWtOV20q*_opwNcyg#V3T)h!7+zow8<+k(NVJL>)>N#_ODXDUKVET;%BcoRKDH{GwDxOaMnb# z+K!oZ4VyDL_PUZxD!WrRqibLKrSH9Pg`YZibmQ51rhL4(L&bc+DvsO2k7erxXvU6^ z8NmSXU(=oge+Fg&U&Z^GlzVge3K&m+T?`iLYSZ#gUpOCVv~aEuWZ?YnCIo)vd#Pel zY{Xlw+sRZIMOCpysw`+B5AQH7AEF9`xBtZaH%NgyM+3_*r=n<)_Jl5 ziuE9~zdcWbf-_2$u@ME6{3+sv|C65@G#N>aoQ=|3LXgj`B()hi2y0wpe)=6@oO98Q zVi~9jUUMLD>k}Fp&BKck?Ji71#_?~Go@Y~Yn5~4v3z0HY+hOOsqrp#=k!Kt&uuHQU zc@~Y7|7Hhw?|iC^JTt83^#Z(FQnN|m7)BbVEx9=cH{d*D+<#>tDDHI&Jl8R8HS*9n zmvf-Zs_p84V4KNmQ2rH!=%Z%>L`#?D?LiXoG*04aDPrjqpw3B-|3IsT{|$N9vjDy{ zLi0Am;krR<@Cb$74Kb*@HhBeM`MtYDlMNO0;&-GgVD9!uM8ic|&A%|H<0F+H`0nd= zL(Br0m&}lF+B8Ce*3RBS2~>6FgX?(Wib~8P0q5f4DIY}KeY*WJTCmrd_O0Uh@w#qU zQr4IpRh9YA<9mI(GUz=ldJ=A-#d9Rr_$nUC;GlQH008Gr4Y0a9tdoG&x()(LM~ou*NtmRs8*RDSDSu z*hb+}Tlm1~+tS@-bm7+axRC=~gNe;J&uSzFnG?Sba&&icdqxi$37o^`a-cfRog1t| zf=9J`a`X|6s-3uWPa=MR#!@(8T)Ky-)8v>I9qFRPnUtp66ZErObM7WJ=iGXGX>$Bf zwx4qI{r+lo$juL9hU=8xOgyd9#DA$_uLWxVL09wPay7la*sI|`Pq!s(pUI3z_nS`3l1KC6lN3XxgK%`tL3iAwHi`MgGM$A5 z#ct$b;tmhDvn|gb?`i4fr*QWPlN4i+vcY~ESw4}tx}7{-WA z0~`&)KA&^hDS37)D#tkKRszeHaT06Xt9oikNLY<4wfpFUUoFnTUP0wvVxP}S>DHR$HE>`IOJ z%E;1K;5TjD>00s!ojk(277eN4fYqlah<~g%M}|(#(;CNU%T5wU$TVMk3fjLv1zNY! za@5^d>+XxV+@tih@(oqc(=Ntr6L@7gicbH4h0`?N!JnS#8dGexD z$aS!>gt(m&yQ~*6=o;W=Nm)+D6rW`$&=V?{yS#X|%RWT!{+qS7Hx@%r>e)df)djen z`)MyZB`^GpCNp(DP2p02zei+`hqb%|4C1nr8&02JStDwV1d}tatS!mTSC!vUM*$m` za|a{Ah%Eh@yIaU_=HF53Nu}AK1AA1?1{8}~XZ9@-qzpxMoPp|8nH_!|hZTD?O8|Z1 z$I)D6ers!huiZTj@0dUY^%M7T5f;OF1;p6}Fv7gK4)K$RS?(h8p6Gtl!2 z@A*CGhO?;Hy7~?_uYVQ66m%h6LiaN`P4afm(dQoM;>em}Qpw-#J?&Sl`IyILGRV+A|H>9=DroMmP? z&S%|!V>fy~XY5O-yLV@Qev!tzw`YH@z!2ZPmY?Bto2`$SU1rWEv2FJwl$ugJ=bw`R z(`4<%d}*Xul1x3$bC>ZINoK*to+MLm*1Y6PGN^==nrYX?kd@@vPX>9C%wqG@Q}S-2 znYv7Sj^ADt?Qt!Ws<-&R*TUay{=UiIW&G{p&;H9V=HH-#g2H_M74d8Ekeq)5@qgEq-@|%} zYk(W`J*JBqAM=+pQU|jyTwNKH*wd@{^{_DWRF52;UuOL?f7D{t6ji)Fh$M z$SO-O`Mr_fpsEUV!Krzf=8aT%rN{LQMesign2$(E*TLg9S%y7Ew zG5u`N&qmJpHaOF^nnW$k>T_akJv<)a;ObA!InQt zxxP3pw-EL61yReoy!hv0R}OI?<&Ma>rSqcY(cs2KMKwrch`%or&*_mtyd$WnlHbia zCC_6DY=gRn>0~w7m=`aPL3wGgA;TB=Z580i26Y?ew`EBxfbB4iwB^q2j08Uov?^l{ zTWf_NPeg8aBhPUQ`MJ6cB8+B0*1pZ0t(dzT-n!GX_RVb*7dYh)oF>h`Ticey1&+8x zw!W)ak|od4hZu||+4~}GG2h%bj2|n=yv$RX{7Ck(0eP8bzPzt;LJ{e87X zHo^pbFuw24h=wzpKeYsVJ3=4+ru%W+X<|n=?d%Bc=1n##NmS8i#<;YByPLO}U!h;e zZ)Y+HasEtvMck3@N7M4mpWCdLBBg(vi?ZtF?9Xr>w(d@T;u?Z?6C0-TQ0&pI@hpQ~ zkztQ2v|aX}FY(=b8#U-DGLkL@xC}1n!(>hGZKaA-GwfwCehRuOEh(MgnZGJ zWVF5W$HqOs!d!E+<}lFuk;X6$>kFBV_{!WksEuFat03g$k335dzA{W2UXnTGJUCGg z-uegglB?wnwA`0dXOQYVO`RCmIwogg!hWiJ70<=kv1ySH=9b9@{XUq-?Li^eT;W^V zYKTH@RZG^VGe4H}3~+zYj$q@`cmJ&lukOtDVtcrkB|duIs)$Y_BcnXgebA5)xR4w-i)13{(33ezUHv=n>M zdM!39ehmV5?r#sQ?EmbhlI{zy&)O>nwkJ`m%4}cZdCFIsedkZqwx3mIj^Ryx100!_ ze%*X>#?jgD!M1m>&9BZ{ii%FW0Hz9m?c@z*nka{3S!^|}bl787&a+mYjO~h&n{7!F zuk0FnqT`}5_*^?O|6Kz50)~toAv3^?eG3;55R#lZ>%?VLnwHBavLOpNgCeteylahI zK0a&8Ih)v7cPgrneC^Vwd?|R*fdy4oM<05$CJ}mA258n673wQa(rGi%b-k|G-|Wb` zV*dx$V(W^Xn8TnkV&y-Tb;aKJ*J%`aXb4C=S8O{3;F;U&kJI>DxUt;=7r#W$`@yEG z26Zeht99SPcciYA-im{pB!4e*}yP50{PUbl;o1fT(CBQRx}Q-Pa+02qz>*UQeTD>EpxrNtUPD_sj)XDB8sSc*xAu zkJ{u6qV>*&sn%t|vZN#mL4)^UU@X7^GbM9 zX+}OaQB^9<-!GhqgvCw5oJDlJf#o`svXRp==U9#m3H*2xOYVe-;^GNN9|DC?N2P7{ z9e#;;@N4dEvP{lLc!KnuD9T&rGj9=|jMKxpxQ8%B+}{!~M_xLdt?piWC+p;PU>B%9 zfPGoRRcwfgS)Z0?0*`f%$)?eCA* z4WD&P#v%s0$eX{WiFxjuYM)SktQ+OQuN+t~!9}rD*e>(zvi6mdE#VB0y6jhw&mKId zcc`M51${Z~Guz^gaPo0iD)WZs=9m+P^Eu8vJCtRPLWkH~F@jzO++22% zzTBYb7cJgY|J&u}9JZ}46V|Z<;|tr<_>GQ_@#RmIlcm^?pYW11X3lDB`6^!aRp+1o zg)cp|+O#&DT6{RX+}jE>53#Qtw-wsWr`=r2o6hc%N-7Bo62opbe9J?BFPC~}_H zLncn>024E(Or+J~&+3c7pNShwJQ?`+w_4huo?eOhJvEs0H!O7!z;{`IT`!f7R0t3J z+A@@y)f|S>ru(w_oy)xVho^AT?2UhTgm*;$MLR**Ao~n{hb4c-OyF8qaR&S9fz9<@ z7{2lH2{|-LbQiyhj6aR0DtmphjSlFHS}U{rPxFPmU#Gc9t*yBl4!zjVkBOH^z+M~f zC7GO7Um93`FJsVc3%yv(`JF;+yVJi))7;!X`XHO=cFazl zw^M!B$#K)pE{z{1?MSA@F|^nm&_RNKy`g!caKj{;Os_L8jRtqle}dpoJ1rg~U|9kY zRF4UGG(Yv0M-i=I)drP&ls?DXv-cjiCT&#=?s#>Ef1h8og8i^Y-WleObEWLJJ4SLG zgTdQ!Ou6KzE6*RnB4V^e{pG^`ze!NE-cseDX{kh zTK-1c%Ca$|IOb06lttAccan1T1eVM47M?bPX_mO?$7Dc=!3=hqAGD=g%@k|04Dp0) z?Jb++I#C>?ORg{mOr`P3_Y@BbU-&c%G^A@cUwV8Z{Hzhm1EX!iFl@oxI3KqkmEmvC zA$ZX&hsRz?GErtCb)r(`KUm&I$CUgvv;uvoPKARcVMEcRGYG-F$%`%MqJ4vot=_i>9(B#pWUg zA3xn2#!F`2xuQ-;nLQ*3C@hZ;jrlo_@mXFfT&eu~g5(%M0$<%_=Fn+y&wQL)f$t;v zgzvF_6zLF)@H-#d+32is>De~gDmTvWA2G28XJ~;-)3Zu+JCPTR751XBUgS9`E;pbg zT*@eOPk4qi^FFQrX{D59S^t<2wqwulbONpTey1QfX}1~V7km9q--`z?@haPY#w{ri5e_strh|6p(bU(fVE53~$ZdfI0I zfDc#3Y25?BlN7|?<(xt5YoCn_WF_8~JvHf+njQE{_+bl;MdGM#w^2@JIDY$HG{dyP zImLg+Z(bQ&sAf;@U3y)#GdXsepw5&(M?LTLc{q&Ab^3ew=Yw8GT5HMk=GxQq^HN3T zuHQff-93Kc40bU0O!~ie;tUT8P?+LM7Tff^ZMT#E^z&y7ydtSpR;v$0-0ao z$$4sQn^1IxZ))fwho{iRs*d5nkZI|Kj|b;Kw0_bMUNgPzEU@il0G|7n9%o*C?|%yT zWdXL6Gt&dYhhS(w5I<+1TC@a2U;xBb-@G#lh-e6&)KqWM*PYpkeE_2@6w_a&A6kPh zUVK>|Kh%3Ba@Yqio?PyAnXrp&gnOgxsdUchHGaakw|BV>N5m)(WMXuHdp&n*^h9l`64Df_Az*rHv| z*=pX2CKlFH-e5ZCpO^`Z`NxM6T%I>YiIe4n6DJ)VUN(bW-7!0cmzuo2^+|xONwrfK zv)fk8Sd0X3Tl)1YCuIY|8zsXwaW)CC?{!NUAimMjwy5_!!PZo0!|j`yJ*V(8;)cKz zqn$)0CkI>#ew;dS&!krJpAu?{MQg^vhCAJ)W>)*gb#a4#YUKo zS_xK887pt}NFAcV&!fbxP25Uj>Fy)Mx zl1`nGvA?>*+Pja1SdU6?Y97zuX#R>*xQLuzl6uGePGM>U|E0T9Mf&KN@~RZw57S}x z{TZQlGoD1wN6SewIj<5);bA0&8h4!uwf_<?F72QG{xxKU zm4A(LG$7P373amW75&&>w&iM1Nq^v{nzZLp^*7q%&sMT}f9p(RbtlWqtjrK*tC8aQ zOeb-6vDTDArfYcxpW*E$jO~KN4qPICd}pnDUa^xL5hZ&i@#}@>N0VdLa#?$fY@eU= z`CZp3Y}r4EE5k^sI--Uf`O`6aLs_NS*4oXaF}{c zr}FcTThA_eRo6*#G;J96C@I3d>v}HzGje9)*zSec_rg#Cn3Ibl9*f2vZD^?)6u9#f z_!&Ikqn_}M10IqOL84*zP4bfxKXZ(z#RVHmN!J9z-)eruriM}5onD8y{pORbaGrMA zt;|PlGF}>U|7KNao_`PdiMjNwr)I_1gy%5{dJ;U%TtQgF%JAO7LjtXxG!aWYt)t0@ zNJ!$pmh!(fY$cu+5!Ak@H23DqkFK8+*o%hQl&Ij)AqC}nI}8u!D2dj0;N zj*zDV#*pXjqz9JUe5~?vkS}3_SmjVOc^Q@fp=_%uVZFc61gkBH7yh@vx+>aDf;?n5 ziLc?9O5-*te}LhZ@~qZHv2qgzF|;e(pqRT>*ts>ceHLq!`8Z93{gCe7xPp2}Djti%`(8Q*{<7R4nf1We<^OS|V zL_6r!X0nFfcp!|h?(3FL^Zn;M{Zd^&{nAxxS+Q~%{gQ1%S(SQBA|!(yd!@TU_$^uF zj1mdfZmClt8M%WYnF(Sy3{o2TE zS@Qdf!MKSFM&AAhO*3!ZV~R&TkY1U=nD+ANFstDi$F`VZUztcX?{LzGdH*L$%)L$M z$X#6r5G0B!Et!u>+S2<5GY#$}>T*A9Ch>s}q=(+Ftsa+w+AH|pzq1mjzhzg#X|dR+ zWd2A8=M3OC6MrJ#gUo;j9;qGVoB&5US-UDd_WqaQ;p|ji{?fF(y>`>(H)HcAQ~Rhs z$!))V)Iggg2YuhW+XKrwi>%UoLK)Zm)M|P};d*&q>ntLAsMwVdh!&m@TmLJZ7}zH8 zuGlLY@bI45VBfv==%@8Z=VkRpV}CrbzNk{J$#0Vd19?atl7wRF zS>kTSo`+~vlMG=k@ZEARp_YEM$hQS$;eUW-Y|l;3(~%=`LZva z4Cxi2JKVE1cOqt+PS(iA=5X;aq}I;>^fT%@++N8}uS(oVGrdZ#OlMjC!Ba01p4$fN zU^RwJm(|+9J8b&C&pSl8ovw#DwIXC>g@(F#N*XuWj!0{XrZyRQlykHSKiH1QBeuk* zE)tVk`1KQ|La%KQat593u%2LV{OLp>SAlflitz|8J`ia6l*VM2^OW6seM1Yca}9$V zd1PAT;rUzzoyR1~{61^CCUg(x_lJG+`zjT4;?hUl+K1WK ztFkr$Jl)ec*=8sYW_akGxxK@K&2wOH&|I|QNPfxbb7{JxI|a{%v9&&L$r1Qz zG>;CayF5)3xuu`ANX2e%X1|P!?N@2!I48?7&)nOHRvej8Q})6_rYv^~d`tiLfLG-Q z0e3wQ6c|=psZ%!RNA{FyGkB+r#54$&Hebp~4HGl_*8ZM(UG{gbK9KxyeYjKiFKlU2 z-bdQRm13F3%LkR9HA}}=TPAa|WilgvhA}QEiy$Y*x8W1pD5`SvFHXvfxSwjXoXJcO zP$9Q$9&FfnA_Mn-I0Yy12r2r4@-i;u;Mxr*eSBxky$I%X49w}69kY@n;1tGeiMpG0 z+s;HcT&T>haHT`Vl}3x3r^9QuHBUi&gDc&fdM)a1;YQnmY93~5%B%oaYHMOby`iM# zpZTN@$?_bv+j7~Uk>JN|rtWZYLABd*n4lpxBWCS3c%W`gJrUvDsS@Aa5i$H?@5J{w z?&%%(aw3y+ccQUfh9W(E%c5bDUrI`dh$=?8Vg8eEc*pL^Yd+mc-l3Fr>9OAd8KZc{ zFr0Pgl@j@v7vR>AsdKLC(1+ihW_Hp(P;fs!CLHA2qAKXiG#dr0604V*e_fm9Ji9!;Gt4TXb%>Rhm`4xqM-JvPX)nM#p3^h!oC9%h z(vCh%lQwr7mxLl}a5eKLQgd>D07YpPX;w!5;=kaG+Kb_g(jAc?;Vw%W1GjF+-x(8S z9SM0GnD%;;ckM)m)@c@>dJ>;AuoSn&hqio~{O&UG4>S9De;2Wd|)sml;1t%i-5~R&{!pqwnO-zr;>%q^Wmy z@B4<7Gdr{FB6D)^1in)8Z%p7-KV<@!4*5A|OcoN?IFws+cba3bvb=O@hQH6`^GA@a z&8FKgGVkq#Q%_(Bc3BNicBtJg(P6N8jz=r8AOe`>=@!7#F=<|=g3tN(!dh#k&9OiJ zCvRogIoTiW+a5Rf+r_3M~BKP#p3|vrNCvCt}pGcYGW@lIw1j9%_3Cb~J#BS+X4)VxIP>wG_ z)%kOeoaM=FvtK>}yFu_@fm@Y-p0P%gTtHw6vidi_VN3Pxd?2oUD6QziA`Y(Yp+s=l z9tN8aUh;W%U_N+#d+otCdM#&xf6sfF1-ABJ`@XlryQYf5<2m-z^3_ahMj6sC@r2LQ z`217G9@m?D1ZK*5lWvCSJeF_DS3ybehjMpEf`1RRC}=G#vEzC3odYN4JqE)D!RRp~ zsWv6;8s@C!8R}>SyUcr3A)XJMQRdc_;Bs7?JSQDJo-^0KLU zYJa82@hcCmI@(r+zF4hC{0-Twof7kd51FxkcsYnF!1HbqR*n}wrclIJ(;fdWcW(k7 zWp(!d2S^|aI6*<9phl!M)-8%lFfJL$z>H)dE+{T&s#RmP8XzOMAi*Tc^yySw>Qc4h zj$75XiuhJdL`je(;EF|ss6+5k{u6rEYaikJW4n^S+rqg;A!rBXYEpuqNklQ!P18r+5|s-%Y5xZb7-MEJ$E?y zq?dE|wMja0m#9R_L~xn(xUYgN?i{_vsneudDw!*eF_xc<;1aMAT(-k!xjZqgpnW?_ z36v)Yi=6lHC`uTsJLle-`BTpw990uw(UWy(teO zZ24O+;&pkGTD{O~n1qhSBGeM;z0IP7lN4zy6ser8&@i`{;qxp-3b_((&L9cDR&8Q^ z#b>>y#?U*5um;Pvjs$&!@q7wp2HKi(+u4oXi+U@#JJ2M8oXtb0TLrlymvw6SZaa>s z4c^jlomd2atLD6<9Zc=wY()6xv4u}_AJo{ zDfla98<9jbY%ZaUn}r6VU-D50AN8Y-OtpcBNzLY}zhFM-0;It$Op?uZzPau72jw33 zxL?Z^)>G((9xoqt?!wrxqnS``Y)DY(q?Yd{>kIn*IzKD2d zap+f?tB(=9Twa%&#k%aCmU_E6rCs z(olQ~0<~pk;BNa!aQzF}!NF!4n%tNkQBh4pltp33x88myf)Gpi;q1Xm^AYlZ2f zgtq%E37xO8U{@15-;F&Ho#DDm@)XCNF+8hJBMz(}bht=9UTH3U*0N)veljcUY$+N2 z(o8;1Hic|ePqE^Ta1|C(AsKBhgC-@~+|I5-D`)4gy2N0{qMw^A^-9rODuTI>t}~x5 z((>B7K~U-IGP(zCdqX&R`N>MLvJ_rd_cWmWxCL!5=e?_wDD0q!SY7!X2SLffx|JPs z$gu*Z`Y~t$S+O+?;Km^P5@@AQ$vlfm%93cT1WeL9b{O`D1*WY%g{fsLa4>saRx-UH z(6BF<&l>x&CvTdo@%U^TP7%JM4gLA+bnG@jLkyr;qTmfBV+vwLNw0u?Y$tmK7f~5- z)CqV{fK)8s(OlB%#dl~^Bt$hRpbx}wmRyv|w@`YW0u>8=2Gv;S!R zME`28yVog-9)Gn`1?$W`aU1tH=NQ*aKbqOcZ)Q)|On_#7=9*dUnhBV&-%OQjrk^?8 zZ|2Jdb~FoV<}JUOR@cl6G&90AbBJr^1=GuKW-r&wLNl0VmRsVx%q!9sV`7oWxo4Y= z`pU5TlZ`%lkDKE1)pm*t%?op_Dhx}5x6DC|z#c_GeDol(>5tMUP%k)^nlnxKcBY4t z@+3mI7F#mtpNK+p&B_C;6PlT$rAdD=?tX+yB|mC$Jc7cjB- zj|qAe+1`syCT{`uk&kfo2A=&mFBqqA%z#m2taaxyvkZrZZe#oUno#I>x;{$ef{e3D z`4Q$h%fdLF6-C;Q<~^dVpt}5&Qa5D%=gAN-zVLq64zTyH;e0mC5NMOMB^^tuK&O z74iR3wo#ipG2Dk04b-2eEsPiYwkvww(bV=BXtd0`I6uQbF$nksOI8Hx7TP_(a%BN& zDpOOPnK8*XI!`j3>0@(Vp+>)6qE9E}!>F{ythz=-4Kay2$vq!d-T2;R$UGHmp`hDE z3M`x`0(`rUrLjHRCPPsXur@2u;0a0`jj#9#ZO8DY`}KT%pB~n;M1$&XJ$JO@>V7>5 z+0=C{e~h%E`>s#zsq4mu9=g6oU-Yn*H8*b6^+&otw4+OPKH7Kc;9u*H-D(~~^P^X~ zQdU!~+nE;99r&qK_-TN~1mS6q{G6AB3Oe1+-v?imUh!YR7q^qOsaufv|2e+6_pd$7 zyL%w}`-mRk`}DdVfb5VT^bBPG*ZAUaJNmBpV*b^F#jg0`a@GCM@x=$^{@Vt=xNq+s z*0a9`)g8WgUtjceXul7>*te&y=gsM%>+`qO_4mRTE6C39t@vW|@HD=7r&fEk4SZqA z3mGV--NJoK&pSrQha&9dRDy(9PMNo< zy(sAAHGRB?Zu~Hfb-Y4u05obHuf#qIdDYqNFi_Rm!H$*f{oKP6@4aBjdx5$-`iUaW zkO+zP>i(H`>F|g%|A`=4!~SRb1LSb9FD1T#!(ZKgfR}5HnP#r4`>NMfJ7X79bGTx_ zH%Zg(*RfIH3(6CvWG4qsxU?mJT7s0Y1F;P^cH5Oa`XS-vrCJO*&?GhB?g7akkz~%P z%Xz%G5`SMRld)*+4Ur`rmdO%2b8H_$_SZc)3oxCbp_E54n0 zrnbAG4#M6q?4Iaq*m#xOYP)N5URuQx+N+^cigWE)E_-f6L1h@E$tnQ*#mZ!O$FHp9 z7T2^yPSf6_Ax&(8vWU0Je2gA+UeMYf76{HTeZnDM{}hT=KO!6__XT+&?qyqC)-_HJ29qMWtMUqB?%sAG@9QJ|t8P$IpWOfqBzlkf&8jtD9+T2n}w>-=n|U z&i+u9Uj*V5p=SpcO^H*GrVM<)9ufS%KEDrfaN-o`yn(A#@CgOdFTAv;)#70!{BzBZ zX`gn7m>0|hI(e><&j6)cmBetCoyA!&&=7`J#U~)pa4Zj*egVz|UVJH5ec||{HlV2~ ze0S%px)pRA&PUJ=+0@(XRnjlhlm$w1rRhbrE_DJ8Z|F!W`q6S8kV-;iy{IB@B2pb^ zysA{A^H_E(J#zUGEuaUjTFGkQga#F+2FshDNb>#@#e%^wzHIJK@J+6oA-lbSPu6kl zIU&$0Ys^cZu}-)YHO!%9Mki~DN^|BrTMaR0Lp5%PyJXp@so7Fuy;JVZE-D{&exB@d zTFv%jq*R%hhkPG9u(!;S$K!HHzhlpUtelx^MOPW$=PiB)XpY0P3wHy+O#~Ox3_P}LHhrP23)8jvGv>QLJ2XKwAnae9WjUToOutAq>4(>euvp4$Vce^8`Tua?#3d=CQ zMKV|e=Bv`?wN5`Q^B|x9+{!+&7;FXZZV?cGgOf%EKbh*|>;|#2_=-fm^;SKMnDMzH z3o%dWByPhI@yTImf|`lVp$+dbuZu@5a7B6ii0_rOWkmf0h#wD+Dk*hh$fgTq8V{#x z-kD~d5O+ZwQEMjtrH_tch;0smL1Kl?q5Z{pTBk^F(p-H~WOm(`4M|`vz^aEOIjo2% zl?lHvhaOj`he`oO6@ku}Nktywu2?^mtL;VS&D*y9>onQFPRr(g%F&-CKy?EtOcRVD zb6Y-SM;h$1J}XruS-Heh?PWkOZ)Kh#OMqYSI))nF47IB?34c8 zWiKpzxb37r{9HE{SLM~03jjRwK!%W*`d8I9?-wnk6ph_F?L$)bf?}qgFAK3OFCU?HY-yo za>%v~vu+fuF++}zC?lznx}+U}c zYs`FOv1(0$+LCoJ-2=)X@%w{J zBtCN$&g&3)GfnB-nH$XbOYFwqB-sJLVmJQ5kLnA?5V5&;<7uUYF^ypw91XnK_PVP=TkdQC5XX(0~-K zb6!#(m>zZm52dUlQ5_Z)P{Uj_gvFpe+vsEwtVDf*@<&|TV%8~68V~8!YP;iRd7-8M z12PL2=?*f()e_(1-#+lF{LxuSx3jonEfmTWvJkEBw~gnW!Cl9*qs#CG=5H|*G@wpy zXBVPSJBemnwCD2OJOtDR%to=^LH&G0QTdkr703f~zkX#LnV?wsk`YgYJC=~l&VGUq)#T&Oly#0Mgk!8de+6R5>jBU_w%cy8;ea{#Y=UgrVZf~hR3vYS^ zL$JOes7otF$DvvrasgK}5gr&WPDcrpn2Q?;%b!v5pt(M0kPiPI-WXhnWK(~HRHBab z2tj#-&`7BHQLigue3WO=ikXB%D7Wo|Y>|UwrCnYJl}OAjs}p~Vzqj!FF8;p2-)3TF zCi@9A#DQp^ek1U@=)pjJ%$8;Og9eCCxdlz}3s(2cS6?0aZC{=5f0Z1P@9(7{rTx8{O@*hcf!J-Bc38a==Ctam zRoHb06D;hHwN%E26AcWgwl3q?2(VKNWjkP3<^DYfVLycB(hgqGK}W2}m%mI}s5uQ+ zlovdSEOR*cMU(v@+!c5{Rlnv9+faGj0Gpd}|IYBe8mnH1%`;GAgz!!M&uG&bdgB=C~;OMW!l5v zKF z8*%YbhSDuqW6}%y1e=d&vonNT%qJ?h5U+9z@qNuBetB!M{#&m8jehyMWcgoR`4zTY zCo|Yb_(=zM#tTX*BE0tQd14Rz@R+`uxKq-m9^_Mw1OcG3cO16M@(*Jt5JJjexY#0ra&4w2@XYm!@+@Bngy6&g?-N1n@Q;#3bMR zx6I%lF&68BE2dP$BIK#-z3tXSng;q#{rBsx|H5?t9eIBLSJ1!jn|~wfQT8vx2|qP} zl<^#7Sm}wnBAvY2ic8XDWlnV^H0em20k=BhwMA{PCCH-M%LZ}Y#ZhsxbIoN0dQvv^ z=WIc%S@hW;URB) zlS7CgE1rw_QgJ?szr>bxEUrBY8}2VHow>@!;ac>|L5S&3Z}{ zn$70{1&N%m9~5v%vXK~a$?qyDQvI*ahg~8LZRNf}cwuP@=wO@^P zUuD18aUAP1u}Et)up^u+dEP2>93M~$Expv%4!YV%BDlL}9ezLPcid#zH4!~_@|MIH z(B9z2U`JR@S$o&*UB|uEPTed_g7&eqU}4W1ubXL=8akAQ+HrV#Ss`zj;fF&sGve8Z zOaGG9fCbPFic2R2Ps$0&hZmR-El~y&k~8|uuF&EHx?P}U{M63S;(hYnq2(;q^`YfN z`yG>dm}E8I6I%W{yEC-(%h?KAUipcImKFD>p(Xf45?Yp>E1Q@2jIPjPCGf3gE=ihT z)6e;ykaGOP7E;*W;vTjaNO`qpH*N0_vp2OfH?U8B#s(fPSfBHfwy5*=b+&)0`vjf^ zX`Z8n?-_F zrP*8mmV4);s6ggT+&@W@^^Amh2JpJcTOx?HCnm~?NnOIyAy#la0Qgs_(+9^1d#IAf z1DGbb0mlQQn=E%k_90{%LS(*JYrh!dz8HqE#`o(5X%v0GHeXvHCt69MIY+tXr4!sy zNnE!;xG86(Jcn=5Gr4jq%wcDVMWMGLq~@+uG*@SOxZHTOGf$JlFKPmw&%U#04aE!@ z9MIE{y<2Wo>+CRrQm>oOvpdH}>dW|D_N9+Rx>+SaBNK__*zPRKVMV8HNsMLq$rbHV z_w5HYG}n7#Vv#xZ%=rk<5LMgGzTCT3y%QJ6@@wzvz>X`l7za&|i2ZNi8rU}x zgn#1^>!EO;rFG@6sMUPBi$lD3s+CYK-<2$$_CHZ?77Pl^DqB?ys5LA_H!2U@ zsaw3zfU^BIIGsge1dhL`VubNpP4D$~+yG6Z_a2KfdCPuN2E=}(=wGGfi5IlBL{_uw z9{~bb{87_{z@L3U$MT5w@q`FV#^?k-`b)gWQMZJ2qaIEq3H`5|qLH*uyp?Qo{Prfzdip#EbH zA>c>0%>m}#Js$(}BP?OZ9y~)*gNYR?_f$UW&=Ij=n3}7VQagYTLl&N8BtD7(NEfWx zYHV*$^k21_J$Pj$&_E$RGf0r-Lr^`JO?HmGC3Kas()Y6^7LWLuyw} zybpYyV}A;-ng@9-wfHVY63Ev1r}Sf?AjnYcLop9Y(D=n^{$cLC zLr=Z^@9ofI_u4zk?NFe;%JQ4`uml=T=ZE=)t#Cx!C-y3_?m6sZk{G(U^XL0!em+c} zNBz$q<8uqVn&I372thk(fSuc;!_r{?#HroR?d>u`i)6=s&L?lxf#)wc$%wfETL z?PIiP$$^TzV$s@ngW22d_t1Cl`h>rzPHQ%%Ebe4KhE_uNt)IsgBa-BOil(AeiR>3QmGylyjp^?SOv_p-Iq_x9Z<`^SNdq5g$!S7p%~T~{SgzZbLfFYKLp%)rWRef27N zVV`a}1l!CZ!!3Gk_y~y1yv3Wp{T81w$YJJ3^l9=Izd!0-l7|d3UyzU;cp8rdP@G-v zr6KPlEx?c6b-o@u6pew~f5+eB7Koah7})zqZn>AbPe1 z*!#}$k@M|(@S*tglkV$ilfIcz^cK0r6jSraHP!Me^;Sv##}2GCwF<@UuDy_Wam~G-T{{&`)wP?O`XNVGu(}beHX%(3`Ev>!r^^3A}Lfnq#)oRh4 zF;sctNk=X}DH_K{cvrGd>?I;IT|^KeF1LRsb^ui%W$HF($F5{R=JgYWtc4n4fHQ;) zfwH|f%Xzl4N`a@V6hM zPA1bZ9Zm*`*5sx$5Kf$Ij(Pna`zAxmn1hT%fq}+NRt`cZ>A6Vso8@W=gK!0#mVndXXv+^qI#`&_H(*{$%&Y`_tS` z(`*KjY1Q3Sf8?gRcg9q^2&EA9zG=>~?R64XWy*@Q?-}veEbmyst&N(~xxT_XI-cJf zJvjJfX>KF$VtslAtGv@nz0qYIjeQ7#Q0l1o=@(e}vo|SME);#8XTsS0_Iz(bX-U(i zy*v9Ll&vJ4$BQXm;eB|87d!I`md1Y`+czD`JmIh;qPauI6TX1^tEoH@$;AV_7~_Qf};pS_#5Oz8} zU99`NdO9?&o?}Ey?8v_b&87UaErsS1OLw8qDy<|b6Q+@RT48frnfKEaPzM@hMq*xA zt{D+`Iv%PFdo}_xFhaJIksr2meN}D=HGCSVznQ90?_Y@M%XA_WbNQW#TA);InOWbe zm9@_qi;L43(5x?Ah-G1!L<{rp+J?%^mMO~dYu~#zY?|LbWpPYa8dQTlvT4|+b2iI* z{jAEnqSPCsqq!O3j6Iso(=SQeJB8#QBQcPFLQm8Q9iMSR$M{}CCoKzy(%gIyc0M$+ zDTL2Znw?)^F2>wi=ks(1lIm{S?PwQ@`Pt=!jwzie`zvS-OElXx;D}a)6VGY;gPX>3 zX`=0Pr?;FV?4RD(%+sgYYeIG2X;W~rk^rYcXcer!f^*eLX1CtM#b zHYcpqZbZAl`H}cP3(oz0;xkY|W4j1#HPJV?-^-TLwree5$R|IEr9&K?WTSNhslRRr#qS|*|L(zUrM_nyl2?!Pp2sHeK=ZAD%1RDOtBMx=- zukzR0k&t#{?4+SQ8{4tMVq3o9L^drQeMPYtip`zNwQ1u!ZCW_~BS!5u4LWLk*nD{s zzT7A=lla^_adOwDCYuvnQWXRh0h)MLJ7xdBT&DVA3kNhipPu_ zx2=)i&ao>{|4YqcY0Xad-e6S3*TXWa?M~a2ZQ6zc9N!f%nd72m-OW)0b8{TeWI6%! z_{pZhebZ?&VWm#ClWF@Q-KIyfhD0-MJK2#eGwqfju5(CByka%*Tj%hP|1;rPT~3o~ zCcJz$-aKW$0vraM+DSSOr>gkjg{8$s(&ns0o3o_$C~_L1&EW#|wK?OeI?LzJ|8&2u z+MFLnt$hA~U#8{rci&n`|I+5{H^KU(UcusZST1;+6A&NOoD6uB6mkWULN3nP>Kh~p zIEs)Z7P9Pzo%yx#UHG-T_yT~^dUut}tT3+*ld5J+QdLte8EjfrLt&v?nU(wzBlu#`i=A zyMxQAp0_%2{`vkh+c=6~XZ34%C@sDsdA_|<-1*MVINwUr5!}-0d>`2PeCrPM&$oOS zb-wFtZ-_@Z-{&2#^Swa_@)CQt$FOyc5FX*pqrzJxTmbHyTDpUK!LWmS|3H2gs6Rq9 zY4Sk+h#&re+>^)50~z3VU||%`gEu%aKTtTzWiYWip7dixbyZOA)g>5hPw1WJ=Lf;m=cak0)w zD`%v+_NZceMlkpA&&b~Ac0MCxKHln#^gYg=k?p+n8JYE~M6Lrm;MB|jhbT`ZXFet<|vg<1e?Ip zpig#vC7n8s4_?za$}6JY~i zGjV;7FjC+BtL(lG9F9&19kMB~aJ*c634$5}{<7X`t3nmtjfHb0^1n4(Mp{2qx%sLOn0Q#dkcXxprQFrQfyy zEnoJ$06p1{2n5gzU@~ko_kjgBn$qX3flAKizXdslq&hlt=EzUuzpb^W^0&GHt##B} z;lwZPg_lQt#GXs9)%m(cMXC4p65Q~dec$BXt0)}*?XC9D^Wy6GwZQ!nAH=U`+%HQy z#eZw>SlxWTPUM{Pg*Jsg;*R!Mibq5pDbh}F z6W;S~v}?zex^vj`w17z-yRZ4`=hl+xM!VL24WIF}Om$!LmS4l}jbB3>ly2iGTf;}( zGyiDe#8EvL+8>_h2&CkwUN&}AejL?t)bUYVkNYJn?nQQ?Fn!+%Hx)(LX;pTSRx`u4 zmbg(Hfabj_ib-tUGtxkNb`YZX+-gK!O|O=krn^!H=3s0Hh09hw!W--K2g zNLT6WW#NFUJoryo9ElwE3;QEHA63pBeQwk)m?U*=sRtu6<7Hn^p5u zWXC;Q`z|)2L(|s2Sb@GkbRwB#nxnUq%+GCJk~`!)4k0CwO#+OF0>l<=Huqg4Iozxl z6wj2;N&S}Wv0G!_#pGY?V$4g*PixDIhIa=O+ahyYxu4x`X-a~Q0Xuka6$ZUf5&Dl> zQs6Bky&Wc+btS!K5N>aAAwOgIA$}AsAwGH1f3EJR5xkDzEfFpGD7GO|@=l<>KP)=K zJd1n*;kqjd&~v@chC*c!x8@a|AffYs(^%iY(_?bmrHjekv}!~zvGG#bkn1Sqg)vH< zR8f{Vp(C{S>Zms*9BFz#JKE>9Fn=O_n8b@VQZ4q%!YpNBT*hnq6RLJVEGL4G*kPyz zv37k?k!ly)NVR^=-MZH7ubL6n9N8H5X6EuQcIf>7C1Kl|L!UFCtjMTPehkCkXs+p> zn{Th(#H4lXV7@8Y87~(}amk$*d`41m#*JNGG|y~!PW0$zjH1_pMTaBeFh~FXzK)TN z!D4$X1NDzmJw4m%^lYpCZ)S@+G#)xdGcF^pjkH^d&?$B{shC&(Y_iPgeQh9h8|DoZ z6fnJ>!j{&7#a2)vFlfjEv;cz{5`5(c0qLNHX)+%>+o`xH@meM&bi=~a^}dCh{O#L%EOvE-SwJzY$T z?TwlCCvx%Hhrw8;43p2bO~BJ7eTw}2epU+Y(>^&LADUvJr#7)9H zGETOOiGgd+(D=|`SYfF+Nr+M1)}>{00j9FzEVN|Am5g*Wj;=iltI$n8D_LaLoNQUi zA)6a2x%Ozne9XX>*B(7KbT+sYq3OVewqTZ7|4U;3B8PDKUyf$_$QM(Vp^iZ4#-5o` zf3>KE0hwdhiP~UD`UeWcx-u$J8`oQlIrtyeTa1_m@p0?}HZWS|Wt+4Q%gl6r%R+To zX8e6@^o6aWZA?ZgUsVwHavmP(uV208J#FU6Hb}<;Q{D71mRJl&%TxqorOfoHz#G=n z2K8e$>3zQC*6cp5Pn;>wgP<6>R89H#dE56R2O{at+;hGjC2KVw9`pdxq_HfKa{LZ{ zTk|Ng3yHjlj+L=z+SO&!C@ZZCaYLFSi2;q}B~3LWGV?K#-_ei15vgm;<#mkQLez)& zE~XjaLF-e3ZJ}&ZIfpH#?Op9eI!?yYl7qOC@9@+6DPib^STud$0!?K2$6@=D%Jjw_ zSFu6W1>^#S^=d9{w4F7V3QlnS6Cs35q;!pbntibB^4BlySw;)k3Di%elJh+|pC@U^ zpI68y&vIwnLMh3-Rmcx(>WJX8lpR>uNSMExr!9}~U0B-j^2m-p7narBZ}l?`%IW2y z<=9VJj<046@=hEq8Al?!0=tpL;r5-pW~Z9WP<)U%)avJ<0TsS@+OutwkSsC8hFVR- z8_zZoW>l)7WMo$&;hygo)|^S4#2sT85hCK#J{DTpm6GFJ)k~?)YmT;->{+qHup2Ax z6+4hWg;`ha6ZTFo@arQfSZRvLlVgWsf8E1q+E#$_0}ICxVK&gv#52k&t=!WhG7?u5 zAX4}CEKgh`{AtAvD@{AL8tFzJ+ld#6*}3746|vXbX4}uKAK<_bO1VD2dBpkURrHt| zT=lwCCC_l``CqFqvGrIcuP1 z0u3Si-o6Xe7xRNf%nmdh$WzEG<n@H;gahsAp*3iGYZ=W@l)v`0}YCxPEirk zuR#4*ntozDhXmVABq(O=rbk&H5(F>HW#;+3Y%IrodWCdJwpqq1VN-9HNVQlJhSH>yiZac*|Lpla zDd-Y#So^io1wa98Bx$YuGfXJu^29@$ytspBqYrhAe3jcSe$xn72DHkI(vq>^#G$R> zl5c8uPM+twV=Xn?Tu5n*j0@j{p=JXSTO6rtE-Y7Zq=W=k|3e4(bj&6pQMm#U#>Voa zAS-q(vGIDvM(M`L^~P)-HD*g}NI3Be+qwD0?<5*@p+QI_4JB>O;Q)tzNE157Y-v9> z>>U(t_!M0|Zdy_{LcZoEtv)P?8Kw=r$)_rm3j08I z$ch7I3Uq!0@q?p@VR%mCT8IsC$=aH8#2;Dy1+9m+Ks?ORWuuNC5IZtbvNU#BIlk!L zVQnRv`b_Ld#_|)=d8K*!(fc~&iyIaZ%kKyH-F6*#N;FnoBb?gen7d!NZ|&W6q41Bw z&DK9bPi3Pj1_T-&;)%p@frj}!MAg^Pv*;_5sLqX!x+*Wwa6RSaqpr$T)(k%dL)mnt zY0yAgGZJT**v5?X4*9ARzY0D6*xY#E_8HPV<#a^xzGQe35F{>llZp3cdfRJyZd&U= z@0rtT<#*dtjGVYtkPC%v2MQA;hq7qeC=$$RD0aWEUWryC`R-SGH|i=P&NBY|jPcj= zg7G6p>@@zTHe`%{vg*XIB98OeeA0fl9j>)Ywmio5%F;Wq>Yv%|9=vQ*+Me{3HFQmR z8mt!6J$mSoXKQ46u`yj%_T#DDuI$jvkv*?E>6P6#HLAyWk+Bw+uEBpm6wOf5w3%sz+kvLiHD=Pj%w#<_8%bb;8WjD)P^ z-a9sWN~C#Ai|~9TetK>MzeXDXcVi@e;ws{MfXgHCG3%44isuc8fmas`R!>|bYW@C) zbl4%|K@s$|%-lqQMPG$FA3uanOCht{_|E*{USR`2tVtD&1z}Be16h8;T1`8C$RZew z2+rnxoQAlSjTIrmv6VOzu}@ zDi!OWQq^>lo))8cob!lSl4qSc>2{{N)s$AB*xz=*6lV&dHNDc0-=NNu7{`Z%Vbc%v zKf9jb*Hbe3D>qnnQbV1}qt8HArY3CZB^yjGB7Y}k!t}m~4G-2q_YI>6#n2GK59jqF zE|~YCR?Iq;o=JR+%Ovt7+jjq-va&?sv+#;-KdiIX}Y#$m3H!o;3Hh{X<1u1vHvn@u?Au9 zl9IMjAo}Dl;gU~l@*-(5TY1S}d@4ocM!3?P%MN8ET9i0M?3k|~=ZbAL_dFyjC6Gy^ zkTQ&#)>;YYWHEBwf?R-{NeG)#6Zm6(79vya5u5Z1|3(yq2N8%%MClgZMjy%~iqIA1 zn~`*lx7>`eG{HVvhQOft>gU&qGH8gPW-x zPNY*H7bN9$OY9`5+5VIhI}gVGE)Ht;0)Bi#e+E8K*I{2BHpOL!f}=nRoujKZ!cV} zg}wNv0??RDAxo+o0NIS#+AvgzIRl{(qAt8XL=JlcFFJ(%z4lJ%kePfybzqE4!8D-X zG~h`6a_Il{{8l?v#HO+9XTOP*>$KF* zm!KZZcz!N-!(j+jf?3H|%;I&Acg&N(GcmqY1Kqpz_uP2(F6JN^cZ63CA`GfUF@Asp zivGA+cI`XVE^>N`8B7+iean2f^7m9Fdw1LoJnRi6d}GLa8QT=Ofc?Zebgr_INtT

S_T&R#fV&%$Q;QC>>1KDScBaTW@&8B9R%tyrQHdzc8&#m0su?)JM=>EAO@3aBILWsKv~G<3 zN!KXZ?`Ft8(K2v9>spsX(#UBce=}Dt(c{RJ4prU~4wRvzCD-$ya5FtXPjo~E`!$-g z1X00`AjB5`^CDOh9DM1Hh$}8dX1>%`YwJ%P_kq1JOLcb_$eLjIiv57LK*J5H0E`xS zifx9GhJQ&9xZPo6l0-;lfZ241sJuv8ES2^MX4$HZE1sWtLu|f3g)oX+3RUp2MdtLUFqa&sPhKuBRp=37zzM{hEEp;2Pm%dC`ExWG zVD}>35?79>(0M6^w>NN6&nP)1N@zh`Al6Q2PT%$Teg z5&T~jpD{BWUswyQH`}-%Y|@p}bLloGI8P$ie6NThH*j z(>ZNZ-(|h8;SN`nCJYFYA*87d$Et;MJmH}ZMo(F_wmHZ>Gp2)iz?DZ zwSEyMin3pss-~L96|)}DToc(z?MrGE+UBf#umgP7*B{<-G@y{i13h!4u*05Ojqa>h{y^PG(un^I zF^tx2>${n-jN2b;g``JUtH~Xkj1TwpPA<-Gh57q#Hg@Zq@IZG{XioZ}#B}<3gMLoh zM?X`c;Q|fUY7t$stbGxP%gy@WJV?f;*95(rpV7<2!0;-_p|1!kLTNjx~e!aOic?WMw+0|OEn6iJrR1;K3dJS6qMpRe3n|NDE( zCZPX)(Vh2_{kWxj`arr8qz12m`n`5#!$(N zS8b1CLvzW8hxa1DwrF+U+0tMP((6gG;h=dy%SbO@xqO zv>JQ3EHSnhFJ=#!=hspdNS{UuulhtNGcPs7YbpL-pjKJ13T=6p z?Ox7ZQVeB`HA-UO{1w_(^x2j!hQ4nd&CYo(z^19mMj}`DQgKqxk-U$>R=oTQmCt_t zn5;6dRzrcgu2ccQgp^NxeyT#6pm zwH9>wIRg#rs2g@Ko$C+-+%C}2Lb0-C1{$27c11ywmi?{!0LbdBnGKfIuCWTngsos- zI?bNVW_NkrNpodY_Sz@KCXiB9;QK)ci@P}~h~Wwd939f9tkyp>9X)!SqenknYUxq9T8`

-G^Rl(l*ev=~#OXSyZOwz*Ubg5{+U`Hb4|&%~ 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�WYKT#!cBRz3_7uembf<%jY-cVBH*5-;+KC$0IpAe4`;_tA#JYK>-D{ zF5bRxC2p#@v6Z&NzhggU>8h+pw6};Oxaz-0?&eojupON40eQlwu9mY^(4aLz9oPu# z8(LP|lId`ThfRDi?iO1Ee;0&VrAV?OSyH%undJCfxgstQc8w3BwvbaU z)KE+-@2m_*b*6w6Dwmm!rE6s#j!Pw~14!A?d>fpYK_m4{xJ%=VruyH67jUB#FM!V5 zh$7_{PgCdYN)lleNiRwP{aNYFI&qC-)ECeWw0K7Y8XCw{>vxfQLGmwzcwIAUtGc{5 z4cLyTn$);hd6`u1FM`+Eh*qLbVP!MK9as{Bi(n{#i6Vb;stw=%8}BEU6CdV&i%lrc zZ>ekXOgW|k6QT1t;a6T5IFZ0CC5gIEvo!6Xb`f(-v@NqtG4dDjt$5Xq@)ULZY|Vg* zv4v(~2QjjJ%Hey%0#*&H8O;@Qih$A{LKvb%CTHRlrvuEs042F-Nnd0|_!gM*7~n+W z`;Lml_ob#jD6FX~A7lG|C~Ui0L?Sq4*!bzazM zK}m8b^q&xI0C?s9Lh1t|xtIc)rErwL1t(e9EI_kOs_-7tGUWZ`Yls&^TM?}=c%R6) zh?t*IXk3+vSUK5+%>65*4I;6Qm~MPtXyA4RHVD`vV$sM=yF%0N?b&?pJ+fdlFU-$T z^^p9)vRy=aj>AT9PVDuCaFL74vNxM7n`A0eO)DePgSTRnpN$WKnG3zN-Y*JgmqGnv2Z293e6|gJfMYN&7CY$|G0hyh9%E2eBAm9)Aew= z!ql;yG50z$S$n*0@sbbAh9z(s)q$r7Sza0^I|A%P>>l`oOrwVQo6WU7`&vzFbZ!(BL!)Xp-J`HOcJyDN`8?07NPO%we20gfSe~?;@9eRjTg6D_#P+?T_46punJN0w^v}cA%U_np<{Ls)hzO z0mFJr?RW@d7O`-f>dx-yCt=>*cq4@`O~p6hM{orEd#( z2o63`xl}Ecm-TXXijA;ME$M64rs_LHoH%5P{qbl6tv$Yl#B2X~>;JY~6m6HThyu80FZ zc;!UJmwX(&xQ3g#&V5{j6_UhD-i0SDX=OQzq7yL>ph6?;yjDu)(G zacM1VM<5R2Gn^vIGhXxrIT z0~#L{LX0eoFI4C5qDj|$NKylxt;Aev4wEVNs-*z7^;|Ve01v{Q;mMnqt^-27`l5*% ztPisF^4o8cia_8la4PDBsMz>?~LZ;l#xlhm??B_l!@WNSp1+DC-RPm8o+o0`#K8w1;! zxL9wsRrTzs1_XRE5?hty%-L9*&X`gn(qF_?b3%!_>$emYCX}?16ULT6-xmixY@a(u zakKZVn9~RL_C92=MpvH!upAwM_AKenTF>?-eizI%05P_`xmS;pn86k_1z2ERuC=y_ zTq56W;XWQUlE%-zP(d2iemrZTDt0LUk`E$7iNB6rVu$ia$D(hX)3)_sPM-u)G?A@q@E5W*P7>q9pbQHqc!)!vcj4QgL!So%fD!t< z2y7Na7dt*oorPOtggF4i!D#b)TJ^7f5?fEx=FefgJ1A{_;{aDRybpnlpA&fpBp0J6V(30^F#bFa|+%>5WZ)`@e_{A>xwcrL&cp1}&1 zILQivljUvSxHGu+nT}^L0q-?~LL->LEw6MqgA?UOCfO0Hr(Fs=g1Y%alRuIjeQ8qU zXm<4dbna}6X3#Pj%Z_$PjR>WR!;YS}HzMEn!L~IS-Z+da!j6W*z1vP~;K`crKwtf78etzH&7+^Coj&@YS1RdaC(E>FOw2a zO06!y*x)t(p0x{gu&W|EL&2w7XZWs@#h1>7IAP~zIH`txDn@5W8%n-3N}AH4mm1aK z;6ezW0hK{4REP(Rwm}9w#N{GPwpdfWn_-7A26o>QA>BC9B%Lb;SFtGHc{HdrC^w3z zWXk&t&>)LnMX2}ezjRFd&c%CEFGMRKehZ-WbwIvHUP|(@_y_E@n*F0&mGUG0`JWk zp%u*N>9rlssHB9uO)Md(pZ2@YF_|YON9egZS4|lake9-iNpX*nPc0IlX*z0%{-C*C zlGNysrtjiiM~gA|81fepPOKho!1ocFKKY|)+7XAQ-zBXbgb4n0amPfkKS@vPar9cO z{sKWtd=jJtSsdR`BagLhZ|+mQy{~dY=EUjRN8zL6DEp?@c+bASEBIaAn3de#g@Fs< zP;^yBVc>>LBw^&CC=H*fND~Of|K=o~2ie3d34YE^yen)jh`WhB$8ZxLjV65t4)`U8_jzEdJ~;4*;x7pn zwxV$=2^d8#T){D9n9*?*i5c)bKGSP#GJ`d1g!uYmS#72>BNENUJVEH2)H~z*B>V#d zgwNaSa==_wqm9&Tm$>IO8jNK;v}5fjq!swqAb-3l6+7(>(!`HSi_m0M&03nu9q_)= z3MsrY&_kr9%g~bbEsWnZh{v+tGo`aIN)^WHc{o=sQGdQr&UIt;Je6CCzvp^*1!y*!NIYyD|>Vum|Ts#o$XXG!d!hVbi!OqfEee-Bv%n1ooKqhfm z^91S$uyLHws6K@jVZsUr8m_gthH7~d&ExG#qm{L4P)p9N5V5Nf_ZNVI=3<BEYr}?A5J>iP9$1Rbl*Fr;2{qZbGPI?~alQ!a05Sel3kjMbT zc|{d*#NfGuIASouz@9Y(xQD}%3Yi}jx{fzkj6U})>}|X7DfGF)5f-ZLZ9Zb}wYTKa-{uO(+QJpLTMJvSk7dzfu zEk|KJOsg7fM3^-6ZA1hPYi?5FM+ds$cfl-4Bm?e6CUas6g@F5MjN5^~{qYxCxcf0l zBf$OQGkUt#rU3{ht)6oMCl%TA0XNbZ`c?=gz#ZB*a9&-K>Z z+h^Q}J?)3k->C9AQFH^m#76Ea2T7vKi={?y^)Beq;-nU(7OR7Pt>jvvW*#UZC1AuF zz`qf0Wl>HhLJ6$>n;Y4@k4O`((g~Wl0R8~jB@HTw1~g+e_dgn_p#zg8;5X`HG1k3Q z+K6zdo7)nA(dI}yH1s?^bp=)^*3feVqCJoR_zdI)oqVh0TWwUwA4M`o8VQAAQFzPd z=rNlMR*&nFma)t}xo5^6`sAvljSeSwsZ`k+LDzU%!y8jNnw&(WLB8coYgUEEe@u+< zEs7EtzMaZB={1L{Xj_n|sc)8Qkzq$+k5;?>Y_=3$ld&+qMULul$qYof-=PdU9mA&b z{VKMPm1Px=*nk78cUuyhHWs{fE~PX5yb;uEsVt)X%q?k^dFIASkiAAd-J$IDvD_Wx z4lauXxM+$$1?uvz~cc=`PT2V>|=b z;H0@xZ5gED_W^)rWh}+xe(Xx&XS2ZJKxw8*CIV8ruIl)e!o|8(&i?>RY#b_ByFq*= zWcb3tx<}^t(q!2VLVam?XjJ3iPH%1fwyY~pPgs2AC%?%0{iEu~U*tbV6;scJE-77^p612Th{KT;v8`Xt92SUmEm?CZw7YVU3 z#XCYc=_?6CkX(8CYHwirGj(n`q{Ab8#Ho90kC- z>&>6{bQ*#IuuVGIxQz8W8;?YEo($1p@?N*`23l;bb00`YYc2yfA{J6ta}zYc(bx$lv6+jVKU2xwpY6@k#2r8+k^) z6P|Ic7#2(ellL+q`GB|J`x*F2)GGq{FPKA%H*OGQ}mho(HgSKaYa?f%UgE5DI~i;F?s!8SRUJ zjS&IxVO*f3jAW97_^O#>!U}*qRx+c@tyax&IR!p8aQUy83s2%(;PYPs&o*p1Msju@ zU?>Hn6L)$JbM9tyCpg6mSo=pI$ZS1%1TJL#=5KnvBf}|;IuV4XSgI;~GMv)r6G3|M zmdc4BV1|o(x9aprP3qa@7RrHAOiWk1p#f@?V@%&n(b#MznY#qGHi*Q?MWU?!<=;tnqr@_fUnzUC~@U|4d z(-9m6QB&7TFcTnZUZL?GN!01x5#kwHi)zXSMI{sBMW83|U}lz?sk}*1Bv-~ljs7>- zbJv2vrHBHeTPci1n*~d31uhH~cf@Fuc73KbP_{Lpb0u$NFh6%2IH|hai;$69>#3JhzTx zLyU@N6}&nNX{z_oJ_K3HA+i)=TD9Ug&IepP{Qnvz4xPB}MKHftk(b@%gH3>(DU3rV zo`e-mRV#i^Y1~mY8+Kc7-uxzidgc7OM1Qw}y!kIWsxLyRC7p}OVFy}-?(fF!-Udn& zB-r)pY#7_@=K=xROy=JzGT1dYiTW!N>(`qJ?y_!w;|^`!jsHvISflRh(-B-dPX-Xn za@0@E?_x`m=TC9I2)9q?$dJ>q1|nIbTKAT=WaP_9ZB`c8|;{|z5S;m~`8|E!dEzS()AOh~|WNLP?Zr@Ui zQR!tmc16S(AQn2bW0Mwlz_26cxcOL@9fZL2O?H4mw7O2@4uKrDrR5U!06ygMiy&%B z1vq@S83=Bc8tp;8r$Etq8`pf0FAWF=q$8Yz3Fx=**k(H<#LPP9fv8!F?cyj7UPEuU z`(T5ARce5$>G<=FYQn}Suzya*SFLH(HSu znT!=_RNL#>uK=MtlztNkTkuFui#1L=uL)c4y3)iFGe*K$Q zEdAOELM!^UuZDpR1ManC5&?<_xP6EGoRSGa?iiSUpM@A5WO!fTI5?Ig1cbyRaI6`Z zu0ucsS7KDE?@Kxe#2e3z#ulh%8Btf)R@>z*uhZbZ2t?;{?2-!oWBPJDuY|mw0dBOM z%5yos;`ar)k8r|>nlSE<5;dW8IiY@khHS!0R>3ya890zx9$dSWm#;n+PC{pH2KyLL z%PVe(F;~46YBGatGY3%@3h7#M*JqU4l-T6b7-&lEG((pYAV3RW1sq}hDeClY+~OCZ z+~~ryRf&S(OIN?omsmW$6kgqQr}K&gCRxA)-B&OXRvm44K^l#^$h+L z1Rmiwt*ib!{tv3f*E#xirhc6*uSZy~*}cBAz&ISfE$Xbs{s~KA2UtuXYyym!q7q9G zn7q^${{m4_HT)J6eqLilH%8pM@ff1_E+fb>7=Pdx@;A-CIHH~Rn`vs3)vTcv^gnRi zWCkF@jQ>UvFua|ls~2}M&zBKVf_#Tp1# z!O72vVs+mvkuHoN!D0M?;D{dSRWq!SvW7WQf{-I^TrVRPz#2g*jf`{^zYN^Z(!dLB zSa%{LWnpBbu#Vv%q?3Nn!OCEOf5vv>;>E+ag*IX2K4ZO%_;ZN)ARV-)WMau^cjIzR zdb2;GTm&v&3}OyGgu6soD8{_F09zIU6Ra{HdyQ+bJN?+2g0Sk$*}SsHvmXG1FaZT> z2q8`i0xAi@3Bs}{)BJ>+t%N98ECwn*d2m1C(~Tep)OAHFW@!#hOd4Z>A_5srO=Ud` zj19Qew&fvikGNv1Q*Sd=ph+k*W&CGiHR!q7 zz?cIKYWx+Vk732nX}|`xwsi#iOug-BT`zVQnQv3fR??MmYR`n`1tbuRs)KP`FutvU zL$s-rabbLO3SoS)z_{!Tv>~QY@KeadSg84{Vj77z&s=F^Fc5b+R}oa*x02Mcvl@gq zOT%Q7FNAD%Rw?qrOrz4>WDpRMMot2if}rcju_=1CHY01n#Tnq zcN*b5QD`W~8d{FMK~JhT=v-@_n$Le-?8sHrf*3fW0)T|t>%|4F9LR`;4)?zzH_iW^ zwGyupBuH@83{Y&Y^~uQqRA8{!1z|Fzhlakk$piZed}dwAfX%r{oidtWRorceaD;%D zkv*idqClJ#@uEL9&DJ_n0BGUZ^!NK8 zUxl3m=u8L40AJv$3SZ#z#dQ9e9z9PXqx73oXb*ZPWwu>-lrt*8uTdqxst+*kg$|+* z@_S>Ii4$RJ8t(vOb0X2qJisvB<=zGkhYv8=b}`!a8K)G$3h1HGANHZ+j}j=Bb?dFu zOVdN{uv4@h-$M%3^*5F-3q;0E0|sd`Me_fgrtvn`Onq#XDLqSj&^sqX5!G6U7)~M@ zokpH@`O-O_4-CV)~^TyA%XPMU=%5<|&?P$8RT4N+> ze|-&5-h8~y5d{$U21&$5L(nPlzcIswc|*PBl#d(bpvEcK??_*Cd=v(?#MVy=odx;y ze4t?=Rwlx?QwhIYPT@$qM;pLTlSqy@T4flFN?Ysz+6U!6D!km_Gw`;n0=H7jCNtoM z$IF0VIA3s%+G@N;+of3SS&{>@eIX;|CfAe2p(I-j_pX<);MiO^lQ7a%6=fU534~Us z)br38D%Te=oiCZa~zX3Dgpqhc>RdMHx z1l)k$*>3e^@BFOl*>E!a8Lgj>%ZRbn&0*tivJ)$Va3J5JO&KAR2$lE@M0S%|0nfs9 zGR2;SS#(h6q79^-;I*&)6%Nsm+rwYqg#bqS4G)~{Z_4rJV11vw6_cROA8B!2i|?|8 zBPLvya1mF;{9A7RW!YnRPR8Fs_{ZOW$M0SEmy2iOKL3;Zt~q2`;oHh5gpC^XBvSe;OFM{Kw-(|9p`XL+_qp_)blM{OG+(yx=@9of;*Z9OpCqma$o{V5 z*UqT^k!L6qv1j_Lz;uFZqEncAf3>M|cL1zzTqzct<>hMactpF^PM0_ZxbiUo8?^4S z<=F{=ap%QEq;0Q%CXNc8Q%)b502D&3$dU@SkNuva_D{w7)-7TI|3lg~s6_9U9mX7r zU>gnU#$jEg&qh?_xSi_vT{+4ivq~`_f$X882VM@*&mxl)6iW$8C&QU!j}N+F&uVr7 zgv+HZ$!F}A{1}w25$5lUKjTcJ{H4y|4KVhkz0aR>Ugpm(1x67foqc|UtK!2%_u?ry z+8BU{Yw?349*c2~+NUF){5^|-w>*f;*G}c{r%+Enl`@t#WeBzmMec!vM`#Paf;b?7 zQM7rSyYn&3rVCam8>40{f*dvaNrVD(j{M>!59X{grK2i69(ejoZ`etF5UoIjhI%#s zI0AYn;|aWPDGr6kEm)3FSwHeoY_KNvSvG4msWZ`FVc?QdV@ym?wDC@f=qV9T%TBNd zI~{-!D!uH%P8sX82mTjoY)Rpt4WmLd_-uxl%=jr1YZbF8mhh&1mUa-|bZ$HGOREtSld8X;hs6X;M?gIZ6R3Xg*D(e$uo2zWIWtfjKRuav&gOGr zU~KVAnRrn1`8f{T(83UCNOi7MzQ>yOxSuT`UI_wI)VZVuP_&JOfe9s0@{3j9{ag~8 zqS8Kc2G9rdWE2LcK-uo8z6XDTZOuIr@jemC9PCF;d0A9@@KX$JR-ti8y34o`@jX99 ze9vzfvok8H=KFp)_wV!M@3Y5aO!wyR^M6$c3y}Ed(2svFrs54UqZTa1o7Go1*8r$f zUC$@FLUk=r-sgcLhRn!N>FpNZiv;{&2N{dtzMEi*oli+a{U0{B9Cumbq@ZTY8x$S)GY zx4vZvO>Qj%3WMPgzC#{_a%wz>=n97|cPcHDVh4j+^3-RB1AIQjWt)sJ zubV8>Y5KWDJb!{KFu#WjX`zrj5~$r5*bcE8N%&kLH*kYKC``ojDiI&TkOyqjQOzBu zmVDDYq4_Z>H_s4|+W}Oyz2Ti0e|XEEjyt^TQTyP-`@0US*giQQ#!k&JMzWcPuI-=D zf@sLX0NNXBRZ(0>e(_Y?p>9C!gAP?Vzm{8i`UY=qse{zX?=mxtQaMK2n!u+b8Yb;GA zTGvnM+RyY8l~_a|NB4Y0-Q~+VWRWNDWnL~s+nSG$;3B%iYLb&msJaN7Bc_k~ua=cx3`g z#|DMM97iOV1#l8Wl|F_ONgNUO-m?7R^B{t?$(bYoTf`E8rg72=PAtGbd;-P>rk749 zxK0&Uz|ldKi*-0jMI`J|qmsM#Z=4hM{u)c(0w|0KDhZ!Z12KwuRV6GWQ4YPn4;}^I z4~tg5&`8`5=O)*%+wVJ%gJpO0s z_G+k;&BrGPzELBV`~u^lCf6W;NTHUSnId)vre%rg<0Ck5-Zf16(|qfo-+o=+JE^tn zOI}{Ma*<8*+~C#5u%;QWY`UeSfBclFH@ghdTdFMRu!t#T)YWxWvlU(vFVoFg!A)hr zEA#Ichf}LyONEijzlUzWO5^3?JFUu-PFrl1U==xD+XoOe$Y@)d*;`*d^6Pb87@ihD zLqo>6r~1=NnH_LZ>#^bM2#7|1m-ZZibr!7V8G7<+0a;m1r3*FR%g!6g71&jK4JBc( zGt%-#sQEe`)FfvC5>?`QwtUe7Vp3Zwd18s{(c1mk72DPQ!ahudS`M)n>|v<6h#yTi z7xWLcB^lp{Ak$0D9o(;iLcDTdJ*NOo0RH~X^tRs4^2rM_C+}UDr|8iTsrow`s{PX9(^ql-~96N;^)-7r?~g&U9D) zdPH8h{Ia^ni=wDUF>hf*S`vkYl_=FJ_)_SFcUOe>%IeeME-!r$Obm554x@Jt@=wvB ze9#O(#C z*;gl%)X66!y@}_(@--rPcKRy!{t@9eOUsdE{WG6D6AboTKl9?~yCs^+w8);m;2yXF z(&r10&sOuDn5+I7r%w(G-@a>cNyhgeQ|6H71MWiZ`)3?y1S&6U%pz;3TE9R}KtvI1El(tv47V|v5 zE1H~#UxW0jm?;puj>e542=)V?FJi7Wd_<~Y{Oar7#0Nh}bx}=qEU;c2t0Wfj7Kph7 zm<9k|=_Ex8mAM)*%6yYhlfk9co}pL;{0A+vHn z30JO~Gw7t&&MR@>#XJn->s&%L9s~&5(>J2Y1xqygneBUyncQl%wcb7G(`Ye(x(!`;o$L|xDDQ`*o$nXa!H{16G2iShe9ykJNcNrmR7xIkMGuFZ@|xKjM_hq3xt?{lf$BG41 z()m+RI0g`F3EWw{QFYSJ&i}DlG|Hqvpc&C#$@;YjL(8f?5=*wWMOF!~*cU;w0bUiG zvMB0Rl?7sYCThMWIkzlaIWQYKpO+IlzZj(owsNVC)6KA*=FDHLsSU!~nbCLC>gq{- zsjG}HPJ9KwVmB9ftA%>SIl}>1>k#`}r%g98!km z^NL-6w8Bh{tkO(GLD)N($A#`UpAnzT7;rgp*6Kx8RadT^U7I{P4=9zrZN^!~s~{?^ zek9nLRrB`2rjNY0z-4t;b)o{Z>?7y|Io^7?tx-KqZ^lvnk5KON&eH1`zRi%0BL3vA92928|J}ap*HRo76A3Bs(cuXS35DbSwbkjw=EmfSiX20Tp!g+Dfpx980ru`61o>e6Jva(bat(;zkm^XB9<#=nQ zH;o_8eNJ|Ot4VP(8O;9mJz1^pA8oAetEe^)V&UwnU`&Wq5G|wYYhAOA zW(aQ6T#M}ty_+~IF=Mb2;H-EJ;(V}F$oY+@RVPlbNpPw$c}sEIAaD(-WMLt6d+b9Z zXCg{2557~Il$vi8{9VZN5(K#@0M+tE2z1xcb4HJS%G*NQM3@Gxdqtf~S?hwq52Xk! zkEYfm@dkROU&v!dR+vDdFjHBse%bU^_cg-0z9(%B`T|Se9qWCCvc@|mT-hR}GSqS^ z{|2ZZYCeV^p#Q*7%P6kK@2vK&C=s_0-4Wt-z3hMETG$=k+VJ`~MK&MwV~PsYJg z?S%`%LFL5K>WXkl9HHL|4q{Wm(0vMDHJzRcH6O=?N+#C(<*w3(IDd@60OM6@Gu&yW z^?t7DW|ZEsd{G*h;YLwxLOrO^M4jKmb8L_G@H7{y=+RQ=ca=_2FqL=v>@L)DG;anE zL(QMjP(=<~RC0{2xf)zY%aK$Rq1lNH0e@Okc`9BkjTU@z+y9Ae zrZs+c=!pp!WkM}aF|3LSl*o{oB^{ift|8nf}Kg?VCA_zi;SGslI$>eRyL?tBVfi~GwH6Jd)tgkJ^&788 z`}1gbxT4DRxApF!gC0bt=p(oX{ViK4WENtt0cyIUdtk^5{_IO1`3HFH>m#?68;zIv zm8*|T@%53r@675W$%{(dU|g_)LK4=8e3ey5DB8&K`x?pXTO|>hMxtm47N9LxBT3tt zMAXyqPA{tZCUF?{hcZ=d{50>5b6gkt%76Bn@RSi-Fm z0a9r1da~~M3258sr0#wIADEt8?!FaVO?QRIT6N;d^WDeCP@R}^HZ-dL`K@*_117f}c_UH>E< zPf*rGz0{H>>ZS5eejGom264s~{F7U{&Qk5v<1?<;xlhNEiywjP!!5_T|NYHRK&*-5 z%+2bZfj?{5i>gHmZ*0OP+aDjYbxHsO@=3bC(duuQ`s1Jc_;Bk_eI2L1kiG&p@7#9! z(g`JTW_R8l3R^J4d9nIYT~-}b?QkbESNyiGgl-R+>Laf;m>9KE9RelE7I=&_q;)wY zsYiaXhtS2BYS}ng3p}9*%OWs~9h%QEWrQB$WL}jjjCvH=+!opD<7H&K%MZz$A8L7> zvD(Q<)QJsl0a!#b*E>%kX47phFa!| ztmHT|{E|`)+)W$Mr{);Y8~c0X!j&hFj-Md{Ecu}@{yE=jer&o|tdKUuyKUo0f9el$ znufUP*dL|34$Z!aA#{VQ^vBoSrJ;Mfn!5Toj!dlwQP(#P^3MtmwS$0Nga5#C>sTOy zZXTN$AJhF^dpgvf@-DG8=_7=T7A(wb{Jgimsk5MQEO>vOOv=e=BZ}&w>qP&xkiB-waVzy&h}XWR*B;hu)?;CE!d`H3?tln>zY|loCEI} znbr7fpYev?O+eZn@}2yRB29A<)eGE>cmaE zYZ9L$NQezb{=TWWdht!r*A?R=Ha~A(>?wtu)#E4z^}Ylu9q!iq^jADOaU=3Nk%S3} zX#^8iC+5L-zGBgIDivr{!mpP@xtuCo^>g9wG3Wu>pikw`Vu0gQPv)^(m^usHpHHNg z&BeS*Ob6k;=$4G8IGTDo{!ZdnYn*O#U3tjf2oM%Lyb5pU|?Bmper-wq%3R88`*m<2dQlZREsR=i%IB}1!xo$N#}VH}U27l&FDu~buWV`1Yd(d0LL`_bt2vO7&;VC^}{ zHQcn=v5Yx*XZO>*1GI&yIhz>Nc{{C0ydIFMEy0NFwc>M*F~3*>z#Q52E%Zm5DHih= z+#mD1&-7>fPR}$I8P+KVM6k0qxwBLZE8VF_r+zyqpY86#qmRiB=o&q%_;P7{3bQH6 znaxESDJnpZ+1we;na#2OZ1A2>EFmbwAIzlEP80Fcy%+htvq1_a!5;M4obKJaQ{?bu zxA;sdm0~uOnJ2R(PuY^p_m||9E#G8G*ns$i9*h4I8tP;5w@k_z?yY(!v-n-dWESW; z9^@?0_}mdr)H5wmb&mx)#qY7_0$rWk<9>dR=>_UKHq+&m>mQk}k*$A} zBQL!h2|d2e7iGu4oTz^XW8AK`NJ`Y2%R!6lLpU>*C+gey)zKDFIdVPNy10Hj{AIb+ zFXuH$yxh%i^tGamcQGpWA)_KuS#vcXM7@#AxJld+wixlj_0;Ms_>6R>I>|o*W=|+h`sM|?dES^~ z5nSRiI-OvhM&7ZLmg`;fD4F*|&A(+x1eRi^k67Q=2lwyiK4F-l=5KScXh8@|i%8Hu z(o_EZ8@>@K$VmA_YN>BXGN!xU{e<7ui?7;BC(9uc==mk?J(#q(GB=8T!sqU(Jvu2L zS!m>LBz@sLrHn~r6t7R`#Sw1S@Zou#3ROweFK5}aDKhIJ86&UgK8Eo<#&A?0W4JMA z3`c1UXJyBLwAZu$9m9reP|LLlfIuV*0+FqYBik8gxhCWme^nr`g=>Mp(@7eBbGJa? zCv z`ET%HPX-^}{eQ%Va(C;ZTzvS`*BS2?mHo}Zhex=Xix2ZZ(tNV`Fq7W_J`idF3LFzA zD_K7*R)!si8g>i^xBzY-p=i1~d2gifA$xOzZk{zdgAe1a)8Lc!uJN!eJ_r|L#t7EC zON0CW9X`C^2_M=74MOOj>=iytD&}{Ge&56IZuoFsxqF?c?leB!!{_eT)Xm)oKAbn7 zmPWXSgFXo#&hI{kqk4>CXdh#^EN2WuHHH(iW5~sap#N610U?3+xGDfzz4hTg%5Z1jSux|d_Il;7x++<5R0iR&b3M>XXa?uPXwBE zDTi{9T{w9%erF<%t{opl)+^|dk*Y*|D|fOfoZ`D672L^^sW`wnwGd6O%B-lrLhXqu z*4x*d(=M|hTq@M^O`ZqOLe0(mKmo+EeG69+Z)QnECX*ZZQB96x@9%-XY_j*2ZH)7x z!nE!=*;>h}?cIa2LM>zMxvATs=EM0xFIb6(>1v_u#rxX}m%-K-VlVa$z_R_JUgvt5!K9+w z7PGy34h6GEWZy*XZg*ddT7cnEixymy*EmuU5d@Cyj1TSFk3XT7!^Ka$_d3^RMiy%M z9CEj5{ zWO0JnjyH0W|Jqh=^OJaJ|20*9Lc?C~2I;k?1)ELM=s?oo#|R{irUjvX@qPu4Ii8CE`9fA-EGWvcWt&iK3Y#aR;D{xi4J%pHF z#bGiPX1g01D2O?!N=N@nOsAr{Pa)cvrBMi}tGVs?6hh}40t!KHtPF){%&+zet1E}Z z&yvNfhfR*4?ZBCTF+**4577n?H#8l+ad|WA{nrry=VvU!I~$GC?jqGj9!{1er_^FT zY-@29x4Rb!km>9GGsG38x7?4;Nj1^KA@A6Zs?fZ$J~SY4m5}uTOb<$E2RrHi>0v+8 z-j-_jVqRwqEkRZ1-(}NkWkBxf)2r;KKz2Wf|2U(PM>mPUF#8Ki-4D^8ZTeo(HH-^i zkK20ik5YKHh-;&808#D)8>`$HYW|@h1{+D4rdOxMYmoh9W;A(oiRIfTSgo1u(biwg zS+5WKa{_>GymJY6YmFYYmVoz|AM&;;R@tWGX#^yV^i3db97Ah5V{~4O)S&n=TJcU1 zUb|C)ZcPh!)8g^-Zuc!L@kvo7GHa}eCX>E-Bl3G`*s{B9%r$S!EtiHJyz?2}iMCCY z=O)jav?DQ4N_OyUfWA*o+F^E^jjnyT6yD(3t55QsMg6GTlH6|Fc|^A*J-SVumecJI z^?BRG66TQn5s^aUqRB}vR=Jup_=qMo zsM@7cy2~sEL^i?(ZMf8Lc{c0AmuB^0JHL&+PB5`2zCSKuxXdcssHuhWayo)2cv!SP*|$actv&XyRB*uPIDcPmNOv`hQ^3ZrWWucP?L@lPqY_6f0NE zy$1WG00bK%=1TV~AmW)Di*-0BIrtLqJu{h}acEgy%gY9zjVH)rnl_jsk{z44c6T&! zOkgjKCax{6T6}F_FKv%wSksB>1bTGh#$jd|&4KGQ68iJ?N8#OPqNbwng$bx*ejwrm zGO}G;2*Ekl2C5j19tXhJ{4t0}AtvlKzu!QQ^KnXZ#Hi^9U%q$|y&$ec3HOb?bJYyO{37Un@Ktnq$_WmCVshAn7 z+#O0@Z-jiaLNj9do1;*7fcczl@gtjVL0vj5#u1Oa_;3!&@QVx|MJFzVo;_U*#l-(r zbcB8#Hp19=el&%qa{Lf(DOw6gL2Sj}2b`Ncxw1BY7j_6j-+JNRy2ty(y$?^$L4pT( zCyjeyZy>mbdpN+a1kWrIg`M5#E;uL$^{(cTZ~ch%M7<0AUVEZmb8fF={9X<9Fas6~ z`LJ>Y{T`@(74`xGs^=FE%<1{9-!Wh~Uh<3uTKZV!N1?CZ2hs`NSoDwl$cm_U%IgdK zrKWG!>54lr+m*U@W+Pm0(DKa^A_@Mp;TJ16aQrmX{IIDU z9BQm9&P9MagrY|RT@0k335w{T(m!gv&YI-qr8SkWk(HlM$3Gi-e0s4@uWG&b!(PE? zcv)Et0?KEyHG(mPvE)}q7keT6^*Dbl|A5SmJW&7)&MxBSj*L}AN-(%p)E37NmXlOw zM=)jAtzgQxiX;Z-+msG>ejjH+Q(NaHI1osUH4$zi87tP<*_@dGX`(HGd2wgWcn}M`Hj=)KEHykAC!P;o?M@VGEMOS_Fhb zjT1hXgUiqGPAuS~VQ)~l8#4dV8t`*6Z*+GI$w8_6c;wGP-FD-nclh06itg6!6XSBa z{es`E!KZrd#z-SPl!rY)U`AD_mq=v(d==JfhU>i2PpLMulksNyF1aw z5xny(@1&;>{FG__S=0F+c^Ygqb3(w$7VBzS91TMZFo^hG) zKn?hBC4f*|vj5#k^aCUSop8U;jR?hvuMaOPMJvaH_x#-w- zcR}VM3uboTjqYs2Y;!@We|QY=qER*BhtdITH&Sn;e@Wn~x*)8LW@?!B_89k>V9L$) znoOh8NPJPrOC@3_XBTr&Thpq`(Ql6LjEj)`vozY&Ra#SV_3rq@nu;sU=NbqYkNsRk z31@b9rR3GIIaIA#?kE*XH&+*zdOlS!_bCMzZ&3P>JLPXe5LNZ*;2*b2{9@vs#X$w4_)~ z(>~+^oGulFMQ6>l@>PED8ta}-Uch>j|1h$6LW$PAfr<%c z4qnv>TL>XYP*9BMWp9vA2PWyhizbv(XyjFmLL5Ym_3rdH&HPgw;M`b#M#p|YWaYLP zAe$CVGL(bpM&{S@e&9+J)hMAcH-0PM0X(xbnfWT*U<9*iRYRaTo4CHgQWsqS`7Vr-c|>7B^*F0oQ@Jvf{6+v_5Ha9N=~6QA6!Sh3ig47#N9Ho$ z)8YF)4)y&WLhZ&mzJ~!c*>6CA+6~!z(+&{f2{rrYy^o*B6Fc=F^%W`psQAR5n)3la z6_8Hs38ZHnlLMq%{}-T0YtDnZ@%s%tGVRrb_wNqO0hdShl~E?-;O_kXyY^Kty}7L{ zr_<~FPJL!KsfX-7O%0f5#h2Yj=5{=ehcWqbyjRkEN2f(AkUv9T|F+Qzl2r!k^O;A^ z76`FpS}4}rUnqm@99<_khV#m!>DB7UkyYFf8+h=}uXrcDTF6KKas|&G;F;t$g@<&w zYX)e!f=9RT$lva%ndJ%|UE}u(LU-%+Uc9`S&nx|21M%I~%O`l3%^-Lt-N{JxpINsK z_hv!P2zEcB4HL=KH$I%F{}q*o@A`+tL1NJSrRdma@XW&zJ{(}Iat{Wd($F`E7$xos zyY)9LOq_#O}!bzY(4P9^*?CDRtDR$?T(BnEBh&601s_}<#Ek<|O zm3r3nVZYlBB0PzKwCV-LTge&--p^zObo7&eqYq1Oql5RNV|SSp)AVt_+g|DRQRb+O zdmEdf-<{riLRR`+f6K-1Zr{0o;&2n&z#N89!E~B-m)`bOYoP0STXL;;X^;G9xsEE# ziD*E^n76TFv8L8-&@*Gs8BuGCp?*FGX`XY(As*EvZ{ZU*?IB9Q49LT0kon6ZiI9s=lR?Ag1bKtVskL}-}`d6`)>>s!HHjJUyre` zC63T6;t0)(X0`H(@ssD=G&LjX=4aV^5BW`y@s0(N+QSfU*QVB1?hQ4WPia(u8D%~p z>?J?Vu+}6Fxc5>&^m{lrd+%(&hx2`*smz3?BYTn7&+via=5y{B=|%=*?|nGHW?H0k zY8u(?*D}PIx2wkMvhz&Gzj(t8>;&(Jn#PFCn|yYObv4bG{mwJl4_bIDRupC{W6J*C zz>55E=>9cbu?*Y4`C-u**e`Io(fwwxtV+h&DG3(3cTH+|9WQhdP@I0Hfsp~pV94>) z7(=8Pm(h2%#U^rIV%;(Z35@62fJBe|F=#0Jd-)XudyL_O|Irwb@{O#Y*n12cctK-G zzw+0D%ov`z-o`-O3T8l@E3B70^8(43$3M;^PJWhZnQnj4C~-AuGRb;!M}$SIO~$vS z&;Qxj>;0G)R16J%iVfaZ+Hg|XIv(KVhi&w$a#rv(fAkjeveDi2@9rzODm8padi237 zhx?-kg^nL;qkkjRqLV9rzn5CS7n#NupW+WG*v5lQgNz@5O{*fmDs=zquBvGAPqIlv zQ&Pi!@gtG@^gg){8Hm@R)1ddRP7P1+u3_a0-K}3@ z>CiVh>-TnP46##o;M<>P4e<=>zBtw_mNNc1R=4q{8hH;*K3?yZPgN6a<$7&~9gSlX z+#}rXoIos$HCg$7yv#(|$}ZfFBBbc=yb%*hDtqf@H%}iNqz^=SsgI*}X{qyL^Q%=u zyc5t4s#MhI6bzcgJ{?|Fmh4f7<-Yos30OLH$YdDjfV?j-)$y2tI9Y?gBv3uPJ&SHW z5TkXw_C-bf_9M@fV%Gm;H#%I*74hIswMHfg%)0rB=~#I0Tq|@;|4iPcXc;$B?lNV&Q~%^NfzZyvVmo!&}f<0tM-R^s#uZn{Yg zts=d4*APT@gKo}49ITn);?q&fJ6R2qplJsMIB?;N7!tq>(4r;EMiP1hp1rsyw3sf@ z6Ix!rt~<0G`uG1FTHbjx3oWnf+GA3u)8KyzE%R>f4lVb5Jf8%qgZ3~WB7Lk9 zppi>NzN3%)w^`BIdy^9xe!)|H5}a%8UBCC_lyR=};-#sbk-~mTk7Kj1A^MTw1Sa$S zHw*D5l^MmkxQqc~&?ZcXeM?tkQZDrTbxk!-7xwRbU5~y{vZ8Zf<@z}jmw2@RRdj_L z$kC?Nf~sSDzB%e zH{X5l3ru}W6Q+~qe@LETi|EIV|IDLMe)7+t{X=!Xfdn=@Mt_B2Q)N#R(nX6S8n}*QNUmucwpPW9;~qkr*(dp z1!%gea92}pVL{Ws^Beo8R#waUh(gri4upjXR$5q60MuMf<$)y>*ZqG$Ff=dk%7@{w z*Fdq}fVL3KQ$1SLrPdq0O6e5_gj0C246L-`?oxZ5A^gRbd8A(-QTu#FnO|B#Z+-Vd z$b~*1MR><(%D;VOG_;Hr{)?nV{9hZ~>kmNBarE+2bR|MFR zTgFOyZt%zVcl-R9+|Liw=daicr*;0E&kcAr!xCl)Xxk*uI5-RTRTuO*w`-p*%JW~Z zb4B+02-~UydA&DieaY`JplG#~Co~=k;S^c>&tP_}KPAgdp+PsTnw2YTcgx>o^@>1l zW=h19U-`%Q?T5Yit%_Er)`prDVFs5S2H(BB*7)u}zIjTXi!{J(1?0GFL^*(SND*{4 z>fI%=4M+(Gpfc9-mgFbGIWjm|d|(UFy<^vlZR97Sdylznrf?|vyx_t_RngPgd&A-! zKADPo!=941k@&25;lV-rgu@At!e6@|qV;0*g)Y>M)&lG)PwlMg-!DEP>I?VgBm!04 z^&8cJTubUW#hDYI3Sf&ci8)9>^8EJ%@p>&WFunERVUMa`1B1v^1%X8hNB1LLm*|d( z>6cM~u{&$(YYzoibPwA))co8vqpKkH>NwQ0A9vhzI`2%0)_Rwf%O}?IvcH(U<&1qX z?co}KH>T~k&_lNA!L_&Er&;%0{eAK6U)kGPzWuqn039#~1Pt3&CDze%RYJ{2FuQR?p12EF$aVWYtJl}1uOUFHkJT}d{V{!oc#Doqs?iIGo4WS zTDz-1G9b<;*9XLTtS$m5UU(kC2Fe7-DEdp>Vv3o06uP`;1rD3Kd@Z!y71LOHGAAFH zolH5+^qj|qhG!1px2_kX2`L}wkulaP%)sJv^U9iIc%B=8J z8xHW%dZ?&iB3H+Ze-pD$>!-TNmBg11N%R0{kooO2Gy zyDI?TfLT8BZT2Mbp!PGPRr7(iT=1X|0(CO@U>+aTBuw{^3?Uo9bRQBh2Bbx&X9tVI zWL4g0V#tL`s|O&rzYveKuvh?TLR8IGk~34gYGKzJpVl{kWD+#W-D#vpF%6|A1%mCi+OTT z<&wjm_LT;+Oy$C~r641irL)?*E(6q|men-sQmZw&3B=V!8mPkR3v!$&AnKtDcG$4j z&K$|5Q0sk!%etC@c*#KC%d9YhvfXo~>$J#rowLq^qHVyozO)XE4kgzbtYj1Lstw(9 zXI$K+HgxT`@l}CTes$tVzSmv8kEJ?7Epx!l>V7wXniJEgc^&?kFh`+s&~t*&b8-%P zPDrEY`rhanNe}>+F$RF18{GnONl3?2w!&;rv+s*~wdMTw5tKF!K_?4Ad13$_wK;>K zbvOpJ^WmKnVY)|p6M7-Sen{#?zj61)X%P^{6axE z1r9L)gzn5HK>usY-4EKd1GPQC9Qq#-mlL^n$1Bx+JcP zcJOo~^12pd+qxo~g~`B!Y?vF}B?d!1$#%wqPSlizw_!PfIB0Qg$JOln6)?5d^Z%i5?St&w&ITt~>*RxWVR7o)L$ly@Rn{@lA*hQ%2B`zN!Z^N@T z5=7a_rS6XNM$nkEjumTXddLM*3fRDNcUPRdR|*YTm|j_}4V>I<0||_0)cyvlxu`ph z=4uG9%BVCKOz+v$boVX4sp&bWNJd~_VS+CUOz?N*qfoPhUU0-jI}>VtnID0qt_<)w zOtw?`B|}e4QRRVVCEp>>(@Wa!(*-j(b-1HAfB1pW|dE z(+#jGtG?R*rrTtq3Fx;?rt@gJ&5mSoCnFhZBU$gpntS-^6WPk*F}@-yj~ zZ>XQ%OnN13y!*h!S-_!&nm9Suel*{z#f_uOs>;X7JJgPMXw9NC2r0!ogu5^B4&8Zq zcYFU&{@%;pf89j0_up`5*53c>H`Dh1FHMrY-@BE?OPN+Z$u~Hk(Z&t}NuK!K$ssDLksb}lm)6TQe9Yl6-qS(@|pINf$W?es%>jZIu z>*pTYiJ9vMo$7)Hnk;nhQNY(MkQ?3F;ZooOU(ffMn{eF_HE` zoCxpjhTkW2$8Yh#0KYvhh2Kp!8vLQ)_m9sNe(w-M-e|Zzfvsx=x1+l&qG{aj_f%hS zFBtaWK0wHShMG@`D|((c-UA3BDgoHfYZ4n zi;QmAeNU!3x2Dl#z5C1CywDNg$e{I-19EU=es>(oGEtpAj# z^{U03PO2&|7mjp*BW+4REgT^ND!`E|XLQGrrq_Gn$ixYTBeCWzj{NBxX&jkUZ8$QA zg-)liR&9G0ZhH!3 zRm27=Oo|NDehje^hE7(_C)e-neW`8RmkTncA&SN z!;PCeH(EKhp^?1u1)oi&@VyQoJLbFrSNO&`mC-Y%uk67A{>*;3qo|9T{KQmb?}TzAYVJyVl&`&`eVww}K_Q)5ZL-D6!Y zvvv7=AL|lHugkj=GwX74dR^*iQ|oeAS_vQOE1QE;YdsRb`#z?9FTgLp^Q7k5eE}Z* zv;`=9ci#(O`5y&QIr$$kfkXuYL|l^yI!1{uQNefJq9=-QD<=m;Pd^L&j6~iu=8u0n z@ry-**u*cy0qqbhIYPf-46ly&d40dH3cv2qt;};{g5&(>{ru;;MKkx>pFc~%)o&~0z_->|s^Z)ifT%=X{$x;vtG4@YTBaaMh#j~AC6OHi~1~Ow+Z5W(bU6#aiS{f z?eDhYb0ajfB<7t{SnZMCiqzoixo6oP$YRZ{@vYUAlel9mpEti8^A2x3i&~9iH~ZBR zdsnWBC2KJnt#l8cy^e`&;hg^#T=_qlNWk?|zgn8=x<2AGV|N-B6V_ zZUl}%++n#cfM;(Pb2xl_Yv}R%>6&EI>o&Nlyc>rqv|GAN=E*%2=vTEdR#IWG;M@S*b6sL!O*RR_9dv)cuP}3?N zg}qfs8&8ogAZ+VDUh6_2MRWV^NMFt69o9-t5 zOAsW1yjybM%X(I9lvJ27BMT z|Mg%8<_z|wUw0eqdVVfRP1vjAfjIUWa2i%gY>9S`mvpT(SHH%oXI?y0swV73_y4{8NDWq627)?5~Y8IDte0h6RiB;zRvlS5i3)tcWb)gEcCB z5*#{O$!Ai%lhYQd(Y+l(qiZs6+~+s^>naNmCZd7T&H0g&-e!qZE-Mk=(H0R_<+b@$ z*n(sp5I>F7?f={lE$50D$CqitC4NdaE$sSLBzdXE#LeGTk>_>73l?8T(ZoiGICDd2RZw*(r&E09$E>)^A98kLhTa}#2+wzMTTNlkLV%CpdFQIezXKHP9=*U2XT*42-TQe!M{i^xWn7a99;HHBH!M7e&e zAW(x|7{{G5jWC*wEYpqB@RRyUo{yuwX}hrvvVOl2muFnH%iPErM4=HphD~u|VU725 zkz6VR!zyzuFfg7fH{mx*&Q)90-JC?Gx=59o7Kud0jJ%dAXq$My1bA5Mez|&>1X6Z{ zCH*xMbQ>Q{Z^82#WbZBbEw^*ePna3LXs*8fCf{baLuz=s>5KJvcF=U=ZM~XpygbJ~ zpzS?cAB1z;>mmcq%Z(Fye|oe=lRdBHkLT~0AY8xP@3G$Pb{$(J1tzCK!ORe!4VAM(Pzxtt#`6P%wX za24^YFmz8SKbOGYXyrE>Aa8Pg%`59Vke@U8iG*vP&l{)nKh1k=Zzhu#p4c=rI=2%Q zPtHD8&wY5J&^H24cmeO&E~sF*X>CDuP9UBe^e?}J)grZnH56#fSgg~|?xZK_-Ca+< zS+(pYoF#`h7pLpO`?ksU`u#QfGY1b2+a|lK;0^4RzmWODH@XC##lDoipebK7MPA2B z>;<|4Hn#`ngP0`nXDIp~x*utRwBzN{c&hxJdBXPM})Q_rY^7F+(?92Im$t0Eeacrk1iZp(XO*>uHMo8|Ikvz=`a!}w>4Lovh z&J#fy)pa4>WkdrN5mS}|SM+ZcVr&dA;#gH)Gw5X5vAi%hx;qJwzEl;cv|%P(?Nvi9}d!DF)rV(x~V7au8jn*{y_EM(XajpO1h!*E_zn_tS}}rIQJz$ zdU3FkO6t{S+4d)ubMlawfpL#E)77FB*(_X)1WD~OaUDY9*fa#&p6@x0 zW`_O905~T*Lf<*$yTP-cRdNTDK}j0Z6Q*nN;F#e?xmNFVul?HwKc9-;K<1r^`g__U z5Bk6f{jbG88i8 z!-HjcaF^RgnbW|pyy_F`z+4>=>N98plQqTGI{yga>Yb#TD5P}i&vQ+D^^@y`n>Mgi zmK|`FpB>Q3r-xcTYcB4UA@lLbUjXzHd~S|4c|q>KLJ|R?iF=@yC?IG7rCn<@{>@DFb5ep z6=X%rb0`q_A3hu`zZFv4XX>G#{=Jic`XN79 zno=QSgrI4oWWjlx1lqu+-rniAT=cYFeDeV_xiP>69flqrSO6jFb$sR08)b?Gr;Afl zIK2|=-9+wI;U!R3Uy;v!XSv>oJoQP!lq8+`V#KYr0pw{HP`&2+mY4X#zUsRnW?hp` z&Nzb|KR!NPMwU1-+0;_lr%7(}v!awbxbZx7(0F2yc4&;mDW!AdZ&hBrgg@kWVl64y zC-$|Jw5(~)VIVA$$ie7G9THoxfg8ajR%-~7cc1E>3-^T zbkHfXTIMXC`V%QDl>UJd(m1*#9e)WXV>L!b+u@O(YtM4{Ne<&VP=@XyF*FfB3iFy9 zL>CV?;H-RQ4$F5ivDy^Jp5hfCzI3>w`8>7K+f8s_6 zNZG^QosJEOJm&LV-*acF^mY*aPDw$P4X;OGy#al^ei?sTtG$17>A2j%@qa3DbF~eW zTR_e0aJ z`+(A)f4wOE8KXO8LjcE}I}7|09yTiSDPn?~>8G>ng3T z8e~42Eo*BFaUVGsSoGSQ1-L^cq5Zu$HT|sdk6^jvk7@9h^R&M=dNooGj%n z{&zbY53&P#gAGDzH@PdgFTn2QQcj0L2;I8JJ6WD!Og?FdevC1bZzk+H^3BwE=a)1+ zjRo>q@2ST8u-CsbjF^2Wz{IUk^Es&Lu`AChAa7^r&Qth-UFyceA4qv$zx}UoT#-lC z&lF93eRQj}sR$F8&<1y0ab8~M0lc1lHYny@%;OENSkK-;aL7K(eD^*Ddpe)%`7V zU5o3kmblhn$&MLJ<6C$sjC&$<`#P@FElPHoOWu$zJD?u*ebxAvMR)L$LIeqOS;{zT zNZ6+FD(Cw;{+bal@%7QZ=L7+r@ZXT)F{v)QqH^P$xfCI83yrD*95&iHJe*q_+*YWN z;;R?Ny!s3|7PBq%Che}66qxg)?wSYXX8g)%1V17@1`}mu#i2fvnzUEtqt_Hxejp|_ zZuUa}h=x$j^q2A%(Y-q1U#3*CXZ4aU_e`6|MYe&KTnwfw%9#v~#ymocYbGA+}7crt*W?f78c`pWp3z3nfA8{N(Q8-ah52tD|Bd0l z^n3byNsr&;%aWH($@ONDFY6JZI{C7SV~H=7#1eB#@!66{dW#kMd)K%jw;hmi(YOih>L#1yYecv=HcHGQ=>cb-(DmFGU$vZX z8_hNbeKs9W4<;9?zug(jO>Y{?c`0|wRpLkVt(MKImev#1#vp4W%hD{^pr>xA2-bgo zQO($B(;AsTh$!1)MEw%iZU-NC^paHd?XUS35}%@U9+E2L9cHAVeNSz|ZIk2TS_xS_~28Cy2+cPF%IU zCUMm}ZINBtXD&I^YsCb%+ddcg3C|CxuDEJD+x&!yZD*HH8^bQ2|1Dp3w_W}| zcowL@zb64c0dXxY+@hC3G#zS-j0k!eMK9>_kwJoqy)BtKt_F~1R7!h zO?Hc78VPhGb~QgWu`u*_d?BFF&d3O7nYLX}&~K{=0c^{9H+-QsC0c@DP9(!jNb^Mg zmXfUc23C(;`Kvx4T*Twxt#E$OJ$1AjbbP7K`8rzn^VogPYFhQTc@HH)~#9 zr-!}goxHf+@S?Ad54Vn=?`lEMV&qqCwQ?Aj*a@2&4C?`03%O4WFFS>qx-L8ExXCOK zHxibTd3V{VTA1Jq3big%$x`>noY$-D^)%wZTQaY^@7Qa-5l39;=F0=bIT*z8#U?`@ z7H)<;N=^g1ioP`(ApQAWa+nY^lnD?OVq_g589#`RP2?Ap{ND#YE#))tDJbP~|7geW zTIJy1QR68VJnHqcqpTREFnERKJy!LWNE?5*@^^d0ZoR|hE`Y4VO>l-L&58u&#&VOC z*Sq8FcH=_d9=04<>=69L|0-A{-rbB|x-;j_gYuq~yc=Eyet<&Np$JFz7SQQeWE^Vu zzAfgbSEF{&GDFT{-Za37*CWGgnS1s88CQ4%Hi;-aK>!-l^T}9=c4#G~Qtv z2i<${-S}1$Z`Zq%KfQ%EcbVV9@*ay<{<3dxBA->D2y{n*1Z_c?kGWIR?x3lY%efGCTq#|lv?g+X(S6yCZT?T&LUh0f(-)r^i zk<;99EHrHf&IheqV3OtE0ORf^S~=)TUP^wx!TxdaVcMiL&L zhoYpEV<<{eEVsMs^-xRDlNhwQss1Ald?}Ghpo(sGr*j*z4vHWg#x=T>Kl`Kzeb|E< zq;JBSw|F0dMYrtBL=tIUNB%3xOuI|grSJzQZ!(h!IzOH<)8^XU17}FxmFaqz(q_!G zI4o>6?(T+cAlAKu0&}r%#CdWQ8}gU0iLfyZl2J;2nH6}!y7>$6fAut5b?X3x9^SvCu6GsOV-Hs~xP%^v`n5gSJv~J!dL>VN` z>b%ns5T)K9rMlkmcYmN)`Y4+o=Ec;#{JU)eo5ovwDsQm;L;u#5 zIm|@s(DfHFlX_Z1aAD?-NEIe>+_u9M9{VW8Ahrm)okF zlhJR)dO8i^(%jYt_8A_fx$PPrGeG0E_}UcK+U^PocjzYS^{|s0xgO5|XI`3hTYm$79yOqz$!F z5D=UOACH#@1n2G7{AG#wc+8AD+|6>(<>0Z;df6dxxxU*opY_hlvfkIbKG(YtUmBCc zLvuOrghRls87pHJRbcVP4LuH&FIHnV?4&wPd+ z-)jD3Y~JjylTTKml@dME!Zg;c>~cr%vgI}={Pk_(8}Y4Sqr*y}TE9G;#$uLp-)y)) z{lIB=!f68!DHOnG!rQ0Wqu$oaHn+ilgo`JK0&I4_<2LCgKAj6|N`?M;1#DEM-c*(Rd)J~Pl0W4!3f>~EW&UMj7o_G87}KiLc|xw zD-g|Ru^@AYJJfDBHg;pN9qx-3=o#m8vwg=od*5E2oV0(KD)4xGOWXxX+jNS`7Q1^Y zBxPjQVIL&vhzkK+6abUYI&U`&!|)$?4iLCBocn`OUgYB?4AVv#N5t0PE4dx>PGe&5 z$N07$gZ^cQkp>2BaB71NFWcW>H5m5&=19%R0IU-Y$r+3G8F;&cH)q?MnMp|o9G2E8 zn5_jO{n*Bf9^=Yu`pbp#1u)0m) zWiPw#qsq1Ju+NQd*eiaZBBFXu!aY!On|t*9gZwoYON}oxnHbpzxy$z)^u)JTH;*s+ z6nb~KOZ7+*m_57$)!fIU^rE&Kn8Kdu|Tb*rixn6?z&KdU5~n2-44 zTQdKJJ1(P+o8d>Q6_6C-uUUQg3+_cypxJh}zp<1?mHGu{bc)RVWQ(9VeuAC{x84Z& zv7!C-AV{QDgM zRMIEk72P!y4)VXZ<#LeT9P1rdR;TTXZ%0vVvmw=@lYY{W!0;?hIJ%}NVU`Sa7R(juvtPc!_7W+`U)qQh{vV2^{jzQu`UKn0>JWB(8 zgMOE|Id+)RcR@aJ@_$0#!n9`wjwk#*WV37!pL{{P-FSKq0Q}g$HOA=_^C+6CTmM{?VzkW1+k zr38!noT`|2YgCr^;7EBddm;2Gdx|NoY*#Jz&F)gRsbK_tGBKdjoD^j7F{{A8E>?)? z4hg$Y%#_MdRZ>D zaUP13i*%8k_A#w-7Sme#nzf{$`eJw6=Y%-B&4f{IZWtUt(vhJDa=&;ZYeF+fBwf|t z95147-(LhdkrzfkzOfLlreXSbaKlY^zyH1@Ovm|sj%e>kH)ZaL_Mv%Uj@HU4OI8tz zoLT!Y^#F9jWVTj@Je{!jSb_H#u*|4;bcf1~f3-!2d@ap}m`2UmmW%Is%~ zFMmzljd*Wy8K}Ev)m`qMeO4IBVL2mUreXRDWQTi#M+8ckJy!}S6hn3DWL%crr^Edi z?MzrHDtNk>KvuZKYhYO=y2)ZP+dmc4BGpS>^ws9Hc~=ci%W1Il1T~l;K|*oZL)!8e z#5-(vv#mX;^SRL<$iF}m;U5=p{8Fb<0yP{KjMuuah{$7Ur#5j~=i97<4a_&jYg7x- z^|eHQ^J#o~d1eN;SNdPDC>`#7^V<0iB5!(OqW&64H6OIQmvWv|d$S6|m4BOio%dXL z>RZDiz|V?ZFZlJ z3WpSL)Zx`%qy3=EIWw!rzNZei`ZguBkx05nE`uI{ofllJTc?xN>DApj?ICDubKjh# zJ{9e>9OJL=j1_Qvl zpb)=-FBM8L>(xS+ct!*&qXHkSP4`t`gI(EnObvcpoTV0n^8(-COlpqWUGCo#P4@0f z4c_KI>TQeO>{k1adgR6ZC3inX3pW3~@|XDau5?sE{(EXyeF-1_99YH<6^$~9cl^3o zVsfk8_x#-yxb8Q}b+09O&2*RRM@Nx$&Xma*3XU_CO`1Q}$6&~_eqO7eJ}*JPHWyPG zsXo39){da0#HPODcj+@)SQ?|%I=oKdWyJO{sX$3vV185Ef@jI+W8TXxLD-rl*X?m= z`hkdKw8MQiKfq`6EpIoDU>|H7uqm?*iuRbpo9I9&IOK44D4L+Qc$NiZBMXx%TjC_?%5WdAF`w=P)H$+rOC=kEkxF=AZ^Nz^{$^y z0E-nun(cCZ_UqYH?dQcuLr6GTQJ-PZwKM!Y6#b zxK;gp(hEC2?S)bix(DFS=Lizglz1Hu%dI%8$$0Sqjse=F_O!(Y7(ua7N5Tcji%|6z7iZ;wTOd@(3& zfUH-gja4@AC|qa>tS5b}oXba|-XYNC)(p4Nk^2oC$UzvZ-Qu3oRm6Lr0#L=d=NZLg z{Ui8_9}CXcHx3~Q^kMvWApaG1b?W3`*Xv|c=^D&GskL1L^oLv!J3>v*5D6fHbp(4* zLs=eg1BSbv=k-Ts&g&QHy#Da6!PPpje~21Rt!Ua)Ja2f{bEJtT#JZRh`D?q5vNQW5 zW9c*do87xR9!lwKE$3tWWBbpniOdA8A~Su9Q?hm~+R7%*@@q8me@GS>%ji(<=JRL? zGSXTODnT_%+)=BPDD$dK(7}RV^&{jfS-V*8C{|U^^LeiC-yja-q;)YWo{xW);-;K( zhy5;ND`sgcnn{J$fk!}FGF=%26#2$@6wz%mu~vTOF3RQTB#WMVMUUpgp;vv`7t6s; zPK^IkFrJ)O81>HdcxuM|4%g5qxSPm&SXO=X18#T|OC{=u9-laRarJ2GZ!LHvFMeFp zf~8g|*rL1+C)lg19|j8O{y1b26sw|>)oI7w)W{m1dwZmAmwf*iMZnxJlliuMm02;2 z0u4jQ_33+@1f~h!w(|l;^lugFt76x)B;?qb+RHxcq6BgP|!%`=ydm1EKCsm zETb8w5bob&3dM7@o;kx$&E_cT;_F9Ws4>^s9tH^4pdT~SyR0AcY4M$YYS9+ewz9+h zi57IHN=q_J>-1CZ*zhBZRM+jo#gS$`n{GJR4lpk1yoMRm+C$cwG9q-ixV4irv@ddl zgyS={$N%BzruG`$s9vKh`lQi~v(c?Ha3)D`x25oxAehK*_nr5wwZF#|F^cd;ixA8sw?0`yxq_5|pcxU&y{ z-i^K>fL2Tt0KMtsV0-}d|5!UY0R3%l^Z;l^R}E(MjcZNTSnklK_8QvRpER^9G&G@J z1LW@%T61;RnoZwV1$6EPUP2Cp7f(k>&Ij7X8Oi6+=_L6=M|Lb4m`5&TxCAc9>d}M4 z6_nzbJt=uc9tG}JyqfQBymt)q-VxzpVQj@V@}^VD1V7g1oyP(jgGa~cy_g!qjr&W& z8Q^}&`>JUYM)V+?Mh#zi1*668B&bsQ`Vha`hZpA%#m>f)y@*4yqnXpGnre?bnWgGz9v&Abc712#X&kZV<1v|!o7p67lfFM%--mmCU##zO zcW7ydAG=QQyWV|xPd2H+Klk$8eteha3q^m`on6;RL%V;pgcbsHB+H}?aJ}>6Ni#Bd zH&MqMu>V`crjNI(Z*{(}u-F})8UyojXON>{r!+`xT;v}pvSfq94?fdRA6VuJ-#=C~S!=!iRsg6Lc(A#QY!e-}V$n2Su%Xj{0~ExJGmO`osI>Nlm{O^jtv z{!W4;l7r_0e+BNH?~Gv$n5JXHk3*U-W?!aaLm>%wO#(y3O}lFnpQ95t1QCS>$U_)S zt&hLxTjdFfg#)*`&5S}^NcEllF(+Ll)RvMKiTUm55*<^|?B<;ZJ^fqO8 ze_Q>c-FCCfmb=@U-9gMjQ6al%S!!+NLv+#FHQY4*-|u-l; zWx+Ros5H|k$qkiaXeB2tD$VIE=Q3NpEMmcMNtP!}9npGKW*@?3$c(Q$5_N?~v#%EJ z&HcS$xT*_bT&GRx#!6vp7#f}1;tk(L_eVX$M(J^b-fpmO%arHF!kW!2v+EQYx89bn zvC;I8nXVU#RQ72jH&*90=5e8l^g=}|JUz{l(T{o$k zhwVq|?aRgm0mIAw$DOz)0iO@;dX33g^EFuW zWUhJO3=aYX;`b@Rn^FlQw)PUn8sAn)zmF5g_Dgw~l{)7x@{3|1 zQ%0FZIR$seN1U1o2&Y}}8Ki#@`Gsx)b;l@SFnZ_1L%_uvEnWS_H?c=@4)Oj|$*@(O2~jS<^%LY_E=AgDW#Vw>MW2!ohFIX;`UF{fGhN z@DdxEBb;@J5*{t3h9M7*BQv$}j8@v=*`A1<)e@*f4T{F5WRBm01B@CYa!UBi)g>N$ zhcAu}NNU;avo?X48-ZsuZX=RTqq zf?Rj1Dc2ow3N;d=xjq$STWDPEWFXR(b>dq{_QY5T4?^&RhQsqDr^`U-M{Iz%`7=aT zITKvR4zL@Y{*=Am!u5{&rG#&=2r_(Z)wO6BY(u3dd{dSv(QW?3E>MUVk9VGvP{)`A zw!Xh=2{Xa0hQOXJ=mvnC zyl@w}jH>iNsRZne zCb3ZL|KoinJAoD&|K7Ocr}1yo$Gz}x(2}3SKhxeZ+j!sDW32I9v!+~KfPSFzn+T5F zLzl|oX)8$O#}>f+!(M~mvx zvApf=Ph3XQ_Z?$8T&IF|x*H*+T^w;gl8Ir!RH`xJUW#w#Giv{mnEbmqd=r9t5cz8t z`;9Z;{bfcf<>B;uhsWOag^(h+5#Y(y)9g-}QVan)Vj$v95FE`6IM_ifz)P~aPIaM7 zabfd~P&~~T>Y|gnaB7*?n7P{1H4G#{VnZQVh(w=3@&*seB)dYT4Cb4B!^NQFaxsa|91TlGnI(Lw4Au=eYp${IxOK4Y>sO z{}{dh+{(oL54@bX_wOBjpnI?5lOVh~I0;%xbY2614KBz6=eiF70G1q#FE|g6kx9`( z-uNDnc_(Q-r3%zFVM5UV;je;UDlL&2f7G}Q&miLtf)dUV*O+FX@%u)$8Xj8bZT=+H zp90grp&@vC1>uLC?FYWXjn%)PpJ5zb#k^itS;iWI1V91YK4gq@cI zQvn9pKY@giNnC!25T0!~9Lx9kgegN7MYk(`CcTnVieJz;ky?jU)8c~_-<-w)o-NU)O6L_g;mEmoDQ~#10a79 zIIH|DM%QRVbd8p}GqWVR2FwjRw6DgrA0E*%x?KMDsAKCW#G^<(^Lp@h*b1e#af{Qs zvME)AKn*KC`$Q|cM(1{j$9$m$i4o^b7c9$1Y2_MyUcnJ)KJ@xVOLdBlw(dc+bt?M# zPTPDBc9=Knbo`oQX)$oR8Fo}^#RsWDfC{Wp1_H3_;OoCa1+aSHmDfn=XfR@m4CX!$ zVF;qxQ6vCw9p!t&Mc`qFHn}8P_|!5UyJnD@Z*$O&1gSY*W`TvBx=IXA*ia4{vWK^y zfCn&Krz(Qa4y*>`n%qHx4P=^81+xh+(RX_m-*2Ri+mr|`I<{clO@osh^&4d6yy>d& zi+E_cWzK;^%T$&%p`}RbVN$>EJZNay)Ey5k-`DnnmX|*gXnF1E7_^)^)`FH-wo;fH zx-k)2gv-Qx+L45o>dOuiQe0yMQn0=G``KPV%Esy==?`R>8iLaH4LlEwXmkUQBdp)P zs*W2Nw|$BJb*hMG6&6?1it=6q&UL=P70v}?Poue6^+Tw5M?JlWLN$Igu%_Uh)6rAL z%B<6v(qA31~F}%Lra7}ipyOqpkyFToxqxLp^p1nC4h#Vi2OU7-RVfjDF`#oDAQKhpG1PQ zM#}2m!>~;BZhA~R5Kf2?X}UbUdIk};RHCWTmle6kAF0EhxR-+E@9@ zS76%I?`gQv_JyBZfz9^m$h;gRZZ2Xb3Iz>sh92=hgpO*|?}M1Sj<);-*-vZ{`cd~S zSxV^zf2xPxeGL5f)H0^u!t{a(If0Sl7fCEBFo1VnHwUmzjl}@`Mrsac%bBccjgIXw zWLf^&U{wNz9f*xyhCd$7Wtbqf(3Kj4K7&7`2CBr@^kBc?Kz}BPl%AgmB7MaP?|oLD zBYm81ZUYWcOW<*wWSr6YAQm7vC;j`NKRq@01LG^Tz=sqY!Uhk<5k^>PAR6J?!rcMm zNa})b zY(}AXLz^iqzX<&Z6r75o$d_Dvu|VTi^xVe|{psBQyB&ITq?}QDhaB~lI62H+ax`3w zAL>>qa7O2sa+HV(rHvW7B)$t+t~Cy-kYdFZ|_C#t7>Tvxd|MfA>fZk59-hs_d+G zoIJtwgzmviVc)ESf6IA`a8?QD?agxDI_hr%FyoZPJ$hL4IyrYI4L&VN{b?IcTLQT_ zb)l^+K->vB>oM*o+XhInqNSgRQxWdXB;u*XgTwF)6wtHx#5NuqG~^sR8zQE5^_5_* zJ~u#5uixw9$)U-V#~2Fj(+1V~1kb|ZrjPcc5v>JR8u$}SQ@Ag5r9;A(3Sq#?-Ohf= zfg+D)*L>j0^MR^rosWP=#AL@3J5bx%+M)!3=$>{YAztvezqR#`-v_7qCdKH}p;)uhOI(tZKabQ#5+^|J2 zW|0m{Y2!2YcW4LDMEs$xTli_#{~XpbPwm+1@9*3mETv=T_C4(;I>7P&Lh=&ksysC% zaaA1k$6$8mflcRs_5-^=v#bOAVxRG*+03~)LS7p_N6Yq8Jo59Wcx14q%+Ii@b&CJV zZ_I;o!ktA(NOdfC0(PhBuf!OySniNVjD4f^!T7TS0ioJyOsywx9FtWM%{@6(1L2w3|LqBfp3 zuM^ueZMHDZB+kT@*XTBzbnE^PP2z0uiwVWs)<4$Mc{7LsM$r$hi2;iF(Rrk+3O-Xc zI=WzI1Mr4_Ei`6L=KjU8$t*!LiSu|t@JzTgU*Xw5Nz*tQ+$*48knmu@z88l>3&A_9 zCQ+biWpo+wpQ1=-3h<*Wf>gWcxHX+I*c#BC>e)ME+s(U=l zBi2xSEIuCezJ`P^Q!~b4k+F<$?g-7RtoU&C_&RVs(NN_9Kz)B~M7qa#SAG5uSvgcG zQ#Z#IWB;~@=Ie)XrqW68WmqPeX9FY20evUHuv-m;_zxv^Kngr>W|B_U9! zma89qy#ih8n8Xs~Qj7B;*avR{RkkVEhm&910*m~+FZ&p*@YUuD<3X{x!teK9;jW=v z;a5lxtmVZkH#`Lha#Q#pC4JfIJ80|}PlWz6C&HjvO>E=xCaRtuVRI2ax&UZO2<7UL zdR>Ou*9E)qo=TDysKdh?!O_Y+FZ$L%&oUbS7XBZ37cH~S#uexRXQP%O7!#wR+yg1e zE(Ae$T0zj~z`({90KJ3((5Kh}plcB{&XNrtylg}SmL^xQ$r=3QoZ|5-i$jpj+5@1s zt97tnCt6d|3sQyRh%R&e!^CjIJqSl&Glkj`{(OoD;m>`>0vJ#f(*hc|UC5b0lRywl zFlTwpKXMZldOPKK=9R@0J@*QCBF4*>u2F^`&Eg7S41$jY+&|wV5UcZ_Cj@UME0_YC zycnG0X+so%P0wiQLr^yK822-Jt40NGIpKj78u8scrnl=NATN>dXXHunrBa4w7jc5DrZ_2wFI{<<9JFVi+}vxPG9 zpP`k}sO`e$C7Sys%2z5xj%kN!{U8daV#UVQQJ{7-yorIR*=|m*C=1f=3XjpC89Br> zfURa1j>C$*Zu-Zi^{L<32bF9wkuYrXd(jmJqbzBv&cj8P@3tsbu}HhpfdsP(w+gJp zVqmcirm08X`+{xoyKdulf>cUz2x9&QrlP*Lr`^#oAIDg6@?4;1iG`Y1!(I^TAv<~& z5j`i{(6dN1L_p8B-stH@B)vHFT(4>m(dc;zdXDvU{r^CNlaJpTLD8ll=wu=&askFb0I9?lvjgeme08B7Si&3uq~;taV={4oJ-J*R z+s9-)q~9``&g0N+Y$S`|E}?UXjHFE&!eHBCuUA1gWP3!2pXMXNU$dlsLy`^+i^+OLm*FQkjPm!hisiI6bruvx-F?m$=^ZlXdSyVr`Q=L~K3wPerLeAJy zE?SDJ3Vy)ci0gu=rpmx{Cc(ok%AfUt+f9N|X$7yva9b3F?~m`n;Z%=YqO6JE9|M02 zYJlIH@x_^ci-q4Oc4+)gwc&RJ!U@;jIQ;%)Jbv>GH1V7MsEFSXlcG1gz6E~wUrYSn zNqRX?aJvXw2hZMyr@O#o;r6dxec?7?SmU;dkY79M&!D_UbGwfE6Y#@C$kF&}M@ZTm zJ6`m|zTjP8%&|RiB+yo!0Yp%reGe4a8AC=@o%K>r=QayX+SEH=p#WV55p}PeL}<6+ zNKHJB;HQZrXR)M-Bd1C&;K-s4aX13QeCHzA5jpeoi6ia6kx1Q{Fu{V0l}HpvT0V-$ zk$+y=3rGIEQgGy{lo*bTI?Te6CtCzZ=3}9E8{9zA^myWQqxw{eiFK!@o3b}edQ*&> z_l8Tc0;wx|CSk^j=#h=$QMfHyrQx=T+a814M25_XD9$t$#QSI+O^-G#lld+{{rYuY zaQeEom7YV$m})20F|J9jZm@8L$=&QrE^Yx2p3M7MJ_Y!BH{9SUoK{g?WlT&xR!o7@ z3MOXVn1;Xzftm0Mm+e}ftgeb!hfnon4=%OX0`=}|7)#+tKf`-Y^^h?c%lhERS?^KQ zLlDMu-Q#vUUYwi?s2kF=CIFHnUVYl{O=gJ32?#QmgiyvhanjBnRv8`qk@9o6U0LHs zysoYBYT+bo0o`Yp9`&pOSvMv|)u`X_FU8b#$uFC{# zU0!=tuggg565dzH%Kb0EVZ&bHT;mtush?Yb%BuY@fbBgx_!KqkGV4A1@$w!$6OYid zBF=0OGhE5aazkZ#_<*U1(@cTcfd`~|O*P8ng*wVl%Zj+n^3!rd(@=g|e#B*#pN8^_ z8rj&vRoQv)RoLS}_Okfkt872`DtTDwgBsXRJ&~sv(e&4dTW{26*+UdAqs*z?OaF}! z$nR3wr)AI#CoT7lv#^;6`*2Ck_^(3G)p2b@&+*zN(kl2GyGx8&c1|EMPJ8Od(~ zCPnkJFm2VL^B>pwOhPlfig-e=H|k$Y^)Cv@khenrYSO=W+Y(>#Gbv2ra3N6<#|<`# zQ4Btt2%oQ2MBy`3mI_}92LhkuKdO%pO-nsM_*}*XIk+n6oXf#gsW|v5vVI5GOQr>E z2R{AEgRSz@@M+n*LL~$e0Xtb}RGKq!c&WVQ@JofLpgaUFzZT!cb`@uM&~7ga__p84 zOu1SfSPRiPwPLei%w@UOW*=xjT@68la0HMI6|Rc>V+dRh&4V!hQ-A16C;mM6S%%MY zd{*GE65p#(9Bu~c^))ekzkI4&=yt&yzIzG!Q5)da20tF+MG_(dU+B_wye7+x48UGO z0(B*>&7>6Yz1T zUbt^B2iFFPUwGKey&xb+ZbGYSizIhYNSkY#LV|9&p-<~4E<@L=3+W`5qC%}uL$oR& zu!K*TS`m}^{qx7cxQ)yPd3)6C{ZxDJ)zVEjdjIiRTko^1-eG_j>)rJdKpx8y;cemr zxMhv+-eYxN7VG|U-Mz=F&2~hniM4T(2t;Kj04S$gdm00;PmK$_j+erCd+wyH$yk8q zbx72{>)+95{a;1vgXQg8RV)0BJ|A4#qfxwFeL2sF3Z4;_+H0=SFO&?1Cgg&?b6Pr% zh7&xYs{!EGXGRzv99w=J0Q{_{nr0>W3qAp)n73VBho6A(3v%~U^*UWO zmt`mFs`+Ns@lurx{7mW(h#_HjS|IGu)+RFawfA$WR5^`1n&{)FM=!ihNzq-*Zu>|!93oO9{ zF4o3$DPdk*vVJM&tRaW!K>1-9mQ+)ZYK|UN8>e@1=Z=$2Z$iEN+lUp7c%#ZTfFIxb z!V}YFlek0NDC4vv-ypq#&!i3Nn^W{|U;_X zwL*%Cg&8&Pc%$JYqYT&HL+QaC(=!3`ldxF9n*@Cz@V-XUg@D|i!r;guzGa2VHX)cn+HFfpVFAgh+2bE-t zu$(Yo$Lf^9Cy^|S`49YI#^SGsD_?>kD~UIvOMIhG$XEahiJjREAmTb1qds|+a5Hy- z_B42-Im(fK@v4#K598pGcfD;YUD6y4zkt!2lm>?g&up#-R>BAfX9<=w>~B}QZu?8m zVz}t|UJ?-2M~(Jk)tEv%Dn$2HhcUrxoDDnPhZsP$_U`1s;rQ`nQsA;+?PJM-S)ISb z=#idOdoEnh=vcVvmps9h^FOb){#^C~Zfxd~(O5uu2#AtpZP8)cK$}Xc z%er~~ob5HvIk?Fb&ax&mIB_zWeNE<>Q|*&EnUnDx7oE)dWeJm6_d~*D+Kx_`j0i1Y zsx{RXi|E1cIhk|32Bdp{?%brnk@(0?4&WwSyD%wm1%Blv2WEHP!QDYlQtf$!+icmD z%9+-b&c<-!_U9}Nr`P^$&a+SHqL(qHz_FOpXyRJ7+Vi}9PUu8^|DS|O?S}n&+zt)J zivl>FwWO8i9=)-f(>fCY3Ip>5>JEBp;ft-QU4~J`P3=+)s@K%^@g*af9*McU;3Z7$ z_c^ht9o=hcBNL}~RN~b70>01xEx-pX9*Hi1VeoueYoT!GSn_=r;DwcY8;S1w{B4Z- zc7-k}HjQnn1*zWf^k}KS<2R5DC}(6uP*i;~MiRKmM#evw(xFqPqqB@BnDB;~0F2ML zj|tBqfo@<)f_^g0NR)&n*aMg+3H+5E>IDWG->QMsZ5j?A0#0}l3=Y0NRd*(nOy8en z>4hKMaGK8;aN-A07vU!HH0*k8{9A9`(Nq5#3{GKm*ZBFT!o=c4(J}=RD%d5-#g{LpdV`OeL4IH4#k%AaHmZSoY}Lx)^} z{xH_h?HY`qmH6psAOnY_JV-Mg^?R^Aw2g2XuOJw+;A_!Mu0a8-If{AZ*w{3{OFkX-~PRQwV!cbto>xq0k)qNfB(j+r44&xmgV#( zA0Al1fkO^O$9B26KzPEF((&~qqVKg|@`du0TrQ!SEkD3dy*vn;QEW7+N4JhmGOo!i z4$lS5ZTFA)(sRvM<(`yl(*5}K;nQpE^A&zoeWf=%D^vU%7X6FD=d+3njt@AE{sl$d zfdZo>wV-Hk;8eU&#$vUp%Cod*Fn}8ls2REH0-byx*bO%0x#L%f5Sm^>?rf_!m?&`{}m}ikODsprfMbj z{wp4~%K+O2k4Iq}HXMmgk#NTW}!aJCB%TcLUzv)*$}Q@J;#6b*82c#ZB&p$*_3zURFe7pqJ| zW5D?Zrvxt62yniM06q%=uKbli;h9kcn4uF+gtQH9y{8_OcvB@FPpGskQkqKXMvNjl#!& zVotN(kHNA$97En1nA>>Qh>}mcSZ?bpdF6k}&uG;G{ z29u$^39c!Ut4}B{ICoIscyHlb0f-!7nSKF9sF)MZh1hA(+58Q?EHo2My@hRoR~_1( zDxHT@k@(u0AilOvrLV1%q?ND-Pd|D!RD*`_VlOZRt#u8@;RF--vaWyd5no!*WXs9b z0JZ?*(R4V2QEpV}ft^zPkZ=Mf+)w`s+;0Tv;C{Nvc0UEPR0ByZ10;%f?Oo)I=t3U8 z`)(w6^jiXDcv3b^4xyR691|zg3mkzM&mG|xSSf-#0tcnYMBp+$4KX}m&|n!HCUSIt z_=0R8I6A~}ixx_>GpdzBqn9Oj9)m{V?yNX87tZ77TCUvj6|UTIf`|RH!EXb;-d3Tx z+Vd<8b&B)n&UQ4A9R_O++KVtNPai?j#J5xH)Q>-Crh6Nx)VY5Fm71GHuKd9js6el) zTah2Fc#P0AR@|W66VW2fLGbm2>R20xv5m241H;^gvF(5ufP@oY!N`sJ=2^&y33AiX zVViOuEv?J<37TL|-^SK=xXjjJKMJ3#ycTeT%TQgljcDxoJJ~3Nf)_9Ozh~+{km^`2 z@s1j0>=)i8TgIVGITk7Ae$=6V+{H4nAGkr?0yINh^Qa6- z^lLHsnyh`UoIN;n^9eir;RI31=9`xa5pby)5rTO2KrJgsjSVRmU=n&719)PX41hE= zde-v%H|b}heLY5n!R>+^&p>?CJ#RqL1lB^Mu2<8-!@RgDLE;)nQ#(Ev)P04+EBt7F zHcZ{|76aDm%iB#E1mfu5yNuM*>WR)0tE>3>d3ee0% zv!G8&Hu{7cT@64}$Gd{4H5rd+aB*^SZE%Q2pXA|N1=A`e-lYgAi*ss1fhIUzXpOi# z^m+z1BUBqwRK&g0Oz92<>X5Q1;$Cc~EP>Y(q%4iNmzgOmK1wuFemz&)7}c>>^jni%mSX=j{4`2 z4dS*8=^$Kfsykn&(`X6ZNbA5DIE&W(!M#GXLjjmFVh@IhE`41*gcsmA#G=8Hh|Zy^ z%(p7rVGK*I4p|k@pz-aXQywA$UnL8-)oX>|*O~46n?!Wmu1>=x7XW#b4rFkI*#w%F zexxNG+#o!?5g_{clK|1=A)2&dt{Lw#VdvpGVLK95F=3mT(1e7)GhqW0Xd`<>EPfW? zaufN68ddfw6$#)yMpzLW@dgEY5noQFn!r5rC8%kIRzXe4Emy;J?x)p5*$B`DT2yn zuGC<6reonF0yo35mORp9-1*x@S6!CmNm<+TG2ii2_~G}*OV{kC&f-4E70rx(UgKQk znHe|7GU97I9wvX%M^j6NMw?p6w=!l!Z~YK0Z%_VUe4nM?E@U!*+djyn&yi`uzS}s& zYortxE}}36_EMZW!P?-=`&Az!4{;tvg5Q{wnK;!&M@D;$pV3q}^zeeW^Awhq2Y$)- zeOM-04Z#FxO);6(z|&-vb8J%5?#)Lv1)I`9eDdI^wy?|-ts~7!9R%kx>i`}hl!~h( z0U34mT5Jyg{&nSLNg0)wB^`&qbMRM=zu)2SQT)xrpH;4}PxC$|DwYZy#;y7`77KQQ z134SIb@A$(jBDCWgRpmkqXd)s=E|@l8=eay3 z<*FvM%UCZWcc4If|YxDb`inDg8X!JavGLBdj=-z&F7~ zr&@(Ff{StCO3Ku;NSA{VuIBWqcnuDo`IzP{x$!3>S0}+9JbZ1=G8_psgLRUTulIu7c?s6DyiA)?NB|d-jB+01(PdaiQb`mCf6=biO7WshCJ0mU z5{u&pNH_vcw84|;Vo>^Su(dU6AIv!AqV4YXgv4Jiva&%ApZEjF;Tsv6V4|Ch`pV%;Wu5Z;z~h>s8QRsE`uh@2J!)1kgFIBGs=J+X-EOaOI@I=;eKY}w zOPHfqPZnFI1cBe5#Z&^3x<^twOiKdyVmT8mRXz^(4a#vE8{CYUV4*sc^MS{r6KzzV zAl|emG)rMZjWX9=xWi!P?nca1i+`rKVqz~t9H8DEq-VMm2~RO$6%tSzXQf`arRrX^ z2i^BwX4OXZ7B1OrZ)vPOFzgvuvwDNs-ZCUy$b@PnAO=Vs0tOL_*R*KuwSc3BN;YfN&-6Vq9K;@{5VQjxSUR zl)!xqr|~YIF;<>s2ikFu*n~iYZ{Rb6Pq|_slqLgxj)=HNqdQzR0>@J!p?*O+EwR18 z%Oak+{PZJyH<&T15H_ex9O{_s8#?I?Chbe7X-wc7wDNt#-D5U508l@^k@hVmRQ-KJ zs1FWq?7?rCyYLp$rsm_fl~?M(Zutss$l^2ZDe3CT*+a~G52{YdQk!r?BUIB%qFJQg zEMiQ*QHs34BJjGBEh?VFF)=*+K~AQ+8m}lt_hi2J4nfNzW6D_k7ALkSpAkwNM7 z2EqWEF_O*7Crjncl$!CeI2nT8vDPB0|A)kwS#Ovl2((K>{cWT8l4<=xBA1A z(-B{58LuPit(WBzG6 z`Hoz2HFh)7c^8ts#xJ>HAlTFhm`Yzil+@UM*jmvOcT_&mu5N)&F-oed&n`g)b&Is3Q@;$hK2#D=z#osp9Yt*yvX2v8!-?!HMqyCs_F-;d^&l@WRo> z#dD(&`Th4<83D<0=%AVo28X(jA3)tlSyxwViB_zXirukJ`xx=%QV}a}!aCrbcQ(8y z0|ZRTRmFHlDF=ElC~H@_s0%3D4W}RoB?hM;U;);v!(|#0NemYPMgzUZX#$XICSAeG ze}JD@{7={d_5z>~&vF702-g7s(VZ*ef#@FsL|<7z^xDG!qRssYL|>GF6$8b^(yrNyiiKpJgN0w8?>K*DvnMcbIX zh39Vik(bbpJ^*Q*TEB^neiQ?wcZIlaQ1>TRP5>lA;bN)0k9dIdvP~`iE;d3&QZ$~+ z0=g81Q%{Fe*N5tJ8nNNUh5vR0|AsHRpTak9_?7F#uVHgJ1|8bsLH2@Nb~qXxdW|2c zgUmPH?K*?e5W7I-;%3>$KzF>yf$4#wj@$t^sK2siLlY|Re|`QUHTC+`y(%+Es-9%R zFya}WhM8DqB)2;V!Z@-wsNo2=9xHUZtnMx}$j}31m@3F10YB4ZoU0jD&xQ>1Jr+X1Tduas!g+4_D5&s6oD#3l6N&}G6)igA z72*&tfUR_sFI3YSS8V68@njo=_M{k*i)bQuS{irlr|HzG z@3K*$Qyz=R!O_qL)eXuKSGf;*^RIVUStulkT#Qz|dH{7-ux=uC3`)i5N!$xQNs<;w zMVtcWwt~oEo-rafJHuoJ684pKi%>V7$PwaCmT5%xA1+bLM|JSYKJQ}?kjkFY+AS(6 zrH0JXnkg_#{U4eIp9@m2#Fa>C*fNbiEMWQ@Tgm+bzJg(g=|8J}~cG3AjygaV%SS@#Z z57~BkT&0;Vu3P$)$H~02DZn)afY=%g5%RcK5%!#S_A2g{PP*ztom9r83Mn-MNgm@I zyU?z}6xvN*NOKMxxLE20pYb+Hv^T;z6IWGB)(k=s#1 zSONC65uo(T`vFScp2v8vnqG&5QB24;6SgB^5EG6!6Pl3l!+l5?&V>C+-|@kVP!nLKA*ND^_fLJAO-O z*1U#|0o;|FI!ggjh&PNo!lsCO8-4&^XYKHXZ^9<~7x4ZCu8IWb+2^$~>PZv{&H4tV zta}x{@?N#&-dRcJWz)P_jZKZ+q(-HHRz%$M*aM7$7Pxv^<+2m@JCtiQ@?N3gB?bmN z!5y@?t=$HTTTift7Pr9~7~Bq{{xB>yV^!!%4a|YXEi{W(;>Apyae|oKra4~}_N!-i zOTX$7!GG>!!}{VffyJio!#3`2Nv_V6K^PfFGqnJzn5whBr}}V?(VeoI9jfMyLz21% z0w&2;e0m3r3IV2iB%j}ddda9~-j|y&3EY>t_@WlTLt)Ks#_XH(a2@s;YmI5SA`bJy zI|>M-UO6>m0HJxHdDpv#LPp#h)i;tHJ7csPgJXzNRAgkSqc`wm8ofd`5V}+7Sr{FH zYE-8uG(e|Ik~tjeQ#~P1y4~jYae$3XAmSdN!KOUZ6ROJ6I#tM|zQFArmulYF+o5-5 zXZX4eo4<82b@kJ6BX3iG6AE3*rG*R)@9ps$?$UpBhp*@t^S6$Q&*Se6wD%Pc*XN6?S7w63Jf&-PZp%R9QUv8Lb#tL z+7W$Q&#)6)Cy>ZJDH6R6>hjUKuufnxjIC!_8gq@bqtT$des}f7FbT-iu@Bhn8*JA7 zV!;5XMvY0gc9CMAd$lbG&2u@MO)^vv#+u89SO?Y;I ztUQ4t>J2jigUq;(3C|&+ev6~N7>nTQiD;?GPcF`xXK`_MLR@z)8t@e$XoSmG5NNN) zlhMbbqdr>36#aSi9qePr1*aSEVbO*68ha#Z1#Jb?suC}k{NPu>N>$b z=Bt?}(N76a?P{FWr572b-;_tpx(lmTvnRH$J|&^AAu^{UHH9Y;cTonSRuel$o;$tl=%7vmSJC502~|Crl#Q#K)3SU{Uf^c8ntN8 zeWl09^Mz{=tdz_1B&p`_HfRA6rO6vq4OrioaGimMso3HE*y8cw+01y5sLnFyr-X4*u~=R> zeYuiC7gzWKIKseQys&`B{?7f3?{}zd8{Z~UT65*w_Hwgj)!`csQfzEU*psb>n1iG+ zpk1Zy>}$z4aLFIiOWv+NPCmdT_aq&_lD}3|mtAJsU??Y~)~MRLc5|q9J5p3sZC%?Ps;xuHqNv)sc1ftV5h+WfYU|pcR9kzEjlwCviwib6 z<#P#ZKdre2DS-cBvpfY7K=a{u#B<6sj?|no4V~?r^4Vtk$4Eyvm`$-*5;gG)EQ$7` zxt1>PU8mXN3gMI`>72K0%yXF}orENO0j(uJj4KD&1-W-X-QhRdUA(WtV0)Dg!KCKm z86nsb)}WTGf~%iPj@L=SW46!mdt!y1Qg}KF@x>671Y&dxhObE^ARRJ*6F=oj21a(l z7z+)`IAjRYs_Rv<;Xt}Z0O9sU0Ky->)5Nz93GGby!c5qXgx8tyzM0U3gugJMl?nUd zrfbxsH%);?FRfgq`lZh6LqlG!4rd-Y?IF~yQw0v<3v)cRXVqX_xmQuhY~!W(gC@Wa zU&xaUQAeiTvNOCi9R_M-ln5}926B2PuLPMhc#}?_ajGx$k0fN%wj;0@$LSJ;dkD>{ z!?#6vIZUfF+0hz!cI56yOGxO(4P!Ua0&n`LzLSmOjuw>A{{!{0DTM&8d5G1 z&SMlOLgVN&wnv4}P^#BJfyRyLCGlj;n=LD$e~_&)&@@`Auv+>UuN3TFta__8XqfS^ z)W>eZb!!s1hDPi{6+UYK4RzQQ^v$Q6^uX@qhVyX%^=jyp>Re;g?;FgsPVUcG4^VaU zGTo*=`ZrL8mVU)s?YxTE4|{r zBhd5h4j?oD%gJgUYvATC?(`dhbi|+o5ut=}HOm^^26VB(+GR2vxb&u0^8wfcVw%9`hnK9fy#b5rKDs$z-ZiBl zsOF79EZ@CfKc=4`E>$DY6jaXE6U3!zINCuCk)cE5yFm@p1LpY)UTG)Rwj-)g2)kQj zN6@QlIWxH~isU%}r<)K{#;xxPJXPcc3;=|^OI-cmOYTmrDGKQ$5vBZ_O%b+SW>o-% zAkAkXRz7S_&;k#tGF@PLH*AUyGHTcuA%%3;xG`Wt^sDw8yr5u(qkaANJ&vWBkOj6*Z42>ISyK#F@Oob zFcZp`r$s#ToUBraO{s5 zXh{LA6BPaaMarwQ;8>OFJ-kc7)CRoLoqs#AbXCBT*Y4g&xh8`xq>fuH~`euH%cPU+6C+=aGhT{EPpYz%v`!x%j}ZJbXkN^6@YJXMz)-FtDybOO+9K zl}?>ogBnT~*oluwLpT04Yw#0CVug7GH?ZUAp;$@zYmKnM8#?rn-G!>2a08pOs&Fu7 z75`G4ze{9YA;JBxLc(#~W7y^SqWv>8Mw3!|@h&!_LCAE;O16Q;#KL?Gf0P!X+DYl^ zVN_30RV5$*m>gA#`cyZd+6FaARC$)vq5`HGXPB&o*Z5!4b;+LtXJLxrCM>*qdGzr> z@D7r+Ty6rbq=n(eRR)RfJ)jy!{b$fsth)l^n8#Gc`A@`U^#R3>9(wVUzjEda5e&mV)2 z_D>oH~{4*i@=N(<7#j^KNCU|_H|D>;C;DWB6_f$pq46Z=Y!LLF@G zKU)dGXn8hX0o5vTqp)4OQRs%;Gg!M5_2Igs>qx89EYz2Hyi)&V)CU_StpOpf`A|0( zYN+AP8SY$cP947bqtRh>I~jky8B4bAGfqICJB>_u1qs~eR=uqq_=q%Y#=qu1Z)dtO zsv2eWK1)H&V!2)Zp$IP#b`PBq- ztFV!=_a=;S1jeWreT8reQ4ZCDmj}NQcqs$CpoG8Nf)@df%lG4P>2Wko07;2b!*4K$ z=#Ni8zX&3@8qSGb4d-~U7+0D#K~$&baZi^^Mg9G0*3+ZKBncug91(vE9{6M6uZjR| zp2|%yK?pOGGUpv;hm(!w#%egp7dU|r2g=7`E(JJo+TcV+u`|OCC-8u`V$izpaAq)TFeP%5Q$aM7WLDt?Utif%XK z?He)1uRpN>rL}KBnfnzx6UY;|2CoRn<5#o6y4Ui-fh0NVr%Q*Baf1qxMhWe-@t$L( zCFD;pqdX^D>u`VQP><11j*bgp<7k?On@#H(#Wf94)mrrj-88eMX{*gaXcO^%{PgX_HtSw<>J_fm zD~zQni(8tTWcr)MX+*-RU1F__Y=~*jVO~}4?b`pU-M~ECW{98jxK2}}o!WLhzJpVL zqJv?Q2k4Y-0n#UKi!m9xgxI+auR)Wm)Vxma1_TMwZJ12Gf-jtkHN%PL=WDbg(JPP& zaBF(tohhNM!=$Y-R$I)rH{uOtMjLr_5#YiE@#+&?JrF7xuXzMSwObiewP_mapYvDp zQKxjBOktq}NBqg+nNs`=qEZ4=>Xy46dh^5t>||& zP*?mz*M{s1>ymi2TcI8_8($=(A))cj>P9nLPRPW*b5*(7_@cfVZ&C%!<_a7Yd-{_p zPk*#v;Rxotdi=Oz)#4rnRU=$Vh3l}=>c{5?C*hgHpmAGx3j`BOo-+J^670;#o)3~$ zxK#)(S?vr56Hd?x59A7ZWc+YF(uSL99-X#>Y5gRP3~nDwvP=chHI5;$&wXS!s>>xC zlj>zNQKdZ0`l6NB=k82T~rJO*wm<6G|9sG~z~D!R3s&^R4UXQv4RMYg=U?J6-=aTcm*<=BJNf+0h|eRAZar`w@2K{Oxj5aAh-z_OX8B|)Tt0i zqU2(fToQ3NnkAQ-juEtk7#xkhAl31LR3;bAIV*XZ x%gH=IAfyv!-U`~$PS#_rCAST2a| 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%0AUn~g#_~pHCsLz5QOPXDNO+;nLx58>QQ5Z_pAs}8 zBpi>_tqFA;q#NGl>%z&16Sb~H)cUfwzmqLCB3qaQDq(V<1lsoCKm^#ba%T}Bbl=Gm zEp|b)*thQ@$q-jo7Ab^<&^9Dt|5et!?{p_9Oc00+JV7OZ691v2!c2o*4;bZ1W>t#@ z0ndlL;lOhil36}@Bq-Dd(SEv>>gl^uGJ?LY6dLwdWHw+8?qmk1n+U*NUr{}vLZaYz z)M2pYe)GDI+j2#}`O$K0Ml&qt6%)rU{UTSt?DV>LYLbcxUcmWA4#Oc3>WF} zr5XV&2&HS$tMoLboOr3Q8B=@x>Q8GdThWaW?=TnrhihrQe^Iq=Oy-Ob8=?ezwd!hPg2f0)lZ z`Mf*gJ(qLdh#2o?0i^RP=3X~r+q}!Qm%DPI+-qs_N-#0;Oft^fEGoIs?~8h)xwy_x zk++E&6u_tPPNb0gv|)0&mdhL__!*kwf-y%jol!TgAj09z8=RhYGMl7>V( z4*n^u$x0d|;zecPFv_|Ht4&{X?V<4IwYPXfetWj8L3<~#Cv`V^FVlYdWZexu%5=?rHH#Kfq699+ zipd+=(?k#)&WbYi#}R?th{g3TVli4r9AXgDH!gVcuz^ozg8DFoYI$2nHhEF}Ao2N7 z1W}7b_9<#HK411*>=Gm>0xTk_aO8ev2J^1p$mZl9P?jeJ5(tK@#j?RXe&n13sda$} zCNL(sot#qZ|6tQl;6#HC4j�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°!*|F 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%0A##d05V4WUhxU3|6|$K!CTMT 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 pF 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%0AIw8s^blmrKw! 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�)m@>jx)zj^VM2Ot5=gb% zOc2A^JRk``B#_Sp(3C{*!QfS{Y~;r0{>c24?xvG97zZAfEvi$V-n!KC29<_u1q$DhtxcbGRH6m^1yGLhXbOgHD~^p zt)E3Q)fOSlFVD0$50?WV__+No_=NShK z7SB%AtlxKe5^UvT3%JSz>#Y5Q70bpKEs8XKO0uTUK+}hqP4B{HX^mL?Ylir>S{qzy z;x-uA;YMvRuD%g2HE|s+jdZkbN|G_0j*i~^okDHsfI33V<|1SCKX4!t*H2TVpDUB~ z<3vAKnEf1mfc-o`k;VAv?+IO1mZ>?}cbPdJwWULCmHa`Mqo+P*Pk+ZQX`wDwVb@=z zg6G$+H}&@Ilp8#7U#iPU!i6Z@W9yB(cPaCkK#eOO3#pb@`T4R9`rS{%IkYZTUTYG*w0I*A6cyV!o^ zVe_6jTT9nRfLK~iq$B~N5J04xKuqfjgxBmnYS8$nF+zF;@+HIxCYz-jBmI<0KQJyO z4z>*a%s)yYzYqFJMz4tmCNE48m5Nd=8d$XSS7^Y9fU)Y5ZidT>W+O~68nI6&;5jSo+Ry!cg@aVTkzenf!Cmufal2 ztYG;=cd&4N*5@dE7}zck03UTW*PG&Vp#K=Hw`Sp{@wEipApOd2^}NX-7C9nNJvb?0 z#aLA10aRm6sLmFs;>WQ1SklCcYml8f?!#h|hy{SRjU5w5|` zS(6^i=NMX6^J!hrbK}1poS-3HZ0q5~6P$`#jnh$X9G~2#*O~3kDu}eZ?4rbWyKl51 z+NiMXVv=qJ4^}=}XGx(3=+iau7{5H>c6W@}h zX;Fuf_#Ym6aOdjp$B|C`sgscR6BO*RFCLpJQH)39m#hA#8oL}!p*Y*vw2*84X}zj# z_P16wwC8sW4Y`(`mTCSxrK4ZSH5Wgxm%HbqoeR@lNZpJVhTufoWq)gVgOQ)!x+qoa z?Q2NMz^S}#IUZmW(FacH`T!e^K5%}Q2LMyg>cauw=rnY)YD7L@JFVwU{iGX~dQct7 zV+90D9wTV-V0A8EP50Q}+B_oP)zHCr`@2FJYqT_gnI7}LR~wp(uH1qOJiiI(P%l*H z;}f0PQaJ>GWD>Qm;LuZ!#&Sya<2s@s<5HT2Ykp6di z`B}BdF1d>7e~0F_q#>>pP6jE~Sky&ZvWtC_UF@CgV!vb;5#8Liqdr|Py0rl@@W5e= zD86#`%cZp`E%@^QeCzL%gx}V6>+}1B`#sEe4>dpY@o5n(>-Prqjc^^QhKGp5ub09d zV?(fqiv{n}J$jnE$Yl#&glkpjxsYUYP;f%S&8W2J^XYH%q6?||U>R$wDrl(Ln-(02 zMqqPEXIm<2)n&ucqf0}js@N+q1Hvgmga0ACYh&Ek-i^X@>94@!Vb@LtPocmw%7h2b zf(o7^0S}6|CWmKHDj<@c;eS2-n|YXysEeweS@OK;xuP5qP!ZQEbIcf;Sa-~bi;c?> zoQl5aqgizo{3M3ZZIfn9r_H_?xvk*Flr?YHu$20rQoX3<4pomw^!di!>yaf@FD=#1 zDQy`;`om#CiWDweW2Aujg8}h;5Qn4rG4VGipVvQSQEEpT$i#HPppS~<)j{;#n1@Cz zcX8#9sQiY-15qE7akO}qj!>RLV|j#U1!VOqn&1e++et3M^|3Ysq4DpbIgrOy2lV_9 zd*kEk`9e5NfdpK{h?NRiJdtwDi&cZgSp_~9^g%*lfc_Gv6ujJYWkQF^8z{9JC_w{h zL6^8P6|osLOTpujJ0s7&#G8SU9VNb$$ZzI^-z3s3T$I=T6C47R-)p{dVX}*3niM04;6D8)7gB3U_IoHV+(2=1oo^mW;_$ja z((~u@NE7ENmx4?b<)kAwkvG)u_ebPl3p&h(kD`_K#(UWp9BiO~GYhKgn_(%l#g_oD zC&_}U@jlm=nMHKc{?earJOZAWKK*cz=%WL%mx3^z#!+v~gyOXWazcC+$v(I)RU{AD zGc3jU<#qhBsz`d_aAS1f3SN>tr~m|Qde9~-T)u}pKIKG>aKH^6>8PM5eTB1T@<~av z`Ys+e=9_K&Gn{p8h6Jl;c5ooX{V(mqut0`XY=n1KzRXxwh80CX*?);7Io&X7n$g9iBoLgKQAv&;Tl!25^{W zJ?X-eh^&~wIzQe}=8+0WYu3m88?)K~HjoA(QP@W`@9l%U7oG7?=DK0Y2N)S$II9mv zGMnB!UXbx3g5Tm4 z4{e^-UlBqp?}W03M7mg_F62ipJcA2B(^+2qGy0ZstAIBb1|HB?hz1bw8c)0>ZkQG= zEPtDhGp%TME!eDaIa;9bR%Uz*LoO{pUep?WnRCYpAOho?MfOHK?ls1#X0t{CSVd(+ z2pwCV=rtyz7u9ToG@EsIE-j!%E0juv#m@g?D8oWOQ8#A>NBw z2`8;Ml;f<5S?V#~=xU{hv%+7?TEK7#aojpM*KU!)fY(R{ouGtxhWPWV<~r!bS^I{+ zEQWXrmay?Lu9)j!zKlBS#DmZ#{8O8F2lnSk7YpTrMbT$HmuzZpc`{*YcRU+6wQ*yO zIJRS?nL|G2oVvTr=|VJ+FsD6$5H+XpAjR&)IpxPZ{I3OK=k(pLB6B)Krk7muBU}vV zB{>n+wrdS{$&D0_=!S#je+68|5aN(}dVb;T9YXc15mCZrM_*h+1_HSDi$D=J;6h2NSn5fC!iY-1@HtEkUp z?bJo7?OX6o0+CiD)cI{0GkkPeCejTDTnq{>yS)%(rUJFiM-V9Q%#fSwa;KS z1uP3lPZ|3A9S*5x3(1^6()F_uRKE(}m-B{;0=WF3{D5-87n8bPZq~wpZah7R-3+Vn z+5+jTMmLIr3KP^8UT$2D)=<*+ zWlQP=#uCve64L?7OJC2m8hkY?P zN8(;*)QFfANf2#{xW{2pxKL;kYZLJoM6u^d-SwlEuzpv}Y3Cgr4Oc_)-LI?}})_2{S# z;jGDgRCc++xNY1fk1B>yYUDiAm0`3QW05^EP8?eHw8=2kz(bky4knLu$D~G3d_##t ze&Val_;QF6hswiQ`CkxTCSmw?E5#wqRIEI7xL8vBI_w}BTOurA3UY0W9P}yo-yxu^ z!vdhQI0@)XJVOcSdL;qnD7Y{|(wXmbOjv>hWKHG+yceC!Q0BW?$;ZSwl>s5|D}cua zo0hu%&G3V15^EP{<5a}q#>B7}-VJSorfCpazAWMA>DOXJhf-tZ>z44d zemg+;BU(|S!>2rpHHDv7k*0YU%VEIX6xuVHWNgcnNXDyXvrdixG*rPZ!cRGRQO(Yj zW-Yo~@MJQ&+we#N-IY9#BI09k5m|8=pKQwPCGR9`SCkBr z?pN2L9!S^y>cL{!uj)Zd+^=e$`j!1k>eVDmfLP%`91TRMnjF*`a_Jl0QoD{th7oHc z0z2+4MbI_^6+>C~lUso6Pm*kn6SHYHC=e0Xt2gHIasJ4Gn>VuTjnxP3L~(6n0@9(! z`idj|V=11*6Z%AlTK1Fv0V61~N&@$;`qnfzQgvby7y(oiEU>#D$!%iOvVjcRNRomG zh0tu&!a@GTBG;~_)Zj_@KP`AX{!T*lnQTRV6co_b71_yi0LPOmqQ)Gh(PlQgU zd|o)rAH5`agL->8W3`gyQ|!MAa}!Oo%O{y}<7YP`iLl59gvZ;0AS-NqR3@MJ7arH& ziBGP04KjyJ!vx%dfIF#$Bk^R2b^axd+>E(7m!Up~T?{jV8zG;hM5n~V|ALf1){l8CqRdi* zazT38-VSen^sFA~Hw^C^g@c$TXgP5sQx%u<7WQcg4+5p5N(?FjlPvP_#|WW=AqEPW z7$+SD{5GucBKN>IG4*~*0juE~1M23M%>U%P9x-CA#(;lxQ}3ty{su?-dxwE<(qC+S z!O((MR;WNaa~vXoJI_`qkCy#bh8CnNLhf?o`?cY4K)=mKJp>_q3~})KrmTQH<@|?c zLKJJ9e&WrwDgN|kxBg-|4e{ZvlF42SY{UTUGnL$V@IA+?KU#tB$dT{TfAr|@z~~2u z_jSfM+sPUbJmD+4tsr@%Li7q9*i>C|id{NAqEObN@pf!P@kE=7}4i4$eby}ARdv)nBIRkNQIr?p*EoR+hjJZgtvC#XEP z(uW0kxyQ_-KMC2}WkJSOA%x{^jZy!OwIDxJb-yZPL0;vOYzQ3t#dv~a$J(4AYttNa z4~!Z4^4lNlpOP{*H1um=82cxx5OgzlZ>qU#lZhLIf=KI(QQx5SL!=ZJGWVES!xtH~ zO9VUcH`NFAVUi%!Me}Aed-btQp?fql=;kni?xDMoKlfm!&+VT)Z#5aCQ?V-~KhxhK zV#c{m#7tgFyd=v9Ua`W$i_}BIgXB|ZI~AX@H>N>y0cY8S1cwo1Vv_zOQ-k~ zm}87A;ik5pk0V|b1Ld(LC_tKZ>od5dIN-748Bw+adCg$@O+Mi2aO&_QN@j!I~&J*Eb5ZQ zZhFyihw_0I6p-%{yLw~e@x(IW;j=3|O!;a=S04CSS zG<6VEo`77%gtmI)QsB+9Hk2dEs|%}8OF9Qb7YP&u-+K{ ziZ#GgHNbgBCpXLkSUC=BfRi`M=ypIIN*LYyxWv(&)D%B;8`~k9ClZc@c*1S``Q`o7 zjv8Q_apzbI)1)SWr6Up3RjBCb=6YOXELau?%%k!WSMcTo-k+wnNEB4?yl zQGk9woF{M`3OHnMbF;MNAdKH+iaU(bzr~_ZDg{wgKqVO!NP^Wj56^Qn9-p=PIt6_% zBu-`3p_YFl@*lqyhrh|4ivOQV!R@;^xJ^FB@Aj!N zp2C9T+`kjYSZZ9msQWQuRxsa@F<$Dm##km}Yz3%s_{wB_Qwur1T&N%k z>n^zzCYGE?@9T^yUxmY=;xNiURy!KbObPaB*oTA$4YxZ|WI9*;qK4|fC;3pN@Q!iY z!r0NqZr^Lntj*EkPA&OLY5$MTAs)!wFGfklxDneMUAV+GaX<8?80ACWY0t&Yv7yuU zBfiA$T7ym{L#_TYVQpK|i%N93^d%Vu1Q^*CVuXP7kdFHV?`Vieqh z2%WhDx=MQ~oItSE<{t(q@tLRSJE{XjUlS`JUku2LgAe>gw#^p@$%~&MPdIxTimR5) zMivs&lQ^c}g=tV5XScs-zQC*9yuh~D!)0((ncaRXUVw~;$w{-%IGG4liVQOVqNj2x zD}gT+iaRdgtaOe>^;b1(A_scHx`W1GBV5bLlmw8-k3og1%v!6WYs4d&s)i@zfua2D zQUcVx6=XzGK%>j(FoO~~CNWUyHBw&y*}m~R0e^gfw-B$}-9IB!XOxc7i^!O3lpy~T z>E+*JEE+CT^pZ5;=AhT(X;+>lt?W4wv_kcNFoev8+mJu{AXB6+Gv@vi5VimLhj3WH zf>ItoLM7|IA+wqK0z;LvBfy1{s;=6{Cq`|{B&k?!9TMLH(K zW^P{j#-E={WOeb#HCt#i?iy|4cX9z1V^W1>2{fh{=7tA}*~dq56+RBZQDz%6pA37U z^M?}7SK${myL}z>daj2Y5J5NOjVEMaQ-J2#?T?x-@Mx@+Cp~!rJSG(zfZLx#AOXHY{qbBw`Z9z@M>;=N7cf?NVX*XYmiYp&cGCmf zVh=r}haB^Tqq~0r96?@q4fvVe{vCc1Bwp>N2e!o?o)TX27JhMajcltY?NVaQj2Yky zI$}_@8BR1E-C>Wx8zxh&1bD^^&tRGV4~!U4>aFrWG4hwWFIn1U=mB<4CLA0^cs4>N zmtJrB>`OR8V~opbKBct|X_BzJPjkX_3TuSqC}V!E$;%M~KeeJZ<*h4gQ<|pMri{L+ zHsvY&RaDoe?5L?t89A*s~pVjYrTwmaN9dncd ztHuDc->X!=@P-XTfr%-?Lpa{O7iSX!N2S1l{;jmX?0*5r%dBxe?HY`dwT4i-dxy9Z z`f(I7Y8Ngp3TU@1_3CG31EfU&VV-s5fbVl)RQuRiypg*SwsMF9JY8TlQTD#?$vu#% zo8SY0{XYN;xjKNrZyMt^k&chEFLtsfU$+IoTygc|{6G=59Uf39(E(LH#Xz|{pV&8O z6^G4wbJfXlf;+X@dY}!sK>aW1Kr!1JU*P`MJi?S55)KZoTF0rx!2#^;Dm&OUc_96K zlk8)&eaigO8#6*n3b)gstZs7AN8x)+rGZD zeP(Pm?pTcL`o%WpqyHSwhS%C>48{U*fq{ui@c4Jg#07M&s^1%KIFoi{Ft97(vzacp zUp8+)hucz&LCK2Ly19%@U=`o0f$g|G z>A-5u+wbAF@a&>uXAu6+#Rcv2&`jJ|;fH1p6#22|VxWz=^?1e{>+Zj(TxJEvYbV4E zv?4mtK(#f{3gbOVDJKK1B!!QP8)Vg?5qnMNiwWba6#D-B81^BVCOP*YWsvbTLdM8t zZ8~Wm7=J*j(|GOxKbX+achD+&=$20mH11)zON37}%4uYTS-c1Q%r;qr*y&kk(uqov zIAcVeNt`jF&LqwlQD+iojHok-Ge+K(I+IPw>P#l%6Mr2M&nJ?dEG~iO5=S74LCnib z&LF(2x$q8*K@h*-59GZ|6M3&!Z^uF?h;oNkaDpbq^SNZe^RvMTkfL+F@zi5L7HTs< zG@l557>HCqFcF6GfIt|^0|H?v4+w;zJRlH;@_;}X$^){3a?Z?kE|_W zstNT@vYB6VjWO%_r0BZw_x;7fjdL+t`U5s&0!qY~=U@fK*?fxvg<`AVkk(-_dmLvG z{6tmo<*`)gjzN^;@)hRkSdCou$3*Z?8(d<&8593D zsD5$eS|;oL`=b-_- zXQOHvHsNWU2G6(V+5zH+5B{HO&AIjr_G^K;h-&d`o_qcJ7pR}|AUw-hVywk;C;QS} zSh1+?qfK5yi9`!5Tjs!Jt!}yI=?REk2-_%Xord^f1g&UkZsf+*Ztm+V`midS-vh8s zyYz`RdYfPL1h>J-OI*6A)CFQFZSMs#!I8-cKK(;JaPy-`B<{JB3)CC(U}p|2K_rL0 zQIh+!pvf-WYX1iRc}DI+WI8Y1j$eNLin&+L_B8Ga+FeNB?n-YdYOc;u{&(0m;3w6% z25oxub8McXx2GN9)6+-mgX+hG`a-m=U$MGcJV3G@;eqt^Y|JvXk zSm#C^grc^o#pz)w1e0c5a};+0c$;{ZsdVuZmvFUwFdefW1>Z{6`y!tP7J)gp9zfx^ zX5?#bpk>{TY`v+vx-9q!Hxtj^hLssUWRSnhuTQ?$wHURVF|=@-JH4}`mSB$!ow$?$ zjg0{G@sUXZ8j~ELq45AoFZ%_`6^3CdfQscm+3(OnRY3iNKCEs?ycxMJtbD47$Ohuh zRb>l8o+bXGtyPCcZlMyKOMj2E?VqQ}LHG0&YKWcrqK)uk!YZ|qDNe(%d^)_@1B1D` z&aGFgOK5reiYE4l8WLS{8uR!STHv+0pv$Vm(Q0DRmGZC=Kk0l?l6;Ty0JgT(7lpVd=SvFJ)ad<=CMaHQ$ zzl7fq9USbp%y@nc4l}f3rwl}Vg^QhJ>{t83)!3y)JYEYPUl|pp(jX@)nX%HCc{v!N2EPpmjWwLIgkyVgXZYJw32e1S z*y_VMY#;9ub7}wu7(jtF04MhiXeZHqLvN-G2!E`5RksjR%~yeu0>g)XW-EQ^41A@A zJr84pd^njDo4+}aaO`iSPAMo3nfFCH-Q4vOVS^94$eP8$Glc{7HryUOLwv5RK0)XXlIlQWhY8;6>XlYz_ z^pagJg~p+71zK;GZ6d=XTh>g#T)Feo?dvrv(iW~#25~iFe{IvXL~TyDB)?XHmZFS%t+qQ z1sFYbk@%Fv@UvcHytMmHI4Yq(KX%<3Jduz<6Dt+@Gg$--y!>y10y<)cZh>^vEUUwE zJR;BDx_M6+?Kp?8gVSeucy;=FqHFgt9=uWQ^A?#Q$vVE;bZ=*&cW)51(PrcV5~S;m z@1KPUmk?3y3HCqIC5&IqGL^+Y}ir8>KXM1rvSk=c}=^rk@v$DPklXPI071rkj8-7t-98TB+n0<-RH40b7C1{7pXcLKJhRde)t3W5 z87%BT9=2z<=E-mIoJgsHCJA5)5-3Jfo_^aPSjOFm4`joo?!qxn`%D9mDg9F)H;7!g zFK{$z4gMQ|HrE@^;P@CUz-$ND5YG=1Cy9k;<9O%@9MR(;d|N_a0CWaVES33859I5f z6H)VRLON|%W$++x{yg2d{ZMOb%?Ae4krpVAbYs-YUJqIiNMDfC#QZ&oI#X=2kk~Qi_HaGca1US zkp3u|g%N|=+EH8)3?sM*e@g+{B6eP870d6Up$ZO=L4ed+Ic4gG#O+9dxW1K*`s~2KlcQ| zV~0mR5;!efe%BaotCcQH7AYIq%E(o-(2PI>B6NqjZrnvc;T@~M-&m6RWcWKc8^cvo z0(zeSgQ&6WJ2E_EnX;dgb?J8F=KoNS+88C(l0;IS;4ohMo}@a#(S_fZkW>+gq<;ol zn2qH(2lOyo(L+u~9IduL4POcfyt6#|IPl5h0vGtC>nJe&^YX1Z1fL9~Lk)f#b!)1Q z5qeXz*_S(+Ih#JrrmtvCRgs#bCYeot5h_vr3&dp2|Hu5E@P^DP=D*_u4A_0& z&&?2pSb_?f!<8RBc1MZ(!tQtsk7~8UnPd@~ix=2gh4|nmL^%PIq0^dC8p&JKHVx3a z+512|gBCYb*|{2f8~=uLtGo*pR~FbO2)+^&TjVbb`xW<`$ij|Y8)}PTuo~#F$XqZT zBVlQLJUs{9^?TzbL{wzeNeBn7KL2T6iqRwTv+^IfyZhFeC|{|EnmAqv^LJK(flgmR z+2WFm&A>EEKGIjvUO@vJjH`1*?9f=3N4fheGcY{;HSYraEgH2Qcb4L>34g7Sm)9E) z_Y#SzF}Ia%fGWYW8*`;=#Y^Fm+X91%7&H38Cqk&Dl2TEo@k2Xp-$t6dfrMV< zK4+AZf-td(!5W?8(LWF92Hd_!ZPzM*s$={bN;oM6nNQMV=8d(nemmq@p!zW|KinN$lZ!Z^iR3F)_C;2 zCcPbG%-O&dY;ZHR=@U8&C+tN%jL_ZkxUpwDSMER5yCoplzAZ!{bf#m%_{rk!m|ALm z`k2nbF?$)Uf!)qnF7Kfy9U?}kFZRz>RXq_%fw8BCaj5~7-@|S88Mk1|9JQTA;4y9G z_=DtiElPo03o#1$O==*oVz^HJSAdK8iXxPN03YNP_Qm(-(s74Fo^UpI%^emi^63Y2 z9SvY{)aYLIF#KPA+Q|gDw@g{(kTZxJ0nU-&!FA2gHHU2msiWjuR5)~r076GxB0q~kp5 zGXbPVL1=-#vtc#(%_d@4r9eq{p;V~PhS*YU1K9Rmg%@U2F^ftS?hGh;FL)`xPhz%` z)Zj#I81nDgT8gRYW5lRFq#yRj>JseTnU2dbnKXs2;Zcaw$Tu{sy3Ag@9HNG}#yAX@ z$g!M}nyb)kE?y4HFWheaiS3b+a3FoO&G<7;_|4sKCDk9(fG^|6zUoB3AInHeZCIr_ z00#a!k!V$#?GU0$C&{L&eoWK>;>1_fN(|sB{e5GUv>%ULnQyUASo-Hgul|iFgL>x6 z!4l9-r>LUe`wCM~jS+b(@5sT$R%7Ccvsr8ixf-)Zf6s|Q{UNzzZ~PR9l5EhS(=Ykk zFa+muA*a|EV_*1)^#YMjdw?`#^;~|P7OMUYkgEVt^fU;-_m*>T8GNerS%U7Cx?CVZ)zPH$By(Qtyg!`did-E zfL)=b08K+6j{*EAA{}TmhIG^V;|JXOB+@fO$3WRo8dv12SZ*#@GP@j{M>c$eM@GZx zw-s~wZ}5GO-YR^|t=mAW?xIzSR$13D1@3~NRaF_OIXHwr2H|>Y@E{fZU4cHFu8W~# zLX4!MS*B0TVb~D#GkAtgf`A;!e+T6j^6?r!qdC?Y+adGe%m7|vLmCQFgM)Z}kP^fK zaij)&E+gF_$Py6tyPt*xzH2=9nI>Z5QK(4w+0=!EfLY}z!E(Iiw53@9jcn@pT-a3P zKQl87JVI8pWV)m1EE^owFrZ#CAmq}LG)4#Zd`j@QJ)iL#pHKgd&!=^LUiecvk8&in zj$eNdU%kL9QoG?OMvfPzmx9Q-&!Hv^1PpQ0gKq2~Hq$uKhv2@oU~3tu&!TABOA{XA2fk!!f)5vBbjPErOkK zC8Q-^LtOz17-fQexEkv6QT6?2(3{j;`TdU9ctlRLq`aPk|BR>mP|j=2orfPpi`O&i zD^krtzR<)R>iD@o>2MRL0UCG95=*)Cl4iFqSP4^%Cp)Hq8YF^qaUfQF-Cc5ryaCco zsqyr^d%_TzXu~-gP$8MemzT~AL%(q8-+7zA&h({U=ZJ?eoe)A6i3O4nmbf+Ou;q~D zWQW98>{N$&DzQT{3U57k!NH$%V}z(=?utF}8{)_U4mNc9Rp^;R`;V;b#N2>W-Zmyyi@R@-+kx2xwR?Y^fu;;6KmIKTL&cA%dl6NKT$$5x2$8(PP+pa zcG~;nfu6jljmEi<)VWcpx$B-iVH_~Hi}p;*Y~K!{lhWc+fC|Wffj@E9_yPxyED+^; z84OxLUX%~^lqW>((cg7Ravq*K8FLT~*U^WkC0@P0f@=YTU&O(~nAN><{w4wSG5+-xSLO~fVJ8LM z6XIPZ4knRpxEs&Jh7UVM8veVDbSuWK8mblbKpF9Fy7>SfZq1pE^_{50geqQ#;x~_v zw|IJ*xI*vK`@waJo(g0pm_3peVkc+5khSMIt25kF1Zc!4JD_29GYq9Ojl_#eR{P`o45?U zw6u8IxR-kM)%f+1Uq8unEw)qf*6xXOMbEO16TSNB`Memq*M>%r&*~|rqJZgi;xca3 zAA~VY*1c^{GCe@xBea0s+D%pK6kq5b_2LHH^y{9FaORs48Z^U(e%V0!kpsb8&1as$ zGouh19ry^gL(S9HaYE$QpZR*I7`$j=8{fMK9Y=0nZ+5JE+K`Z}B?STlOlLEGMjtRu z+h=@_FCAE7xJJ{8T>BJXI0^_66Rtrx_tj4hkfU3A&zRRw;q@n;7?8qrQ1#yQ)}^9F z;Z*s~xzVTk^Ql|$6l%Q&7HXa)v6BRNF-iNLFefRnP(R1ygzw|bu(x-LXCc<_ut_r! zx^;K`BhN5-W-FN?ngNIF7~yRhO;iD|>I#UO=AM*}0pN(9C5j>Tz)d_&eKr(WXxy%W zafxPWDZ`3Zsx2^*(29Pmq7`%Kr(KOfo&O>DecdG;jN3Y=O|6J27w!d{U4hzS4tLSE zX^66KFK5hJ@CLUYJYOv4ZU*II<$5MaiOs+k)t72bwl01&}J zEhiRzB`e5=fSgNj7UYEfcaS5gUf>SG6)LzHDZYu|!IOcT%~dDHv*4i-d-@u~duJRc z#`7HQ$aIqtKcehBD)D9P_ILPGwJF~{ss4V#=Ro}CHEZwVC-}7~k0tW!h|Q_qVooyF!H3@;x(Nc?Fj(p^ir>eNVgPnE_&?2zfghF}tpdvddHAvSRT`TQ zdJTMXBM7P-L}-d{|4LO`u#=P}TQH2)k`VgZ?`bPw?l^-?QQrarRpSK zD5O|%$zx>2C3L@uvf{Ny%}}yp^O-~Oj90q>&-B!KcH~8__rY~Zkn<52-iJSt3!ASP zj}BvpVErC1KVo|P5Vz1{c0!LmVtafR&!9&4TDxX$}d>W;Kjs~c-%Q@%1h7~!kqE8{E4hF^hA*C9^ zNFX4XLTV2RgXucRmm(^;24d~5HDy${6$Y!HXET1>2$F|Xx|J<-wGdu8`=w`VQ|>VT zLil_ff4uhJt;aJEMX~?&*m=jVtjFQwlB~z`_Bli(?z$d7>Db?TeE6^3tjE;y`1N=x zz>2KLbEjZE-mva}wjSsI0&ov_J+@!g-FjT|aMJZ?WXG&W9nU0NkGJ4@bUk`@#jM9N z-0EgMdQ^{z>+z=89*3wNldQ*{>@#LPw*45>>lY9GPuAln5AA0??m1hn$JQ7Bch=)Y z_5Yje5gZ(z^fu#)5BIYk&j9!X%)i6%c>?};4eJrQ%=s?sBnGa@Q1xQZtsr1j=FnmR zs~o((O^d~==$R>n!B|ii{41CKAL`4_8QbBNp%3=qT=YH_8 zH0FK4qZPQ0=*2uDS;?&q=PEIrflxIdkRvazadin7Fph@);3%ik zKx3WTN8KTY?|=Frsk1n7r#a~07|Q+|pV6+g(b-e$5wq3I!wncC&?A}t)jz}#SsiXc z(#KX4K$qBRPK|69SF0`)N&Bx^F)g{}OYP^l1UzK;YMvPUAp_q93Bi+H)6W1^)Cd3IwKm8$yyv1x zqF!>YtTnFuZ~$}-bNhT2cRPTo9=kUJ4*?d6&b(qAjrlmL==c1^=;SXi-UYv0~3{}GR426H%rpP6Z7*6~RR&u%mR2vY+S?SUj< z5xIUZvPXDBBOtl&^A`O$4emXXI<&uaW`#X(jq&BfWa^-bqF<(d#y9B$(rNVl$pJtS z)S$e`p;TYvgvXpWCMGQ|K*!vF5{1D~#p6-seYa)k2QISSS!S&N=)+&;`Wr)7vLm%cKOPyD+5+ZqKGtz4(4o zx@TdGctq7>+kk-}5A&J3@C=l{h3GVey7~N$d>HKRXQLrq$#pkKGnD)>kT#=W2X%Av z-Z;K4dbt<9FN^KHK=lr<;)poN*RP80y|3zhnef=jAh@k zV-xNTxQXp{BCyc!Ul#$lsVz)n2sIuTKIDZRE48q%;hh{`_+8{`#iR>8x0onwGwQ$A z@$yFV7}cha?JOJ%_c>C)kG+Kgln@TbkguSmR~-vK+f=`HDd-ix5IA@8Yg3>IJKz(E zt1xp?S#zOo$rLCQNK`+uOZbd-C7$V_73VOEsfn{^a6?j-Lwf-}Z}>I_pLgJ% z@H|S{w-vITMJ^dTFC2>t?U!IXl66>y#erP>Exu5-L)B~SszDX>Qj-Ut=;m#i-gGE7b>G<= zd*D@gQo-I>VrwZe&u>ep(agU9=q@bo#K_?{T^M23)qf(cyXZ3u>@h5V9G>yEl!z@w zFWv#2=9tL)r||tyF=kbiniLE?a&I8t6N?yDEtQ&Rw<)UI#GU4Z*ls_VE!}3Dt2R!p zX~I1*r75jO`zEH_M{o~JMX0l3rCJ(v%JA#g-EI=!LuK4*>agwl6!As*$(7P_7vg*H zpcq0pRUj)C^9q70QsOBv7k2~P4ip7$?}(v=6x>6{*nHVBC@|Xb_Io)bxJ1RXl3}qO zH{%&^OK|~Ff{uj>aYk*D{`0sSP-hN8h0|htp2=6C?uf$F)esS5aFG0wOa-X_3`IG| zRR}HEgJ=^dcu>q*Mw?`Xau8I>z(~iP58A^1_9Qqz=zw46fKe&awcY~LbN(gEeNr)` z%^1Ih9Lc;Wy_)_G$_2Zj*=Ahy^-csZdo@~n$K=l%QxNa;ApRP(=*ReP0}_Z6IPaB& zk;bOKeoJfpgnY_l%J=%2?;UitfS+#U(x1&s4qnPM8u1fk?jUjrJD5EI$N4V&1*AU~ z?@)f~Fenc$9GxA6OEki7;C4YTm0k^}hO07Gx(eVOgJT0&_~9!8E($jcdT8ev13qOI zBn5&^cXbxJ_6F&(l4q2y7U#OWuFiFNf<{_I6g030L9=z719A5}7oh@nE^xT@TCDP& zzUFOkGT!4W+JgAihN9GJc)Kl!595~L_W^xdpa@wDubk~`I4u`9@e<4|!=FwCQrAZr*)})3D$1w4mvr&<${8UR8At zATN67rc!_CMEKgC*6u6XH|-c6L{$LkgS~XfjJU&XmP1b5qA-L9>2KPD`T8p4uo()x zANHq?l2J`X?@V(IH(-lMFd{M0`O&M0vV&qU*3;WUWdf5YYaizhEo?9ViCzkC!k7WV z3!O$YH6QZogWxf;p{h5%^fC>%fCbO$<=E>+^du4oN_c&7gU+y6jk(|Lz~jXL2^AcOwaDqY*YIy?0mO*PWJDKVERk-CNkrBI2JZq~Na%=S zrRh5MqR<6E0|teLE&8^R9c-HT0iZH{VW$(QG}avlgp+df6>THQy~%^3{J>nzedc_N zx5wn+c!S0rjXuv~1Xg~ZHLd_K#&|?wP2_Rm8RaJ_a81uVB}hLab}^iH>lbEglbv2&lf%qdH&A_#cQ`^pbDMD6H<7k~`l1h3qo);nxo17T zK!6M68DFZaTY1&M)g2J8HqvE0b{oYZQmfJ4b09>Bx{WQK^^~+>^&RQcKQrys($<4) z3yzNP#YbcqWVH2$`*CPgJWa&H*{n~74uU=x?&WixL?g~V*AqB@8-c4^fLeGwOy_E% zn)d*54!Ph1-25dD4<=)Tc>9D%FHm+>F9*%O8!2!zkfDB}AgsoEYKwm%l329tAPoNzhYM@g|jV5?Er1Cjw;k2saqgd{xFYLuymHu52ktgksTCm@;~3*zwv5!*DMgjKR0AF<~J zq}=}>(yMPP5t~S_qtw*{px468{n6{TEyPP4z25&=5_%2)#OLDZ^^tc8To-!%8j((k z^g2D#ON3r84kgg*qeHsT>#67=mR_%}Iskfo?b0so>|6s#W9aorw6i~Yh0!RHUW<@< zxqEtDn|=WFxgGK8c!e7j?k&Ox zAH7sPx)eY0XcIo1vz~9o$I6CP_#c!YQ%H_=@nlN^>c+ns^Z$x+sMdWBN(@R)-}g1; z^ibx>auX5)ib{dqXHkr}OuATu*+8h|hj>uFC2Z%)zdr|3F=X(}?_O4YSWUns7*Mi_ zoQvA;Q%%Ik4vN3}O?jU*mt)afDfEl_TBvLYF@%_d264u{#<(7-`1o0@;GU~+BkIT+ zalx?SmSN`-MoG8JOUNLz}~L}19R1cm@PfnrKJzmWB1mxr5b4| zG@;V?cAvC4p^Ob?8Vm6hl$tU;ge5n@sRTc&674JSq>Psyc3#nNN?|x(uLi6#*rTo_ zhCOPRR@v&+d*iW*h?R6JQ;S4}xidvFDTi*a_hti9cv3 zsMLdvGkB=Ka11Pn{we9+Iez=XCiU#$58WN^7{Fxnh_-};An$(+jT!Ied$pcYEVtT$ zC?#o;4IM+%>7jbDb^Z!FfYG@Rdx2K%h;$1BNC)yZ5P;D6HlxA#+Tl*>N=@)Dp@QhWkHB9F6k2i3tGDZdfQ+_f+-MF9gR za;p=@U$T>j;yO7?I;rAZ3F8A}iH(?N`zpSm;bt3LgE>O`%)3cY`gAf8vQj5pim3_c zEf9F2tkSx zWL$1z54tQU&~mz7yEk-xSouQ2onGhqFt#k^Q40F!oOy{ID-Do2TbQru-w2eE#jI!c zIvEy=QQ}xyXK5Kc@1whrByZ}Bz!cIX@Ii!;*H713|x882oEdd{I=ik^eWM2tUA zT*hs&^uXpe*%xEpym`jH@A{-bK7vg*bUs6np}Z*_rRcqz0NXeR#%^eNe+E{^fH0w- zIcJ^NleAZWg%L*>k@YYsHyhibNqy5ftJvxo&yS)oA8{jN9nInId#5)qz&&FPW6brL zoLKta%KeJH!#fB~CiX9(prUuGg8HXL#}YL&=6hz1Zfzfry_=us0UCb3 zC8v(9?N{Qog})y|coIH z^_#P`I;<2?UJ*<%W0k&K%ng2hn|F8%Z8tvsPPO2g^fkEU-3v3t@ZHKIY)3%90dmvi zrGD+YCMrf}e?a-v)2dBgkINgi$y@PZKo=s1#aEEoVaJUr!NHwe2u<9|o$^+cq=)t= z-z!n$oVIbG3|6qWKc_IckuyP6kX>wP5)pW*dZFLe(J+_qd6C>hslHt_t#3QQ!dpBW ziNO|A{e?Fuv!g}y-!=m^k)Vab0tB589k=(REZ!O0@s;ctn>+v!z3?v;gbjXl7`}Lj zwc^lftFa9EvN3=_E2Gf8-cSuFjDABSx&<&010WoPJnK79ik&Am>qT{c>qGd|S<2?1 zxE%`JIrwtJN{6q3v3Kvsy=*Gld*kvy~#TKjgLf zL(WztVa_w`slPC)iovWOw89fx@3(y#!d1Patzgz3&w*DKMt(jy9e0n#&v&`Il;Zid zPLRZ`ngJm29W<`ek_IZ}cK-5vBp&i{?ohnp)vwQnz(p1X>Ibh8^7jr$=CeUq;TG+? z^fpEOo4mt6RThnnlu_~|Q{w=3WBhn5X$D{X?1ic+VjRVJ^L?ZJ(E%wq)x?x+VZbx* zP%_CAdA`kf7;7Js0{?aLt3%=@na<|N?!ssYEo1v(VcS3|BogE_}tQ6lCIz$*#wHO zAlBe8sDAGL2Y=pUPE5pl`2U!D6Zj^p>~FlKErc~?sdf~#YSk*Jg`&0wHK9pKAcZO* zRkpezZX-ehC<2AFKzxkU6`awL8J*D?9fxrPx3Miq%i4k>xQv496RQrOgP_&?zu$A8 z=Sk9qaelw||9M|OmORUO?sD$A=bn4+S+F9>GyQ_+sqK~P1dT6DEg+3cWzZrTIu*Y- z6dO~QO@04bmOYt!xtrs1os&dO6t$C|j))7-LH!!EiDzT%M-L3rVONn;DeP_flh295 z9$HRlJwZAcBQ$2H1XJXqDGMewo9!1(sZY)mype}jlM=NbAb8~A3YYDj16z-8>jKw{ z(lN%U$np%FjL?$i5kb5DU?YU15vHRNmvve?BX|kYLjTHc_^UGrz>C)aOX8pY;jFKu zALzE_pKkT3y$E2`*CyT*km$2vSDvUMm9v3?QC59o++LHxXi)!o9o3&^EXcs;&6H1> zyr``VLVjc^Y%RMVup^|VlaN!~zCg7)vlb2@YGs<)oWO|I>36lZnoMZy24O-oZUviJ zf04i3{-dkGO?xF2c!--UiH3#>LFRo`r%m{6osIEyplX_|4}I2bY|= z=t-mgZWGT0$D=b~4HfziPjeNdb`_<){vN5WmP`Y%a+-D{C_|<_D7g1O9hmlq|Aa5d zK?*zKAbGle0E}H)BDH9}pX68d_=>TaDp8(_&BVlUW?ZJYJR$zE=6H&tM2;?UNJd(i z)0byWT%eJ)cE9d;nJr$araaCYT-pdsl@YB$%wA!&`t5(?Y?14B6K0vr`N#?pJG5OO zW4*^;Uj)B^>H~HTGMB8ehrC81KgTsSdL1_2(qz&fgIrr1NEJ1|pqNO^DGvVvbjW=_w*sFR%Hsct$v|BRuYA`s5ZeMZ*NJa)`!>42; z7@?cw&Fn9u7t1RjoS>0zN7F-xWA?PDc8{F%Y>Cc9w~)N;8CDgoJYxmsP0jk8PK zgZ8^LB>SvH6Nm$}Dt^L)6U@Dn3j%&O0 z+}j@F7kNrL)OML$b6Vl$>8Fb!h`rAg+8fq8(pwH)u`_JS39~gHOTQsxZ$?+|p!GRrcwfHNZEU}C8%uPm)%$|(Do^Ifx zx)x=?{)|C2W^yNuh&OQ18lOAEuYu~YD@}+;RS*j=Fr!i7c_n;SR^fMfctK5r=YdRi zMeCt2zNl9U_$elIPd$ihH%;5V2i=ZykzMrEn;#~P>?e=C4)3+Y1@GhS$&@p;>&3t6 ziK*Eu*RQ2&&8}FP4SW79xIBL}>mwWoc`#|PutM|G@|=E4#}+mA}i zUH?GGV@0UmzVsr9)u#Wo=Ba^)$Z|8x5@bxQXQh>#Z+3U;EE}{Y$U>ukHj9%E{&1-8 z0~k)a!?)D1(WsCuKL#zQ1dEy~RA1iqvM)ILBdvTP0TD;rxSn>$fwaAf;Rb2iUdY3G zEB+vF%DmcnYtO?d0M-VBE|6i%3)Cku z0LxdBoVs1FYQY*~es~6fST`twErXQ{^y^pxeIWHreGgRN9{Wpjat-kmo;G?$8jT@j zvxi_tHmwx#svbc6F9;_o+I9*4wWJ9Xf=DU9sPB|Y&{qmnqsZa8t`D%5P|$S@iL31~YXAPqo+$txl47sAALykU z-qO2pA!|JTu?T>zDuX-XOHf%|1bSUGw>t?Sx(uajhspoojo0upN!g2NtzEHh6t>)A zxdUE*6RE=-r|o*|&;8=Qf+O&fqD@&!z+ruHo_vu^9>mvm(S$E;{1T*5hWZ(&xC0V- z@nCCAviRmxGBSu{Zwf&fHg8CU0N*$IMy;3eC7^>s-2GGTopl0>NU^8@Wnjr;#1QoWP=bA2w`UR^h(w zar|UoG8P)%(1IFx;qL^pNDNM)2;jVs)3RgS7ab7XgBaUP(u!D87)C2dU&18)=N5K~ zlQbzpU&&d5VobBryo5=5l5}c8UN~q*=Ubqn^Ce7D6`fD0fck)ZpxE{ZEF_;~kAMdB zFO^x5vx(_*U~2{QPtpj&`_{PD!QU;BNIpb7(nL1n8CK-UPaKpJ(0(=^1CtnGaOs&H zwtpIX8xH1$7qIO;ju$ z3n_vQ!f@$*n8!l^`(_i)Oxi>;G?v($woB}iHpQXSh+~)()A%tI=Z%L!t2_gv3`Lj7 zE{iu%rb*IuQRL%BHc1{DH<2;Flo}ozqRnDszaPSl-j{BmZ8sSsGXuSc)w*H%^dB_17rb)j9Eku;;>MA^^lBSHa zyWA*|Dfmq37&Lwu{}Gu6xnlDR z%EGAzMV~{cA#^yye$V%E(cON}9=YgauWFKue)j4Qa3MiEp@)Ko!(3k!N5e4^^%pa! z^~e)F?-?yru>`K8_~1+lPQedcNiHXA0zhxuAh4##=Q4~yz-2!C_AESn_G(C(3?h)i z8+e|wSseX2K6aWQbTq$_S2ow!c=eMwj52j_U|W}B8teU ziFq|o?7+wCv%U6IPEwP@; z2P{p!X<~~xvrYf-IF0z zNePYY5Blq97~+kzSN|((q5F6}{*h7yLzMzfJ?C1F&2*sowK8CRkhxw9OsGH)36af!84kvFtDbgT7@JUb!1< zOREMAoOg{P)QK4PQmwiIq=2~G_Np&Xit2Q*xFdQnrX_-{8x(tj(A}{@u`n5O<@g-c z42fi~;sE;`5#9vKO+f%N*=C>+gjs==Zy<`q8BtiN*=V@@F+%~ot(^t_q(#oY8N_!rL0qKv{GU$Wb* z*UA8eOe-x$%Z5?Zi3Gr@Om~V=Hog19R7Q?z%f4Xejt{nzd09)QEX>hDRBP7Q5kFsk ztK#R6|8jml*x={?7BMY>pLaG>EPhUz&l=#T)c|AO{~lKz^Ye>o;FA^`2?h+Forn%& zULRT6;k>@E1AY#{&c_7_1LIBmH(9$rx{SkrnB&KNb~~2dvw}0_;%F_2+E}#y7cBjD zO#hLX{$%OM!qVoLVMJU!++2B7>!y$dIMSn9kFukw!0$`V$&Sk*A}nmdMgM z-L1i3KxsAGnt3I&ZKD9hS^7(I&seC*j1UdCS1Yv03wsq!s8AY~>Ls``So$K1rJMRi zzt*0gdsmU4TSH>bJWK&utUr9YPVr?V-82hv^nL$qqGqQx@r-_oHbZEIk;~n22)WfIk<%f2<7K+Su@6b z))W%v@N=RD4;TLTe~gE7MX-1{Z~p(~;k(We9?pu$lTYve-|_IJ{-jCVj)#{_mib{) z(l6rS{qRkkhhKZ6!NY${=HdSX{_VT}zvSQE1pY1ci7}d_t9(zN4^gP97RHUi3>=*Q zn4_4#Y{WUs2k4MkmS9)rEj zouw4l;VyC+g{~k@k40;6`@t35eSs&9Lz|lPE2PlCNnXceLb%7^LZp!11+@v-QD$4x zFR2MyjQEY&eArLG502^(6b;Lts7|(u+N6~?tMl5a>rILGL-YenGn(Sc#)@Kz>gHzV zAM#$_sr)hEkXZag_lJSN`8sxv+&($o+MMhH#793AxP>xs!g(ju3fs7G{{wg_lo-Xv z7U61~Hg-~Pu*7Ij;3D$(-~|d(h?gWq1kQ-T_Hm=l1!u+8L_XResG!8;qyQzS(o+%W zw&i1D$$9`R#m86qj_N&CvmiRl&c)Hu&c&ey@Fa7kJ4Tvi4PYbGyyzMAO7Rg%q6%wx zwqj%op`O9n)?yAeXs~d7=!aBB0Z=z?ZL@YS>4i40Ij(gX7y|uI2$w3L@%HDVFSz;9wgEjrPC@R>~Td{j71z$d@@&-kP&RlgiDR!w|j zA)GJ{Ng*Zh_zYMp)`B9ip1WSm)L50K=iBW7h-r(_%63h-zjT_iLjN1>J=Z@0ek3tq!4Dv=p}@DtmPWAdI*6s&Tk+ z0ZkA?sC|aif^R@9%h9e(>B65tv<&aF5Lsjy_RGi znSda}rMlh=eXH?mg{C0DEw|0cG{E4B&H9xQvim8`33&!U3q_2{s7=thpxbebu%9}F zuKJ@B7=ubf;dqX~U!{AM`))O!Go#OhLdUFZoc$r2)78XkWCExTYG7z~W^KENp9Y)Z zL0~L!C9PU5j#c2$z!LxjZ`nWl9Dw5!3E+~2vgQ012-%{af-0an&sRZQ4$p$p5Ct=o zDbM7*4CZpl^O-5pYTR*mKOMgbREp5_HpdDQsJ(hLKOibc-~!kOi{trB9Q&LS(X$EF z4*P#5_T%kk=zP6Fu5fG) zc4Rs>87%gw{vgz{Ms5RXy~6;*Lw{+^k_5bsmL zn8q5<{+G*+u$g>@a}9lfl9fM?@AE3NOl19#Q~e(#Mw;xiacE?Zr%M(|ja~ z@oBo4;2ofq8hr5ShYhseh-xHw5)3yGJOQ0cbX0%sQc9w~wpB77*6pT(4zmkQ+^wI( zCIVhQJDecwSK~8cs-?tYG&J{7A%l*6ayI}Prm_B z?0Xqk@^YfRf@oJ3qo%xwfxQ$>>aI`v5u*wtt_T#6z|f@VD-(1}o51xS{Jx`ngKm%+ zL-s-_2_q+9n0Z7p79N5DVz@XDw}tp~;tyv$qsuWwGxWvRvR!G~ax#(d=nAcPX1Ewy z&?K_7?0w^&i5w!7BAHpJg4TY3HvmrrDo6v$2yxdkG69?ofD8L0>FYUU%tZz+i~z|@ zr}bM@8i5V3HhevPB=6jAAEQ@nMgUw$BYS+>$UGON5P1v}2m9Kwl8f$3GPx*3TKZlw zluC}fbkKef5xp^26UP{JX6nDKB4$S?Wk&Odal}x}%xI3;*V?PO%6I(n)XqQl zMrO}|eIm+$(o#-^^s=g-r!D6*50Phx$-bNmP@t;UrGX_&RgOqu~&sb}LP({`CSWMfmlmz$DEFUJw`$|E{RzPXlf|tdlAh z#j8lRljrWb!8}KLO;$Dp##T-(!!bRLlU(>B@HiJNOBgZ7g^YO0)c7K7^5ZM9WX5gW zF?z#@vwRL_Ayh<>+iVb7-5iJhw0qkHm4P=hN#fIgW$fq(P7a>5#6irwgzP&fUL4$F zVOfq6B|eNQulgwECG8=w1lpn#;|dGO_li|J@=R_G$$0TsGr6q*cUGz5wTvr&DpBr= z)fFH^@iG6w!~A|-gsgsrW#iU^TsB}xLROCz>n+99YhR?Lh}_K6XNxfpZc1zP?{y~T z8D`ZSyS-7Tl43twR9)M+Gmg~sL zKx>nJZy#99qXABY_!nh6t|dhTesh!?jM%|zFqr}PbEmbUd>j-z_1$km&WU6-|C{Fb zO}ZBa!6uW{^hPx>ah|mb&CAmtyP8d6tN-}!GqIZJ7ET1r*hqx78+zrV=!(_CofD;n zS10=mqMCaTtM=~e&B&-$Q}ftN1S;@ru(QGhFbbW7tS9(rn9;Up_>pScZK!~4d&V1j zy%0l_ISc!Q2#rbf)-D4uhShvZ8)9$x(R^HPtmaGfG@`S)t~v_Dk;oq248sk+<`6SO z-)HG4VDSdh0{m1Ga`cHkF5N9bFsl{8$o`o}@ZjJW0Ayb#1!);4|7a3U8A^rGK9_xs z^m565MK4Ycm)9VXGQH+`i(Y2v#bRbevZ&M>J~!#5M!zX$l11qr{n@WgdI3L~WWI>Z zV~-BLiF+S*Qjth4??3)6Mh9yq)HdL*ma{O32)cuhU^^%C6HzuH4B>Q&@)$;AjFyg6 zDF~ga3Yqc*M}zZrd+=>8z-@|xIK-mj`y+voa7d!D4rD+C2%g6p@>zp8TF_9zNvp-b ztl*3&G;$bt9f6XIN6 z-I!33*l1JEMa*{^b*etc@E8q}lW`=+?|S5Sy*;u-*p{P`ZYTz4$|0*=VDo=KfN1!9hdCzJj}l<|~7X zwxe-&{-8Q|Ep7vLP{p1^dcV|L8o3PXzPsPyQQ`D@SFF|-+YW42~cvPkUrRcK4^N-6?}6udWk(9#tU2q8(O%EjR?f`kAdo zx0TsLr+`S~`a5heHTnRhHzG$Ph)^4y3se7Iu}$7n8!5zMn0y$fMhsJWqv*|!^%ps9 zILt3b2L;prg1J31sULFMx&?X^%`ThumnaqavC-pE7;y>I%(Hb?>VU?;46M3EBW!_8 zDRVP5pU_!<)lwE4Js1;`3VDS6+7#>+8;!telzUQ`U?ka`bezQ>!faF zh2e!j?wz^w!oNm4=|UTxih+l!z#U#V(2Pe)M9oCM#jh5|Bi4j+WAbPtdbwha{!?o? zNMj@E&QYP^wW*^b>6Fro%4~t2F&By?Ewy}2N(unuWwt~0-H^#9v>Ah0W{dg8i&`qQ z_b_H`ynF+{SU-{`?EyqpERGE98piDX5qO*=2t4=EOvpjCn3GxD?sW4tq!4eyG!XZ$ zMKNG>7W7hL1EU3ho8u180sBsG^drzK{-BpBL1T?2rJX{o&3KDtpyn!*&8JjPgFwS*#cL` zpf}UHlTTnrHx8;R7#$%lt1toN6hm#}^1Ts=fry^P)30zB92B8==EFlmZebotHHPsp zsWxu}%mzqFSfmsB&-EWR{-ODUQvx`IRLX)3{jA?6O97)OwL{Xtx{tY=7RFe0vi4i} zZOcE5^VTbE+8vpY>k$Py9Y?R;v>&-PCB%L;)+Qu#iUqO^ei6D@0>f@ZHmC2ga5+8< zlmRgyuAPC?v@Q{Ete|o6J}j7*6f}l=d|$^ay7ES9AR+1JbU{2)22nvh1Jr)nijS%) zb9@+F1A*C?NgcWFZf;oFRzE7UB*{kEt4>S35C<9LrX&JYJoCp*%)?)P==#E+i|%hm zi|h~9r|m45SQz@a%aDm!W}5UCh=Vmo7$uCF5IC%m5P8v+BnRL zp85-)J{LPwT$swRa+n5q@(0i%5H&v^;b^e{9M4HcipdOEk4D<8=3%F(Tv#^LuI)nsErLSwN_N$IhzzcMIw;p|19fr91 zy65>VYqi72DEc5}R(9vuVBrmYOnLuZvXtA%*kT(uN-WVhD z#yk2}K9nL^5VxfIyDJ&RSBkI@Xt7>neQCSi@w^9Y41u2a17CVqqcu=N%6X4T4%vbn zH21Sr3J1nnPgm1=K-M)`06~yk+CK387KbC?T_`j^WO0^R$OIrNZM zn+A`e4+CeA*vZ0;32{BYG-oOZexj5#H}B9$OemxDx8SGTLFsoVm7d>G>D}9uend)| z3tE*kDE7q~{;ggOfy=P|hi71xAjU;_p2|KA=r18B>2lrFBhz9YAyXQVqA;6DDOi22X#@)&qBKt*TM2EjA&qbZ?Nu~$rF2*! zLupP8uu6QR=Lk6BFVUY!>lX2*Caf*?Xq_}c*$1|t%Fmz2gTRGWgN8_h;Er_GLp%e- z;h!NDwPOOe<4c4Cvv9Wdzr9~lf9yB1;4YDs8CJR7+(L|$V)w%M;! zK`r};BWZ^ag&9(-$h()^mzjc%J0wXU>lAOqn_h!s%T_YHp6>7vfA}_N18(aDVv&8r zCt`6s*5+nl)LQ+(lhpm2i^4T1OReg%GGJv##6@9K?(kgjl{+CN8ayL$f=YXpd`Oog z?CpNgX`=3ieB{AFqFZaG6j*v{J!EYs#Xss4{E!*3MJsjG1&Xv$>7gTCg1PRZenBjt zc5e|ZL5@SaibiEJ1b@A1m575_z8qd``+bfbNTGpT7iVi;`8wNOlo`Yb<7;gH`tWOS zW}t5i4k#fZLTLct;9E)dZ>ksAUfxifnwgT4am2JPSGV>>QS}i@jy}fSO#E%!($=5sh^$wTTs0yfy zX1XvV4s;)T<%=B^h7D2%3uCRBtd)RT{h-Ztdu;`cgLY{3b$c@l>IT)-HlRqA**FqYOvhr0wX;BXXqv3g?T9>npjt!P9h!kXiO?8b|c zD~8$)nfyy*MlIW1s;?IM^F3O zF>-wW6?UaOwLee&R^JGM(H1)0X$uE{joyS19Et7KN(Pih=EUIJ5$RPzeFNmTo40!f zFO)9Z;N*lIo!|u9Z1{D@aZ()%KA|miqsAMgMiW2n>hm78zP~niQlGbj`c$K}h1u*! zc?YeZ*1j}*)%kL&&m^Nbnm&z3`oGR}IsRo|G6dH?Ej`yYNWxyKxIPOoMQ~^vS&-_{ zzUOcup%`MOIewmt9Yby4s_;DJJ_82~{Ypk@tA6bZ^+?1qX8^6iv!~NOVXIyy z&*px`N{sIiyNxHWn9oOij^;o=#3z8Wx<7m&CLkgJH3$Etf>Icz--FW8Uy@sh{2?;z zXR)qLq(=}q0_ovMbGad_IQ3KdMxTPp&l6)o6gM2geNm^#g zj$1ReX{ZWYB&e34ETC9L3O2!p(;y9~?j6l@(uUTq$2cNE2{w)hO1(b@zE^8Q^o#v#QscN{ zG0E|JZq8ke6XpucWJ=6NM0K3d@PU@G|HBe>((Eat;HbUF14Gy^<-tPKmOAHRmsXaJ zHAl~U3f_8q!T#*8e2M&jcv##E;hmL&XSDy*7zJl=?g$QgNp9Zog_09T8zL||``XLXnN#I7a-+@msxQe3wJ}attj?V_ z#$Dq9d-K5EFtiOXJXjsNdO^@F=K#cwh$sED%Llk5)NpzkWR{KI7DU;s9aIOs2RI2v z(}kzoy#Pr?VnZ9Ed7|HkMs`gN{z)5~uGLBBgM;m_L^H#Gd|`Q+*#t!FNM~5`C%F` zYOk8iAq*EbI7OYn*Ri_jU%_#ZpD;UNJ#oR{(B;@>4-wz&YYx=@R#)dGbaGd6C%x2A zBQ&Pa`sd5o`n@>ZvZ=5cI7DpJ%RXmNV`U2G*oAKkEdeHTJ}IdT%Qo#4!D9^ zMBB=N$wK#H4=BlxrCs}^Ka@C0L?>@g#TRryN*= zPv9gM17We|q|@C0j^9+im%wlKU}tbNeseKSbuE4~vRBba;WthC`y(;$ut@=x#QDu} z+|5dVx!;fT8*Hfmm;C0(&iKuaIKP?N8NZp_A-|cNz;EUYzbO`eGrA4G!F@u%KPl;? z-yM_au&Pc-^tT^(GCOARi%w>Ty-L=QaP}|YH%MaZc+(zg5`HszBSMS_yJ1h~Y4JY3 zBkacNV-mZW8)DM34iZ$x{_K_;>Om6Otvzu258$QDwUSzPFj%dTab~JZ> z{lIQc_c>02FFkon8Trn9@|`gGj`h5-Q=aqTl1{MdVcU`>oWTtTO7lAA;^aAPFbbQR zPI%5WomIVgZzom%o?mn_paJllHdXIU;yFIY1%W{=@Ls1y zOXNbKi%pi2@lpSjtrn}f$$I|vhl$U}SmyELA#WSc85(sH7T3C9x)Jehoc? zp%~jJf?o&i{ndZn-V0!#_DDPyNTbqF-`-G4+pp%zSh}r-mY^O z^;#UrfPmTp|E{}p_o4+Z$Gi5bzF0B5;b(H!;DI;%f+VN*qCu;1?+-tbyGnjx7b?Fm zNa`T_nK)-p+;98QKN?vUBDvD=RC^xm6{g!4fxpP^!u}EjPpaksF#`}cgC?)doq+(9 zzPhgvg2tKRx^P1<-SHz1;+u+CPwtH%ocH)V09-ioIi3&sTLM~~Z77pBFn6B?Q2Sa?R zZWDP9J_h^2#B*>QhLqT#UZFsVVtTVf(3FhK9H9+gGqg530wm|x9>{G*xjyYOr|jQi zjQ(f1i;ZXnVPMBCQ?VBbqnoxKq!GkMNzswx5gA^4^>rXe4hD2aYT*3nwG5=D2G)x& zR!awrfya9xgvA?3qAo-V6Oxzw4nn^ZK)tni<=6U=dObstQfo)S*Z%MWf=)A@P$E4# zboeKmbbJHpc<`S=$8TD6{C-QiM=Nh_L&SRmupE(2f{4*e5b=6<(Lf>M^(11|OP8a? zUUjw*@guoxG>KUH03xQ2mqff;exEUj`2~ZRUsJ>k`olqiB202UCxANm)IH*1ECKd$AGl6N%2~F3_V%+ojqF zXY9?SF$baa^NH0}poine*4Y_FgZ~nI->lJVObW*{26c~=($pZ5z!hN|gA4*+jb@U- zNd#WJ7ox!aK`7h)QXLkoTD+nisL(h4VXXw5k(+b(fz%uMZG)#9szS@7UJdc?7XZgF z%r5;x|7>Y1aIj5Z@Iowxkl!BdJ9qfn+#HwsMckTg`pz>|)Rt^0DiZZq6Kp&tA6Ty( zuO2t>PS1Y9t75~yV%NJjp@P(t^ zUcDHg#w&YO05{4{^+sMTVz*@npv^_M=jORg2mjxr(+Kg`u27a(%@I|V1@1&?-Gg&n zp@oRsbSrxJBvAFY2G3d)PprKGtSv$hpY&-+q|GjV@`!ZtL~m%p-%^6dh88>-3&J>L z!5auO99pn8H35}R0+la(fNnR96jb&q)fPf$`E&FM6prqhjisKi!)OHc!3AbR1Jcl6 zOFL(voegMQQ-f!>(aw)(K%R$&Hee-E4ZSel&?aeUgKFqU($L+B4aG;jd$OUYtA=*- zqoF?SXEM1Q{NcQJ)Zv3zc#()lWcSlNJL>!kF7kWfFG zee(1g_{*qztiq3D;bMsX(X4%7JSae{if6WBT65OMRRfczte5i?-_)%SNIJ=TIa+xjA>9Tl;s>joJ34jN~I; zRsP5gHrHz$Z;_X@jjVhoE1!Y2q#*~qhR5AAI2Z9dQ@=sl&_0#NZDYvxjXcP8YQ0nH z(H_v2VtG3R*6(*5aoIiJap)X#vuD+Cxxy4fOiO3gAu9fQmU6sY+6}D?kVNghTYFP~ z5yBc8f@9kjn;h&QjI$)&+|8wP9z$pB-GUTyGt@z{kK?yguS7+)qu zG^n-3S9BNrME#M4po(2|gIov$Xn2Ccp z1$z--g|$NNyF@+02|APxv>(~Ux=;l~K6Q^$a7)>EW^_C{Xm}ZBc_Vk{R-$lyt3Ro0 z&7)8I7ovtefg29RtI^(tp83?sDzjxBS}@<#5U^B>g{ zq#k>u7jg7X zDxiXW;Aw$V7?-1NRul&`Q8ohSFNv~^#Qc~Cu?9|MWK=S<95}|vwecA6kUx@f>dum+ z_zq(bG){%`Odek2 zsntr?Fhb-owlQ*oZ)0^#yF2u$^A1?PZ;9+IFH@bTb-_DoMB{wZBI-F{A;{jMc=YOlVN@4)Bc)!dCI zX!jcZmT%c^_TU;^Nu2f8*=I$Mkx#el#R{7-s%+3g=4&EiybF$C@6~s-6EqqCl7AX5H&JV`D`+u z$tVv7O8k*uXB%4rHHzR6GD_+$4Su`+$n^k8XCOvC+}Hx2U5rn)mEMc=#oS~V(uDRI z<0*w(L$_Cd@H5~=inAUz>y>=yy~eXwD{barog-L0;r0zOo~;Svsbg&R5TqwjkMRuR z$$~vJNuDj^DF7H=#7aR&Wjy!b8(kkfQ;p~Kd@SRsb3FH`@w^jH?bUPmj^k-nvlLG- zQqB6K2h@1()$hj@#xqL$7kRbBdNmJM!1Ke~f#>f?*e{LDEaZe5h}OEbsRP{Ftphxc zf7+{KC|8^6bWC&FtE0Gv8HU^KSmd@>H}lQN+@g|P_VsLadLK>tz+WiwxEycI+SLN% zr~N*hnnW_b*@mY2&{WVGY8gu1O5Mls%BlBy)3Exi=SiVIQsVWefyH+56{Q5n#_CjQ z^)|5QB?Nqp?4Q*8Xcb?SWP>Ad@V~<=(kpDiT5zCKhFIGJ-hqKX9zf8+ z={+8#H)tsZT@YEDL3i$xvPv-c*x0~&%mx%;mbT=he@^h67EfB{PV$#naOy?xtw z`!(tF5%sp#di#>`mWM9raZyQ*{l4009q!N*7^ZkC&=ZKkr4{;*bIhJJ>x+y6_Ub{S zfP44}!!2>{?VoJ+q*)(tfsQgjuK{ShC(Zg$3nI^eZ~;Q~q*)(ez3pMVnr-T-yUc@g5m=&9&=^sl71&4{`I1B&k6 zv^o%211$kUb?UCyM*ZC&qdEz}Vsak_CR^@+-pH|sS2JDOo9?1t58(B+l?yXdg1ssi zWu^qWy66j<0&jwiEq)MmJ1WLnh}9IruQQ#z06S;|Oz8rmM?uGHbwy*cdDWNp4m=#k zD*Onv;X`X7vdv4{VNI`DUvx*xF8qCpzwhza=fXQu&cfgQjyqERh`$%`*MPqd@%ID% zEa4v)vOf}2`vfh#*d4#e)y?p~m=lC&I6|Rtvv$@Sa$U&lXT>>wte4l9)rlkU3Mzwm zf8XDh$F$HMP;YoyGoMAW?jL|eFxWkL_3B%3jInrqzD$&6IuX2uaFXF=Z!5r$H=khu zP9`92M7QXF7l=IyV*D`JzDQ9Q#vxV+1cTGV$$jYG=;Xd^FYXvu>9PHM9DeMu`mvFo z!jEO*C;ZqNb+ZmX4a;irFaGCS7`d|v6ilS$#HkFZ{ukS*4qaV{o3;pkuUYtpkhOgOEP+J!sjgsh!`}^|g zHKp3HS`Y&dC@vi)o5h~7rOVOaXdY^bEzQ9tY+Tam!vua({b#JBrL>VyF#)0F+RQ*N znK;#O)Q~tK+ycaSZLhi=H%ilWE3U9F$G(yA2ed8N>BW`~L-DbtUa6!cJ9ViOSF~U4 z8e3Y3OR6FZVodM#geW^{9+wZLz%XuzUjzV;2JwTeN(*!Rnoj-7Nk$|{7`q~b6r$1y zi$g>|G!x5LSBJ!V3c|uhMKI_g8YvhIP0E3`7&8r9BP8yrL(zFCnF;4|QuL~0*!p`& zknr$_pbzWw^m`qbw$94n&<=NL7?OvUa1;_QfX8l(g z^~*2oFHfu=M;BH_!&s538{0rFkHh7QZL?Qjg*}>E%<{CQ#G^|)(G}akK4dt`TW4iO z#=$3AFzh1dK>U#x`vB(x>kj9xay$N%i|2E?xx;c1TUv%&$eixff3P)f$3Mm!@8!aU zgSN;$Oyr**+S(IVXO>EErVC~zTe%mP>8dU{Q}@|ZDDl{eS=lI5{}NOtFSs6AfF1tj<@ zQz@H?Qen9nI-EY|*wB$4u;Y-47+cD@r6wuV31YO4nY%rCX584HGXu=TuT{y(ge&%@ zH--Zf8eo#ixN*+$6za1tK@?QzE#Nc4NUzZLT?-#)+|J_>W+foRih#e1H!Q~w0uv?0 z`r$h3oM4=6K!t)Cf54|flNBx1_9FIFK}_#`PmP3h%0|PfDlMZb196>Dr@0^KS{<7Q z$Ghb-IKIG;%HzwE&4EW8hwp^h(+S^iC_!6}_c?yI20->I#)!lXR}nKt_3yZT*sGXG z0vjXnJ48>}hIFCp^!Kpc#@bvQ!*U5DzAe0^(A;=veK)wiV>{11WL1rLG6j|EpYj&@F^#vo)LZ*YD>)LetP>8S3j%#EpfbTVcA2xwyam>2X0{$)y!1EPwzyQA41TK`4&$fUY2s}msPcwioF@a@X zXQf!czaj9+3V4J8+|LB&njFh|>yU|!TL}E!dgfcq2pHwyU2d^Oyf3G5eOzXkkx7XaU)fIl~Yr<%ZA8Dd!{S->w7*r|Yb z7{EhJV6Gamtb_kHJ9syN`zzqr4B&JVm@7>z>rD%I8i7Br7i>If0Pp54u_0?r)+!5l zD1l#A!1o!ze=&i%1jVv$vVb!Pe76E#U;r;Lfw^kMvM#oO_oM=NngX6-0GFA-GX%J= z1^hIDhbrLF2JopSFi(tPS)YDqVq+nJGZgUo2JoReqk}UAc&!C|DS`L!Z6xbt19+1O zJWqh{vVe05{Imj2H-H~8fdc|O#RC351;7gx@E7MQ+PKvOzEgnnE#S=rzElBkHh@Q% zz?A}=W&uA+;9Ld#q5+&`0#^y}JKvhvm`UL8Yo&v$3}BtN9PZ@;{AUZen82GA@O%UK zRTG$URxImI3-}lUKdOMI8^HINz%>Fq)&h>kPDs&bD&Q*&;HymF2L$*O3-~nx7b{@D z0X)nEUM0Z)K4^Au1%Z!Iz?T@n-Av#|1h~-xzM8<%Hv}6)4dC~9OKhwb;NM!n=Mnfd z1)OC7|5X8Fop?gE3G~Aj z^wWeMs-RyrpidQO-5*)D2GHhS?Df~N7h83GKNv`I)4WahuVk8O=3UF2g>@W<)%vs- zU@{1q$jMM;+#17rZ24qtMv<3XxPXNAI0iSIEPceb_2=Iv(@HzrtqJXmv;CvJK0|7p;-^9H};C>4D$Fmjg z(@fyK0=&Tjo=V`)UY8DjXaK*%TXyhM0bXeV4L0uNEZvkc%k*8jq z5`WPRFNz-H?XlGW0CDvdfbIGXuPJ1|70WuuYINg|X!KaViDVrftcK930P*B6 zd^<#Lp*^DA>xSo*5wD1T&^s8%fm_{L7q=F!VUx6bm*a;%t=v5NPHo2Kky>$I+D>>4 z!$mkS$l9L_a6={D-;KalNQ#Ob-Ux)iT8~{b{N%V-stZDiUhjA844i3fXyP9Pnh4`{ z)VF-hZMJ!{OGPPC?U||CLlOS}iT0GK_IUsAx2K@CXt5#`71SxgUL^7`X_057X_1Mk z9F;Ugz=Qi+Pwecd5X}4&_uFs>fQMczeI54+NwLwn{}Ss_!~Wy|a+oKqPlx6y6`J{2kjo;v`uSCdtkpoehnNA4z{p+!p9)Ubwi60Erew3$WqLxR7#ZVJgKTwyX;RX>p7Avw{gVs<* zjNSBGJa&{()33l`06H;X4Gylw(A?OglLZ^P%-M+smFZdosnFrE1t*ypx{PEJ^wWTn z*>}d}sA?jm3}U2zACMZ(Mk#rUwi&yDQ$W(?VxAN^UKdpLSO<)zL}x>5P*5AaS&rpT zSO+}-P7KK+PFNp7*QmbLyPU?HS!gS;$2qSY*V^dIf1$Gca@D|7C|Dtt_i%=SYoNILQ7jrAZ43Q{+htQ)7re^YucB& zmwR*E%fT?iWtkHus=PPzriboG2bCW|2pQ_x7uW3-9F*JiJA^w2vSQ1)J)w%NhOcn! zHI3$ku-wvuPRH6pG{e5^c~R0YlaD#iA}e?aoxNCjO~J%#qVnn`*hrY^m%9Y7gzh{$ zQj!WCAyh@MJgQY-N^?F+h-gJV%Gc76oreTQ48nGMz+#81br#N?C)8qHR};Gl0ao>{ zC_j1z+Ts~n3&VWR(4Fq(o^|f!rLVY`Pk0$DK-Jb0yLAbsD^x4W{ChwZskREq@kwNmYbml5&3U}t#3 zp74aN;R$btCu|5$_#ix?IXt13I@=2L$sL&r^>uMhgNFh#sHb#)!6A1T$#23Qy``Ud zK8`Zc5&KJ}uXwfWqn}iCJIYA~_3Pk(&<{4bmm~Ou{wc!?Xa<(sp?5E^8!3Gah~DGa zANITk75(PQ1?y6@A>rVjz-g)=JrizK2H4w0o~;I)mKx^u+m#DmNwGjP7)D2x_(73p zLjowSKS2K`yzHsk892)*xdbK4Lk@M3rA7)k;C-|Y%#s^16$u|6u*$JA7h?kTzWlP|fnu$6Ypkwv zK_0kGY*`szr>-c+zm65u1_4xlS#`KH7p=~r|NV+emgmXQr(atWYr&DxlpMjzMOx_w z7Dm<;TQ*q=yH*M#Ww0>*YH3DMD9C9PbOH*hT<~&A07W#jh(alX3Y*jwGo=VF{j*R6 ze-n$SFp7BZ8k|ai$;@mswS`@n@y5*fMwaAeFbEA3JG0>HjZ3pxqc{BQK>Xr|_`=U% z^)pQU3|BvH_2XARL>D00Y5cI)_+eY|6Hq^Qs-G(LbGQ0=K>a+TexBfucF~w;p>d8p zv_|fl^uN7^)h2#hb0Sup@UzY86Yg+v$JvG-?j6I=?&poR^e}%Y-@*!mTa& zmO^pDTW-tD+wikFywjHEB|TiN9+Jd}-<2Gm^~Fl0sGob%k-woJ z-z_|Bl_kfRu`rV2SBUxKOqfru!88MEAIWVb>k?zs*y4fGo6UMSgJz;iQaDcQixoD| zAKL^+jgEHEB4~@g^e{|+$ELeNTTOBQ!lZPwFohS9B_!ughy&!+EzMwy2=Spx=?U4V3%-3(zWv(0{1&H&Nghu} z`!|M2*eS7)5N%vKq{-e^gmCtyhob3$A+b$?Q}EXx_MVbX=Pmi4hQ3c z{Vp*sh#m>kxPazUy}$kogeKcDv@O_(^dL?4>dCS^OK)oWNN;`>3wcqpAyfA(8kvpb z_zt&M<-{&0P#g;l#x2eVadSQ`e;7q0G7*+?&C_9T-vyfnC&m13 z+`y#H6|>BGY@jyHwzceyh4S&SHZooE?J?jLvlNfQp*^h9I7VHx?he>2V`-L$fv%z3 zu|*t=^5!RQX8@~6tk@PrYD%?lxB`@s791A~39q27^cLN5K+uOCeTs@v1jKk3n|EA- zM4U7(0lvpnUD$&HwYwS1Nq2OnnYB5s$YG- z5EZX+j;@7LIt1lY{Q?EbYZp$()0Z&L0x&T8$@W(j=T-_rS%W+C!nk zX>;dbZkRi0XeTbk^fc^?04*yVh5Byz0E=%0&_7R!}S3)XJ`}gGYH!r zL_{_GLj+1lX8aJT|9!SQGAGlAj58lYzm)0GE~e{nr9172i+V{dbeJGUflyBxoP_7wuKAuujKM zMzUoBaL&d;Ie4o&mxrtNo#Ruzrbar)YxK?W>Ms)tgxg>Db>~9Ckv}8~1@9M$Q1JGF zxKOYM0Q$GR!!g6*$zI)!LIG3GYQ10O%XjdS+Y1p7LmOts4Q3N_&xn2^SzaYki#F^a z{F^YtF{;q~>X&~Li#Hq40~rG-%KLj{@AD>BAoqSs=A{^xdy_ z$n2d-HEZL_;dBHpUmKuAnG!e-mr&U@VP4ztCb?Bfoc$CQq&iUOm@n*Hbs)~p+X>=^ zfS)9f!&Q3?OgYOyeLPUiGo^A?=G8J**BJIV9;f6#fV<@Z$W#n*1jiyXx{d8i=gAA|O?d^?r@+#*5cX{D$Q?NT z`6At)22Gt$yTFWUc^Y8oEp+Hl#9h| ztAvkxvWSg``XniyQ(v~cT|B22!iLXvhp&g#D4Nk>tS=*;6SCF>y{=f-=;ahHC6W`J zPw)h>6|nZnp3q*!cuw}0T-gX?STz{ePa!uc{X3yF3)TJXO6?>5T^-~7tHMt3K5k_v zct1-z&@tYVB0edcyBYDR!y&(|v#R$z)JfHU;}@L_c~ZnDRrMx#gtO|{W=r@e zqwZSHO?m?cV&XH9rEnSO{ZyAgcWsP;Ll}NnFG7JG(&8~_7!FaKJjwmxK@R&PxxzFS zZy+=2oL#qzXL&UKlXG_h|2fR`Rp=Mahz__kI3itb^T2r;k$7gGrfoq)kqq$uOl`n& zZGC9(N%qI<;eJ8K!AdX)0L|(TjRm#{jI+9Kdq0pbilVl#?n^i$xpQGkpI#IC#kAr5%Df> z#0&6$Q2Mm&mciOYr=xyuKg_TJu&f>>aV;k|F>+wzpv^cDmo%>fMqvW)hV82hK}eAq z$A(^f}ejZ6c!Zju{upSR|Le2a51rIqu(d`-7RK>ueqwx#>ylf*L zj*DTf8SnC1zSjaxD&8gfd!k1}EMCW+*(a;v$H8d3;SbgV0Nu8R{`IZw_AeTBwbBIo zf+t;yX(R*_y@iZvA%yvh@yMkelQ542z+N>vfjM1*Yci(`@EaNRbK00}SGZ5~Ox$rn zAX;Tn7?{Ey>`T|j4r8hrtO)R7OIj3Ox~~(QM(_p0urh>HTbzPLVJw8zQz=*w^%fsc41mlr>J z6N#)t_}y?>>!w53@cvoI+@EE z&ZQ=QFT=4mlQ|{s-0$n|+K8 z+GhkcMyf2_lyl_bL5Tpo4;AUYN2czBAz=3hJ4V)Myyj!(Tu zv7|Cit;9ITKky5%c_-LX`#8tPbLhj_Q5$~U+VzNMz<9=6?IG@q$7JldPUqn#Ao z`$alINEBa?M>{cf+ae^1M`HjG^f^NI%u5xe^M?4fHZdF16n-z9C6%|sOZ8MkX?{Fn z+~IsX<4-F}Qs`GbLj0-^IlH6=p{k;WTj_cvd+xC!Mv+72_z-kme|OvCQXwsfPB7Sb zyHU+$C$v%tCv3Z0v2mHkM-L|q`+*UN?FSJGvBY5&h2&<1lD`axu5gQoMb~C8tn%=< zNFJ*Ynn-I_7dXexeBX$zfM6DgWD$eXhex#?6+-(y!_Yy+3j$ZokNd+i(upsRnkJPQ zw*2gb%&-}{54Xq;l*tJX4xOLm0*Tb#D2wSsweI?@=StQkd)2oDRca^%?BEUeuU@U( zCYk7NhQ$qLKpEoigB^dE%tJq9ufOp+4jJ*^7o>JoXfM7DdgoC+j^qV$`5y;6ju+6#%9*UwF)?MV&C2+2y@8wsHcM# zIsO@ZfM!Xo9kxrLZs`y^!5A}B*TZgUpIF}T#ylD7p~CpIUWG4 zkeOFu@><-(aLde60TaucfR6d#fS)AMvvb@8#F-6!Rbix0p#SquEKNo%V2E%?XSjA6 zr{GvjLD(gy(Z&(s))0;w`YMaRF?O(4& zW~2lN9|(iM_k$Uc(Op`Efs~x1wRkq-_2Op9pM{xT||GO$v> zD28#995}hQq5LqC(o}+$sjl7yi4|iSG}shkc7sB4Km=4SL!aCKr&#n-tf_pT&sGQp z;e8>R4gWm6H%gk12Ruzb70}XIeBtC5NNK~5D5!a*(8VmYRSb5}&ls}%j%-C?DP&^` zL5yK3STzWxs5-d@8A== z^j_ZqX~^@2)8bNtDLi~SnZh;%GPLOtUKNmjm0oJ=P#dx*xP&NjdlX3$Qx&|LotN=eg8h&+%&jzq^R zg^}sd$)w@&$ObMx0SptZs2IracnyTLx2;RS(OE8|dw*UEtV6a+oN`EIZl-ne3^g`I z9WI}UTm_1yMJ;yk=mRlaL8N0n1+EZCq=A01`9Qi836^CkRFFo)@3 zwIj}#QlZNZ%#>Lptk$LJzQ`4}n$Y~isX>oKdEBnY4*q~y7(8Dr3*}tZM&2Rrmcy*5?D85nyraT1cSNg ztFQY6AR}`+$VVo*xA=}@i5Se#x?zyHKJgjqxf&m#z)8?0f;7BoJMEdnnx}j13lC1W z-@0+SefA#PbeDZ$t^PDH1g z7YfSI!?;&A*%g!4WBo=fViDS1+8#GeTc8(F^T%Gb1D!!Cb9)tC26$0jgQY|pF~Akt z9z*(em*YeGvIThL)$YhnLsTaAnUfJ3f;@fyJ>F&s|UqPn>ua6}>sc|_r+LzIQ zXrm`DwausGxHH{ou!niSsKDj|Q=x$sBdn=Ea$`>*sKikYPUu@N|ZQgGjdfiQ6g|=8??i% zZAS7#G-Z<;2^2r>;V#(hij)Cin~eP9erz$#9F(O91UAeUxh%a#>%ruc$GVF~wZd7Y z=#KQDz39qb_Nq#>U9v|OF_ob=G75Rb8iP9!s|{8SD(7TBcaaStii_qUf@M*8W}qxF z+hlzZn@Ugs0)>(>m{foP-mcrOCJ}V)U|Je9&{dHD$E*5P&^Tkf&X6FnTq0(+8Q-K8 zqLX+}UdbCv`;hK>_q*PNoHaUA&)@enw_3>2OC~6DXUd6+bqPPt(8u5wtScMH0Lf3r zECWR*>?XwipJ^9p&k>)r;c{@!ncyuM3ucw5kPU`zR#vOdHMGcHDovaoW)sI|>XE%q z!<*5~mF68TQ43HHnv9cAY+MVWHIPgjr^M+E8$!|7!XAtJuK$>CV>ixyRN3~23WAi$+~qV}S`cs&+-7V&`UT*u>u!$Am$ z-B42Wfe$C6aJnOm>b-dH++FDD>+fw8wfe5)bD(vU0x_iGR*?@O8X}LgQw&(~_>OiL z8h!nCqo~Pu8Xrgu?SSmWKY&q{59bArS?eiIL4aa;Tl8&DpddVAU>L7W0sG0DMda9# zO~>)Y?)wf5$-D$7$~U&<2%EHp&KN^6akNCBrdr;c8_PHL`s49-IHSQ>X1&^iEzU~` z{IsKd6pqK&KkpwH&-Y6Dy5P4;lZh6!?%%K?!0n&b|B#sJ@X~yJuWDv5pw>SGwZ_PX zj*uK2JY({d?;}b)N9M&5o!$sQ+~gvsBVRysa1JK{Q8hC&#dk&5U?2O-!9Kh@usaW% zeQ}fJLB}_xl>PhDalaWDnKT&Q%A`FBh5**tw{|&A&ur^vn$Xf(!|ZB;F8%NqP7pv# zo}~yfMEDm$a&bm|S3Oh%QU(zXS;+P`w>=-Vq}P?Y<|p&l7=h85;6t&$KnOGb`Q1sN zEr=LB8b=Xqh=SQEhYm?mLmVJpLB8XiZ9Ii&4K|&I`< z*EFHTpvq))W9Nm}yehAx7EdRUl!+BqShEdeuy8^@oj^-QuA9?UJ6b!V) z;rXcKV)+;Wimmm3L@hKVa1##G;tmEgmk~%dXs?>o2NwS4AsZ070weafpDwsk0@2kb z^_d+vbGc6H4GrNq=(3aKC5|`)1!4Y)vmVMlEMX=Te72gSR_qJMyaK_G&;CNLPmrtV zN1W)qID0A7Y9OqJ&0SCRSgv{!bA}&zwk)LNQ5W*)rRv6B--d1D>#S#6nrd>YP>}!Q z08zrJjszWHv~ZllRm_hvBW>A&AzlRJisro$$*YXzJr~I{SFjL0pgf zg~XRil>Q@@)h=u>fwyH4E3ee!3uAmglFP@I5RWd^_dQ;rVbU6(xg7EsvyJ@8x($%v z;!HX3HR=b|qXW?xW~Ge(l=C2hgL<>-3A-8WD^qu}2A#C<;9`^N`AV9S$A5zJq$#?HHbvPki@@lX09T? z>>#s<9c8J!%P=LCSr~rxzC&ztPsC&z*WqosLy!3bg09^=+x`$krEds-A}ls$8t%Oe zf5(85!TIv`lFAQANL|P)07WkB;Xp94W4+i_W$4U}6%{*9a1ZLFV|fADMXRjGW!<*< zP6z3W6JNq`zeSb)g^Q;pg|<&$Xx(_a(t4H3-+E{WM(v#RWVD7ZND~7qtt0ETHm!0Z`!~ z7Es(IJR~x)s}i9)oD+3YB0wxnXtFG5$|w#X`2-xYazR&`1y7lpK37i?ZVW#=Nw>z} z0WkqQ47S(>Jd5v5m>^1A2v1d(o}Fe3`QqS7x8RwkLUS}cveSPCk3K#ox@c7xnt=2f z_EjQCf=lU%AXzc}2-W8{4b>T)p~|qZX$2Zrmso(wHv1XCM#ccEivZ^B1Q;G@1Qxfb zihB~K>){-!L)gYxu+bGGhEIneWkJ?~pK3*|p0d(ku!JuRj!qek`en*qqFrX^?YH62 zNnl9@g0=iGnKBX=-c?CVJm!@+_$NbWg}W-o_0?Z)Pq}mP?I}mye|ySv_^;rB+f&x# zzdt^h93MK~pEFN~RaA#i`v|e0xka_e&xJgy@FJSfNz!^bNLn>1RtkV7A0(Q+jg#j& zfvYICmHHVpKm+blo-38ALb^ye@=&ONg?J`b$`OQ|T#Qq4fC3P_xy1SghfOLDnsmH1 zK_&ucxS>z2Nc=27x`hXVBZNJAXT-57uUAR?hix2>CpZQY`*8<{XUOEB^>6T81E#>4Fa3IPHHK+$44%S&@t` z2ZuH343A!qJ5F~**Q5DnuE({{$a<_qLW6v4w;&(!KZ5+$r*R-(vaqZ5u#|qdsJjY8 zdW?IBJZnvT7mogjd>#fhl={phu7KMC1Ly-4#`OcrtLt%t4BqabQxXvA2q-VJ)R~9g zk9)>NXtzRy8`0Z4z80vnm-MDuxFG&YV+2lt{u6%GO_{jS7;s;DnIb}L;RNkc3CiF` z03|H7W)4NKBKF9grFjKawi^-Ov43gGQ9y-X+@67bgs8jYUI)s;b3m}ms)Gic<_%QX zxUyhKZv7+pvKcPbKU>R5LYd zFWy=V^`_LXK+PxtyBip3*W?Ap52q#)N;!U?3lh0{L7+B-1|Uf4C2z+ILyrVO+MPjVBnu+c=JmF>%eyA0ywoQyD0 znV>b{=g;;Y(Zv@%M~d=3yaq*+r8dx2=c%8zQzttn;jV84UNzpp=RG67rEr4pRw#S!|Ah%y$e1c|MHmF-9F-4)=WyF5$|5qSnug zd@zFTtZwe0VPG%4F<#>}qeI7dAF+SE^UpBP4+*Hsejj zKj*m>7n;Y>4&2T6$RTe%AX|d>d}&U!!y71R0(yI2Aq6jizwaZs*t=dUW#7T#R($%9 zpUjdb_3z>=L^OFm;bZ2j*2lNx<2I@Rt$H^{>OF-|ZnGm${A}FUo{_I}q~c}}7^`0G z3aiN%U?4xQ_}18${K%I-%a>X79^D=AFE;}IB>;YjI%N$7g;y;x@h%;39#2^L4uK>! z@TW|?=H@Y9)tCC+9-I3I)cF{Ld*kneLA}?hD)Kpj;+@F;Izp7ddK6w+3$5mt5I8;0 zm^8PB5D$OGv*xAyX zVMLN}riYuWJ2IxeY~1fM=U0_JcYBH_tvS4dVQ_jC7qzpGsSk?bC!cu2`rDShozoNW z-1gMqlwqk}TQLOUYr-%&byW?66m~ajW)BahpA38DDSa`n`Q<}Wme%0w2_FS_pptXzHvP+^lhjV3IplSA%In_2ZzDK0-4i_XyD-pc3Y>w? zw%*}8R66im9mKcnWy{mpa&6d;=MenM+wTFzF~@Cl4Shc_?k%VeT|?IeN>&2$w}3Y* zi#FihggP^?cK6JZ5{yWcBjcu`gRr9RwJ>k$=^T^pvd2NYlqgi zm-~2hb1? zK8`=}zG&dbPJjCLl>6}CPx$YWXKqi~ZT%NHGRa(LT{@0pAdjg^V9x8oCXslNkd^VI z$BXdR_T$-7ialtXdjK7IgV`62#|XI{@2vY9x8vF{9#}>AgkW~Y6QoC!(#D9YOo6+D_rh{)quK|vI%TrXZpMm&_Fc=AccyR%iqmI zKF>T*=(kTfEhhgqL74F{H(qaC?NCF|L|R@IgLvRn9-C7ZZYr8#pR_HIuX{!VN!`nr z)X=AF#L@0U{ruf13uRVAAU~;pW;y3g25d2~7S(|+&BbKo;=dI9cenLlY`(o(e;6mR z1eJDo5Cc3pSWP;5rP7gszz72>i&8Nbnhq9!dU@lB3XYxZD&_2nx^j-GTm4Bn zTh+>vEeC8=yNouNm7&%kiEiZ5j9dXLL%pnXbAegpJ)`;=s4?NPSf~Vynp)|+`8`JH;S43;5?vUIe z%>7tW_;GGwj$8KYV~&g1KHj^1C_V(0P1d%VV{17~6n@ z5e(bGbXu9ZJFN~K+NLFutS)wmc>fbVPB`kI`4-F}`r(p9`^H3Lby=ST`E(p-Z2k$n z(B8D&=0|um_6N?6dTYN8cb(k^`JA>|80^D;iYi%Zo1jZJ!Y%%<#k=AnD75hmV4XU2 z`ir<~!Ms&g_G{E9OyELq#nwki(7;r50#iD7U@BP9JCc+&0$+mYoK|7Ld5CS)w+CQD z4QwAEWF%20PA=aG$5EPv!4FErHpt2iz{HpLKs8SB3K*%R5g5E_X9Q+Tz@0>WoOoxs zvJkou2Aq`QdyC$ld>G`{jgJk+&AsBj!71+;yj=~gGm09g^2@{WT7qa2t>j zc_4zR&UppxrWC9PLbq4RPh5vIQl=518oY2I_YPf+r+0$`PsRf08fojp*$WnfELR^$ z#nUu!H_w^`?M<3{-kG`R#caTjp`juA15jSK!>TUZo0}Ns^r_3?2g7=x41)ixZp|HJ+rX9O$efyJ)GJ|yd|1vg^0k1Y)U$BQ5l;j<{k<-C$p z?u1efj1t{|K2ofVf1u`!_{jt_ikt9uixyvH9QkJqGElsQm3T?l*Kp!R8OeHSID0ut zfFM!Yb)5m%p|iefWOZL(>?14F9h^N4)ZZO&_w~N6ulnAcGWAmv!_%WFNWiEK{PHGh zx0($z`$@DJ&OYmI^c@`M)L%ayH;;O;HpuHfASD=@aNmtB;phu2U!94TsM>?Z&KIyREv#k-`qnbEOGPYhUx zE#d4-kOFWV3iddxvb|6xYqrRrp+0?3ON-2sayq?djMrvFTr*2F>wsuBIXVgC57Y)d z&M|VZk=xT!W=PmO(89YnkruY9eiMQ8GIu=zN;rG(!oj$@;Q@Kkqvoj%xLyFjD?v%- zcXAq#7qAzhS+#ZpXF!*TlPC4TwK!;p`i%&t~>&fp9$1fG7ryKHoa_$oXdJbu*Mgn!}$4@X!yINt4Gm=5v4#=g5R; zhAnD}B|8N3m-t!`pN|ILH4Pgh#cOR02yL~nO8twTv$!3I=_WSudi4<4ND)(JuYQm7 z3=gX3u99Jyo5R^R69q8m!R*QSsut)km~!>*S)4|GDd87ik+j%9+tg4|ETzAx3|68cK>RENmcgyXslyaBF)Q?VG3=CH5u1f`ZE5JwD5xU$5A>rkVp1@6TGdk8VX+9Fn55L^lm zcd7t9L=3nFL6GD>!h@1SxfL_QW6JPW6`qhi98sY?F#igzjpnB@P;}s^@W`=NaN8U( zCnWZUIj;<~#ZzeH`jLRK#d>ub@UMM7FOxd`815+TcSu?mf(BaEs~qw2(FA|y>M!6{ z6}OG+1fMged7^k&Ap#K?`N4Qs1jNfgE5pq|i?c$QQ4I3tO!WwEQCGYO=m>*!q&8$6jc%V^1iyt`WejbQxAisF_ACXZj-y@Z2X(FOP;uh8w2ub z7{U-TLv2mL^^NQS!_VWHYe%Ae@t_<)D%^9t%)DHE@(x9V7nR4+I57NlkSd30keCS% zr#vW3!o|nemzd*o8Bqa`A6idH;00oEF|^bXOdTVbiVXu}Lm2e5_+Y6cuR>tM@P)m$ zs99o8a!GkI0`KvK{!R8Q!v9a85Hb%#8C!T3e^KoST(aLJ%mn(}K8M_!m6K$ww5+ zP+tE!lY*sq)jQfiPY~%Q_FVQa1=|hlQN(Y7|OA{V>GM5#AX2& zQzVXZz4h7lJ!?=tfd3}Qkta+^FwUqGePG(lKnt!1EwJp%>6wANUuMRGAOL!1p1i%&%zT3V*2T+G+~%yChiYC<&gqTf7fq@{REN5{Lsm z=J}l_0Kz}0ogx#Er~Z0drwL$?-NXqP;SLT%x2>}3bzgC8+i~7z>O}`r*sM;$?!ZOF z2tp(aO^CJL=`yP0-GS+SyR_epVwE?(hpQt!02dPQYPGkU*?X8ZpkXZK=(nsaw!suk7Q!>$|RZt!^ zK*hoNX>EKiHjBe6Aw%29-WI5julO-~-$Hkjg={WSI~C4)e03g|mmVY;tBk^a<0mUaP_;S7)$1%2n_m+)?Tf zJAzIV%}RYTA0)cNFed{e_xJ|kuI+=-`yrh3^)62OdUd_jo{rxQq4fMPxNgp^Wn^f< z%0Hmh9e|FsnlHzq-HZpE7LBgS+0IXxC(zn*lHXF?CEc(O6Y`vekJ^S1pG)~!>g~Lyxpf80uKl62;K+HcAJ7%vUbP;70;jR9nEPAjo zL>K@sM-f!55#L|VRvr^o%;eNX41EX^dgXIFYt_9|ERf1oFY1-6SCvUG6a=$PeRado z@!N@(Qc6s4-f?64F4BNgHD^i#1#I9K*FQcsC-dU!LqCt03gThmg!)}^P4MhCb@aG! zZiPK4?-9X_LA=}qQu#)=oQ9w`(-=8{!9praf+Ote+CzKDw)?Y`gnr;rJGXq`OUW(9QTYKPmlLGa*pSIY!i&Unx`ERLxoC|17dtmNc8dFYG>z9m)NJmBRbE8P%=P{>h0-|F}W3 zf8xKo@l@UQk5aBDJx>C29Wa5@zjFBtw$b>b9O=}IrV&>bmNGvuw@eD^@`1VKNCg&F z$ft#s_|r6Z8ve!Ujj{`?m~TeP&O<7&a1rwY3-8CDrn!&fU#skM%%^AoQ<*U4?#GLb z!1=yZpFMi6$rob2D`nvN zkV=G1<2O9q&}FZ7_p1JK1VqxSKC#kVuS%qX((6Oka)PK%T^ttGg?S#8@yZA=tD;^sFtzD?2babtHmK5l>Y z`xF@;3t@bu4_%CpG(-*4C540pAJeqP8sF?re2bsf zq;2P#uE*C2e=t8sua~7Gol#AFb^T|hep);Rb&Wr)AEOiM2&?}aentIlQda1kdKRKA zuGvYyqW;nE#NZ!gk;9$M%==~VKP0%I`(F-05Bq<%i~7NgyCpYOZ>eta1^g@yFjCMR zR?FrCq*>S-q*nR6i4jL7?2Q(6>VbX$csUCIZ%D+tDwU~A@v~t*R;~+^Ty|A>+fULY zKcmU2Zc4qXOYyT2d`xImWSi}K{3kNOLR$1TEBi#y@UdK$*2Qq6otFnzACfcLv-t+b z4NR3ui@D+zY31pIrwA=ZXsXkjTjS+mn zh{4vPmY?`m(h%<3!6BHBIZzDKl7~M8JCRnks7Lo>@|xr`Pf?U~c2m-)OY$@ShXMAs z2Ezev!b2<^^kt241C+6GzqQ{0dZfue_&ua|V*kXapT+Ag@#)Qov>u;+_RLrs>!JN= z)%b@$t; zurfGVDv7CJjGKt#ACvI`Rs&?Ga;)*10b%f?HVgwl5*m_mz3d2hD}yvFYSr-O3B0)2 zH(3|^e-v^;tc!gjNl3=uo8s};FZB+J?=L`&7)8wDF3R)%hCPXkDxU{TRoe#iAWJ2e zGweaRpT&P4{ldY&Z~G9`;UM*YEK2-tu5B;-BD%dbeQ1KzE`I;-T%MTT6RV)<%Z1Sf zB)!;?Sbh{VvhnSW!UHGq>65-rtba~PQu>s{`gw1^Z0`tM!V}uRJTblaH;MJf zHzuY>J(Sqq)P0Hd=Uy30OFX;TUsRDOH#zSYnM5Goyd`7rX_kC~j6RT7G+_Rt5p+l$ z_yGKKQwsPjtQmqw2GZK=@Y@@#>~NWf1P87rQyUycSz}6C$A+(ieScz3QOA^vi`Gsl zQE#$7L(>k(-&j(+(Oe4yTJysFc;~=s4*TI~w+WNYG;iA5zMdDF>HR$c^aTYPB8ozh zvtE6UHUj5|MvLUYhSn|Lk$KPtKs#{?L`%zOL$n0ZRIZwFaV<|*OP_A2M>YX~VD_6c z+)}_$Rp$)g!H1h8g>^Fvv>Lh!%|ZJ zkL*O&7w1b>%pQa{2ZupZLE()aFoaVNP)OjRmCU#PlfXj2)VK~dd$D_i%Km`|u?{F` z9ui0k^bm5$z56L61= zjh`1389zT;<7Xv|Usu5R-}zq zp1Dc=!H2QJT@4B(+jxi|p-I~HtzkQ*P2KtwfM&d_)Sk34f&nc+E{VM zCN{{jT$KP;^_c)m@_$IkzcHHs+l2f}nV6raQR5n%4?F=b0 zp74xF5WhvJh1a;5)I0Bk;6OT5z<->SGM`8n<0{}8<)*ouKZh62M$jvpcx9_u?fW9) z2aOSy)5xrXg1<@}lCXIY!$c=(Ux6mwysFFH3i^w3I4|sVYpsFl$ttc{gMB*BHITAZ zJl_U*@Z2DU0qU%J%rAHh+cFS&Y*7bn3R}IwYJPM9=UzRZtfa^Rt##gc=hw_{ejQi*zPjqV9swBn2JhiDPW>Hm zFS?pqe&p1CK8ajrB0RCB<|uN>Bw?Jn?K7W`9%Pa8jQ6v1&PzQ1j@X)*-V>{)`7ca? zRsUD)r==Xt9UGJP(~+IG&^ezUYzxJZ7r%Z*|CLxkwSPl$|39~%@7j4VV17maySP#A z_|^S?@c*j+GS2`0w&d}5G5^oDA8g18^AEo$9Tql`rh%q%M}VePmY928G(r0WiW!&L z#^@egh_rL|h4Z%oan~1pJbADQb>ST5dxPm)v_;BhwFqvl;fBz^ap;h)dCd3J40^gs z(AJm&3*=XHG;T-&f`1Y6_!l6w>Ef%%yW@J?JW?ib?1+`kioNcgY&0g#+ zmRkWmsKH8T=rLP-pmTOT%c(xVtK!-(Z8d+#IY!Q;oQK{t$XCrD;IHE`A7e3(c`N(@ zJ~Ck6l0pwzeZ@GMR}8~kXK5$Y5*5c~_rxvZFw1_{T&Iq2B%`gRo5}U2>UvbmgSl>k zZCaxP!MS)V#IupM+Nq)l$HwBhH;pU~m`R?f4!Y6~;q8FFwtCO?;Y6ek>i8zf$gCZp~kV2!R{W9gw|rf6=}v zhW>5rFWNg5&+OFs&IwGzBk>c!g~{!cny~TT)`uZ;I6~qDw5ZIlX?M}0oRU5D3+P-E z>%^T%vHPjMnwzQlUjhsOu`br}lv}tR^UNP~R^|Sp15;tQROh=G?S{PU>%DIT1Uz!y zqSWc{O8<3|7wdlj@HUu!CrIY&Fn9C~v<-1`VtqXV;JE72k%#vyutV}VyaH|$rygTG zym%jpGlgkGF?!SqRp7i3MqE2!x(53c#7?M^?TELDXi$~5S$*>iSla3)S}pn^YCt)5 zhJK*DU~6b25}g6vS`RHjUh%*7*AGGn^q2lC`vZU3^VURua&e!u2>&SiYwBNP@-6bC z&myF{HAkEn$f@F;fG|ufs(1@@Ucqv%;FT(Smn>g4&gT|&|1odM`lU#wtRJr2M4|dm zGO&he1K@p|VWg$;VUQu5w|-c`Kt*Pg6NCVpB~W3wzV4D)C{ae*L@(9iUcYl)8e*rFze zMVJ5q0ad6XD3;s)k{W$kae}FLsu?+P*JLAbcL!jO+mClIO-kDn_H*Fwr3w3)^FPX$ zxLzmO64z_<$FcQc`Nc+3`nlM8Cas^vEtZ#<--s6#u5s<~YIEFCNC8Uy*BMFnjJVg< zv+*GjrNL<1-v@3l#~A$+?I&3swLWsk93R)rsJx-0X|QA zY|DygjSimK0XT8%rGt72OzJQ`Ug-ljV=^!}{P-CE?ZkgytA~Iscxlw(35>z)ptN}M zg&epf5B(Ty7JLn7Jjf^`%`zjL!Z&m@;Uaw2rqOJfjS_-L!vJVje{T@Z@c^O3T%|4n zLmE1f01CXwjQ|PQ1V-9<;{7@SC<4f}00d7%c+u%10N^!W5Nz=Rp!+5LR1T04WSO3& zXA$bzt2nU{&m^z;0fM2xaMf1x1j`3KnO-LDMS}F)V0}IeXmdvf?!>-xt8;>|XFiiKr zl`(0@(`k5^r5oI3va8IlA$dgU}gQ@G!TS!fFQ*)bPI@n zID6*==!bykU>L7#@C@B()bC3J7sim|*svQzo1@_HJuaGu@_J?;MP*VQJ z0RFmw$ZO!4W(?i1f;)sG<@ujU0Kq-XI34fXdh4;j`qp!QVF&cB2a<1KE_Q-<0~%-p zPbu3J74B$*kGSdHz|Dn1?hV{rC=|Q|n`?M%bJcE~nTI3JO^IONdRI|1H&}ABaT~05 ztu-q8U%#n7DA);H32 z0ndz~cpIkCsNUXzN26x+7r}a~x<>W`1lb|J7)B%IizMemt{HlH*BFZTdoj_3ZsB$O zR=qEEW`Ejb+m_X_0IryQ#D8ak7T4mb31HDa$4p4>zcYsJG3pPX`hnD$A0|{1(?E<7 z@42A1?vACF8+hJm&qwj+Z9+Zu5uFTx<5*I-7GgNn9hoy{O9P?z1xYRbHWtqoCpEMW zTV3#1^xqE4N%i?YGJ*b{bV*9}6~d7VVY)_uog7QSRv+483uwok0QMY-rK+(f#ySEX4d?yhiFsi)}@=E#l z3TFyN70l^oHBw;orRQ%9Wk~D!YnZHuCbrt*od!Hln zohmKDg|e4=p(8R7jOAT5LyzlF9ZAc&lIo!CRw71P;@3~^CwJu7MckhU<`$2wNN50d znCi!B^-{-5+y294A^nATd5Dp#`{*7|!3zLb*HMvmwMEzU!sD%VZ4zVP(6s6wQ~k#k zf|2wOimj={<^dMB2JFf{5uDV;kbGGirvsWMKBHWY{!juh$f(bdmA^(D*Utr@z?w*Z zHaBK17hy(3@=nw!`F^eo4*bt#@yI~4{4lZz2kuGk!|Yl2n5(cN1WL~1n=r?~p4DVSXX zX&>mqcpT|^P}+W43M4dzW}-l}9~+%uO|;`}^uX`n5c3X2EVR9Nd2-E67aVlmCV0ad z>D&Y6FhaY`W>0V+UTsK!+g+403Fm(^!ggJfX$-CRrZw}ehBatl);jo4M#-(V&yBp$ zlVE~eE^0{+od2x2gZ=0lOvMl;sS<}fb%P`OF&+mV*2sH}iZ3I~HXAV@8v({4+4Nzc*VFVELEieV_!Wi%qQ@{dDDM0iGRLMQ@8X8{2 zPu{>X%7%=<90&d&MOi!kh}=G~tU#xn`j4UiP*~&+ETdEyB}KvXtlOQ{8I_@n;$UO#{mT+qS96IQ~Gi-Wq?N)#|L*Gg0|al4gx zoQa#QL>&|5I`QasBuFPJ8`G$1v#U}1!)T{E&njX-Dw|LwCtBnvtH{#iBB{|Ld)@`u zjUyr33@oeAqpH+@rs+Rb_|r6J9{$Ct1qaV%_v0sAH=e_v*Rp_U%Do&5iyJalGz)h; zoG2OX&z{72<7yr-%ttwS3@>vGy|r*=rqSK0h2BmrY6@!y-eeK&Z1ux3Hn&A1h;HsB zX)di1a$Yuxfc$TAA#kf?lVLU)@3nTkH2Elt=qCRfYZ9)g0^#CVlT9NAl2S)n=Gu1G z@)|Z2c$7sj6BS$>YSz~)C$=?a@FwKok54{`D@wW6vI{|)81Joa+4DtM8EpBe)*q<7 z*9b)S6uhrh=|;h>i}KV+>sP57X8o#EXXsxGdCgQOSP9-Ll-)|SG113L>|)};25E62 z#YpNKop`K(j5^S*B7$yP^ar5ZdaKCe$wgj`7J1$(!tI{W%Acb}=2=B5lZ)IME%H10 zWlqc_6%?F{oX5e%gdFF(+AxT8@#sBsnL$aF?|f*`_16~l-PgjF42{cL`h{fKMX6o^ zy3=!#mQz)zt^FXQGOYfH2+{LDxVX*g@0v(|%!u}~lN&4^VcEopV>b4S0e9*VxvWB7)j^9zs{PfArZed+$W~ z=L=0u_HSALGEko_MIjXUa6XK)1ZRn6sUY(=k@W@B$a4XbfVtbTZMt;i;84^fJOKia zu@C}PSyeLerL(noKq}m%E3incLheB-6zK{q602Ywq(X09fkk2!79FI*)^#!l7Kv3@ zdXNgw=?W|otI&3k3R86j7V!p`@OY3Qd#&oxjRfsgHtprIjn|6U{BQ za-9h+oThUhE0El6zVjHe(t6X}q3_?8v;Z+M@Gxe03AeMnFz){^OfjV%#2)Iu_yCq_ zVO~P>ZB}k>LhkF58+^>pTpk-lh_mL!=!c%>dvq}%fd>R{5rj_;3d70~TLkzNS&W-? z7YH|kEDhup$RcZx1Cg|ZhbSb{uB-GxD)dL5kd()NlgST4p9Np!fyS#$m4m4Lyc}NK z3oYsv$$44MD&9R>)C9>{DMu4`P>Z^dIW*QH`5NJXr+!rN8}qWuBTjB#(+>y#bVsbT zv%8|N>Y~nA(emz!-ldC{M~hZhrF2gZCrIg)EE22m_(3WR)fHGIR-x`774|iAlq*>z zR)P1J?nv|+U4cbn6}BIwhx>H}7Kv4G9HfUEbOjb6PJsvk&A$Ce=m2Pql3x%Z;sfF# zZPg#f*j20k03sx0t4@Ca5n9Gy6gq-Bp~kaJ;+I`LqKlZqFfFnYy8x)Fwh}!2)f6kS zl!-rBiA79I(23EN>JsZ$sWPlzdFp)Y7mju!yoKxF2-+ zBtQ5Al7%l%!&h6)rPh?^v0znMYKmDs0b8N4x&r^&=AI^NE-y*IK(tC4yoWWRA`MgI z#tQ?Uagkz18KSM0Yg!O+l^cPnWuYvia3#z8A$hHqinw6lp*)lgOf8qsY?Yr)X})MB z!S>x`DJ*a9%f6}?u}jo+!XTos`hKJ)pH)38H|#%+a5s+!+$M9aqFyt-8P8bgHUd&! zU58wyUha9_=^DuG@6F2c0A7hW~ zRPU_Dje#$G*YXV(FarL8d;ypdkHIB;RD*zB_X|$UfU9ANO+C!=ZgV8A`QsqLYE>&y zMB=^a8pDum8kLEO0pn7#6JebZY*>FfeXg7##XW`c77rnP84~BD0NZaNyMI_kR=0Qv znn-CEEknTSd(IK4i-I2tx72hrnmp3+a2&(PcS;eP>JZtXt>#n01Sy%!hfVFUvZ-oF zf~u=&xr9(z(;`c;W9##f4Uf!%bz0!68<2Gai3tQN*XQI?n*h-;fq)G$%;q!Iw{CEJ zS7%XBnOOWLUEK9zYJBkq6z60?sfu&5cn?>rtI1mVwoKL@!KN_)DRemQW5s|c+i^Xw zM8Y90w{Ex@RKntbu?|KtVb47d4X)r_nZ-{BZ2w$!{lR4}TCZADx{p6q2%MO|(a%Ym-f?)D>G>|}e@1u3-Y84nrysA!=V zV~sV1GN6*0Rlss+EU{cb8Uu&Ek&TUqwzUNAn(z(ywAkEUZ0-Uujm0%#!sM#n&sTma zUWeG$p=IodN;%H12K4El5<1%jHI?s}E(?6yyFUWi|2IS<3_H|q$_31Gy@A68d!!h) zPvqKDI9!Z`FBC_HYgaoT)zd=NP$=EDY;t)Qvtn0uDCRW_N)VtJD$D84E@s899jniVId;N_SWXASr+4^|EHa$h6D@)y^9=`wdYk$`~3p122Gc>rX?;G&lW$q5a39q@tY*NQUnI}(D7uS9Ys$G4c$GqYK3gL?d z;_1ojSpNtimS~E-O_u{i3vVD_xiocNaUn)%t66~QO{`;A!LI7u(pY>Am?gRT-NbvE zj-YDY(_rS>P&KPC#s4%HVQAu7WvZfBi#1UwZ0&x~<*Mn0Agnjy*BN!~zh}m*Yf}7w zW;0;15|{k@ha-cr)!dAtaZOznJ3>8@r z6JwiBb6{g(Lw1;-!!8;sTYo=n4tPTzp%#Gtx9eC=CkSz%5yL8vzd)t@jRvL)L1s$25;%Y}5hf@Z6x0n%~UVj=~q@HwP}vg*@96 za2JA|Z-RGfv;RFD&^R99yWJQ5K2z-8qHlbcd(HZip^cvUjxG5%j>Ai#hjlRxOQi#fBe`#rRohieN%i_1Li9{<{@Sl z#2bBsBfz1$8|_6|z9Nq~w}1y=a9A6Zg{+!sx;hG7`w=!4oX$7X7}V0181M58j0)jC z!wnuhlvDKKq-Si)=1WJ_J5tluK#jk;dV6Z0=D?VN*eCuAJTRVS7jbR(^#mnP-HrCG z?@4_CFxCoo`}Oz*b26WtK41f%6%s zqC7}Ohk*PqLok1@z_d>)Fp7S#)lmLxEfWq=;sb2_aNKXHSA#Wcf-N}~JV0hdpBG^+ za-+??q^FP!KMrb7Y3hB>cRvc`vFFA`WwC7tIvPnC% zp@_A!F~U#m{7>Kts+wX|&XW+Yzufc6)$F_1~U%B&}U3zEXmz#Sl z_<$3=0N*+&5$m%r9!g+ui^>Ot_>>6Uxe?=Kf(IUFVgot>8;v`**5Tt!hs`9~+-iO+ z_AUnOp;0CiW;lhzWn;9cEp;4EeA8e^af9u_*0I^yIBcd@k&xz*uF6$#qL|k4{zra+ zPEEmzzv23~ol68h-y&Q>v`Wk!IB>j{6Cy|s1n}j7gF_OL*T0|Iv2s=L!?EK%#gq@$L z?&yHQ1pCB&VTs74Gu6PYB$EDFz?ptHyu``_fm?n%1>3eCC}gqOXi2cI@Dl|`@xaH5 z$xob#cmwSuQ6KTSs*=s>OpXGT01Oy3v~($268rpC)jXMJ!^BLSw{tlY4z!Oxae{Do zYu_RyNAD?~E5m~o;<&jS-b?SxaCmW*^du>5^W83}B6*pr6mzU+W4#(E?TpGSF<0p-naZ_Unz*Wc9#D~YIwHYSmsv`%RXd3p?LB}sH0(tp ztPXuOhW;9HeneRdaj+?YI1l<@h#7}ScOi`-YOMNgFD`zo^8X2}Bi6k*I1;rsNyUpV z>H;xhcy{f-x<-r(^|p!PS?@Nzkc_Tv;aU7bZnp5^NnA(-&-AV&+RCo{QSgfIcFHD;zOynQ~_o@|2~t@hHoXpgVJMeug=8(p_|Wm0=bTkWkm zINsJAo`AQ};r5L+C&PaS+B$9n3R~lG_gi_cvY$-NG_zYL>mUj+CTMk{+WCEJj(XiPf5uJo*~^j3G3j@FglLZv0@pSltc50UCD?ylBnO9j5gs5MtjLoG^gwqp%q z(i_bxO_&(REP(~**$GolQQkNWQ%+?VrilaMHgHUMr8B0)vem5OvQorP;e4g|8@8&< z;gn#5!)`OGKk0a`=L!_UDRyBlcoJ`Lc&6DOPsfoKme;ork=V7a`u1b0cEGENBg17p zcb=GTwYre0_MT3#7n2J?3~_yWU)WK2;eJ0^PhnpUzokp|1@8=j|FPJY>KTwPA8M)B zY_*qyMIjSYL7&7*p6b)ULBQiTLESI&fwMW@p9pim7k2+(wqV+*Aku{yzF5YokAL7E z!}^ZL1-U_0wn)+&9A(F`+S@SSSBL)CFC{d<8@#CCbvZoIutVL?B?bUaYSavJ8RVxR z!oYesY3sG3)BzstPv2n64c#7R^!0E~B|aE|7jmlj*UUIo73-&NYI2;&q3A7mhnAJ) z!E&P@1^;_9B^{ANeL2JEdPrJKiT@sa;Osl)&1i@rBl5X0+-H8%$_%)bz!z_uzl0NM ztNj;hfc;G1(|C6=Z{kuMmdK}_g8K@%D2!|vuHk43E;ON;6)N$rzL!Xr0HL ze93_-c(>1k`SQ6bh7^AQm_=u*Plc}gPr?021QiG(G{O>D9F~T)B7#X{#F&i90H8c#g;kt{@*ZZs|f=AD0s+E6g*_A>GLCk2j5L*M2a#X(y`nT zD97+$WHtCa*jcn+VkK_^n+j-8XWJ(xwry8KVr^$d+76{xO}{3^_e(8+NnbU7Na!3~ zF(66YKr#-){gh63qv8M%Qf@5AnmvL>I8GqZdrv(@6Mjf1*Q!_L^k+B|%nNn|h;IZP zqNYKD64AR6_SHT*pM&|fgsq@y*qOc5-wx}_)i8gpaFaGm;QBo*O)yWL1g>sxyuh{p z7jdT9x_`dZQzI}&CIWXt(TnYMA`7Afn#Py64G6k{Z9BhfKAOC8AS<8(eHX(7pu+SK}bP1avRC z>;)DGrJal8HU~MLr4GA77cXV;Sl5wNk^U)qwl1uqAcVn7SnDj#p%~y)iUCfhSRohv zWwE~@kUV!#E##@L>j1@jpX;u^eh#M#BpTDR_=$t&RH!Y;CT%;$?3su{HjP44@jBbb zp}RD2Aes7lt09#51n}!9lh-6+M9#CYRMxAViW!C^-~rM|1jH~5Qe!7|Sa37CDJKuY zlQwZ4qUOdy@p>hjoEDLvfKRAy#TuQN>NbBr&~4t5<=XIttLoEKiD_^GTBT^M*!;=T z7vUgro0*Vp+iLE@*xW^})+6#}EoEP0peY^`9N3IG5@rSA=A8RI!M=5P=Ez%AkC6X` zXV8uXj}I1Y@PFH>7;=4Q7~oO#mo*_YV4wj!I|5(d{(K(_iWWw~Gj<`zzsqCx2pjud z=3b8}hP2n4BOo}8->0KDP)p^3L zw%V`29dp?#SY)^*^rUS5vuB9soNTyB8DVeQ1`04pVj!S=Q|9FRklmX85#3jhiE2jNnOdE;-?&iOW;0T;l+s$4jtnB)}iI7^-y@a;xS zwfxq+&1^CmJp!j7Bs(jKfNV6j$p~l}#OoDi5w3FBABok(W7ANEW)XAwgA*lI6ZkAv z6OUC{pBM6n7wT2KMgdL8Zr?C?4I6y=3r0iXOpB|6XO^l+YQsZg*75fukHs%EWy5Dd)L4YG;k!llYHsZ6~;jdAP`ef zINvHhkXJi`6VsXXy+fdxpHl}o$@)(COtZe6P_VvGF5U?KaWaI-|B?F%X}%*G6baM& zE!616`JV=d!!Pz5ywy|Zs^8fI2r`j7(@Dx9M?|T)&t?9b^z@bjJgz)gu<`gfY}9)9 zC}AA{xens0c;Hu=rzNGIA#tZEG20NHfSvN{VAs&E_aKbReJPr|h z9q13>XTkg7qpWI}gN7K@|LO3RcYi<>M-GViF^G>%?11PiW3Xb0Ken9Pa!l-S`08ep(${6 zD#q0h?!)5363qU>r|(t!Kd%WVH2RR$=zs7b9@hW-j*GMf{ruMIryeD6`NYLQ9RlE! zpgj`M5^i~|^6XELs9sfy$P8EG(ecRT3xD-|j*aRx<*^;>F`SH9TVk_XVz!si6zl^a zmup!n-o3zH%T$Bvh3(Gw21g=({8&7IXTGD(0j$_LnAa9{fXC z3ik`IE&`NyUO{pcna-V@+v-(i+OQZ3>)51H9uf&5muOsE&W%?g+PximpH>q1O7+@T znn|hzH^Q52nmKvD+2{=pYj7@0^}quPcgWLV7U0WpS~E0cG9MOPuijEMV3y#&PPMW6Gfmd>>*k|Akd5MW^w9^CQkC^?@!A+XR#WaQMJ@6h4 zj?Yx@)KOE&gFeorX*^7tEdDy8&%~X>vTQnr7mp!YpE+zxNM7y^HH$W~4?&HZO|8;> z*j0t@!>;=n1}mNmC`KrCBmM~_e=f6LEB}T->IcOtWPCZP^B~uO(Oa(Np<4Bv(9BX? zZZU;8V$^luAb?DZPQ=rTSd5&V*qpf2xZrjAzcmUTSRKYjVT6;xrbu#JR`aX>TZ2$` zuA&cZcitr&vrv7#4vY>V>w@*B%+SDk!vO9|7zW;+*=_?O$L;?lew61z?6`D7->LN7 zH-ERfyWsgSPm+hR=F#{w;4bsX5eCov0omaEhaHmQyAg~iCrC&j#4)Mx+6!jiwvY6& zMfC#gRyFMCL(G1N++n`!JHo3gd9nJ=d6YYrWAwCEnJaDCmaS9gp9{%tFuUjk-O^j1 zv8C2BcE>wM(%H@&Et(H?-j11%KekamYC_gJn&t2nWeeKW+u!a za1)g-%(eBO9|MtZ)hDS~b6If^G@7&kY|)LupITP=^&Abr`2Zl?7sby5zUYNhvZjm$-f>-jH;KnVi~90Yk|FnQ9Q#q| z1gsKsRVT7R2Tb!49XU29Yy? z_#jt(2oSrrcUucir?b7=D^O#CEJwsIerSif62GiIH(va5&j-ok7wbHV1U%7El{5yb zCyo@+*ENv3b|7A^`xz2Vkg}h#8!O-L$?CP3W54_h(4^H+_&f+kuOSE7*gT)J}vycwTrTP2n zMT%VNEI5@NT!yia%!*j`rNla@v^v0{jSebV933PU-!L`4gOLR>_{Vn9yj?xP@_L4* zMVc4*r*+Z1T}?`CJ^}tRj`+;P5oao=bbz}VZV?gjroSg?g)?Ns>krP<5TYE9CYYg6fN}CaT+N|3J#3!+u;}uCp$SWxY61 zvT7E}sRy##s%}B#1WKdvJ`E~D?cAzD{dCq}02ocCdKK5eobimhP>-dlu6ZL1oduZA zgj|Yarr{Hy;kk?>Z?ifXkqWDA3*?I)f+#pT@&w!5YmYRFz3kEuo0mH|IgtHEyNV+K>9BM3;9xHiir;hPPZZ zy@h1WRvs3=X0(=32C}TN_T!+ESFDRYlsIvEgZ!GYKD{C~)@jyQpLm&T&av8RvvB&$ ze8#4d<7gtd4;Ad8SWe5?ArB%IFxL%gTK zepm2z*#3Qq=mUAE+|Qn|6U%vFDie>9Xz!BAI1Pmom<$NE zYU*f6kK&w?yv|(4kBD7rAaoS~fS3jJ-w57_QyQr*y0EKvSUir8q42n-&Ipdmf_Zuq z7r;Ow&lPS$btVgvkK0T&PrB@U-0sFvw@e>(lMC7VsmTZRm{?6{?5%@3{fup)%$HNi z^;~J4N!Y1SdDKYAMD@2NTmf56wGiInc`LCPFW%?@O$2yMNo#9U9FOfv365FU8ML zDDyY3z`w)%(0T4^m(Bf=46gkL@DH7qW}0+wtBo$rCiOcjD|u;PL>gI|zk;1gSei}h zBEXfnG@I1XXzAycW)vWe%=9lt)b0G6Xcc8}C4dm(N)HmQ@*g!!Fbjvr(>Bu>P&FUxYsIyld5 ze@@zQkQi}W@@qc6#xJXET!0-gqWdicJH(C6gR_teeL(Lw5}&_d z1lVA=TI)VnC(ETwbibjXwZKhaI@>>yITt*c`uDg6eqR}=9$DZ$VpuH;Jo`m1@W)tN z8K2F)MIdjVjfV7|BkEbpkuD%4?745G7hA2~b0|9`x;R8W%qZ7qC}0CYyf?D4o77eq zC?xN?r_olo%cC1p8KJRIk9GGjv>JlVT8>8p^l(@hyI7WDR6} zWO0(#qPGmw|3_JiP3lKLkEOX%)&iOkp?xGX)>;&SaSmN>75)mA5ZG9n@NH6Wp{^`M z4-*@Wl}Ii3E`hre$X;|A2&6O|7vYZaE4IT@n9+-=`QT>2NsZ_RcZJ9{UgTtnnfOg! zuawoxsBJHYGZ@(-9!O-1e(W)ClsJWrDv$6o5mAvaMM?5Q@s#Y!{t$#9MNM2sfTH$? zOEFVOdgJU5gD}tSWPiBgbC#oa4geZFZAt-)wm*!?tGcxp+B&Z*fmIrm_HhEMRgh}& zXk|a~4w?gV;{{fqG$jkHM4yXTtZ)Tuj_GpY21Z2*9$Yor)S5Z47^kk6hkA60Ao?%B z;8hVuY?$Zl0p}$C1m{vIfG_LSHBSqKCr2|J0;6BYqk{4vd+JFVxJu(wE;>67F#x?VLwX@|LpHGE98;a!bv7~Uq4_k($phcNZX zI8~@Rq86QCga!tP!CbH>zPDC&Ka}xkUia3jE>G@l>4}kH+=<>6G4g7Gy6z$B4r%oo z5ocF3M6IkhFM)P3!V{)@FRa4kmA7|QNgLK$ddHm7(Nl(dga!b#PLf-og~VFJ4iL#! zc7pk)0G-x%?WbTFB`W=q7Fhbpz@2z4K=dUMvoK34Sp>{RW00P)F|{9jK9Ywf#Mn%* z?u*?e_$v}$_yhIlF;a7AmyB@n_2k-xg^u}N9)@-S@|6v=@biC*E+v)Ff$YzCd&SXS zcH@T-K;Rvudp)1M<|nh?t=DzY>wtuzN!MR?Kfq4?w~Utlt;tsp%Y6A|-{r{yG$gbi zo1eexiSBBCGSvxPK^iwdFsMAp{1Bfa_HEw)nLtX^%e?NAkKe4CvG4Rxh8lfPK7fqd zmNgJ}EU2wnj~_4b5?G>EXnX^T5Cc^^>_D&rzYImBJzmd5@)1S)Wc%0?uH{O_+s6)& z9I=lbL1p0iw0f0mP^P*;AfRt8vw#P9zES0|0XJi2}2yR|x^HGbaKT34)`AecfX$y~-{3%{?Jl$F1W5XZ^cscDR-Frq=&BmlGsSl+ z%<3S3q8LQ&d$3=MZJAa9L)PK`0dcYA(`cHd`g*E0>!4Q6P{Z*+7_AB}gjE5nV*~Je z|ETD7H0Bp&LMKPXZpfLi5jjUlbY|GLAmjOAU=*$HoVI1_BYxSd#4o#k$6#}mLtyUH z9Jq*3Q}$v6M&ahvH)r9eJ!!zF&DT9S(Y|CFtY$rC!j;GgD&1Bw%52g%(v3xSEa*?!Zj+Ii?J_1N9mM$Vt$sTg3cP z!c)N-q*KtSTg3eFWm-M*vkn>+)`O^C$+3j}$G`!sCZ~#H31*vv$;`}`q?28l|k_<)7JFaQ2)s>y~bmXWw_-rbCY;C6!6RLfD>BB z(kvQs#SD)y0nuOz4)I4;FwnEiQD84qTW4;9X-p{s6wbC2g@hZzqj~FL;^x_3v|$RU zRI{3Y%uf&j&tVDkE3sE0jzykR`TZh~c{LtuxInCm(tud2`I=ry8hodL&VAIOje3UU zB_q--8gQx256FC=14-Wh7da*dhF5#=e3Yx`%gHBMU4|ZyM};j%$DzWrD=~4dU~!M& zz`FWRdeF2_UEt&OOZIEtD; zW@I=o3=aAS<`NKty56g0tv{g##DPwj_#X)t+&i=$p(T2#P2WEd#^n2e1Ydd019A2k z@K7!Aq~YZp#;e0Wxv)|Kq)*?b{cN3P-&~`9M}{YDfnMZy)dvWjgL!rs)vMDzup9iB z8`AqKz`;o{KPsGOT>^o*yw&nQ9rn+m^La$n$(rDlTmu9L?1(^J}C2Gx*%EOO4rku(w0dTLFuTO=eSF;jmI12 z7uFj!c)m$L9S*ND^%dTw1O>)OaWu84B`&$*Kq3WM2Dehg?qcG^tFOGOz3m)sYuRG2 zMk`8kO0*)5vd$G3qhi(hP^xHkju(b$bwChuq={<#1DBDR!0}VuK??=!BN{*ycc3y& zI1&qQVBwhRV`Kr$YoT2+*VBljWQ)7t?Bos*?=jlJ_DBa#bg-R;lMF2EsuG30g?VU> z{Lh&38kn9n;=SZ>U7)zxU2qPYPYk7WezbY`nF{=)2>&h?M)Qe<`$d`;1Cdd%--y8e zUKfqq)egLZq$fv38Yk?ki^lEh6%>xaeo+GKZ5%BEw2}u5ey)T^F_O%H3VZgaOXC8sb8-=NagrY zqTZ@jkJ}cYF>hApj5drX66DMp!>STf-nYx6&sHwR+99&^b1(`{00(cCY?C3F#qaTc znQQu+F?a{;6IGwci1mbRVIz@|>xoiQ)d*HE;^d)TE}CI=)%qZ3E80hM6q;c5Qk13n zBZ~`6Pok_jZj~2pVkqWXxE!1whKuimC}_6UhII%6%zG)`3CZ<9q7}TZ5_~%h|I`up zLJmA`Rp|ea_Ac;I73ceSLPE00Wg|jemBOM?FIeRtTvVr74h%} z3{&@~%ub}>Y`hMAvCjsp&*(LLYQvNCrw5q0g|MqXV@F7x!LHaPu^2K})|ea6k+xUd z#hZg-gyH~!f&@4K2MTY~90-Rnk!Y|ssDl7g{F)8H=7kl>i}4C$CGZTHoeV-V*`1NN zh1f-4FQ&(@w%!Rx01T}atq-ifW>pT{kkLHk{`sY-$}hM#zW~L2JjT(Uo2;YdPrqhM ze0@J&gCtkQuUX9{kUWW}0Bf;0enccoysgj+%PGbjfr1oCjui2OmXP4(8Gx>7R=$=6 zXw#Fkk^rX!9rBChy_wbC`4K-}&-Fx63v5AsgCZcyZ!NbCDS6yq#sQ?f8!ZS*5;u+` z+`RDI9t@%fAAmy#7x%A=`r-v3YheXK+n?W|$6+DDH3Y#j>bQpRA{IXYRBzy-draAd zz&fVRW=d;Q{T_vH+0+UY3CM6Y>j9VWrym5@S%3>LCGQlQrZCrS8Yec2*7iWr&K@Z0 zIn@>@S@ZmZK-qM=24%2-BJ6tS&orO^5p@05j6Gehi*y1Msr4l8qX(MCkzZ;wk?!1R z8cK2>Y*SxyIGVE`9?4A>Nb558XQe4>M5N`7G6AszEN079V~@W6nwA_A2xsLx$XqC- zFX|vlGm%9V$-%S+cQ|g^t>02}vK`&cW6|4;S9RM#>mH6Fo z%?6x`9v7jrFW;hTR>QSO%xL)IxE6`fn`KO+JdgN5D<+gSrJm^paWeiY$e^vyU|r&6 zRNh9(Vy>^tP&Xzh#(SFv34zdC6GY-sg*WJ8y68(0(iY{(1bCa?a+RHeGN`!4zXNW{ z&<{j#5#xY4IGZsB4Th-z->D~&e^@H%k^$<1OL_i$Tw5B6LObq?Tn;dI;h=4O-lf)p z-!*QRLjk$;*PZ;f%2r=h-lHEa(2vFA%?!FI$3S@Gm2h@wgIr;uI<52XF2;v2Le*kG z*iQ)gsHJ~TCs)Y;XW?U5ne}a|a>^U1{L9%DGI?d6nv-!kCfldxzrlQmMXFED+**vp z@NWm|lRY2R#=qlK#LP?5gKcibavZ3he?s@5)d@J3%OY)dI*`ZeK03J9-N77o&@-VR z&a#pr$5w1w$1h8cyfmWLqfL^DeF z4b@qPASm!50M=57g6CSaxDITrR7e4;R_D$&m%F8?<)#A-7qm|-&&^H#6Bwh~K5=VGx#)0}jxduuq46WsT}QQlRbW-tSXS7+GkUKs>;lLQk>N1GM#G znBdrsf3Z64aX~>HQ1E{m1sHx2(9jD7J~e}lXHXDuP{7gSax+RuTfRZK$Hcn6M(9eOK}mX%O)EzFYqe~L3JCzp}%$I zLQTxYTzyDmI2Z)o3J~VJLY)UE22KRk99%^(TZ@N8e=MSu-`aneR*f7CET>o`3_APb z^37E?=jIgRWfe5qY)lrQn6sw+M#cqrB2SOYtr#q391pcQct5)nmV zt&uyHad^@q=zIjS6szLHVS5l4b$f<}q9k>QE>r#S01~p_U0*E0nLmJwZ#WNKWpnW} z7Bf8<0vHkBjdRX-Ue`-{)K^PEAti1Z;Z0d?8OY9yz$WLa11&ov3)wbx==rkEF?~LE zz#*z1yf+PVz}%9?hC|v*)l`dboM7%3N$$uy_~wvh;Q8+fo9xy)+B!U2Y-$J}@Gv0J&ZIj9q#oOAWKY@h}N1I+!2= z&e`JC@?ViE!V2S+ImyOcxrWBZ+*h!jVZ(MNvh!x= zn{!zxpb<|ZW4X@HE4wK|7I8i1X4rJf?NH$4z{9wnK&`>ut8=|gOL@4%?3AiQ-=>J` zZF~u1V1%o+ScB9(j$q1OIPMnNp<2_%XSM(aw^f6C)F7`p+k>G5n-n4-*58eEP{cCyvui~9ll(M+0%SjWf8MQ1^ujUSCIS2@D}jN+r#)4 zkGLMpr~a~tY9SgxDTsvR+c3e@!c| zxNV!SAbR**247PT6&(frQ!({L(UJJI5Sk&@#&)A_UJ8{^ ze<+efeKXT;Oh@^O@?+#OIoRUf0nVX%^9?!G@m^p)-i*OuVHWcSH@2zLD{*#8!xpv` z&KRfxVyaUYqgHA(>(E)|Kdka?k1EU1E(wnilx=s3S)5=B!0NrfNqFbX^5jpz{vFBI zy~I8{IkPaJeji_6wjImjaJFeT<7!#mA}zLuA;hMPVEM@2Yxa+9&=T8vuG#YuH>|M` zY@S)J+FrMoZ0~k_>I}A1;R8xidcgv$6D+U-9Gx4iJ#Y~f61^bU9)@(8MX7y&=~G{y zlm%u$Ph(Ah^zb~Qh#fHN)SDszl9vJ5SuHz8AhJ3uf3{8}_b`%z&;*C*z%S?3Qf zeHTi|QK7hYa)pJNmb*#jh#hivg0Ga5MwB@i7@t#uEDYYpCjnH$66TgHgcxV$6&E7) z-8kG=!7QRM9+nuD<301v6alMCm0?k(YK+zo^UQTlkbHgz5`n<iia-tp;Wi=dLM zHgV$0MJk@?Q2Z|jJ1Qi!F7>M+Xkd`_a5zA`IR!h~v&HoQgU4$*isElGot_h4$6i>u8O ztbAkMqh#j7!pq6g!BLoUreQTMn*pr+7cu`+9Y0Gb7;hT|yRckF%%bYVg!1b61V!b; zqMG=reApq(9h;Y5<^6}!`Yj|-xt5GM+pVmxMndRT`F*td%J1xSqbJ(ef`O82#RQCN zTs1&${NbGE_K*mqmy%pUCa&T(m(ukllDOE@(3!^ds1!@ShSywmJPe6&ck~qGdXRkm zxOD;+1SY$A5i&TizF)e-+xR$WCN;3(ThKC3qvq#CS-YUD6Q!|!WxJVy1b!VzM$qnK z&|7JBLsvf}n?pvlqUwegkJ*as7@}80u7p-KitA)9boOhDVY1mMDBAHFQFL41C`zzc z?fnr^B)@y1sEIWsZJEStacDdSfMM~1r%Uj6zTw=cz*|E&pTwV!>>%5_q!t(}CB`7a zjood2jr=Bou{$G){Jj`H;z8aG!Djprej+0U{*w;LS_0-3!dMJA3wcn5i;k9*k3jk% zdl4qC@C6fB7sDqYkYk>+2PwRfItF`JU@JVVyvuQY%La%*;ZJrKKp_0RbTS>2Q;%Oc zc0QB7Go_5!mXgb#ehsxu=JF?IO7W>bEtX6vkdBxsWyGt{WPx|-l*hdA#&Yaj49^M* zV6-Qg6Z|h=edHi_W1z9!+r--%0N^Kb5t)%V)029d`CGmlCi_CFGkU?~QA0FL=v!xR ziBudK`?-~NB?Jj#$I=jypu5CiFVu4aZ~25c1B`73P2 z`F}+b!pJE(j6E?=W9E)B(JZ)5Z85Rhd0p9I&^|9Y zfG(r>Umg<3L)%rI*O5B1^2&VhA3UX3Hhf*QpbPU)N$#^nlsn+X1k%WZb~aKmItD>e zh?xm}e{}*q3jDGC5ZdWsTFBJvW49wQRBSMF;v@OfMl}jkYT@MxK-Re3+eETPf=;ovVh4rI4XCN7Nma2ty*gC+ z{=6Mjc-@a@>_WBnp^<()ka7~k|MJBI%=Qh^P;;aFQJ39@^Re?U1Xk=Pf0I0Dwx|R4 z_Nlp!t`E|*b|hlDuDBikn%`k0p69L3$m9f$hA9m;?9KIFe=k8v+(@*Pfge84tDuo9 zwXG1_$j<1jNMf!pSecBT6f`I93APmibr*Vq@hU{N74UM@h>7WaMQw$bf|0nLt?1Hr zm51=jka>fU5FO>XA@7{`n1x8I%V2zZ5pExSlYvN)S$i zdVL1lIEi&0buU5{GlUACWSU=yg9+xGFMSx{g0jHwH4+gi>pHPn^NCd;_ekQ#asW)z zge-bdqNuZQ#HzoxTpAeWZR#R^ELXCt0Y`L__#T4+Q+a&j<)UiHgZ&t;rO=td9f!R6 zfvFtJPwi`f z0S@pVm)Qe^W>^Loz(@kB|2loU76*8)JwW?3ECVe2iwy8wfE)nh>M_7C5JHWCo#Gl8 zYklv)kd?(A82y)>MdYMllk-64IFKy`7!W?qb#NxNrQrKWvA6)83nOCw6w*1IJv7aR zk?OZC4=?{p@&i%If|w7DJrJYsx&l!{OT~4OUz}SF`3EZ_RLrFTix=#Kl)9eX$t)o7 z=7X@h5t+OS)rUoT64tAhZ4k}d^wRiZ-V%NT7yft--TLQooqw-7kYS?J95M4YTM`otM~n z6T=5a0rEaIppIxK-e4{P-bmhpw+wj$Z>RlP@CNdpK*Hsq-S`?_Ncu(&0*$A0U3dzR z$gNNMTE1C$x)(0&7M_^=(Y2*B@h`EUo*vjIo^ZQB22WTg`jn=fNL?8q<;?4>m+a+& znG&Jd{JNS4=n>uavBP}Jh%;bdh?Sn7jm!<=B%<#92{w6X8)FADUYv}i&_#jDvplLhD)LklDTz-+4o$Ix{(cEl4-cZ8j(6mT887OtLXtS`=nz_c(TP< zsG*pPlo-_wtMkK^d%f2kfrXBv=WIr@*Wmz7aRxg4Z_`n5i%xYR2A&Fv*!ypY7-~A6 zx&0o;u-v(Z`MR9n{m?N4Uh*kufb8DPU!PqW4BEBr<26??Jq3ygQYZ~ zz9f6bXW$5Ft~1Ogo|TNm6Pi6fNcM>N@1Tmsh$NmMN907d6@W437mL0-5UkwnZHfb; zGP-_y8*h~@_8QD44&LUQ&isZ0<}0vhnuGFc;@B7AnH`KzDGIg~iB|}%bU87*{yg%9&{v;i6*nTj6I!;G5 zu%XhF$X?V%XrwG1s{F)z{mTG1WTvzH(JaKDz+D)B2B{0{0geF-IxrHq)pPgB3zVzdZ-b9^ z6CY`7!buL^5&AWc2{SGdE_I-*XgJJt$5hq8iTXM%oq!a8aG>X??R{_m4%BJ})wj#UAMD8m3 z3ujlU@u&+{k~>bUpr}FQ@l#4Ukil?Lf`5oeIlD+9SP=$C@@G_o6Et^}_wZ9bA*a-z zfl=O%LdrSvmuDc|kZdR$RTKh=rE6eBMK+_rz#Bm0)bqztS;2RCdQo}6# zID;Ul^-H*`X*p2GLhSg{sM@@ zEaDM}+k1~74%^B^k(#m*_5!LASJ&Y$aK&B4#+ALR0L9;nD`TyLtKOT6#?|@#`^1%O zDmJdbX|glm$`R%rrH?SAtmZ}`F!lFl=LjQOT1Q2j9rZMWdcZo0;j^I>_zLHjki4J6?YPRwZpOoGoo1?gY=m?{0St zzBF`Qwkr+Qtrp^L+GELG!O%vt2K-sO@ht4ZqmGrPqO4VbQma>Q)8}01JmP+cACbgk z!aBft61UtBt|1<3qrsJ}26Y+an<`od;O-54oP>lEfQEZxA*4ChBveRZY9_zaD0 z!r*Xtl#>@eJpqmwc%*v6>b3!iOEm)R8C)u;(Gv{xd?53@ThFs*ww&k1(q$}bo~=88 z?0L3lr2d!AJl~DRdd+iM&$F}*;62C}Zq2hrIP_+9=Gg}GXx%DjFr-1$^Nd0JFm{V% zLeiAXGsRbDo+V{5y}>ECI`fP)*O_^)AoXa%vFG{yuszSa-Sa%Eps#seE8HpCbDrM@ zVP(zpW|CauG50)cir{Xcrv{irkw+DrLFV(>?qaI+M*4_V!NSPp~8)?KFs zw|xheHX3)(7VkJh%Kfh#2_OhPp(0(JjDS>w@rvdvE-h@x+{LayAUSFry6PRBc0rvi zG}}$($eBW3aIl-=DSHt?QePsdnY<%pwh$Gd4P>qnvOuh9vU|Ig!DIT{+>0W`wGcOI z)#2CC(FF5hr+UDAAo%cW<%4@{Zy4UzjKqfF&u0q^P$Ap*>uQzV=Wppgbe53TrOr;L zQSS6tDu{;M;@7v@+nrbT+4=d|ogd-q9J)>BzLCv#fz`PV&kObJ93W)qkNqQvn!S6c z18o)npBdhxTR!vd55UyF`kV~C9-Y+Acb}C(1f&iJmJfHhk-ef`Bci%;lef_%ALK&d zD%98y)|Z17Ze!9OBnN=kN-cKxOzMbfqx3n_Hi8Eby%sHK!`evwj1Hd&c5`P#hJPSF zh?vat&3uVae}GgdAgF;b9N;@~l_tbNxw9Cyq.?6v~>LyoF8`%9milKFC!Y3Dy2KDI>yy2#ap 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

$)W7dHN#IcM;a}7gh7GhJWli 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%0AFz2pEu2@z|gD5j?;VplN3~xo1X%XXu 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℞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

E>2ClfPiG1XH7Ps5)= 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 %uvIeE;u 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

I^td$me()8PB&i4e+59ArWBs>+ z&!Z&8amQmg=EV$nLl7vAOB=6`xMuK+5z6D(50AufoX;42Cj zwdbWC$NVdR*ZSzEp3i7`ax$NpFTIcpv40!`Uv&bhFY9NvdfbKJyTNN5@%nte3Y>wQ zB>Gq$J#aFT@jtfD)~6)>WBj@y7mC)mz#AtJeT+lPQ$3FTZ4SJ~F;DgVK;^P9PS1y@ znv?!#;)XUQMfjoZtyetCo{ zdXj24H<`hvB)j|Ys2885X~vE8!9G0BjYZ%-+&5z?q357|PMdm3t4?p(>CN9@^%pL% z<-{jlIb+Mx`)sMNr&Ik_p50?heD7!XUVZ`w3(fZ4eE0bFaX!}-Ek++2+)l(n?C7(9 zsIS+_x3ON)!$9^%-rn}_c2AVqWo%Rf3x*j?0z_5p8NBMMJNib3sUd@Zd-g#I$UV32 z!W4hL9WmL>$JOmK?7s$wIS4!xZ`IlR^3m;hopSdb&6tC^WA`4oafkbr_M$uYQCsQt zd5Ea8vFVCb;qPrbW**|=m9u3zZOi<9w$%4~xt&&C{BZ5>nZ1@jP-8e2={+N(bW-lK zj$Q8ajQ#I8c!QF}ydsYBhNpQP^Kov2ID_L1@Fda4aW@~+7xm`=j{RURTWfb~OHv>8 z?t)y1{`PJVR}A2Id^M(z?AI@ZFia z63_22u7|JiIF5TKz#Eh#(Z{&x`+}w`lQ{a9hg|3i{L%c3yK263&i3WHMzzi3E(JgF z%)3&}Gzb#AJU^A6<#88)uYzwT2qZX`dOwitv%|QlfBtxMEdOKNPXL#3lDNKfySGbR zBY1sXLA=&?61cd&RoCBgKXm=ZJx5b-o~M7__RrNHxc>GPTb5iY{j&N~E0=i#owrTT zNwyFD)p^?;z_GoHkP9(SN&y_>vJ%6wy;4`z)}Q|IIw}jf&?WrixykE3+HKz9akSeG zJ|0i0?}Wk?!5iR7tS51ie=!`#fzb-;2N*$Vt?<;@UaaY@gSc`J>gRI^NCmNjt}%SHbu0Voy#*D&xRA2eAOLDf7a{qrVlu&9S?dt?n-3?xMPqDu^z|4 zPbnPReMRBc!0Y^o;&7eU$LqHl@Fu3O{~z4-)=O&hBlTj-=Wn)U`bJwyee`^6!wYNm z5=VO($c5N13IQDBee6XZ$9!K7;8^eW7>@Pp1mBO6B=HXEn*q*5D39YfpX&5>nGc=d z4do!wN4tx+`sZV*e;zoU55%v<^l@BBU7ys)<1>&8F~4#FTpIG@F&y)&>BUKXv~vz} zA?n-wl4L&6?k>oM*gl8B>w2)hXJR<) zzs)x$^%1Y%8}0|LIi|1wv$lVhZ?XMP-n&|H{kA%2<>f=R%-m|r{2$m-&f`+bdQR$f zwZF@HPTJ|ozR~{PJJ7SA?i|3)R`8-9;`nv99v6RSuoXkX6xUSx+moaRhy%G zRoqTu8&0e%M?bSQ{dr5bXQ%R8&Ifv3YdnBs9A+RFVt-!<;Mne)cX}M>Kf1uLx&!0w zo_dAHF|KLwy4@+y$8hYoli*7zNurPA$fj3%eHVh?0Y22fH~p%1AG*`P8Q@8xkEM=F z>Njg~(E<3c|8usVr{7oG&axgYW##>~zu#Z`UjyB@;h*Gx8|(`){vFC6X;1x}=6C?d zeo~6*W1PzY9OJzj!$s%W?%FueF6ZYKAQ$5Kr0rGU8Ay=Cm3efWaz|{p8SuK@iP!xz z^;=21#Oe8~HsJL6DTM3aAnte_oSuK4uj8Mt$GHvS%+2BYYJFWB#EsX%>G+)lZX@wq z3gDPmdOyR)UCDY7*9o~0^SL{Ki`q@C>rMd|@=v$N`8xVEuKCqT|JWaTAs1pk9|fOv z0{X?g=XKq=81Bj7PyY5@sZIhwg5&pvmUnx7PX~WGe^+W=;mB(L#`YxrW4}2Gxe%|< zm%;0}Fs`}19>;nVz-LjC#J@-2@6$0{G`{pE?Xv$4_IZ80t~vtVpd^Vtwy&Pgt_E)P??Ui7@GB@uqL1xyHiqN4v}J#?zSMUVav|!Q1Hb45qL204+3#^YZ;gRB3defr zd9Cz77&ivF5dA#@UfjQ6Hn zygvG|1-wB?inm`!%s;kYR{+QJQaPrN>o1LiwezN@TwF?**mxB$bLFMB%oGngaQpc^`+*+3_1`nTdwB2OQTRZT__ZB=zZKwr#&7e1WPRChyC4^0{vQkA zqWP;KkK_3|2i~{?C4MZo%zwg3t=&ohM}NkLy*}n^5q#Ml8P|7q=z}%-mVh$~$9`c7 zULWhx34UDR*zW0DJ&yU80k5wU_#FFM4EGf9lOy5lK0U53j3)hy@^8%Bjq(q?w#&Gj zKIn1L_ypcSPLjB!@%N5H9`{u6v*71x2qZX`jpH6i{RVs|L7-oU%LA8co14DQ}xYz9I!vZEA_Qh9PdPYb4u)znm#xl3{LH6>icV1$TczLwnDmD_?zJ2?8 z#qnj2ePdUp%swbK7U#@34)gUABnN1{w&^=xd)DPIu;?XMwq-59dLQ4T{ME0%|0@|E z^?TRjXa`Zwb|Q}B{50f39QV?%P39-@THg`ij5|>DF>g;nF2wP7HGpG2=6=uPcw9et zgOVirI1W@|I6nWFoxuDs0U*J#OkCf;E~$^h#{}d;^rHwqe!U^TwSU3gpZ>y~*V0eR z(oWv-t3S8$g5#@?u)k*=U+?^uaeC|)DXp@9P3!1bUx6K>dGFYGtNPJgh4pHSFyddd z25*<6qqXQl4;~u8XG_?wjAtcQPoC%30`Xvdbh~!GJ{dQT=VOoyQU9?3j^o&x!kIgh z`q&PGkPA`&;Q;PZ$SaT&Up;bH>ZK^n@7G?3NWSZNo9RCc+pR(_M1PkQPJTP(+J9-A zZP#>*D=)WY=5e+xI==Wc%gcI`w13IT%dV`r65s8y-?6gWGe=_~ZS$K^y9f5+kqJ;kMDu_zzngL3#9b8q>@#;cPSZ z+gJnmbQ}iB{lh(jRNjm|l(ySlsj;sSM*nTmRoA*n{A}FMy~BN@_?8hiJUUn?VA75o zA7QJbo}s>Be9~$^KHy{@5#ivB&4h;c;WdnPpSb-2gGpCf6P`Ht$A&R@8+gy}_w?Q` zFsiNdH0CEmf*L~EX#enSQBBEM%}=)>N^w-?p^~S%zco!J^OSj+gItK$kK+McsQ=E^ z!JUigDWo>2Qg+VRnBw|T$%$d+h)l>ARSx$wG_{-Ncm zHmmQ+dk1j`;P-D#{gL;J{x^U(&Kdf}_;MWSh~aqt=>;FUPHsEu^$|B0&__Gwjdq>2 z9VN%TJj(d_LfTc|r_BOqfG3H69LLT=E<}IN2XK_f{bM`qguezQN%Rp{j@5&>s=^UZ zI_27{`WzeI((`Oty~>p??z%m4?)Q4_wYtL|zrG1s@A?Z;cr^;265}3fi5?ww+gMk| z`%wd9tr5O&B=T2}KkL66js*kQsHJaY)HJi>8vu2}G` zK#bJG1zug^%W$~Z#HR@R%yrnq1z%ZXbg?JbzJ1&y?@;u~Hmbwb05;$ninfkJM2L#% z<=$N4A@i60zU56mFF7*r0&kr6l5Z^a{lZ)w-1L3-x})uV@}@T@@5|U9Iv^L~xVIC0 zzY~bvXuOKy*bhtKbw3Q@w!9^YW4{@LT!{Vu82F+Sh+X=(v*>a3ZxeWJH-zgA;OJjD zrjPZQ2cJbr61&8u-&$+88N49~Bsi9OKjhv3j{5Ze-m?K5{n7h-p9|njKa}w_L$el ze$WkG;>R4&Z2Czh9JkTk<@s{o}Zu0nVT#Q4jki>o*Cx5bxKj0UYr<54zu; z)EB}X4d57udB}wrr?mhsq%ZTQNxO`{{w_>EaCv7y>Pwvdj!PA|&KPd$pX_x<>VQ4( zoT^&B=y(TBwL5vn$S>Eq>_uQbI_f`v5UhjNYDB9om9J<1u-`x2s#`Bt- zm#?@G#04l$RM9meFNEP7a5d+-imOlF`MG+F)i2i-`g*Z#Dj8qKPtObO3gDQxQ;-WW z-WBlrI*|JGIG=t;*sjjI9RVEkM~^?p0yz4k$Df4&j{Pz7PG1k!D+}JBBuPHe?vWUd zd3`*9BVNaOsSZwG=cV73v`hc=e0;VJZUS;4)}shM)E+v{ivfMChsJF_9`;Y~d*2zr zh4f7XaH0Nv3b?$hn6wASJ^kIMrgtabOAUHhxX&cz?i(l@8C!J_=RY9M{fSb-RJy`?U&hqwtUX<&Qz+? z;fhXP`CE&ZamCzg`O3#_S*+MH~X12*^+T!zRjWDLd>Jn;EfYV z{6n}c?@8i#d>7%-3j`M|cG2A1-Z~e2RKK8rClGn%cSi^ghxTya_F2wU+r4DZE zpV#7cfj90zsV__Ye)C!2CIdLVKWp<}B=s?V{g4YWPUGO4ogi*kk0)&>lKMh%84TbU zm$Q%yF)myGGN~_$ALK$&`~tX8Tnc{`j*G5G!~1IOimmKv+b{A9HZS#a`0{*~mJ2Wa zwoD>`=aB@PJiihwthutXX$&E zU;Qsve#@4*A2|LCyQ1UMKeRmVd<#AMF*Szg3mLmT+lTtdHt*Rcp^VDRzuEd!oxRmB z*yFSFPVcvES$1}+&X26KBje-Lk@C7;=0k^SKe^6WnW%lf>o{;(cckPs&!?w8@7K4P zzYBHrZTW)7@woJKZQh98)t{YmR_uLZHh|N1ndgN7E;_$|(C2>xaBBe^kDqzJ$6W~i zEch%+lGK;SPkzAT8o|$#Cjcb4klh9NVIq{pm0f%0e`(uI@=wb0xv+f6;p^q+(gk+j z4d*#N>)0Bdyf|0jY+r>R>YIjKi0x1b;5cqK{I$n%+-?MKP?D%G^Y6C5}dYYuWD z>N^*}G4A@ltK*)eUFPou4`hIU`07tv0AQz(kN&pw-YYa#I>3frQd3-Rxd1K{=i&x&a{(Of>ifOasic1)yX^rS<4}NHi1|1T zKI;V3Bk{|A>SIotN)fjTT;53pM}7LcX>EU#oM&bG>ifMx;Ic7&{a>=-EoHosa`guHd!6rPWSky8wuUM9^>y8=xPe^j=m9(} z(uz|uho1E<X?&vkjGRAs497mjl zI3CS{H%=h!z*3Jtn?4rCbwDn}{?rA2(g{Q#<;P<Nuj9B>;MS4wsCorPS8?Y8L?NxSS9osbK${{3}u z@$ro3t5X3SG|X};PQ}@s7J;hJ>RtJzKzW{ z9S5#6(pIZak3Xk@%f@i4XY6=m{>Y9KX~$1E-a%7EH%{f8eB$jEpUc_%&9unX{B-G! zzkd8#dYk>7<4@1X{`K((yy09|KeiVc+8-ZpuDG(@k2n~Y++%Mz7$1%t8p9%M0T04O zGueBitvR+~NfJ+gL~D_ljCKh+P& z#WjP^25?g`9Q)%mc%yLCtFQOZ1aP5xY=OU8U#K1nz~z-)r+x&Y!sxwS4)Vmaly1Az2<*`jF*I?)c1~*W&f@ z+4s~QzxvmfZ|2$2Jy6gZJsQ=DM8!ivSp24&%omQQYw%l$>)y?Cwe^s3HVq(eO9MkNvY8iy!l43A{l`V*CWx{skXr z-beR?Hz-MhV;;@NaMZsNz!9(4VO#z&sgM0Z@2}7coX&IV)BUv+&_|s99?qs}(k|n$ z19Bm*-;4!t)Tf{0KU)Wv`;FT3Med)H_26~pG~_~Q{ILSQ=mfMU{X^?J{Le{!tj8?m zLKotXbKp-of#_qLw^r^ESakn6^)KP`p5E_%5jdmtQSX`5$#s3~{|%?ZxXuUE;@axq z^z$NPz=iTax5o@{%>n;3?wrDj^Hn!~q#n{5jR(2$hN#Sb{-UT%J=V%s8*N#Az5TuT zM9Y`o?C|dQC0C}5{e9vRTc(HK6zP-a=B1yPF0#LuE_V3u+I14+%Csw&zGLM}PjdL* zvvw=5wPo4yRmT_3T72#?7Qgf@cl?)anRoKCvs*oC^_VAE{7}yU3@hvJa~M2!jpys| z1jlUydolc^@?Wvz`@|P6i0V~(usu%lck93Uykvf~fHyAal9wD$`eQhbJCoo;?YSDm zQQsQ)_<4YKxt`kmZ{BVr_#*fvl%%-b)qnRmj$`S?q<^$C4!IEfTM@j@OP;6B#Bi*~ zrvFIlqkTP&6%;Po$q=~OkH_xDGuq9WmdrMD$@7f+#4JFdo9y@d#xB9%e8!q_V1J+Z zqW7Er6~P;nB#8sd`52D%tp;#xr_`6cK8|AsyrCRKJ@Mzesb}Jh$J724c!QEey!d%; z&A&%TJJkS=cpbNfFNgJ=|K7ck{=@j4`c4FJA${lT;Pib;=0B5msZYOmbEY2dWqv;) z#%c3c!uoW5cLZ>3XQ}TPekXrCfTMr&U;H@!w?w@W-OpH$T{nLi|68Kn+;Z5zImm^GTL2##SG2xO z{}t9(g{+g=~_?*t#h>GmiBXMiV( zU6vZx@|`4(@!A}V3-2G=z~@ks;`(&_O2BFV*dB{9ebm1K-k>CjKH@Up_4Oq#3*Mk4 z367;6UuFZiYk)f&)AvH~=f9uy?^?(^e&FrC2>h;dNxM;g{Mh5@-yC>@k|h4|JhtU0 z9>??RF7Rc7K!Rg=K8B0Sg#I->#MBI)5j^p-J49D}$sQ`}0H~!S?i~1XQ-EOp- zdF%)9za<{G^=Dz+&cB`!STwFp181Csdb*eFbx-M5d%Yw3F3I(rl(IjMtn+5>b9gt8 zDMqSFpFAIweZupyw5Ro@o@V7)r7wDur1iED%ul)}ajk{iSFOKQ=WqH`){oSCY>5ks z$d341xzh1U|G^>5BjJ^@;lb!D=Hh;;>h#x(N9swn`m5=Ly6> z?rXn3-UX$9;xen>B=zGJxv^CBe)Q#(zP!_yPU@3KnEXQ~a60$(U+?d#(w}zinN#`? z6j}%N?ZZ6avTMJ$XQFnJe41DC)wb=?@16fui%&h%%9q^rdil|opSaAH1(z4s4%)XN z(FkLGl%GYb;=@`{ck`aU{R2aInzwK7EsSI2_gK&RLTgn2QF-a!zhoN8_v00*gN4|Ov7_q% zbCrAH9y&?pDhW^&Ht@ZDd-3HizT(f{BYo}=)Ye=T>lH+->uVi8h$-jj7#?S?>e)Yl zuZ-XBB$1xmhDUC3A-nE|j@>uDaQ91Z?6|Ir=k4fs+=BKD+B%y{sReNm_ZS4wHN(UE z2e9;F-;Tu%tJ_@NuGQd;1U%M!>%jr+P2k?2>ob>SFEfKZd-|ds7m)CK@oFzzZS5QH zIZ)tS8);tktF+7K%x}DTdHb)P_B7uAka!))aeMQ5e_rDCz!vbK>rahquY=Rq3BAA> z=q1sf*gY1r%k$jvI=EurJv=lb;#N0^+wqH}UDmHq^6$CvdSU{&(0O>}?RQ5u`5*08 z>ge0_OCLY#+X7zS?^C`jhU5AF2zY~%BypjCXJR-WcQ$|{esZODADZT0CG`=Phg^vD z=m+2L1Y(z^zK=`e>d7b^{mHIhRbeg-e18DP`mMxp7lJnrC@1y{i{c8o5c|&}c#*{Y z8#`Xx9$gPi`bWIRO$Km`^Qm`veNmi&t3XZ?yTr9WNW8Jn!*qfV<%_m^3^+q&AkoMA z&c^D&IGqNrgpwpUURP!|dAq#6&4HglNfI36-}oCI$9;yn!5fq$!Lh8yaP(s_fTMiZ z&Hlch{vCaAQXk_oJ5<|`RsuNsoq34&k9jZ-zJihz_wVRKJ&t~)8j^O2*SNL-j{Y5k zT!{KkfY;+%2zNSwV}7JA@cI~+X7CxxK~fL4+sPR2!QdCb8Fbf6Z04BN1HG5`e?Tc z{31${*kv4+V>tS89()!hDUR#D*y|&%0AA-G@eN;|=AjW${|azf%dYEVyh@L*)z|dM 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%0D9P5>Sc{pG4 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


!Dd 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
o|qX)-^Fi4-&a7>`XtBq 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

~joDuTzLo!K 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⪼Wz~z- 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

5a*|m^Z$=*3RC^L%ZEl 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 YZbzqm*?7O=5 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 z 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 { From 25a3dbb78de87c668980d7b66c873f6de02c8e0f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 2 Jun 2020 15:42:43 -0400 Subject: [PATCH 262/573] Changes necessary to compile extern (generic) methods that take a function pointer and apply it in C code. Support for generic constructors that take a function pointer still need work. --- Source/Dafny/Compiler-cpp.cs | 6 ++++++ Test/c++/ExternDefs.h | 16 ++++++++++++++ Test/c++/functions.dfy | 42 ++++++++++++++++++++++++++++++------ 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 9ead86f9157..e51535d7775 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1974,6 +1974,12 @@ protected override ILvalue EmitMemberSelect(System.Action obj, Mem // this member selection is handled by some kind of enclosing function call, so nothing to do here return SimpleLvalue(obj); } + } else if (member is Function) { + return StringLvalue(String.Format("{0}::{1}::{2}", + IdProtect(member.EnclosingClass.Module.CompileName), + IdName(member.EnclosingClass), + IdName(member) + )); } else { return SuffixLvalue(obj, "->{0}", IdName(member)); } diff --git a/Test/c++/ExternDefs.h b/Test/c++/ExternDefs.h index c56ea8f7b3d..3ecb2a8ba5a 100644 --- a/Test/c++/ExternDefs.h +++ b/Test/c++/ExternDefs.h @@ -34,6 +34,22 @@ namespace Extern { public: ExternClass2(uint64 x) { (void)x; } }; + + + uint64 Caller(uint64 (*inc)(uint64), uint64 x) { + return inc(x); + } + + template + A GenericCaller(A (*inc)(A), A x) { + return inc(x); + } + + template + class GenericClass { + public: + GenericClass(A (*inc)(A), A x) { inc(x); } + }; /* class __default { diff --git a/Test/c++/functions.dfy b/Test/c++/functions.dfy index e1c91a97383..6685f7c77e4 100644 --- a/Test/c++/functions.dfy +++ b/Test/c++/functions.dfy @@ -1,17 +1,47 @@ newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 -function method Test(x:uint32) : uint64 { - x as uint64 + 1 +//function method Test(x:uint32) : uint64 { +// x as uint64 + 1 +//} +// +//function method Seqs(s:seq, x:uint32, default_val:T) : T +// requires |s| < 1000; +//{ +// if |s| as uint32 > x then s[x] else default_val +//} +// + +function method AddOne(x:uint64) : uint64 + requires x < 100; +{ + x + 1 } -function method Seqs(s:seq, x:uint32, default_val:T) : T - requires |s| < 1000; +method {:extern "Extern", "Caller"} Caller(inc:uint64-->uint64, x:uint64) returns (y:uint64) + requires inc.requires(x); + +method {:extern "Extern", "GenericCaller"} GenericCaller(inc:A-->A, x:A) returns (y:A) + requires inc.requires(x); + +class {:extern "Extern", "GenericClass"} GenericClass { - if |s| as uint32 > x then s[x] else default_val + constructor {:extern "Extern", "GenericClass"} (inc:A-->A, x:A) + requires inc.requires(x) } +method CallTest() { +// var x := Caller(AddOne, 5); +// print x; +// var y := GenericCaller(AddOne, 5); +// print y; + var z := new GenericClass(AddOne, 7); + print z; + print "\n"; +} + method Main() { - var y := Test(12); + //var y := Test(12); + CallTest(); } From cb5e390d851f6cf8ff73242ea67321337919ee51 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 2 Jun 2020 16:24:19 -0400 Subject: [PATCH 263/573] Clean up function examples, so everything passes --- Test/c++/ExternDefs.h | 5 ++- Test/c++/functions.dfy | 90 ++++++++++++++++++++++++------------------ 2 files changed, 55 insertions(+), 40 deletions(-) diff --git a/Test/c++/ExternDefs.h b/Test/c++/ExternDefs.h index 3ecb2a8ba5a..a2fe227433e 100644 --- a/Test/c++/ExternDefs.h +++ b/Test/c++/ExternDefs.h @@ -48,7 +48,10 @@ namespace Extern { template class GenericClass { public: - GenericClass(A (*inc)(A), A x) { inc(x); } + GenericClass(A (*inc)(A), A x) { a = inc(x); } + A get() { return a; } + private: + A a; }; /* class __default { diff --git a/Test/c++/functions.dfy b/Test/c++/functions.dfy index 6685f7c77e4..4457451de71 100644 --- a/Test/c++/functions.dfy +++ b/Test/c++/functions.dfy @@ -1,47 +1,59 @@ -newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 - -//function method Test(x:uint32) : uint64 { -// x as uint64 + 1 -//} -// -//function method Seqs(s:seq, x:uint32, default_val:T) : T -// requires |s| < 1000; -//{ -// if |s| as uint32 > x then s[x] else default_val -//} -// - -function method AddOne(x:uint64) : uint64 - requires x < 100; -{ - x + 1 -} -method {:extern "Extern", "Caller"} Caller(inc:uint64-->uint64, x:uint64) returns (y:uint64) - requires inc.requires(x); +module {:extern "Extern"} Extern { + newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 -method {:extern "Extern", "GenericCaller"} GenericCaller(inc:A-->A, x:A) returns (y:A) - requires inc.requires(x); + method {:extern "Extern", "Caller"} Caller(inc:uint64-->uint64, x:uint64) returns (y:uint64) + requires inc.requires(x); -class {:extern "Extern", "GenericClass"} GenericClass -{ - constructor {:extern "Extern", "GenericClass"} (inc:A-->A, x:A) - requires inc.requires(x) -} + method {:extern "Extern", "GenericCaller"} GenericCaller(inc:A-->A, x:A) returns (y:A) + requires inc.requires(x); + class {:extern} GenericClass + { + constructor {:extern "Extern", "GenericClass"} (inc:A-->A, x:A) + requires inc.requires(x) -method CallTest() { -// var x := Caller(AddOne, 5); -// print x; -// var y := GenericCaller(AddOne, 5); -// print y; - var z := new GenericClass(AddOne, 7); - print z; - print "\n"; + method {:extern "Extern", "get"} get() returns (y:A) + } } -method Main() { - //var y := Test(12); - CallTest(); +module Test { + import opened Extern + + newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 + + // Function-method tests + function method Test(x:uint32) : uint64 { + x as uint64 + 1 + } + + function method Seqs(s:seq, x:uint32, default_val:T) : T + requires |s| < 1000; + { + if |s| as uint32 > x then s[x] else default_val + } + + // Function pointer tests + function method AddOne(x:uint64) : uint64 + requires x < 100; + { + x + 1 + } + + method CallTest() { + var x := Caller(AddOne, 5); + print x, "\n"; + var y := GenericCaller(AddOne, 6); + print y, "\n"; + var c := new GenericClass(AddOne, 7); + var z := c.get(); + print z, "\n"; + } + + + method Main() { + var y := Test(12); // Basic function-method test + CallTest(); // Function pointer tests + } } + From 61d00e0dd417a2f00a6776615f9aac8f62989eef Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 3 Jun 2020 21:20:44 -0700 Subject: [PATCH 264/573] Support function types with linear/shared parameters/returns --- Source/Dafny/Cloner.cs | 3 +- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Dafny.atg | 35 ++--- Source/Dafny/DafnyAst.cs | 194 +++++++++++++++++++------- Source/Dafny/Parser.cs | 35 +++-- Source/Dafny/RefinementTransformer.cs | 20 +-- Source/Dafny/Resolver.cs | 66 +++++---- Source/Dafny/Rewriter.cs | 2 +- Source/Dafny/Translator.cs | 4 +- 9 files changed, 232 insertions(+), 129 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 099e24bc8f7..fbba2ef20f3 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -179,7 +179,8 @@ public virtual Type CloneType(Type t) { return new MapType(tt.Finite, CloneType(tt.Domain), CloneType(tt.Range)); } else if (t is ArrowType) { var tt = (ArrowType)t; - return new ArrowType(Tok(tt.tok), tt.Args.ConvertAll(CloneType), CloneType(tt.Result)); + return new ArrowType(Tok(tt.tok), tt.Args.ConvertAll(CloneType), CloneType(tt.Result), + tt.ResultUsage, tt.Usages); } else if (t is UserDefinedType) { var tt = (UserDefinedType)t; #if TEST_TYPE_SYNONYM_TRANSPARENCY diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 44e2b70bdba..339619ed36a 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -2511,7 +2511,7 @@ protected override void EmitSeqConstructionExpr(SeqConstructionExpr expr, bool i var fromType = (UserDefinedType)expr.Initializer.Type.NormalizeExpand(); var atd = (ArrowTypeDecl)fromType.ResolvedClass; var tParam = new UserDefinedType(expr.tok, new TypeParameter(expr.tok, "X", TypeParameter.TPVarianceSyntax.NonVariant_Strict)); - var toType = new ArrowType(expr.tok, atd, new List() { Type.Int }, tParam); + var toType = new ArrowType(expr.tok, atd, new List() { Type.Int }, tParam, atd.ResultUsage, atd.Usages); var initWr = EmitCoercionIfNecessary(fromType, toType, expr.tok, wr); TrExpr(expr.Initializer, initWr, inLetExprBody); wr.Write(")"); diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 7f451f87c81..03bbe230e74 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1854,31 +1854,24 @@ TypeAndToken } (. ty = new UserDefinedType(e.tok, e); .) ) - [ (. int arrowKind = 0; /* 0: any, 1: partial, 2: total */ + [ (. Arrow arrow = Arrow.Any; Type t2; + usage = Usage.Ordinary; .) - ( "~>" (. tok = t; arrowKind = 0; .) - | "-->" (. tok = t; arrowKind = 1; .) - | "->" (. tok = t; arrowKind = 2; .) + ( "~>" (. tok = t; arrow = Arrow.Any; .) + | "-->" (. tok = t; arrow = Arrow.Partial; .) + | "->" (. tok = t; arrow = Arrow.Total; .) ) + [ "linear" (. usage = Usage.Linear; .) ] + // TODO: we could also support shared in function types (but not in tuple types) Type (. if (tupleArgTypes != null) { gt = tupleArgTypes; - } else { - gt = new List{ ty }; - } - var arity = gt.Count; - theBuiltIns.CreateArrowTypeDecl(arity); - if (arrowKind == 0) { - ty = new ArrowType(tok, gt, t2); } else { - gt.Add(t2); - if (arrowKind == 1) { - ty = new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), gt); - } else { - ty = new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), gt); - } + gt = new List{ ty }; + usages = new List{ Usage.Ordinary }; } + ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); .) ] . @@ -2060,10 +2053,12 @@ FunctionDecl(f.Usages); + usages2.Add(Usage.Ghost); + theBuiltIns.CreateArrowTypeDecl(formals.Count + 1, f.ResultUsage, usages2); } .) . @@ -3474,7 +3469,7 @@ LambdaExpression LambdaArrow Expression (. e = new LambdaExpr(x, bvs, req, reads, body); - theBuiltIns.CreateArrowTypeDecl(bvs.Count); + theBuiltIns.CreateArrowTypeDecl(bvs.Count, Usage.Ordinary, null); .) . ParensExpression diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 587d15eeb3b..3a5329f9416 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -104,13 +104,15 @@ public int CompareTo(object obj) { } } + public enum Arrow { Any, Partial, Total } + public class BuiltIns { public readonly ModuleDefinition SystemModule = new ModuleDefinition(Token.NoToken, "_System", new List(), false, false, false, null, null, null, true, true, true); readonly Dictionary arrayTypeDecls = new Dictionary(); - public readonly Dictionary ArrowTypeDecls = new Dictionary(); - public readonly Dictionary PartialArrowTypeDecls = new Dictionary(); // same keys as arrowTypeDecl - public readonly Dictionary TotalArrowTypeDecls = new Dictionary(); // same keys as arrowTypeDecl + readonly Dictionary arrowTypeDecls = new Dictionary(); + readonly Dictionary, SubsetTypeDecl> arrowSubsets = + new Dictionary, SubsetTypeDecl>(); readonly Dictionary tupleTypeDecls = new Dictionary(); public readonly ISet Bitwidths = new HashSet(); public SpecialField ORDINAL_Offset; // filled in by the resolver, used by the translator @@ -142,7 +144,7 @@ public BuiltIns() { UserDefinedType tmp = ArrayType(1, Type.Int, true); // Arrow types of other dimensions may be added during parsing as the parser detects the need for these. For the 0-arity // arrow type, the resolver adds a Valid() predicate for iterators, whose corresponding arrow type is conveniently created here. - CreateArrowTypeDecl(0); + CreateArrowTypeDecl(0, Usage.Ghost, null); // Note, in addition to these types, the _System module contains tuple types. These tuple types are added to SystemModule // by the parser as the parser detects the need for these. @@ -169,7 +171,7 @@ public BuiltIns() { new List() { rankFun }); rankFun.EnclosingClass = defaultClass; SystemModule.TopLevelDecls.Add(defaultClass); - CreateArrowTypeDecl(2); + CreateArrowTypeDecl(2, Usage.Ghost, new List{Usage.Ghost, Usage.Ghost}); } // <== Add rank_is_less_than } @@ -222,13 +224,53 @@ public static string ArrayClassName(int dims) { } } + // Dafny doesn't seem ready to distinguish between (t)->t and (ghost t)->t, so suppress ghost in function types + public static Usage Deghost(Usage u) { + return (u == Usage.Ghost) ? Usage.Ordinary : u; + } + + public static List Deghosts(List u) { + return (u == null) ? null : u.ConvertAll(Deghost); + } + + public Type CreateArrowType(IToken tok, bool resolved, Arrow arrow, List typeArgs, Type result, + Usage resultUsage, List usages) { + if (usages == null) { + usages = new Usage[typeArgs.Count].ToList().ConvertAll(_ => Usage.Ordinary); + } + resultUsage = Deghost(resultUsage); + usages = Deghosts(usages); + CreateArrowTypeDecl(typeArgs.Count, resultUsage, usages); + object key = Tuple.Create(resultUsage, MakeTupleKey(usages, usages.Count)); + if (arrow == Arrow.Any) { + return resolved ? new ArrowType(tok, arrowTypeDecls[key], typeArgs, result, resultUsage, usages) + : new ArrowType(tok, typeArgs, result, resultUsage, usages); + } else { + string name = ArrowType.ArrowTypeName(arrow, resultUsage, usages); + var types = typeArgs.Concat(new Type[] {result}).ToList(); + return resolved ? new UserDefinedType(tok, name, arrowSubsets[Tuple.Create(arrow, key)], types) + : new UserDefinedType(tok, name, types); + } + } + ///

/// Idempotently add an arrow type with arity 'arity' to the system module, and along /// with this arrow type, the two built-in subset types based on the arrow type. /// - public void CreateArrowTypeDecl(int arity) { + public void CreateArrowTypeDecl(int arity, Usage resultUsage, List usages) { + resultUsage = Deghost(resultUsage); + usages = Deghosts(usages); + CreateArrowTypeDeclInternal(arity, Usage.Ordinary, null); + CreateArrowTypeDeclInternal(arity, resultUsage, usages); + } + + private void CreateArrowTypeDeclInternal(int arity, Usage resultUsage, List usages) { Contract.Requires(0 <= arity); - if (!ArrowTypeDecls.ContainsKey(arity)) { + if (usages == null) { + usages = new Usage[arity].ToList().ConvertAll(_ => Usage.Ordinary); + } + object key = Tuple.Create(resultUsage, MakeTupleKey(usages, arity)); + if (!arrowTypeDecls.ContainsKey(key)) { IToken tok = Token.NoToken; var tps = Util.Map(Enumerable.Range(0, arity + 1), x => x < arity ? new TypeParameter(tok, "T" + x, TypeParameter.TPVarianceSyntax.Contravariance) : @@ -253,8 +295,8 @@ public void CreateArrowTypeDecl(int arity) { null, null, null); readsIS.Function = reads; // just so we can really claim the member declarations are resolved readsIS.TypeArgumentSubstitutions = Util.Dict(tps, tys); // ditto - var arrowDecl = new ArrowTypeDecl(tps, req, reads, SystemModule, DontCompile()); - ArrowTypeDecls.Add(arity, arrowDecl); + var arrowDecl = new ArrowTypeDecl(tps, req, reads, SystemModule, resultUsage, usages, DontCompile()); + arrowTypeDecls.Add(key, arrowDecl); SystemModule.TopLevelDecls.Add(arrowDecl); // declaration of read-effect-free arrow-type, aka heap-independent arrow-type, aka partial-function arrow-type @@ -262,11 +304,11 @@ public void CreateArrowTypeDecl(int arity) { new TypeParameter(tok, "T" + x, TypeParameter.TPVarianceSyntax.Contravariance) : new TypeParameter(tok, "R", TypeParameter.TPVarianceSyntax.Covariant_Strict)); tys = tps.ConvertAll(tp => (Type)(new UserDefinedType(tp))); - var id = new BoundVar(tok, "f", new ArrowType(tok, arrowDecl, tys)); - var partialArrow = new SubsetTypeDecl(tok, ArrowType.PartialArrowTypeName(arity), + var id = new BoundVar(tok, "f", new ArrowType(tok, arrowDecl, tys, resultUsage, usages)); + var partialArrow = new SubsetTypeDecl(tok, ArrowType.ArrowTypeName(Arrow.Partial, resultUsage, usages), new TypeParameter.TypeParameterCharacteristics(false), tps, SystemModule, id, ArrowSubtypeConstraint(tok, id, reads, tps, false), SubsetTypeDecl.WKind.Special, null, DontCompile()); - PartialArrowTypeDecls.Add(arity, partialArrow); + arrowSubsets.Add(Tuple.Create(Arrow.Partial, key), partialArrow); SystemModule.TopLevelDecls.Add(partialArrow); // declaration of total arrow-type @@ -276,10 +318,10 @@ public void CreateArrowTypeDecl(int arity) { new TypeParameter(tok, "R", TypeParameter.TPVarianceSyntax.Covariant_Strict)); tys = tps.ConvertAll(tp => (Type)(new UserDefinedType(tp))); id = new BoundVar(tok, "f", new UserDefinedType(tok, partialArrow.Name, partialArrow, tys)); - var totalArrow = new SubsetTypeDecl(tok, ArrowType.TotalArrowTypeName(arity), + var totalArrow = new SubsetTypeDecl(tok, ArrowType.ArrowTypeName(Arrow.Total, resultUsage, usages), new TypeParameter.TypeParameterCharacteristics(false), tps, SystemModule, id, ArrowSubtypeConstraint(tok, id, req, tps, true), SubsetTypeDecl.WKind.Special, null, DontCompile()); - TotalArrowTypeDecls.Add(arity, totalArrow); + arrowSubsets.Add(Tuple.Create(Arrow.Total, key), totalArrow); SystemModule.TopLevelDecls.Add(totalArrow); } } @@ -359,10 +401,33 @@ public TupleTypeDecl TupleType(IToken tok, int dims, bool allowCreationOfNewType return tt; } + public static char UsageChar(Usage u) { + return u == Usage.Linear ? 'L' : u == Usage.Shared ? 'S' : u == Usage.Ghost ? 'G' : 'O'; + } + + public static Usage UsageFromChar(char c) { + return c == 'L' ? Usage.Linear : c == 'S' ? Usage.Shared : c == 'G' ? Usage.Ghost : Usage.Ordinary; + } + + public static string UsagesString(Usage result, List usages) { + return usages.Count + ((result == Usage.Ordinary && usages.All(u => u == Usage.Ordinary)) + ? "" : UsageChar(result) + String.Concat(usages.ConvertAll(UsageChar))); + } + + public static Tuple> UsagesFromString(string s, int count) { + List usages = new Usage[count].ToList(); + if (System.Char.IsDigit(s[s.Length - 1])) { + return Tuple.Create(Usage.Ordinary, usages.ConvertAll(_ => Usage.Ordinary)); + } else { + usages = usages.Select((_, i) => s[s.Length - count + i]).ToList().ConvertAll(UsageFromChar); + return Tuple.Create(UsageFromChar(s[s.Length - count - 1]), usages); + } + } + public static string TupleTypeName(List usages) { - var uchars = usages.ConvertAll(u => u == Usage.Linear ? "L" : u == Usage.Ghost ? "G" : "_"); - return "_tuple#" + usages.Count + ((usages.All(u => u == Usage.Ordinary)) ? "" : String.Concat(uchars)); + return "_tuple#" + UsagesString(Usage.Ordinary, usages); } + public static bool IsTupleTypeName(string s) { Contract.Requires(s != null); return s.StartsWith("_tuple#"); @@ -1494,7 +1559,7 @@ public static Type HeadWithProxyArgs(Type t) { } else if (t is ArrowType) { var s = (ArrowType)t; var args = s.TypeArgs.ConvertAll(_ => (Type)new InferredTypeProxy()); - return new ArrowType(s.tok, (ArrowTypeDecl)s.ResolvedClass, args); + return new ArrowType(s.tok, (ArrowTypeDecl)s.ResolvedClass, args, s.ResultUsage, s.Usages); } else { var s = (UserDefinedType)t; var args = s.TypeArgs.ConvertAll(_ => (Type)new InferredTypeProxy()); @@ -1698,7 +1763,7 @@ public static Type MeetX(Type a, Type b, BuiltIns builtIns) { return null; } var arr = (ArrowType)aa; - return new ArrowType(arr.tok, (ArrowTypeDecl)arr.ResolvedClass, typeArgs); + return new ArrowType(arr.tok, (ArrowTypeDecl)arr.ResolvedClass, typeArgs, arr.ResultUsage, arr.Usages); } else if (b.IsObjectQ) { var udtB = (UserDefinedType)b; return !a.IsRefType ? null : abNonNullTypes ? UserDefinedType.CreateNonNullType(udtB) : udtB; @@ -1930,7 +1995,7 @@ public static Type JoinX(Type a, Type b, BuiltIns builtIns) { return null; } var arr = (ArrowType)aa; - return new ArrowType(arr.tok, (ArrowTypeDecl)arr.ResolvedClass, typeArgs); + return new ArrowType(arr.tok, (ArrowTypeDecl)arr.ResolvedClass, typeArgs, arr.ResultUsage, arr.Usages); } else if (b.IsObjectQ) { return a.IsRefType ? a : null; } else if (a.IsObjectQ) { @@ -2127,6 +2192,9 @@ public override bool Equals(Type that) { public class ArrowType : UserDefinedType { + public readonly Usage ResultUsage; + public readonly List Usages; + public List Args { get { return TypeArgs.GetRange(0, Arity); } } @@ -2142,27 +2210,35 @@ public int Arity { /// /// Constructs a(n unresolved) arrow type. /// - public ArrowType(IToken tok, List args, Type result) - : base(tok, ArrowTypeName(args.Count), Util.Snoc(args, result)) { + public ArrowType(IToken tok, List args, Type result, Usage resultUsage, List usages) + : base(tok, ArrowTypeName(Arrow.Any, resultUsage, usages), Util.Snoc(args, result)) { Contract.Requires(tok != null); Contract.Requires(args != null); Contract.Requires(result != null); + resultUsage = BuiltIns.Deghost(resultUsage); + usages = BuiltIns.Deghosts(usages); + ResultUsage = resultUsage; + Usages = usages; } /// /// Constructs and returns a resolved arrow type. /// - public ArrowType(IToken tok, ArrowTypeDecl atd, List typeArgsAndResult) - : base(tok, ArrowTypeName(atd.Arity), atd, typeArgsAndResult) { + public ArrowType(IToken tok, ArrowTypeDecl atd, List typeArgsAndResult, Usage resultUsage, List usages) + : base(tok, ArrowTypeName(Arrow.Any, resultUsage, usages), atd, typeArgsAndResult) { Contract.Requires(tok != null); Contract.Requires(atd != null); Contract.Requires(typeArgsAndResult != null); Contract.Requires(typeArgsAndResult.Count == atd.Arity + 1); + resultUsage = BuiltIns.Deghost(resultUsage); + usages = BuiltIns.Deghosts(usages); + ResultUsage = resultUsage; + Usages = usages; } /// /// Constructs and returns a resolved arrow type. /// - public ArrowType(IToken tok, ArrowTypeDecl atd, List typeArgs, Type result) - : this(tok, atd, Util.Snoc(typeArgs, result)) { + public ArrowType(IToken tok, ArrowTypeDecl atd, List typeArgs, Type result, Usage resultUsage, List usages) + : this(tok, atd, Util.Snoc(typeArgs, result), resultUsage, usages) { Contract.Requires(tok != null); Contract.Requires(atd != null); Contract.Requires(typeArgs!= null); @@ -2172,8 +2248,9 @@ public ArrowType(IToken tok, ArrowTypeDecl atd, List typeArgs, Type result public const string Arrow_FullCompileName = "Func"; // this is the same for all arities - public static string ArrowTypeName(int arity) { - return "_#Func" + arity; + public static string ArrowTypeName(Arrow arrow, Usage resultUsage, List usages) { + string s = (arrow == Arrow.Partial) ? "_#PartialFunc" : (arrow == Arrow.Total) ? "_#TotalFunc" : "_#Func"; + return s + BuiltIns.UsagesString(BuiltIns.Deghost(resultUsage), BuiltIns.Deghosts(usages)); } [Pure] @@ -2181,19 +2258,11 @@ public static bool IsArrowTypeName(string s) { return s.StartsWith("_#Func"); } - public static string PartialArrowTypeName(int arity) { - return "_#PartialFunc" + arity; - } - [Pure] public static bool IsPartialArrowTypeName(string s) { return s.StartsWith("_#PartialFunc"); } - public static string TotalArrowTypeName(int arity) { - return "_#TotalFunc" + arity; - } - [Pure] public static bool IsTotalArrowTypeName(string s) { return s.StartsWith("_#TotalFunc"); @@ -2204,14 +2273,15 @@ public static bool IsTotalArrowTypeName(string s) { public const string TOTAL_ARROW = "->"; public override string TypeName(ModuleDefinition context, bool parseAble) { - return PrettyArrowTypeName(ANY_ARROW, Args, Result, context, parseAble); + return PrettyArrowTypeName(ANY_ARROW, Args, Result, context, parseAble, Tuple.Create(ResultUsage, Usages)); } /// /// Pretty prints an arrow type. If "result" is null, then all arguments, including the result type are expected in "typeArgs". /// If "result" is non-null, then only the in-arguments are in "typeArgs". /// - public static string PrettyArrowTypeName(string arrow, List typeArgs, Type result, ModuleDefinition context, bool parseAble) { + public static string PrettyArrowTypeName(string arrow, List typeArgs, Type result, ModuleDefinition context, bool parseAble, + Tuple> usage) { Contract.Requires(arrow != null); Contract.Requires(typeArgs != null); Contract.Requires(result != null || 1 <= typeArgs.Count); @@ -2221,7 +2291,7 @@ public static string PrettyArrowTypeName(string arrow, List typeArgs, Type if (arity != 1) { // 0 or 2-or-more arguments: need parentheses domainNeedsParens = true; - } else if (typeArgs[0].IsBuiltinArrowType) { + } else if (typeArgs[0].IsBuiltinArrowType || usage.Item2[0] != Usage.Ordinary) { // arrows are right associative, so we need parentheses around the domain type domainNeedsParens = true; } else { @@ -2234,10 +2304,11 @@ public static string PrettyArrowTypeName(string arrow, List typeArgs, Type } string s = ""; if (domainNeedsParens) { s += "("; } - s += Util.Comma(", ", typeArgs.Take(arity), arg => arg.TypeName(context, parseAble)); + s += Util.Comma(", ", typeArgs.Take(arity).Zip(usage.Item2), arg => + Resolver.UsagePrefix(arg.Item2) + arg.Item1.TypeName(context, parseAble)); if (domainNeedsParens) { s += ")"; } s += " " + arrow + " "; - s += (result ?? typeArgs.Last()).TypeName(context, parseAble); + s += Resolver.UsagePrefix(usage.Item1) + (result ?? typeArgs.Last()).TypeName(context, parseAble); return s; } @@ -2506,7 +2577,8 @@ public static UserDefinedType FromTopLevelDecl(IToken tok, TopLevelDecl cd, List Contract.Assert((cd is ArrowTypeDecl) == ArrowType.IsArrowTypeName(cd.Name)); var args = (typeArgs ?? cd.TypeArgs).ConvertAll(tp => (Type)new UserDefinedType(tp)); if (cd is ArrowTypeDecl) { - return new ArrowType(tok, (ArrowTypeDecl)cd, args); + var a = cd as ArrowTypeDecl; + return new ArrowType(tok, a, args, a.ResultUsage, a.Usages); } else if (cd is ClassDecl && !(cd is DefaultClassDecl)) { return new UserDefinedType(tok, cd.Name + "?", cd, args); } else { @@ -2646,19 +2718,15 @@ public override string TypeName(ModuleDefinition context, bool parseAble) { Contract.Ensures(Contract.Result() != null); if (BuiltIns.IsTupleTypeName(Name)) { // Unfortunately, ResolveClass may be null, so Name is all we have. Reverse-engineer the string name. - List usages = new string[TypeArgs.Count].ToList(); - if (System.Char.IsDigit(Name[Name.Length - 1])) { - usages = usages.ConvertAll(_ => ""); - } else { - usages = usages.Select((_, i) => Name[Name.Length - usages.Count + i]).ToList().ConvertAll(c => - (c == 'L') ? "linear " : (c == 'G') ? "ghost " : ""); - } + List usages = BuiltIns.UsagesFromString(Name, TypeArgs.Count).Item2; return "(" + Util.Comma(", ", TypeArgs.Zip(usages), - (ty_u) => ty_u.Item2 + ty_u.Item1.TypeName(context, parseAble)) + ")"; + (ty_u) => Resolver.UsagePrefix(ty_u.Item2) + ty_u.Item1.TypeName(context, parseAble)) + ")"; } else if (ArrowType.IsPartialArrowTypeName(Name)) { - return ArrowType.PrettyArrowTypeName(ArrowType.PARTIAL_ARROW, TypeArgs, null, context, parseAble); + return ArrowType.PrettyArrowTypeName(ArrowType.PARTIAL_ARROW, TypeArgs, null, context, parseAble, + BuiltIns.UsagesFromString(Name, TypeArgs.Count - 1)); } else if (ArrowType.IsTotalArrowTypeName(Name)) { - return ArrowType.PrettyArrowTypeName(ArrowType.TOTAL_ARROW, TypeArgs, null, context, parseAble); + return ArrowType.PrettyArrowTypeName(ArrowType.TOTAL_ARROW, TypeArgs, null, context, parseAble, + BuiltIns.UsagesFromString(Name, TypeArgs.Count - 1)); } else { #if TEST_TYPE_SYNONYM_TRANSPARENCY if (Name == "type#synonym#transparency#test" && ResolvedClass is TypeSynonymDecl) { @@ -3967,21 +4035,28 @@ public class ArrowTypeDecl : ClassDecl { public override string WhatKind { get { return "function type"; } } public readonly int Arity; + public readonly Usage ResultUsage; + public readonly List Usages; public readonly Function Requires; public readonly Function Reads; - public ArrowTypeDecl(List tps, Function req, Function reads, ModuleDefinition module, Attributes attributes) - : base(Token.NoToken, ArrowType.ArrowTypeName(tps.Count - 1), module, tps, + public ArrowTypeDecl(List tps, Function req, Function reads, ModuleDefinition module, + Usage resultUsage, List usages, Attributes attributes) + : base(Token.NoToken, ArrowType.ArrowTypeName(Arrow.Any, resultUsage, usages), module, tps, new List { req, reads }, attributes, null) { Contract.Requires(tps != null && 1 <= tps.Count); Contract.Requires(req != null); Contract.Requires(reads != null); Contract.Requires(module != null); + resultUsage = BuiltIns.Deghost(resultUsage); + usages = BuiltIns.Deghosts(usages); Arity = tps.Count - 1; Requires = req; Reads = reads; Requires.EnclosingClass = this; Reads.EnclosingClass = this; + ResultUsage = resultUsage; + Usages = usages; } } @@ -5560,7 +5635,8 @@ public override IEnumerable SubExpressions { public Type Type { get { // Note, the following returned type can contain type parameters from the function and its enclosing class - return new ArrowType(tok, Formals.ConvertAll(f => f.Type), ResultType); + return new ArrowType(tok, Formals.ConvertAll(f => f.Type), ResultType, + ResultUsage, Formals.ConvertAll(f => f.Usage)); } } @@ -5697,6 +5773,16 @@ public bool ContextIsPure { return CallerMustBePure || this.Result == null || this.Result.Usage != Usage.Shared; } } + public Usage ResultUsage { + get { + return Result != null ? Result.Usage : IsGhost ? Usage.Ghost : Usage.Ordinary; + } + } + public List Usages { + get { + return Formals.ConvertAll(f => f.Usage); + } + } } public class Predicate : Function diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index e5c926f213b..c671179cc2d 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -1923,10 +1923,12 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi } f.BodyStartTok = bodyStart; f.BodyEndTok = bodyEnd; - theBuiltIns.CreateArrowTypeDecl(formals.Count); + theBuiltIns.CreateArrowTypeDecl(formals.Count, f.ResultUsage, f.Usages); if (isIndPredicate || isCoPredicate) { // also create an arrow type for the corresponding prefix predicate - theBuiltIns.CreateArrowTypeDecl(formals.Count + 1); + var usages2 = new List(f.Usages); + usages2.Add(Usage.Ghost); + theBuiltIns.CreateArrowTypeDecl(formals.Count + 1, f.ResultUsage, usages2); } } @@ -2524,37 +2526,32 @@ void TypeAndToken(out IToken tok, out Type ty, bool inExpressionContext) { default: SynErr(199); break; } if (la.kind == 114 || la.kind == 115 || la.kind == 116) { - int arrowKind = 0; /* 0: any, 1: partial, 2: total */ + Arrow arrow = Arrow.Any; Type t2; + usage = Usage.Ordinary; if (la.kind == 114) { Get(); - tok = t; arrowKind = 0; + tok = t; arrow = Arrow.Any; } else if (la.kind == 115) { Get(); - tok = t; arrowKind = 1; + tok = t; arrow = Arrow.Partial; } else { Get(); - tok = t; arrowKind = 2; + tok = t; arrow = Arrow.Total; + } + if (la.kind == 74) { + Get(); + usage = Usage.Linear; } Type(out t2); if (tupleArgTypes != null) { gt = tupleArgTypes; } else { gt = new List{ ty }; + usages = new List{ Usage.Ordinary }; } - var arity = gt.Count; - theBuiltIns.CreateArrowTypeDecl(arity); - if (arrowKind == 0) { - ty = new ArrowType(tok, gt, t2); - } else { - gt.Add(t2); - if (arrowKind == 1) { - ty = new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), gt); - } else { - ty = new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), gt); - } - } + ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); } } @@ -5212,7 +5209,7 @@ void LambdaExpression(out Expression e, bool allowSemi, bool allowBitwiseOps) { LambdaArrow(); Expression(out body, allowSemi, true, allowBitwiseOps); e = new LambdaExpr(x, bvs, req, reads, body); - theBuiltIns.CreateArrowTypeDecl(bvs.Count); + theBuiltIns.CreateArrowTypeDecl(bvs.Count, Usage.Ordinary, null); } diff --git a/Source/Dafny/RefinementTransformer.cs b/Source/Dafny/RefinementTransformer.cs index 020a9e9605d..41e0ef9c691 100644 --- a/Source/Dafny/RefinementTransformer.cs +++ b/Source/Dafny/RefinementTransformer.cs @@ -637,6 +637,10 @@ ClassDecl MergeClass(ClassDecl nw, ClassDecl prev) { reporter.Error(MessageSource.RefinementTransformer, f, "a function method cannot be changed into a (ghost) function in a refining module: {0}", f.Name); } else if (prevFunction.IsGhost && !f.IsGhost && prevFunction.Body != null) { reporter.Error(MessageSource.RefinementTransformer, f, "a function can be changed into a function method in a refining module only if the function has not yet been given a body: {0}", f.Name); + } else if (prevFunction.Usage != f.Usage && (Resolver.HasLinearity(prevFunction.Usage) || Resolver.HasLinearity(f.Usage))) { + reporter.Error(MessageSource.RefinementTransformer, f, "function refinement must have same linear/shared declaration: {0}", f.Name); + } else if (prevFunction.ResultUsage != f.ResultUsage && (Resolver.HasLinearity(prevFunction.ResultUsage) || Resolver.HasLinearity(f.ResultUsage))) { + reporter.Error(MessageSource.RefinementTransformer, f, "function result must have same ghost/linear/shared declaration: {0}", f.Name); } if (f.SignatureIsOmitted) { Contract.Assert(f.TypeArgs.Count == 0); @@ -705,6 +709,8 @@ ClassDecl MergeClass(ClassDecl nw, ClassDecl prev) { reporter.Error(MessageSource.RefinementTransformer, m, "a method cannot be changed into a ghost method in a refining module: {0}", m.Name); } else if (!prevMethod.IsGhost && m.IsGhost) { reporter.Error(MessageSource.RefinementTransformer, m, "a ghost method cannot be changed into a non-ghost method in a refining module: {0}", m.Name); + } else if (prevMethod.Usage != m.Usage) { + reporter.Error(MessageSource.RefinementTransformer, m, "method refinement must have same linear/shared declaration: {0}", m.Name); } if (m.SignatureIsOmitted) { Contract.Assert(m.TypeArgs.Count == 0); @@ -860,10 +866,9 @@ public void CheckOverrideResolvedParameters(IToken tok, List old, List old, List nw, st var n = nw[i]; if (o.Name != n.Name) { reporter.Error(MessageSource.RefinementTransformer, n.tok, "there is a difference in name of {0} {1} ('{2}' versus '{3}') of {4} {5} compared to corresponding {4} in the module it refines", parameterKind, i, n.Name, o.Name, thing, name); - } else if (!o.IsGhost && n.IsGhost) { - reporter.Error(MessageSource.RefinementTransformer, n.tok, "{0} '{1}' of {2} {3} cannot be changed, compared to the corresponding {2} in the module it refines, from non-ghost to ghost", parameterKind, n.Name, thing, name); - } else if (o.IsGhost && !n.IsGhost) { - reporter.Error(MessageSource.RefinementTransformer, n.tok, "{0} '{1}' of {2} {3} cannot be changed, compared to the corresponding {2} in the module it refines, from ghost to non-ghost", parameterKind, n.Name, thing, name); + } else if (o.Usage != n.Usage) { + reporter.Error(MessageSource.RefinementTransformer, n.tok, "{0} '{1}' of {2} {3} cannot be changed, compared to the corresponding {2} in the module it refines, from {4} to {5}", parameterKind, n.Name, thing, name, + Resolver.UsageNameNonGhost(o.Usage), Resolver.UsageNameNonGhost(n.Usage)); } else if (!o.IsOld && n.IsOld) { reporter.Error(MessageSource.RefinementTransformer, n.tok, "{0} '{1}' of {2} {3} cannot be changed, compared to the corresponding {2} in the module it refines, from non-new to new", parameterKind, n.Name, thing, name); } else if (o.IsOld && !n.IsOld) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index df4141d05fd..3f18f14e368 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -205,7 +205,8 @@ public Resolver(Program prog) { // Map#Items relies on the two destructors for 2-tuples builtIns.TupleType(Token.NoToken, 2, true); // Several methods and fields rely on 1-argument arrow types - builtIns.CreateArrowTypeDecl(1); + builtIns.CreateArrowTypeDecl(1, Usage.Ordinary, null); + builtIns.CreateArrowTypeDecl(1, Usage.Ghost, new List{Usage.Ghost}); valuetypeDecls = new ValuetypeDecl[] { new ValuetypeDecl("bool", builtIns.SystemModule, 0, t => t.IsBoolType, typeArgs => Type.Bool), @@ -2473,8 +2474,8 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, reporter.Error(MessageSource.Resolver, other, "shared destructors must agree on whether or not they are ghost, but '{0}' is {1} in constructor '{2}' and {3} in constructor '{4}'", rolemodel.Name, - UsageName(rolemodel.Usage).Replace("ordinary", "non-ghost"), dtor.EnclosingCtors[0].Name, - UsageName(other.Usage).Replace("ordinary", "non-ghost"), dtor.EnclosingCtors[i].Name); + UsageNameNonGhost(rolemodel.Usage), dtor.EnclosingCtors[0].Name, + UsageNameNonGhost(other.Usage), dtor.EnclosingCtors[i].Name); } } } @@ -11875,12 +11876,12 @@ Type ResolveTypeRhs(TypeRhs rr, Statement stmt, ICodeContext codeContext) { ResolveExpression(rr.ElementInit, new ResolveOpts(codeContext, false)); // Check // int^N -> rr.EType :> rr.ElementInit.Type - builtIns.CreateArrowTypeDecl(rr.ArrayDimensions.Count); // TODO: should this be done already in the parser? + //builtIns.CreateArrowTypeDecl(rr.ArrayDimensions.Count); // TODO: should this be done already in the parser? var args = new List(); for (int ii = 0; ii < rr.ArrayDimensions.Count; ii++) { args.Add(Type.Int); } - var arrowType = new ArrowType(rr.ElementInit.tok, builtIns.ArrowTypeDecls[rr.ArrayDimensions.Count], args, rr.EType); + var arrowType = builtIns.CreateArrowType(rr.ElementInit.tok, true, Arrow.Any, args, rr.EType, Usage.Ordinary, null); string underscores; if (rr.ArrayDimensions.Count == 1) { underscores = "_"; @@ -12540,7 +12541,8 @@ public static Type SubstType(Type type, Dictionary subst) { } } else if (type is ArrowType) { var t = (ArrowType)type; - var at = new ArrowType(t.tok, t.Args.ConvertAll(u => SubstType(u, subst)), SubstType(t.Result, subst)); + var at = new ArrowType(t.tok, t.Args.ConvertAll(u => SubstType(u, subst)), SubstType(t.Result, subst), + t.ResultUsage, t.Usages); at.ResolvedClass = t.ResolvedClass; return at; } else if (type is UserDefinedType) { @@ -12889,6 +12891,11 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { } else if (expr is ExprDotName) { var e = (ExprDotName)expr; ResolveDotSuffix(e, true, null, opts, false); + var select = e.Resolved as MemberSelectExpr; + var fn = (select == null) ? null : select.Member as Function; + if (fn != null && HasLinearity(fn.Usage)) { + reporter.Error(MessageSource.Resolver, e.tok, "cannot use shared/linear function {0} as first-class function value", fn.Name); + } if (e.Type is Resolver_IdentifierExpr.ResolverType_Module) { reporter.Error(MessageSource.Resolver, e.tok, "name of module ({0}) is used as a variable", e.SuffixName); e.ResetTypeAssignment(); // the rest of type checking assumes actual types @@ -12933,7 +12940,7 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { } subst = BuildTypeArgumentSubstitute(subst); e.Type = SelectAppropriateArrowType(fn.tok, fn.Formals.ConvertAll(f => SubstType(f.Type, subst)), SubstType(fn.ResultType, subst), - fn.Reads.Count != 0, fn.Req.Count != 0); + fn.ResultUsage, fn.Usages, fn.Reads.Count != 0, fn.Req.Count != 0); AddCallGraphEdge(opts.codeContext, fn, e, false); } else if (member is Field) { var field = (Field)member; @@ -13044,7 +13051,7 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { ResolveExpression(e.N, opts); ConstrainToIntegerType(e.N, "sequence construction must use an integer-based expression for the sequence size (got {0})"); ResolveExpression(e.Initializer, opts); - var arrowType = new ArrowType(e.tok, builtIns.ArrowTypeDecls[1], new List() { Type.Int }, elementType); + var arrowType = builtIns.CreateArrowType(e.tok, true, Arrow.Any, new List() { Type.Int }, elementType, Usage.Ordinary, null); var hintString = " (perhaps write '_ =>' in front of the expression you gave in order to make it an arrow type)"; ConstrainSubtypeRelation(arrowType, e.Initializer.Type, e.Initializer, "sequence-construction initializer expression expected to have type '{0}' (instead got '{1}'){2}", arrowType, e.Initializer.Type, new LazyString_OnTypeEquals(elementType, e.Initializer.Type, hintString)); @@ -13480,7 +13487,8 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { ResolveExpression(e.Term, opts); Contract.Assert(e.Term.Type != null); scope.PopMarker(); - expr.Type = SelectAppropriateArrowType(e.tok, e.BoundVars.ConvertAll(v => v.Type), e.Body.Type, e.Reads.Count != 0, e.Range != null); + expr.Type = SelectAppropriateArrowType(e.tok, e.BoundVars.ConvertAll(v => v.Type), e.Body.Type, + Usage.Ordinary, null, e.Reads.Count != 0, e.Range != null); } else if (expr is WildcardExpr) { expr.Type = new SetType(true, builtIns.ObjectQ()); } else if (expr is StmtExpr) { @@ -13573,22 +13581,13 @@ public void ResolveLetOrFailExpr(LetOrFailExpr expr, ResolveOpts opts) { EnsureSupportsErrorHandling(expr.tok, PartiallyResolveTypeForMemberSelection(expr.tok, tempType), expectExtract); } - private Type SelectAppropriateArrowType(IToken tok, List typeArgs, Type resultType, bool hasReads, bool hasReq) { + private Type SelectAppropriateArrowType(IToken tok, List typeArgs, Type resultType, + Usage resultUsage, List usages, bool hasReads, bool hasReq) { Contract.Requires(tok != null); Contract.Requires(typeArgs != null); Contract.Requires(resultType != null); - var arity = typeArgs.Count; - var typeArgsAndResult = Util.Snoc(typeArgs, resultType); - if (hasReads) { - // any arrow - return new ArrowType(tok, builtIns.ArrowTypeDecls[arity], typeArgsAndResult); - } else if (hasReq) { - // partial arrow - return new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), builtIns.PartialArrowTypeDecls[arity], typeArgsAndResult); - } else { - // total arrow - return new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), builtIns.TotalArrowTypeDecls[arity], typeArgsAndResult); - } + Arrow arrow = hasReads ? Arrow.Any : hasReq ? Arrow.Partial : Arrow.Total; + return builtIns.CreateArrowType(tok, true, arrow, typeArgs, resultType, resultUsage, usages); } /// @@ -14611,7 +14610,7 @@ ResolveTypeReturn ResolveDotSuffix_Type(ExprDotName expr, ResolveOpts opts, bool return null; } - Expression ResolveExprDotCall(IToken tok, Expression receiver, Type receiverTypeBound/*?*/, MemberDecl member, List args, List optTypeArguments, ResolveOpts opts, bool allowMethodCall) { + MemberSelectExpr ResolveExprDotCall(IToken tok, Expression receiver, Type receiverTypeBound/*?*/, MemberDecl member, List args, List optTypeArguments, ResolveOpts opts, bool allowMethodCall) { Contract.Requires(tok != null); Contract.Requires(receiver != null); Contract.Requires(receiver.WasResolved()); @@ -14668,6 +14667,7 @@ Expression ResolveExprDotCall(IToken tok, Expression receiver, Type receiverType rr.Type = SelectAppropriateArrowType(fn.tok, fn.Formals.ConvertAll(f => SubstType(f.Type, subst)), SubstType(fn.ResultType, subst), + fn.ResultUsage, fn.Usages, fn.Reads.Count != 0, fn.Req.Count != 0); AddCallGraphEdge(opts.codeContext, fn, rr, IsFunctionReturnValue(fn, args, opts)); } else { @@ -15095,7 +15095,7 @@ static Usage ConstructorArgUsage(Usage outer, Usage formal) { } } - static bool HasLinearity(Usage u) { + public static bool HasLinearity(Usage u) { return u != Usage.Ghost && u != Usage.Ordinary; } @@ -15108,6 +15108,24 @@ public static string UsageName(Usage u) { "ordinary"; } + public static string UsageNameNonGhost(Usage u) { + return + (u == Usage.Ghost) ? "ghost" : + (u == Usage.Linear) ? "linear" : + (u == Usage.Shared) ? "shared" : + (u == Usage.Inout) ? "inout" : + "non-ghost"; + } + + public static string UsagePrefix(Usage u) { + return + (u == Usage.Ghost) ? "ghost " : + (u == Usage.Linear) ? "linear " : + (u == Usage.Shared) ? "shared " : + (u == Usage.Inout) ? "inout " : + ""; + } + static IdentifierExpr ExprAsIdentifier(UsageContext usageContext, Expression expr) { var i = expr as IdentifierExpr; ConcreteSyntaxExpression c = expr as ConcreteSyntaxExpression; diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index d40eeeef6f5..822f194be6d 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -956,7 +956,7 @@ protected void AnnotateRevealFunction(Lemma lemma, Function f) { for (int i = 0; i < f.Formals.Count; i++) { args.Add(new IntType()); } - rr.Type = new ArrowType(f.tok, args, new IntType()); + rr.Type = new ArrowType(f.tok, args, new IntType(), Usage.Ordinary, f.Usages.ConvertAll(_ => Usage.Ordinary)); nameSegment.ResolvedExpression = rr; nameSegment.Type = rr.Type; LiteralExpr low = new LiteralExpr(f.tok, 1); diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index c2242092259..782efc77df2 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -763,7 +763,9 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { } else if (d is ArrowTypeDecl) { var ad = (ArrowTypeDecl)d; GetClassTyCon(ad); - AddArrowTypeAxioms(ad); + if (ad.ResultUsage == Usage.Ordinary && ad.Usages.TrueForAll(u => u == Usage.Ordinary)) { + AddArrowTypeAxioms(ad); + } } else if (d is ClassDecl) { var cl = (ClassDecl)d; AddClassMembers(cl, true); From b0ba9f2832137533f7dc5aefc08969d9b1ff5725 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 1 Jul 2020 14:57:19 -0400 Subject: [PATCH 265/573] Adapt C++ backend to recent changes from master --- Source/Dafny/Compiler-cpp.cs | 29 ++++++++++++++++------------- Source/DafnyDriver/DafnyDriver.cs | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index e51535d7775..149cbaaff1f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -196,7 +196,7 @@ protected Exception NotSupported(String msg, Bpl.IToken tok) { } - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, TopLevelDecl cls, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } @@ -239,7 +239,7 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool protected override bool SupportsProperties { get => false; } - protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { + protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { throw NotSupported(String.Format("traits in class {0}", name), tok); /* var w = wr.NewBlock(string.Format("$module.{0} = class {0}", IdProtect(name)), ";"); @@ -740,7 +740,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { this.modDeclWr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); var className = "class_" + IdName(sst); - var cw = CreateClass(sst.Module.CompileName, className, sst.TypeArgs, wr) as CppCompiler.ClassWriter; + var cw = CreateClass(sst.Module.CompileName, className, sst, wr) as CppCompiler.ClassWriter; var w = cw.MethodDeclWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { @@ -824,8 +824,11 @@ public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter met public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); } - public void DeclareField(string name, List targs, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { - Compiler.DeclareField(ClassName, targs, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); + public void DeclareField(string name, TopLevelDecl enclosingDecl, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + Compiler.DeclareField(ClassName, enclosingDecl.TypeArgs, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); + } + public void InitializeField(Field field, Type instantiatedFieldType, TopLevelDeclWithMembers enclosingClass) { + throw new NotSupportedException(); // InitializeField should be called only for those compilers that set ClassesRedeclareInheritedFields to false. } public TextWriter/*?*/ ErrorWriter() => MethodWriter; public void Finish() { } @@ -966,14 +969,12 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA return c; */ } - protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, List formals, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { + protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { var sep = ""; var c = 0; - for (int i = 0; i < typeArgs.Count; i++) { - var actual = typeArgs[i]; - var formal = formals[i]; - if (useAllTypeArgs || formal.Characteristics.MustSupportZeroInitialization) { - wr.Write("{0}{1}", sep, RuntimeTypeDescriptor(actual, tok, wr)); + foreach (var ta in typeArgs) { + if (useAllTypeArgs || ta.Formal.Characteristics.MustSupportZeroInitialization) { + wr.Write("{0}{1}", sep, RuntimeTypeDescriptor(ta.Actual, tok, wr)); sep = ", "; c++; } @@ -1554,7 +1555,8 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal // ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; //wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); - EmitRuntimeTypeDescriptorsActuals(type.TypeArgs, cl.TypeArgs, tok, false, wr); + var tas = TypeArgumentInstantiation.ListFromClass(cl, type.TypeArgs); + EmitRuntimeTypeDescriptorsActuals(tas, tok, false, wr); string q, n; if (ctor != null && ctor.IsExtern(out q, out n)) { // the arguments of any external constructor are placed here @@ -1920,7 +1922,8 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, } } - protected override ILvalue EmitMemberSelect(System.Action obj, MemberDecl member, Type expectedType, bool internalAccess = false) { + protected override ILvalue EmitMemberSelect(Action obj, Type objType, MemberDecl member, List typeArgs, Dictionary typeMap, + Type expectedType, string/*?*/ additionalCustomParameter = null, bool internalAccess = false) { if (member.IsStatic && member is ConstantField) { return SuffixLvalue(obj, "::{0}", member.CompileName); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index c1e724a0c7c..6911dbc9e3e 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -196,7 +196,7 @@ public static CommandLineArgumentsResult ProcessCommandLineArguments(string[] ar } else if (!isDafnyFile) { ExecutionEngine.printer.ErrorWriteLine(Console.Out, "*** Error: '{0}': Filename extension '{1}' is not supported. Input files must be Dafny programs (.dfy) or C headers (.h)", file, extension == null ? "" : extension); - return ExitValue.PREPROCESSING_ERROR; + return CommandLineArgumentsResult.PREPROCESSING_ERROR; } } else if (DafnyOptions.O.CompileTarget == DafnyOptions.CompilationTarget.Php) { if (extension == ".php") { From 1894d01d3bd056148f8630553a005a0163461867 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 1 Jul 2020 15:28:33 -0400 Subject: [PATCH 266/573] Update function expectations --- Test/c++/functions.expect | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Test/c++/functions.expect b/Test/c++/functions.expect index e69de29bb2d..21245e8a9dd 100644 --- a/Test/c++/functions.expect +++ b/Test/c++/functions.expect @@ -0,0 +1,3 @@ +6 +7 +8 From cf2ba7aec3ec150d934ca65ca0d1ab837866592f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 1 Jul 2020 15:29:58 -0400 Subject: [PATCH 267/573] Makefile cleanup --- Test/c++/Makefile | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Test/c++/Makefile b/Test/c++/Makefile index c7397d49fac..565d462d23c 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -15,7 +15,6 @@ CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) .SECONDARY: $(CPPS) all:$(EXECS) -#all:hello ints vars: echo $(DAFNYS) @@ -33,13 +32,6 @@ $(EXECS): % : %.cpp $(DAFNY_RUNTIME_CPP) test: $(EXECS) python run_cpp_tests.py $(EXECS) -#for e in $(EXECS); do echo; echo "*******************"; echo "Running $$e"; echo "*******************"; echo; ./$$e; done | tee $(TEST_LOG) -# grep unexpected $(TEST_LOG) -# if [ $$? -ne 0 ]; then -# echo "FAILED A TEST" -# else -# echo "SUCCESS!" -# fi clean: rm -f *.cpp *cs $(DOT_H_S) $(EXECS) $(TEST_LOG) From 2366b3eaabee3e96d2c0a90b1efac6b7c1cddfeb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 1 Jul 2020 15:44:09 -0400 Subject: [PATCH 268/573] Clean up some differences --- Source/Dafny/Compiler.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 2dd2eacc038..a5f54c8edf6 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -773,7 +773,6 @@ protected abstract void CompileBinOp(BinaryExpr.ResolvedOpcode op, protected virtual void EmitIntegerRange(Type type, out TargetWriter wLo, out TargetWriter wHi, TargetWriter wr) { if (AsNativeType(type) != null) { wr.Write("{0}.IntegerRange(", IdProtect(type.AsNewtype.FullCompileName)); - //wr.Write("IntegerRange("); } else { wr.Write("{0}.IntegerRange(", GetHelperModuleName()); } @@ -4294,16 +4293,6 @@ void CompileFunctionCallExpr(FunctionCallExpr e, TargetWriter wr, bool inLetExpr tr(e.Receiver, wr, inLetExprBody); wr.Write("){0}", ClassAccessor); compileName = IdName(f); -/* - } - wr.Write(compileName); - List typeArgs; - if (f.TypeArgs.Count != 0) { - typeArgs = f.TypeArgs.ConvertAll(ta => e.TypeArgumentSubstitutions[ta]); - EmitActualTypeArgs(typeArgs, f.tok, wr); - } else { - typeArgs = new List(); -*/ } var actualTypeArguments = CombineTypeArguments(f, e.TypeApplication_AtEnclosingClass, e.TypeApplication_JustFunction); EmitNameAndActualTypeArgs(compileName, actualTypeArguments.ConvertAll(ta => ta.Actual), f.tok, wr); From b77ab294b2b4f1da7fa02872103ee90ffa172d42 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 13:48:36 -0400 Subject: [PATCH 269/573] Minor cleanup and an update to the LIMITATIONS --- Source/DafnyDriver/DafnyDriver.cs | 1 - Test/c++/LIMITATIONS | 21 +++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index 6911dbc9e3e..a18872d52bf 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -691,7 +691,6 @@ public static bool CompileDafnyProgram(Dafny.Program dafnyProgram, string dafnyP if (!completeProgram) { return false; } - // If we got until here, compilation to C# succeeded if (!invokeCompiler) { return true; // If we're not asked to invoke the C# to assembly compiler, we can report success diff --git a/Test/c++/LIMITATIONS b/Test/c++/LIMITATIONS index 1c59fa2ee64..f95f3eec474 100644 --- a/Test/c++/LIMITATIONS +++ b/Test/c++/LIMITATIONS @@ -1,5 +1,18 @@ -- No higher order functions even for array init. Use extern newArrayFill (see extern.dfy) or similar -- Avoid bare constants. Put them in the class using them -- We currently only support tuples up to arity 5. A common place where you might go over that limit is print statements, which tuple the arguments -- We don't support BigIntegers, so do not use int, or arr.Length, or sequence length, etc. +The C++ backend was written assuming that it would primarily support writing +C/C++ style code in Dafny, which leads to some limitations in the current +implementation. + +- We do not support BigIntegers, so do not use `int`, or raw instances of + `arr.Length`, or sequence length, etc. in executable code. You can however, + use `arr.Length as uint64` if you can prove your array is an appropriate + size. The compiler will report inappropriate integer use. +- We do not support more advanced Dafny features like traits or co-inductive + types. +- Very limited support for higher order functions even for array init. Use + extern definitions like newArrayFill (see extern.dfy) or similar. See also + the example in `functions.dfy`. +- We currently only support tuples up to arity 5. A common place where you + might go over that limit is print statements, which tuple the arguments. +- The current backend also assumes the use of C++17 in order to cleanly and + performantly implement datatypes. From fae5577fdd9446e8372652b07a3bc48468fa24c1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 13:48:56 -0400 Subject: [PATCH 270/573] Rename --- Test/c++/{LIMITATIONS => LIMITATIONS.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Test/c++/{LIMITATIONS => LIMITATIONS.md} (100%) diff --git a/Test/c++/LIMITATIONS b/Test/c++/LIMITATIONS.md similarity index 100% rename from Test/c++/LIMITATIONS rename to Test/c++/LIMITATIONS.md From a0b94237a78dd45835fd8058fda48a8b843b79f4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 13:52:03 -0400 Subject: [PATCH 271/573] Add mention of limitations to the /help documentation --- Source/Dafny/DafnyOptions.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Dafny/DafnyOptions.cs b/Source/Dafny/DafnyOptions.cs index 304b9091c96..2240334340e 100644 --- a/Source/Dafny/DafnyOptions.cs +++ b/Source/Dafny/DafnyOptions.cs @@ -674,6 +674,10 @@ verification outcome java - Compilation to Java cpp - Compilation to C++ php - Compilation to PHP + + Note that the C++ backend has various limitations (see Test/c++/LIMITATIONS.md). + This includes lack of support for BigIntegers (aka int), most higher order + functions, and advanced features like traits or co-inductive types. /compileVerbose: 0 - don't print status of compilation to the console 1 (default) - print information such as files being written by From 771da7bb4d893f370d5e8f6807c6f1971cedb623 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 21:45:12 -0400 Subject: [PATCH 272/573] Clean up extra white space --- Binaries/DafnyRuntime.h | 134 +++++++++++++++--------------- Source/Dafny/Compiler-cpp.cs | 133 +++++++++++++++-------------- Source/DafnyDriver/DafnyDriver.cs | 2 +- 3 files changed, 134 insertions(+), 135 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 3c7773f14c6..423cf235ab7 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -257,7 +257,7 @@ inline std::ostream& operator<<(std::ostream& out, const Tuple5 const& other) const { return sptr == other.sptr; } - + T* ptr() const { return sptr.get(); } T* begin() const { return sptr.get(); } T* end() const { return sptr.get() + len; } - + void clear_and_resize(uint64 new_len) { std::shared_ptr new_sptr = std::shared_ptr (new T[new_len], std::default_delete()); sptr = new_sptr; } - - + + }; template @@ -550,10 +550,10 @@ template struct std::hash> { size_t operator()(const DafnySequence& s) const { size_t seed = 0; - for (size_t i = 0; i < s.size(); i++) { + for (size_t i = 0; i < s.size(); i++) { hash_combine(seed, s.select(i)); } - return seed; + return seed; } }; @@ -561,10 +561,10 @@ template struct std::hash> { size_t operator()(const DafnyArray& s) const { size_t seed = 0; - for (size_t i = 0; i < s.size(); i++) { + for (size_t i = 0; i < s.size(); i++) { hash_combine(seed, s.at(i)); } - return seed; + return seed; } }; @@ -574,27 +574,27 @@ struct std::hash> { template struct DafnySet { - DafnySet() { + DafnySet() { } - + DafnySet(const DafnySet& other) { - set = std::unordered_set(other.set); + set = std::unordered_set(other.set); } DafnySet(std::initializer_list il) { std::unordered_set a_set(il); set = a_set; } - + static DafnySet Create(std::initializer_list il) { DafnySet ret(il); - return ret; + return ret; } - + static DafnySet empty() { return DafnySet(); } - + bool IsSubsetOf(const DafnySet& other) const { if (set.size() > other.set.size()) { return false; @@ -614,7 +614,7 @@ struct DafnySet { bool contains(T t) const { return set.find(t) != set.end(); } - + bool disjoint(const DafnySet& other) { for (auto const& elt:set) { if (other.find(elt) != other.set.end()) { @@ -623,13 +623,13 @@ struct DafnySet { } return true; } - + DafnySet Union(const DafnySet& other) { DafnySet ret = DafnySet(other); ret.set.insert(set.begin(), set.end()); - return ret; + return ret; } - + // Returns a DafnySet containing elements only found in the current DafnySet DafnySet Difference(const DafnySet& other) { DafnySet ret; @@ -640,34 +640,34 @@ struct DafnySet { } // This attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnySet, etc.) //set_difference(set.begin(), set.end(), other.set.begin(), other.set.end(), inserter(ret.set, ret.set.end())); - return ret; + return ret; } - + DafnySet Intersection(const DafnySet& other) { DafnySet ret; for (auto const& elt:set) { if (other.set.find(elt) != other.set.end()) { - ret.set.insert(elt); + ret.set.insert(elt); } } - return ret; + return ret; } - + std::unordered_set Elements() { return set; } uint64 size () const { return set.size(); } - + bool isEmpty() const { return set.empty(); } - - - bool equals(const DafnySet other) const { + + + bool equals(const DafnySet other) const { return IsSubsetOf(other) && other.IsSubsetOf(*this); } // TODO: toString - + std::unordered_set set; }; @@ -685,7 +685,7 @@ template inline std::ostream& operator<<(std::ostream& out, const DafnySet& val){ for (auto const& c:val.set) { out << c; - } + } return out; } @@ -693,10 +693,10 @@ template struct std::hash> { size_t operator()(const DafnySet& s) const { size_t seed = 0; - for (auto const& elt:s.set) { + for (auto const& elt:s.set) { hash_combine(seed, elt); } - return seed; + return seed; } }; @@ -707,35 +707,35 @@ struct std::hash> { template struct DafnyMap { - DafnyMap() { + DafnyMap() { } - + DafnyMap(const DafnyMap& other) { - map = std::unordered_map(other.map); + map = std::unordered_map(other.map); } DafnyMap(std::initializer_list> il) { std::unordered_map a_map(il); map = a_map; } - + static DafnyMap Create(std::initializer_list> il) { DafnyMap ret(il); - return ret; + return ret; } - + static DafnyMap empty() { return DafnyMap(); } - + bool contains(K t) const { return map.find(t) != map.end(); } - + V get(K key) const { return map.find(key)->second; } - + DafnyMap update(K k, V v) { DafnyMap ret(*this); auto ptr = ret.map.find(k); @@ -746,7 +746,7 @@ struct DafnyMap { } return ret; } - + /* bool disjoint(const DafnyMap& other) { for (auto const& elt:map) { @@ -756,14 +756,14 @@ struct DafnyMap { } return true; } - + DafnyMap Union(const DafnyMap& other) { DafnyMap ret = DafnyMap(other); ret.map.insert(map.begin(), map.end()); - return ret; + return ret; } - - + + // Returns a DafnyMap containing elements only found in the current DafnyMap DafnyMap Difference(const DafnyMap& other) { DafnyMap ret; @@ -774,24 +774,24 @@ struct DafnyMap { } // K,Vhis attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnyMap, etc.) //map_difference(map.begin(), map.end(), other.map.begin(), other.map.end(), inserter(ret.map, ret.map.end())); - return ret; + return ret; } - + DafnyMap Intersection(const DafnyMap& other) { DafnyMap ret; for (auto const& elt:map) { if (other.map.find(elt) != other.map.end()) { - ret.map.insert(elt); + ret.map.insert(elt); } } - return ret; + return ret; } */ uint64 size () const { return map.size(); } - + bool isEmpty() const { return map.empty(); } - + DafnySet dafnyKeySet() { DafnySet ret; for (const auto& kv : map) { @@ -799,7 +799,7 @@ struct DafnyMap { } return ret; } - + DafnySet dafnyValues() { DafnySet ret; for (const auto& kv : map) { @@ -807,22 +807,22 @@ struct DafnyMap { } return ret; } - - + + bool equals(const DafnyMap other) const { if (map.size() != other.size()) { return false; } - + for (const auto& kv : map) { auto ptr = other.map.find(kv.first); if (ptr == other.map.end()) { return false; } if (ptr->second != kv.second) { return false; } - } + } return true; } - + // TODO: hash // TODO: toString - + std::unordered_map map; }; @@ -841,7 +841,7 @@ template inline std::ostream& operator<<(std::ostream& out, const DafnyMap& val){ for (auto const& kv:val.map) { out << "(" << kv.first << " -> " << kv.second << ")"; - } + } return out; } @@ -849,11 +849,11 @@ template struct std::hash> { size_t operator()(const DafnyMap& s) const { size_t seed = 0; - for (auto const& kv:s.map) { + for (auto const& kv:s.map) { hash_combine(seed, kv.first); hash_combine(seed, kv.second); } - return seed; + return seed; } }; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 149cbaaff1f..cf9645cf48c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -44,7 +44,7 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; new string DafnyMultiSetClass = "DafnyMultiset"; - new string DafnySeqClass = "DafnySequence"; + new string DafnySeqClass = "DafnySequence"; new string DafnyMapClass = "DafnyMap"; public override string TargetLanguage => "Cpp"; @@ -61,7 +61,7 @@ protected override void EmitHeader(Program program, TargetWriter wr) { var filenameNoExtension = program.Name.Substring(0, program.Name.Length - 4); var headerFileName = String.Format("{0}.h", filenameNoExtension); wr.WriteLine("#include \"{0}\"", headerFileName); - + var headerFileWr = wr.NewFile(headerFileName); headerFileWr.WriteLine("// Dafny program {0} compiled into a Cpp header file", program.Name); headerFileWr.WriteLine("#pragma once"); @@ -78,7 +78,7 @@ protected override void EmitHeader(Program program, TargetWriter wr) { protected override void EmitFooter(Program program, TargetWriter wr) { foreach (var dt in this.datatypeDecls) { - var wd = wr.NewBlock(String.Format("template <{0}>\nstruct get_default<{1}::{2}{3} >", + var wd = wr.NewBlock(String.Format("template <{0}>\nstruct get_default<{1}::{2}{3} >", TypeParameters(dt.TypeArgs), dt.Module.CompileName, dt.CompileName, @@ -93,7 +93,7 @@ protected override void EmitFooter(Program program, TargetWriter wr) { foreach (var classDefault in classDefaults) { wr.WriteLine(classDefault); } - } + } public override void EmitCallToMain(Method mainMethod, TargetWriter wr) { var w = wr.NewBlock("int main()"); @@ -114,7 +114,7 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, this.dtDeclWr = this.dtDeclsWr.NewBigBlock(s, "// end of " + s + " datatype declarations"); this.classDeclWr = this.classDeclsWr.NewBigBlock(s, "// end of " + s + " class declarations"); return wr.NewBigBlock(s, "// end of " + s); -/* +/* if (!isExtern || libraryName != null) { wr.Write("let {0} = ", moduleName); } @@ -133,7 +133,7 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, return w; */ } - + private string TypeParameters(List targs) { Contract.Requires(cce.NonNullElements(targs)); Contract.Ensures(Contract.Result() != null); @@ -159,7 +159,7 @@ private string DeclareTemplate(List typeArgs) { } return targs; } - + private string TemplateMethod(List typeArgs) { if (typeArgs != null) { var targs = ""; @@ -171,7 +171,7 @@ private string TemplateMethod(List typeArgs) { return ""; } } - + private string TemplateMethod(List typeArgs) { if (typeArgs != null) { var targs = ""; @@ -200,7 +200,7 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); } - + var classDeclWriter = modDeclWr; var classDefWriter = this.classDeclWr; @@ -214,11 +214,11 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool classDeclWriter.WriteLine("class {0};", name); - - methodDeclWriter.Write("public:\n"); + + methodDeclWriter.Write("public:\n"); methodDeclWriter.WriteLine("// Default constructor\n {0}() {{}}", name); - + // Create the code for the specialization of get_default var fullName = moduleName + "::" + name; var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", @@ -231,7 +231,7 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool getDefaultStr += String.Format("return std::shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); getDefaultStr += "}\n};"; this.classDefaults.Add(getDefaultStr); - + var fieldWriter = methodDeclWriter; return new ClassWriter(name, this, methodDeclWriter, methodDefWriter, fieldWriter, wr); @@ -333,12 +333,12 @@ protected bool IsRecursiveConstructor(DatatypeDecl dt, DatatypeCtor ctor) { protected bool IsRecursiveDatatype(DatatypeDecl dt) { foreach (var ctor in dt.Ctors) { if (IsRecursiveConstructor(dt, ctor)) { - return true; + return true; } } return false; } - + // Uniform naming convention protected string DatatypeSubStructName(DatatypeCtor ctor, bool inclTemplateArgs = false) { string args = ""; @@ -354,7 +354,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) // // Produce: - // struct Example1 { + // struct Example1 { // uint32 u; // bool b; // Example1(uint32 u, bool b) : u (u), b (b) {} @@ -396,7 +396,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr string DtT = dt.CompileName; string DtT_protected = IdProtect(DtT); - + // Forward declaration of the type this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); var wdecl = this.dtDeclWr; @@ -412,7 +412,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); - + // Declare the struct members var i = 0; var argNames = new List(); @@ -446,7 +446,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); } } - + // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); ws.Write("\treturn true "); @@ -454,12 +454,12 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr ws.WriteLine("\t\t&& left.{0} == right.{0}", arg); } ws.WriteLine(";\n}"); - + // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); - + // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullName = dt.Module.CompileName + "::" + DtT_protected + TemplateMethod(dt.TypeArgs); @@ -490,7 +490,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr i++; } } - + // Overload the comparison operator wstruct.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", structName); @@ -507,16 +507,16 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr i++; } } - + if (i == 0) { // Avoid a warning from the C++ compiler preReturn.WriteLine("(void)left; (void) right;"); } - + wstruct.WriteLine(";\n}"); - + // Overload the not-comparison operator wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); - + // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullName = dt.Module.CompileName + "::" + structName + TemplateMethod(dt.TypeArgs); @@ -553,7 +553,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr DeclareFormals(ctor.Formals))) { wc.WriteLine("{0}{1} COMPILER_result;", DtT_protected, TemplateMethod(dt.TypeArgs)); wc.WriteLine("{0} COMPILER_result_subStruct;", DatatypeSubStructName(ctor, true)); - + foreach (Formal arg in ctor.Formals) { if (!arg.IsGhost) { @@ -570,7 +570,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } - // Declare a default constructor + // Declare a default constructor ws.WriteLine("{0}();", DtT_protected); using (var wd = wdef.NewNamedBlock(String.Format("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)))) { var default_ctor = dt.Ctors[0]; // Arbitrarily choose the first one @@ -584,31 +584,31 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } wd.WriteLine("v = COMPILER_result_subStruct;"); } - + // Declare a default destructor ws.WriteLine("~{0}() {{}}", DtT_protected); - + // Declare a default copy constructor (just in case any of our components are non-trivial, i.e., contain smart_ptr) using (var wcc = ws.NewNamedBlock(String.Format("{0}(const {0} &other)", DtT_protected))) { wcc.WriteLine("v = other.v;"); } - + // Declare a default copy assignment operator (just in case any of our components are non-trivial, i.e., contain smart_ptr) using (var wcc = ws.NewNamedBlock(String.Format("{0}& operator=(const {0} other)", DtT_protected))) { wcc.WriteLine("v = other.v;"); wcc.WriteLine("return *this;"); } - + // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { var name = DatatypeSubStructName(ctor); var holds = String.Format("std::holds_alternative<{0}{1}>", name, TemplateMethod(dt.TypeArgs)); ws.WriteLine("bool is_{0}() const {{ return {1}(v); }}", name, holds); wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs)); - wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return {4}(d.v); }}", - DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); + wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return {4}(d.v); }}", + DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); } - + // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); ws.WriteLine("\treturn left.v == right.v;\n}"); @@ -634,13 +634,13 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr var ctor_i = dtor.EnclosingCtors[i]; var ctor_name = DatatypeSubStructName(ctor_i); Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[i].CompileName); - wDtor.WriteLine("if (is_{0}()) {{ return std::get<{0}{1}>(v).{2}; }}", + wDtor.WriteLine("if (is_{0}()) {{ return std::get<{0}{1}>(v).{2}; }}", ctor_name, TemplateMethod(dt.TypeArgs), IdName(arg)); } Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[n - 1].CompileName); var final_ctor_name = DatatypeSubStructName(dtor.EnclosingCtors[n - 1], true); - wDtor.WriteLine("return std::get<{0}>(v).{1}; ", + wDtor.WriteLine("return std::get<{0}>(v).{1}; ", final_ctor_name, IdName(arg)); } } @@ -681,8 +681,8 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr return null; } - protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - + protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { + if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { string nt_name_def, literalSuffice_def; @@ -736,7 +736,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { } else { templateDecl = DeclareTemplate(sst.Var.Type.TypeArgs); } - + this.modDeclWr.WriteLine("{2} using {1} = {0};", TypeName(sst.Var.Type, wr, sst.tok), IdName(sst), templateDecl); var className = "class_" + IdName(sst); @@ -748,7 +748,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { TrExpr(sst.Witness, witness, false); DeclareField(className, sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } - + using (var wDefault = w.NewBlock(String.Format("static {0}{1} get_Default()", IdName(sst), TemplateMethod(sst.TypeArgs)))) { var udt = new UserDefinedType(sst.tok, sst.Name, sst, sst.TypeArgs.ConvertAll(tp => (Type)new UserDefinedType(tp))); var d = TypeInitializationValue(udt, wr, sst.tok, false); @@ -855,13 +855,13 @@ public void Finish() { } if (m.EnclosingClass.TypeArgs != null && m.EnclosingClass.TypeArgs.Count > 0) { wr.WriteLine(DeclareTemplate(m.EnclosingClass.TypeArgs)); } - + wr.Write("{0} {1}{2}::{3}", targetReturnTypeReplacement ?? "void", m.EnclosingClass.CompileName, TemplateMethod(m.EnclosingClass.TypeArgs), IdName(m)); - + wdr.Write("{0}{1} {2}", m.IsStatic ? "static " : "", targetReturnTypeReplacement ?? "void", @@ -917,7 +917,7 @@ public void Finish() { } wdr.Write(");"); var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); - + /* var r = new TargetWriter(w.IndentLevel); EmitReturn(m.Outs, r); @@ -957,7 +957,7 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA } else { throw NotSupported("WriteRuntimeTypeDescriptorsFormals"); } -/* +/* int c = 0; foreach (var tp in typeParams) { if (useAllTypeArgs || tp.Characteristics.MustSupportZeroInitialization) { @@ -987,7 +987,7 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { Contract.Requires(tok != null); Contract.Requires(wr != null); throw NotSupported(string.Format("RuntimeTypeDescriptor {0} not yet supported", type), tok); -/* +/* var xType = type.NormalizeExpandKeepConstraints(); if (xType is TypeProxy) { // unresolved proxy; just treat as bool, since no particular type information is apparently needed for this type @@ -1071,7 +1071,7 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { return null; } } - + protected override BlockTargetWriter EmitTailCallStructure(MemberDecl member, BlockTargetWriter wr) { //wr.WriteLine("goto TAIL_CALL_START;"); wr.WriteLine("TAIL_CALL_START:"); @@ -1085,7 +1085,7 @@ protected override void EmitJumpToTailCallStart(TargetWriter wr) { protected void Warn(string msg, Bpl.IToken tok) { Console.Error.WriteLine("WARNING: {3} ({0}:{1}:{2})", tok.filename, tok.line, tok.col, msg); } - + // Use class_name = true if you want the actual name of the class, not the type used when declaring variables/arguments/etc. protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null, bool class_name=false) { Contract.Ensures(Contract.Result() != null); @@ -1147,7 +1147,7 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* if (class_name || xType.IsTypeParameter || xType.IsDatatype) { // Don't add pointer decorations to class names or type parameters return IdProtect(s) + ActualTypeArgs(xType.TypeArgs); } else { - return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); + return TypeName_UDT(s, udt.TypeArgs, wr, udt.tok); } } else if (xType is SetType) { Type argType = ((SetType)xType).Arg; @@ -1326,7 +1326,7 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); + modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); } else { Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, d.FullName, compileTypeHint.AsStringLiteral()); } @@ -1344,7 +1344,7 @@ protected void DeclareField(string className, List targs, string } private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, bool isInParam) { - if (isInParam) { + if (isInParam) { return String.Format("{0}{2} {1}", prefix, name, TypeName(type, null, tok)); } else { return null; @@ -1355,7 +1355,7 @@ protected override bool DeclareFormal(string prefix, string name, Type type, Bpl var formal_str = DeclareFormalString(prefix, name, type, tok, isInParam); if (formal_str != null) { wr.Write(formal_str); - return true; + return true; } else { return false; } @@ -1503,7 +1503,7 @@ protected override void EmitAbsurd(string/*?*/ message, TargetWriter wr) { } wr.WriteLine("throw \"{0}\";", message); } - + protected override void EmitHalt(Expression messageExpr, TargetWriter wr) { wr.Write("throw DafnyHaltException("); TrExpr(messageExpr, wr, false); @@ -1610,7 +1610,7 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { // TODO: the string should be converted to a Dafny seq TrStringLiteral(str, wr); } else if (AsNativeType(e.Type) is NativeType nt) { - + wr.Write("({0}){1}", GetNativeTypeName(nt), (BigInteger)e.Value); if ((BigInteger) e.Value > 9223372036854775807) { // Avoid compiler warning: integer literal is too large to be represented in a signed integer type @@ -1620,7 +1620,7 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { EmitIntegerLiteral(i, wr); } else if (e.Value is Basetypes.BigDec) { throw NotSupported("EmitLiteralExpr of Basetypes.BigDec"); - /* + /* var n = (Basetypes.BigDec)e.Value; if (0 <= n.Exponent) { wr.Write("new _dafny.BigRational(new BigNumber(\"{0}", n.Mantissa); @@ -1789,7 +1789,7 @@ public static string PublicIdProtect(string name) { case "volatile": case "wchar_t": case "while": - + // Also reserved case "And": case "and_eq": @@ -1858,7 +1858,7 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri if (dt.Ctors.Count == 1) { wr.Write("{3}::{0}{1}({2})", dtName, - TemplateMethod(dt.TypeArgs), + TemplateMethod(dt.TypeArgs), arguments, dt.Module.CompileName); } else { @@ -1866,7 +1866,7 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri dtName, ActualTypeArgs(dtv.InferredTypeArgs), ctorName, arguments, dt.Module.CompileName); } - + } else { // Co-recursive call // Generate: Dt.lazy_Ctor(($dt) => Dt.create_Ctor($dt, args)) @@ -1928,7 +1928,7 @@ protected override ILvalue EmitMemberSelect(Action obj, Type objTy return SuffixLvalue(obj, "::{0}", member.CompileName); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { return SuffixLvalue(obj, ".get_{0}()", dtor.Name); - } else if (member is SpecialField sf2 && sf2.SpecialId == SpecialField.ID.UseIdParam && sf2.IdParam is string fieldName + } else if (member is SpecialField sf2 && sf2.SpecialId == SpecialField.ID.UseIdParam && sf2.IdParam is string fieldName && fieldName.StartsWith("is_")) { // Ugly hack of a check to figure out if this is a datatype query: f.Constructor? return SuffixLvalue(obj, ".is_{0}_{1}()", IdProtect(sf2.EnclosingClass.CompileName), fieldName.Substring(3)); @@ -1992,7 +1992,7 @@ protected override TargetWriter EmitArraySelect(List indices, Type elmtT var w = wr.Fork(); foreach (var index in indices) { wr.Write(".at({0})", index); - } + } return w; } @@ -2046,7 +2046,7 @@ protected override void EmitIndexCollectionUpdate(Expression source, Expression protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo, Expression/*?*/ hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { string typeName = ""; - + if (source.Type.TypeArgs.Count == 0 && source.Type is UserDefinedType udt && udt.ResolvedClass != null && udt.ResolvedClass is TypeSynonymDecl tsd) { // Hack to workaround type synonyms wrapped around the actual array type @@ -2075,7 +2075,7 @@ protected override void EmitSeqSelectRange(Expression source, Expression/*?*/ lo wr.Write(")"); } else { wr.Write("DafnySequence<{0}>::SeqFromArraySlice(", typeName); - TrParenExpr(source, wr, inLetExprBody); + TrParenExpr(source, wr, inLetExprBody); wr.Write(","); TrParenExpr(lo, wr, inLetExprBody); wr.Write(","); @@ -2308,7 +2308,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, truncateResult = true; } if (AsNativeType(resultType) != null) { - opString = "<<"; + opString = "<<"; } else { if (AsNativeType(e1.Type) != null) { callString = "Lsh(_dafny.IntOfUint64(uint64"; @@ -2578,8 +2578,8 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, } wr.Write("})"); } - - + + /* string sep = ""; foreach (var e in elements) { @@ -2592,7 +2592,7 @@ protected override void EmitCollectionDisplay(CollectionType ct, Bpl.IToken tok, } protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List elements, bool inLetExprBody, TargetWriter wr) { - wr.Write("DafnyMap<{0},{1}>::Create({{", + wr.Write("DafnyMap<{0},{1}>::Create({{", TypeName(mt.TypeArgs[0], wr, tok, null, false), TypeName(mt.TypeArgs[1], wr, tok, null, false)); string sep = ""; @@ -2609,7 +2609,6 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List()", TypeName(ct.TypeArgs[0], wr, tok, null, false)); } else { diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index a18872d52bf..bd54fad8256 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -537,7 +537,7 @@ static string WriteDafnyProgramToFiles(Compiler compiler, string dafnyProgramNam break; case DafnyOptions.CompilationTarget.Cpp: targetExtension = "cpp"; - break; + break; default: Contract.Assert(false); throw new cce.UnreachableException(); From b6ca4f8f963ce1413f4dde29ad17ef87667f758e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 21:50:44 -0400 Subject: [PATCH 273/573] Remove extraneous comments --- Source/Dafny/Compiler-cpp.cs | 267 ----------------------------------- 1 file changed, 267 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index cf9645cf48c..dc66fe4a81f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -114,24 +114,6 @@ protected override TargetWriter CreateModule(string moduleName, bool isDefault, this.dtDeclWr = this.dtDeclsWr.NewBigBlock(s, "// end of " + s + " datatype declarations"); this.classDeclWr = this.classDeclsWr.NewBigBlock(s, "// end of " + s + " class declarations"); return wr.NewBigBlock(s, "// end of " + s); -/* - if (!isExtern || libraryName != null) { - wr.Write("let {0} = ", moduleName); - } - var w = wr.NewBigBlock("(function()", ")(); // end of module " + moduleName); - if (!isExtern) { - // create new module here - w.WriteLine("let $module = {};"); - } else if (libraryName == null) { - // extend a module provided in another .js file - w.WriteLine("let $module = {0};", moduleName); - } else { - // require a library - w.WriteLine("let $module = require(\"{0}\");", libraryName); - } - w.BodySuffix = string.Format("{0}return $module;{1}", w.IndentString, w.NewLine); - return w; -*/ } private string TypeParameters(List targs) { @@ -241,82 +223,10 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool protected override IClassWriter CreateTrait(string name, bool isExtern, List/*?*/ typeParameters, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { throw NotSupported(String.Format("traits in class {0}", name), tok); - /* - var w = wr.NewBlock(string.Format("$module.{0} = class {0}", IdProtect(name)), ";"); - var fieldWriter = w.NewBlock("constructor ()"); - var methodWriter = w; - return new ClassWriter(this, methodWriter, fieldWriter); - */ } protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWriter wr) { - // An iterator is compiled as follows: - // public class MyIteratorExample - // { - // public T q; // in-parameter - // public T x; // yield-parameter - // public int y; // yield-parameter - // IEnumerator _iter; - // - // public void _MyIteratorExample(T q) { - // this.q = q; - // _iter = TheIterator(); - // } - // - // public void MoveNext(out bool more) { - // more =_iter.MoveNext(); - // } - // - // private IEnumerator TheIterator() { - // // the translation of the body of the iterator, with each "yield" turning into a "yield return null;" - // yield break; - // } - // } throw NotSupported(String.Format("iterator {0}", iter)); - - /* var cw = CreateClass(IdName(iter), iter.TypeArgs, wr) as CppCompiler.ClassWriter; - var w = cw.MethodWriter; - var instanceFieldsWriter = cw.FieldWriter; - // here come the fields - Constructor ct = null; - foreach (var member in iter.Members) { - var f = member as Field; - if (f != null && !f.IsGhost) { - DeclareField(IdName(f), false, false, f.Type, f.tok, DefaultValue(f.Type, instanceFieldsWriter, f.tok), instanceFieldsWriter); - } else if (member is Constructor) { - Contract.Assert(ct == null); // we're expecting just one constructor - ct = (Constructor)member; - } - } - Contract.Assert(ct != null); // we do expect a constructor - instanceFieldsWriter.WriteLine("this._iter = undefined;"); - - // here's the initializer method - w.Write("{0}(", IdName(ct)); - string sep = ""; - foreach (var p in ct.Ins) { - if (!p.IsGhost) { - // here we rely on the parameters and the corresponding fields having the same names - w.Write("{0}{1}", sep, IdName(p)); - sep = ", "; - } - } - using (var wBody = w.NewBlock(")")) { - foreach (var p in ct.Ins) { - if (!p.IsGhost) { - wBody.WriteLine("this.{0} = {0};", IdName(p)); - } - } - wBody.WriteLine("this.__iter = this.TheIterator();"); - } - // here are the enumerator methods - using (var wBody = w.NewBlock("MoveNext()")) { - wBody.WriteLine("let r = this.__iter.next();"); - wBody.WriteLine("return !r.done;"); - } - var wIter = w.NewBlock("*TheIterator()"); - wIter.WriteLine("let _this = this;"); - return wIter; */ } protected bool IsRecursiveConstructor(DatatypeDecl dt, DatatypeCtor ctor) { @@ -690,12 +600,6 @@ protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) GetNativeInfo(nt.NativeType.Sel, out nt_name_def, out literalSuffice_def, out needsCastAfterArithmetic_def); wr.WriteLine("typedef {0} {1};", nt_name_def, nt.Name); } - /* - var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); - var wLoopBody = wIntegerRangeBody.NewBlock("while (lo.isLessThan(hi))"); - wLoopBody.WriteLine("yield lo.toNumber();"); - EmitIncrementVar("lo", wLoopBody); - */ } else { throw NotSupported(String.Format("non-native newtype {0}", nt)); } @@ -918,34 +822,7 @@ public void Finish() { } wdr.Write(");"); var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); - /* - var r = new TargetWriter(w.IndentLevel); - EmitReturn(m.Outs, r); - w.BodySuffix = r.ToString(); - */ - return w; - /* - wr.Write("{0}{1} {2}", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); - if (typeArgs != null && typeArgs.Count != 0) { - throw NotSupported(String.Format("type parameters in function {0}", name), tok); - //wr.Write("<{0}>", TypeParameters(typeArgs)); - } - wr.Write("("); - WriteFormals("", formals, wr); - if (!createBody) { - wr.WriteLine(");"); - return null; - } else { - if (formals.Count > 1) { - var w = wr.NewBlock(")", null, BlockTargetWriter.BraceStyle.Newline, BlockTargetWriter.BraceStyle.Newline); - return w; - } else { - var w = wr.NewBlock(")"); - return w; - } - } - */ } int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useAllTypeArgs, TargetWriter wr, string prefix = "") { @@ -957,16 +834,6 @@ int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useA } else { throw NotSupported("WriteRuntimeTypeDescriptorsFormals"); } -/* - int c = 0; - foreach (var tp in typeParams) { - if (useAllTypeArgs || tp.Characteristics.MustSupportZeroInitialization) { - wr.Write("{0}{1}", prefix, "rtd$_" + tp.CompileName); - prefix = ", "; - c++; - } - } - return c; */ } protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { @@ -987,72 +854,6 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { Contract.Requires(tok != null); Contract.Requires(wr != null); throw NotSupported(string.Format("RuntimeTypeDescriptor {0} not yet supported", type), tok); -/* - var xType = type.NormalizeExpandKeepConstraints(); - if (xType is TypeProxy) { - // unresolved proxy; just treat as bool, since no particular type information is apparently needed for this type - return "_dafny.Rtd_bool"; - } - - if (xType is BoolType) { - return "_dafny.Rtd_bool"; - } else if (xType is CharType) { - return "_dafny.Rtd_char"; - } else if (xType is IntType) { - return "_dafny.Rtd_int"; - } else if (xType is BigOrdinalType) { - return "_dafny.BigOrdinal"; - } else if (xType is RealType) { - return "_dafny.BigRational"; - } else if (xType is BitvectorType) { - var t = (BitvectorType)xType; - if (t.NativeType != null) { - return "_dafny.Rtd_bv_Native"; - } else { - return "_dafny.Rtd_bv_NonNative"; - } - } else if (xType is SetType) { - return "_dafny.Set"; - } else if (xType is MultiSetType) { - return "_dafny.MultiSet"; - } else if (xType is SeqType) { - return "_dafny.Seq"; - } else if (xType is MapType) { - return "_dafny.Map"; - } else if (xType.IsBuiltinArrowType) { - return "_dafny.Rtd_ref"; // null suffices as a default value, since the function will never be called - } else if (xType is UserDefinedType) { - var udt = (UserDefinedType)xType; - var tp = udt.ResolvedParam; - if (tp != null) { - return string.Format("{0}rtd$_{1}", tp.Parent is ClassDecl ? "this." : "", tp.CompileName); - } - var cl = udt.ResolvedClass; - Contract.Assert(cl != null); - bool isHandle = true; - if (Attributes.ContainsBool(cl.Attributes, "handle", ref isHandle) && isHandle) { - return "_dafny.Rtd_ref"; - } else if (cl is ClassDecl) { - return "_dafny.Rtd_ref"; - } else if (cl is DatatypeDecl) { - var dt = (DatatypeDecl)cl; - var w = new TargetWriter(); - w.Write("{0}.Rtd(", dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt)); - EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), cl.TypeArgs, udt.tok, true, w); - w.Write(")"); - return w.ToString(); - } else if (xType.IsNonNullRefType) { - // this initializer shouldn't ever be needed; the compiler is expected to generate an error - // sooner or later, , but it could be that the the compiler needs to - // lay down some bits to please the C#'s compiler's different definite-assignment rules. - return "_dafny.Rtd_ref/"; - } else { - Contract.Assert(cl is NewtypeDecl || cl is SubsetTypeDecl); - return TypeName_UDT(FullTypeName(udt), udt.TypeArgs, wr, udt.tok); - } - } else { - Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type - } */ } protected BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { @@ -1122,9 +923,6 @@ protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/* ArrayClassDecl at = xType.AsArrayType; Contract.Assert(at != null); // follows from type.IsArrayType Type elType = UserDefinedType.ArrayElementType(xType); - //string typeNameSansBrackets, brackets; - //TypeName_SplitArrayName(elType, wr, tok, out typeNameSansBrackets, out brackets); - //return typeNameSansBrackets + TypeNameArrayBrackets(at.Dims) + brackets; if (at.Dims == 1) { return "DafnyArray<" + TypeName(elType, wr, tok, null, false) + ">"; } else { @@ -1293,11 +1091,6 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var s = dt is TupleTypeDecl ? "Tuple" + (dt as TupleTypeDecl).Dims : FullTypeName(udt); var w = new TargetWriter(); w.Write("{0}{1}()", s, TemplateMethod(udt.TypeArgs)); - /* - w.Write("{0}.Rtd(", s); - EmitRuntimeTypeDescriptorsActuals(UsedTypeParameters(dt, udt.TypeArgs), dt.TypeArgs, udt.tok, true, w); - w.Write(").Default"); - */ return w.ToString(); } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type @@ -1458,9 +1251,6 @@ protected override void EmitNull(Type type, TargetWriter wr) { // ----- Statements ------------------------------------------------------------- protected override void EmitPrintStmt(TargetWriter wr, Expression arg) { - //wr.Write("_dafny::Print("); - //TrExpr(arg, wr, false); - //wr.WriteLine(");"); wr.Write("std::cout << ("); TrExpr(arg, wr, false); wr.WriteLine(");"); @@ -1551,9 +1341,6 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal NotSupported("Tried to emit new generic object, which C++ doesn't do", tok); } else { var ctor = initCall == null ? null : (Constructor)initCall.Method; // correctness of cast follows from precondition of "EmitNew" - //string targs = type.TypeArgs.Count > 0 - // ? String.Format(" <{0}> ", Util.Comma(type.TypeArgs, tp => TypeName(tp, wr, tok))) : ""; - //wr.Write("std::make_shared<{0}{1}> (", TypeName(type, wr, tok, null, true), targs); wr.Write("std::make_shared<{0}> (", TypeName(type, wr, tok, null, true)); var tas = TypeArgumentInstantiation.ListFromClass(cl, type.TypeArgs); EmitRuntimeTypeDescriptorsActuals(tas, tok, false, wr); @@ -1584,14 +1371,6 @@ protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List Date: Thu, 2 Jul 2020 21:51:55 -0400 Subject: [PATCH 274/573] More comment clean up --- Binaries/DafnyRuntime.h | 43 ----------------------------------------- 1 file changed, 43 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 423cf235ab7..403c3ff760f 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -638,8 +638,6 @@ struct DafnySet { ret.set.insert(elt); } } - // This attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnySet, etc.) - //set_difference(set.begin(), set.end(), other.set.begin(), other.set.end(), inserter(ret.set, ret.set.end())); return ret; } @@ -747,47 +745,6 @@ struct DafnyMap { return ret; } - /* - bool disjoint(const DafnyMap& other) { - for (auto const& elt:map) { - if (other.find(elt) != other.map.end()) { - return false; - } - } - return true; - } - - DafnyMap Union(const DafnyMap& other) { - DafnyMap ret = DafnyMap(other); - ret.map.insert(map.begin(), map.end()); - return ret; - } - - - // Returns a DafnyMap containing elements only found in the current DafnyMap - DafnyMap Difference(const DafnyMap& other) { - DafnyMap ret; - for (auto const& elt:map) { - if (!other.contains(elt)) { - ret.map.insert(elt); - } - } - // K,Vhis attempts to sort the elements (which then requires defining an ordering on DafnySeq, DafnyMap, etc.) - //map_difference(map.begin(), map.end(), other.map.begin(), other.map.end(), inserter(ret.map, ret.map.end())); - return ret; - } - - DafnyMap Intersection(const DafnyMap& other) { - DafnyMap ret; - for (auto const& elt:map) { - if (other.map.find(elt) != other.map.end()) { - ret.map.insert(elt); - } - } - return ret; - } - */ - uint64 size () const { return map.size(); } bool isEmpty() const { return map.empty(); } From d6ea085797aa8c2283946673432b5b37263ef624 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 22:31:55 -0400 Subject: [PATCH 275/573] Code and comment clean up. Try to be more systematic in throwing NotSupported --- Binaries/DafnyRuntime.h | 6 - Source/Dafny/Compiler-cpp.cs | 228 ++++++++++++----------------------- 2 files changed, 75 insertions(+), 159 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 403c3ff760f..487530b7174 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -11,12 +11,6 @@ #include #include -class _dafny { - public: - static void Print(std::string s) { std::cout << s << std::endl; } -}; - - typedef uint8_t uint8; typedef uint16_t uint16; typedef uint32_t uint32; diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index dc66fe4a81f..b181eb441c7 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -26,20 +26,25 @@ public CppCompiler(ErrorReporter reporter, ReadOnlyCollection otherHeade private ReadOnlyCollection headers; private List datatypeDecls; private List classDefaults; + + /* + * Unlike other Dafny and Dafny's other backends, C++ cares about + * the order in which types are declared. To make this more likely + * to succeed, we emit type information as gradually as possible + * in hopes that definitions are in place when needed. + */ // Forward declarations of class and struct names private TargetWriter modDeclsWr = null; private TargetWriter modDeclWr = null; - // Datatype declarations + // Dafny datatype declarations private TargetWriter dtDeclsWr = null; private TargetWriter dtDeclWr = null; - // Class declarations + // Dafny class declarations private TargetWriter classDeclsWr = null; private TargetWriter classDeclWr = null; - // Hash definitions + // Dedicated hash-function definitions for each type private TargetWriter hashWr = null; - // Defaults - private TargetWriter defaultWr = null; // Shadowing variables in Compiler.cs new string DafnySetClass = "DafnySet"; @@ -66,30 +71,29 @@ protected override void EmitHeader(Program program, TargetWriter wr) { headerFileWr.WriteLine("// Dafny program {0} compiled into a Cpp header file", program.Name); headerFileWr.WriteLine("#pragma once"); headerFileWr.WriteLine("#include \"DafnyRuntime.h\""); - // TODO: Include appropriate .h file here - //ReadRuntimeSystem("DafnyRuntime.h", wr); this.modDeclsWr = headerFileWr.ForkSection(); this.dtDeclsWr = headerFileWr.ForkSection(); this.classDeclsWr = headerFileWr.ForkSection(); this.hashWr = headerFileWr.ForkSection(); - this.defaultWr = headerFileWr.ForkSection(); } protected override void EmitFooter(Program program, TargetWriter wr) { + // Define default values for each datatype foreach (var dt in this.datatypeDecls) { var wd = wr.NewBlock(String.Format("template <{0}>\nstruct get_default<{1}::{2}{3} >", TypeParameters(dt.TypeArgs), dt.Module.CompileName, dt.CompileName, - TemplateMethod(dt.TypeArgs)), ";"); + InstantiateTemplate(dt.TypeArgs)), ";"); var wc = wd.NewBlock(String.Format("static {0}::{1}{2} call()", dt.Module.CompileName, dt.CompileName, - TemplateMethod(dt.TypeArgs))); - wc.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, TemplateMethod(dt.TypeArgs)); + InstantiateTemplate(dt.TypeArgs))); + wc.WriteLine("return {0}::{1}{2}();", dt.Module.CompileName, dt.CompileName, InstantiateTemplate(dt.TypeArgs)); } + // Define default values for each class foreach (var classDefault in classDefaults) { wr.WriteLine(classDefault); } @@ -142,7 +146,7 @@ private string DeclareTemplate(List typeArgs) { return targs; } - private string TemplateMethod(List typeArgs) { + private string InstantiateTemplate(List typeArgs) { if (typeArgs != null) { var targs = ""; if (typeArgs.Count > 0) { @@ -154,7 +158,7 @@ private string TemplateMethod(List typeArgs) { } } - private string TemplateMethod(List typeArgs) { + private string InstantiateTemplate(List typeArgs) { if (typeArgs != null) { var targs = ""; if (typeArgs.Count > 0) { @@ -176,8 +180,7 @@ protected Exception NotSupported(String msg) { protected Exception NotSupported(String msg, Bpl.IToken tok) { return new Exception(String.Format("{0} is not yet supported (at {1}:{2}:{3})", msg, tok.filename, tok.line, tok.col)); } - - + protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, TopLevelDecl cls, List/*?*/ superClasses, Bpl.IToken tok, TargetWriter wr) { if (isExtern || (superClasses != null && superClasses.Count > 0)) { throw NotSupported(String.Format("extern and/or traits in class {0}", name), tok); @@ -194,11 +197,9 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool var methodDeclWriter = classDefWriter.NewBlock(string.Format("class {0}", name), ";"); var methodDefWriter = wr; - classDeclWriter.WriteLine("class {0};", name); - + methodDeclWriter.Write("public:\n"); - methodDeclWriter.WriteLine("// Default constructor\n {0}() {{}}", name); // Create the code for the specialization of get_default @@ -206,11 +207,11 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", TypeParameters(typeParameters), fullName, - TemplateMethod(typeParameters)); + InstantiateTemplate(typeParameters)); getDefaultStr += String.Format("static std::shared_ptr<{0}{1} > call() {{\n", fullName, - TemplateMethod(typeParameters)); - getDefaultStr += String.Format("return std::shared_ptr<{0}{1} >();", fullName, TemplateMethod(typeParameters)); + InstantiateTemplate(typeParameters)); + getDefaultStr += String.Format("return std::shared_ptr<{0}{1} >();", fullName, InstantiateTemplate(typeParameters)); getDefaultStr += "}\n};"; this.classDefaults.Add(getDefaultStr); @@ -237,9 +238,9 @@ protected bool IsRecursiveConstructor(DatatypeDecl dt, DatatypeCtor ctor) { } } } - return false; } + protected bool IsRecursiveDatatype(DatatypeDecl dt) { foreach (var ctor in dt.Ctors) { if (IsRecursiveConstructor(dt, ctor)) { @@ -253,50 +254,12 @@ protected bool IsRecursiveDatatype(DatatypeDecl dt) { protected string DatatypeSubStructName(DatatypeCtor ctor, bool inclTemplateArgs = false) { string args = ""; if (inclTemplateArgs) { - args = TemplateMethod(ctor.EnclosingDatatype.TypeArgs); + args = InstantiateTemplate(ctor.EnclosingDatatype.TypeArgs); } return String.Format("{0}_{1}{2}", IdProtect(ctor.EnclosingDatatype.CompileName), ctor.CompileName, args); } protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter writer) { - // Given: - // datatype Example1 = Example1(u:uint32, b:bool) - // datatype Example2 = Ex2a(u:uint32) | Ex2b(b:bool) - // - // Produce: - // struct Example1 { - // uint32 u; - // bool b; - // Example1(uint32 u, bool b) : u (u), b (b) {} - // }; - // bool is_Example1(struct Example1 d) { return true; } - // - // struct Example2_2a { - // uint32 u; - // }; - // - // struct Example2_2b { - // bool b; - // }; - // - // struct Example2 { - // enum {TAG_2a, TAG_2b} tag; - // union { - // struct Example2_2a v2a; - // struct Example2_2b v2b; - // }; - // static Example2 create_Ex2a(uint32 u) { - // Example2 result; - // result.tag = TAG_Ex2a; - // result.v_Ex2a.u = u; - // return result; - // } - // bool is_Example2_2a() { return tag == Example2::TAG_2a; } - // bool is_Example2_2b() { return tag == Example2::TAG_2b; } - // }; - // bool is_Example2_2a(struct Example2 d) { return d.tag == Example2::TAG_2a; } - // bool is_Example2_2b(struct Example2 d) { return d.tag == Example2::TAG_2b; } - if (dt is TupleTypeDecl) { // Tuple types are declared once and for all in DafnyRuntime.h return null; @@ -315,7 +278,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); - wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, TemplateMethod(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); + wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, InstantiateTemplate(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); } // Optimize a not-uncommon case @@ -350,7 +313,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Create a constructor with no arguments ws.WriteLine("{0}();", DtT_protected); - var wc = wdef.NewNamedBlock("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)); + var wc = wdef.NewNamedBlock("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs)); foreach (var arg in ctor.Formals) { if (!arg.IsGhost) { wc.WriteLine("{0} = {1};", arg.CompileName, DefaultValue(arg.Type, wc, arg.tok)); @@ -368,11 +331,11 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, InstantiateTemplate(dt.TypeArgs)); // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.Module.CompileName + "::" + DtT_protected + TemplateMethod(dt.TypeArgs); + var fullName = dt.Module.CompileName + "::" + DtT_protected + InstantiateTemplate(dt.TypeArgs); var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); @@ -429,7 +392,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Define a custom hasher hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.Module.CompileName + "::" + structName + TemplateMethod(dt.TypeArgs); + var fullName = dt.Module.CompileName + "::" + structName + InstantiateTemplate(dt.TypeArgs); var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); owr.WriteLine("size_t seed = 0;"); @@ -461,7 +424,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr using (var wc = ws.NewNamedBlock("static {0} create_{1}({2})", DtT_protected, ctor.CompileName, DeclareFormals(ctor.Formals))) { - wc.WriteLine("{0}{1} COMPILER_result;", DtT_protected, TemplateMethod(dt.TypeArgs)); + wc.WriteLine("{0}{1} COMPILER_result;", DtT_protected, InstantiateTemplate(dt.TypeArgs)); wc.WriteLine("{0} COMPILER_result_subStruct;", DatatypeSubStructName(ctor, true)); foreach (Formal arg in ctor.Formals) @@ -482,7 +445,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Declare a default constructor ws.WriteLine("{0}();", DtT_protected); - using (var wd = wdef.NewNamedBlock(String.Format("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs)))) { + using (var wd = wdef.NewNamedBlock(String.Format("{1}\n{0}{2}::{0}()", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs)))) { var default_ctor = dt.Ctors[0]; // Arbitrarily choose the first one wd.WriteLine("{0} COMPILER_result_subStruct;", DatatypeSubStructName(default_ctor, true)); foreach (Formal arg in default_ctor.Formals) @@ -512,11 +475,11 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Declare type queries, both as members and general-purpose functions foreach (var ctor in dt.Ctors) { var name = DatatypeSubStructName(ctor); - var holds = String.Format("std::holds_alternative<{0}{1}>", name, TemplateMethod(dt.TypeArgs)); + var holds = String.Format("std::holds_alternative<{0}{1}>", name, InstantiateTemplate(dt.TypeArgs)); ws.WriteLine("bool is_{0}() const {{ return {1}(v); }}", name, holds); - wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d);", DeclareTemplate(dt.TypeArgs), name, DtT_protected, InstantiateTemplate(dt.TypeArgs)); wdef.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ return {4}(d.v); }}", - DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); + DeclareTemplate(dt.TypeArgs), name, DtT_protected, InstantiateTemplate(dt.TypeArgs), holds); } // Overload the comparison operator @@ -545,7 +508,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr var ctor_name = DatatypeSubStructName(ctor_i); Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[i].CompileName); wDtor.WriteLine("if (is_{0}()) {{ return std::get<{0}{1}>(v).{2}; }}", - ctor_name, TemplateMethod(dt.TypeArgs), IdName(arg)); + ctor_name, InstantiateTemplate(dt.TypeArgs), IdName(arg)); } Contract.Assert(arg.CompileName == dtor.CorrespondingFormals[n - 1].CompileName); @@ -565,8 +528,8 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Define a custom hasher for the struct as a whole hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullStructName = dt.Module.CompileName + "::" + DtT_protected; - var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); - var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); + var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); owr2.WriteLine("size_t seed = 0;"); var index = 0; foreach (var ctor in dt.Ctors) { @@ -580,9 +543,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (IsRecursiveDatatype(dt)) { // Emit a custom hasher for a pointer to this type hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, TemplateMethod(dt.TypeArgs)), ";"); - owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, TemplateMethod(dt.TypeArgs))); - owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, TemplateMethod(dt.TypeArgs)); + hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); + owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, InstantiateTemplate(dt.TypeArgs)); owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); } @@ -592,7 +555,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { - if (nt.NativeType != null) { if (nt.NativeType.Name != nt.Name) { string nt_name_def, literalSuffice_def; @@ -653,7 +615,7 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, TargetWriter wr) { DeclareField(className, sst.TypeArgs, "Witness", true, true, sst.Rhs, sst.tok, witness.ToString(), w, wr); } - using (var wDefault = w.NewBlock(String.Format("static {0}{1} get_Default()", IdName(sst), TemplateMethod(sst.TypeArgs)))) { + using (var wDefault = w.NewBlock(String.Format("static {0}{1} get_Default()", IdName(sst), InstantiateTemplate(sst.TypeArgs)))) { var udt = new UserDefinedType(sst.tok, sst.Name, sst, sst.TypeArgs.ConvertAll(tp => (Type)new UserDefinedType(tp))); var d = TypeInitializationValue(udt, wr, sst.tok, false); wDefault.WriteLine("return {0};", d); @@ -744,7 +706,7 @@ public void Finish() { } if (nonGhostOuts.Count == 1) { targetReturnTypeReplacement = TypeName(nonGhostOuts[0].Type, wr, nonGhostOuts[0].tok); } else if (nonGhostOuts.Count > 1) { - targetReturnTypeReplacement = String.Format("struct Tuple{0}{1}", nonGhostOuts.Count, TemplateMethod(nonGhostOuts.ConvertAll(n => n.Type))); + targetReturnTypeReplacement = String.Format("struct Tuple{0}{1}", nonGhostOuts.Count, InstantiateTemplate(nonGhostOuts.ConvertAll(n => n.Type))); } if (!createBody) { @@ -763,7 +725,7 @@ public void Finish() { } wr.Write("{0} {1}{2}::{3}", targetReturnTypeReplacement ?? "void", m.EnclosingClass.CompileName, - TemplateMethod(m.EnclosingClass.TypeArgs), + InstantiateTemplate(m.EnclosingClass.TypeArgs), IdName(m)); wdr.Write("{0}{1} {2}", @@ -811,7 +773,7 @@ public void Finish() { } wr.Write("{0} {1}{2}::{3}", TypeName(resultType, wr, tok), className, - TemplateMethod(classArgs), + InstantiateTemplate(classArgs), name); wdr.Write("("); @@ -825,17 +787,6 @@ public void Finish() { } return w; } - int WriteRuntimeTypeDescriptorsFormals(List typeParams, bool useAllTypeArgs, TargetWriter wr, string prefix = "") { - Contract.Requires(typeParams != null); - Contract.Requires(wr != null); - - if (typeParams.Count == 0) { - return 0; - } else { - throw NotSupported("WriteRuntimeTypeDescriptorsFormals"); - } - } - protected override int EmitRuntimeTypeDescriptorsActuals(List typeArgs, Bpl.IToken tok, bool useAllTypeArgs, TargetWriter wr) { var sep = ""; var c = 0; @@ -874,7 +825,6 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { } protected override BlockTargetWriter EmitTailCallStructure(MemberDecl member, BlockTargetWriter wr) { - //wr.WriteLine("goto TAIL_CALL_START;"); wr.WriteLine("TAIL_CALL_START:"); return wr; } @@ -887,6 +837,8 @@ protected void Warn(string msg, Bpl.IToken tok) { Console.Error.WriteLine("WARNING: {3} ({0}:{1}:{2})", tok.filename, tok.line, tok.col, msg); } + // Because we use reference counting (via shared_ptr), the TypeName of a class differs + // depending on whether we are declaring a variable or talking about the class itself. // Use class_name = true if you want the actual name of the class, not the type used when declaring variables/arguments/etc. protected string TypeName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null, bool class_name=false) { Contract.Ensures(Contract.Result() != null); @@ -982,13 +934,7 @@ protected override string TypeName(Type type, TextWriter wr, Bpl.IToken tok, Mem Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass return TypeName(type, wr, tok, member, false); } - - protected string ClassName(Type type, TextWriter wr, Bpl.IToken tok, MemberDecl/*?*/ member = null) { - Contract.Ensures(Contract.Result() != null); - Contract.Assume(type != null); // precondition; this ought to be declared as a Requires in the superclass - return TypeName(type, wr, tok, member, true); - } - + public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bpl.IToken/*?*/ tok, bool inAutoInitContext) { var xType = type.NormalizeExpandKeepConstraints(); if (xType is BoolType) { @@ -996,19 +942,24 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else if (xType is CharType) { return "'D'"; } else if (xType is IntType || xType is BigOrdinalType) { - Warn("BigInteger used", tok); + Warn("BigInteger used. Code will not compile.", tok); return "new BigNumber(0)"; } else if (xType is RealType) { - Warn("BigRational used", tok); + Warn("BigRational used. Code will not compile.", tok); return "_dafny.BigRational.ZERO"; } else if (xType is BitvectorType) { var t = (BitvectorType)xType; - return t.NativeType != null ? "0" : "new BigNumber(0)"; + if (t.NativeType != null) { + return "0"; + } else { + Warn("Non-native bitvector type used. Code will not compile.", tok); + return "new BigNumber(0)"; + } } else if (xType is SetType) { var s = (SetType) xType; return String.Format("DafnySet<{0}>::empty()", TypeName(s.Arg, wr, tok)); } else if (xType is MultiSetType) { - return "_dafny.MultiSet.Empty"; + throw NotSupported("MultiSets"); } else if (xType is SeqType) { return string.Format("DafnySequence<{0}>()", TypeName(xType.AsSeqType.Arg, wr, tok, null, false)); } else if (xType is MapType) { @@ -1063,7 +1014,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp } else { // non-null (non-array) type // even though the type doesn't necessarily have a known initializer, it could be that the the compiler needs to - // lay down some bits to please the C#'s compiler's different definite-assignment rules. + // lay down some bits to please the C++ compiler's different definite-assignment rules. return "nullptr"; } } else { @@ -1090,7 +1041,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp var dt = (DatatypeDecl)cl; var s = dt is TupleTypeDecl ? "Tuple" + (dt as TupleTypeDecl).Dims : FullTypeName(udt); var w = new TargetWriter(); - w.Write("{0}{1}()", s, TemplateMethod(udt.TypeArgs)); + w.Write("{0}{1}()", s, InstantiateTemplate(udt.TypeArgs)); return w.ToString(); } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type @@ -1119,9 +1070,9 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); + modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, InstantiateTemplate(d.TypeArgs)); } else { - Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}} ", wr, d.FullName, compileTypeHint.AsStringLiteral()); + Error(d.tok, "Opaque type ('{0}') with unrecognized extern attribute {1} cannot be compiled. Expected {{:extern compile_type_hint}}, e.g., 'struct'.", wr, d.FullName, compileTypeHint.AsStringLiteral()); } } @@ -1130,7 +1081,7 @@ protected void DeclareField(string className, List targs, string var t = TypeName(type, wr, tok); if (isStatic) { wr.WriteLine("static {0} {1};", t, name); - finisher.WriteLine("{5} {0} {1}{4}::{2} = {3};", t, className, name, r, TemplateMethod(targs), DeclareTemplate(targs)); + finisher.WriteLine("{5} {0} {1}{4}::{2} = {3};", t, className, name, r, InstantiateTemplate(targs), DeclareTemplate(targs)); } else { wr.WriteLine("{0} {1} = {2};", t, name, r); } @@ -1263,7 +1214,7 @@ protected override void EmitReturn(List outParams, TargetWriter wr) { } else if (outParams.Count == 1) { wr.WriteLine("return {0};", IdName(outParams[0])); } else { - wr.WriteLine("return Tuple{0}{1}({2});", outParams.Count, TemplateMethod(outParams.ConvertAll(o => o.Type)), Util.Comma(outParams, IdName)); + wr.WriteLine("return Tuple{0}{1}({2});", outParams.Count, InstantiateTemplate(outParams.ConvertAll(o => o.Type)), Util.Comma(outParams, IdName)); } } @@ -1284,7 +1235,6 @@ protected override void EmitBreak(string/*?*/ label, TargetWriter wr) { protected override void EmitYield(TargetWriter wr) { throw NotSupported("EmitYield"); - //wr.WriteLine("yield null;"); } protected override void EmitAbsurd(string/*?*/ message, TargetWriter wr) { @@ -1317,7 +1267,7 @@ protected override void EmitDecrementVar(string varName, TargetWriter wr) { } protected override string GetQuantifierName(string bvType) { - return string.Format("_dafny.Quantifier"); + throw NotSupported("QuantifierName"); } protected override BlockTargetWriter CreateForeachLoop(string boundVar, Type/*?*/ boundVarType, out TargetWriter collectionWriter, TargetWriter wr, string/*?*/ altBoundVarName = null, Type/*?*/ altVarType = null, Bpl.IToken/*?*/ tok = null) { @@ -1389,7 +1339,6 @@ protected override void EmitLiteralExpr(TextWriter wr, LiteralExpr e) { // TODO: the string should be converted to a Dafny seq TrStringLiteral(str, wr); } else if (AsNativeType(e.Type) is NativeType nt) { - wr.Write("({0}){1}", GetNativeTypeName(nt), (BigInteger)e.Value); if ((BigInteger) e.Value > 9223372036854775807) { // Avoid compiler warning: integer literal is too large to be represented in a signed integer type @@ -1604,14 +1553,14 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri foreach (var arg in dtv.Arguments) { types.Add(arg.Type); } - wr.Write("Tuple{0}{1}({2})", tuple.Dims, TemplateMethod(types), arguments); + wr.Write("Tuple{0}{1}({2})", tuple.Dims, InstantiateTemplate(types), arguments); } else if (!isCoCall) { // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) if (dt.Ctors.Count == 1) { wr.Write("{3}::{0}{1}({2})", dtName, - TemplateMethod(dt.TypeArgs), + InstantiateTemplate(dt.TypeArgs), arguments, dt.Module.CompileName); } else { @@ -1658,8 +1607,7 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, compiledName = "dafnyValues()"; break; case SpecialField.ID.Items: - compiledName = "Items()"; - break; + throw NotSupported("Items"); case SpecialField.ID.Reads: compiledName = "_reads"; break; @@ -1761,7 +1709,6 @@ protected override TargetWriter EmitArraySelect(List indices, Type e } protected override string ArrayIndexToInt(string arrayIndex) { - //return string.Format("new BigNumber({0})", arrayIndex); return arrayIndex; } @@ -1857,7 +1804,7 @@ protected override void EmitSeqConstructionExpr(SeqConstructionExpr expr, bool i } protected override void EmitMultiSetFormingExpr(MultiSetFormingExpr expr, bool inLetExprBody, TargetWriter wr) { - TrParenExpr("_dafny.MultiSet.FromArray", expr.E, wr, inLetExprBody); + throw NotSupported("MultiSetFormingExpr", expr.tok); } protected override void EmitApplyExpr(Type functionType, Bpl.IToken tok, Expression function, List arguments, bool inLetExprBody, TargetWriter wr) { @@ -1922,7 +1869,6 @@ protected override TargetWriter CreateIIFE_ExprBody(string source, Type sourceTy } protected override BlockTargetWriter CreateIIFE0(Type resultType, Bpl.IToken resultTok, TargetWriter wr) { - //throw NotSupported("CreateIIFE0", resultTok); var w = wr.NewBigExprBlock("[&] ", " ()"); return w; } @@ -2034,8 +1980,6 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, opString = "!="; } else { opString = "!="; - //preOpString = "!"; - //staticCallString = "_dafny.AreEqual"; } break; } @@ -2063,12 +2007,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, if (AsNativeType(resultType) != null) { opString = "<<"; } else { - if (AsNativeType(e1.Type) != null) { - callString = "Lsh(_dafny.IntOfUint64(uint64"; - postOpString = "))"; - } else { - callString = "Lsh"; - } + throw NotSupported("LeftShift of non-native type", tok); } break; case BinaryExpr.ResolvedOpcode.RightShift: @@ -2078,12 +2017,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, postOpString = ".Uint64()"; } } else { - if (AsNativeType(e1.Type) != null) { - callString = "Rsh(_dafny.IntOfUint64(uint64"; - postOpString = "))"; - } else { - callString = "Rsh"; - } + throw NotSupported("LeftShift of non-native type", tok); } break; case BinaryExpr.ResolvedOpcode.Add: @@ -2093,7 +2027,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, if (resultType.IsCharType || AsNativeType(resultType) != null) { opString = "+"; } else { - callString = "Plus"; + throw NotSupported("Add of non-native type", tok); } break; case BinaryExpr.ResolvedOpcode.Sub: @@ -2103,7 +2037,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, if (resultType.IsCharType || AsNativeType(resultType) != null) { opString = "-"; } else { - callString = "Minus"; + throw NotSupported("Subtraction of non-native type", tok); } break; case BinaryExpr.ResolvedOpcode.Mul: @@ -2113,7 +2047,7 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, if (AsNativeType(resultType) != null) { opString = "*"; } else { - callString = "Times"; + throw NotSupported("Multiplication of non-native type", tok); } break; case BinaryExpr.ResolvedOpcode.Div: @@ -2204,25 +2138,13 @@ protected override void CompileBinOp(BinaryExpr.ResolvedOpcode op, } protected override void EmitIsZero(string varName, TargetWriter wr) { - wr.Write("{0}.Cmp(_dafny.Zero) == 0", varName); + wr.Write("{0} == 0", varName); } protected override void EmitConversionExpr(ConversionExpr e, bool inLetExprBody, TargetWriter wr) { if (e.E.Type.IsNumericBased(Type.NumericPersuation.Int) || e.E.Type.IsBitVectorType || e.E.Type.IsCharType) { if (e.ToType.IsNumericBased(Type.NumericPersuation.Real)) { - // (int or bv) -> real - Contract.Assert(AsNativeType(e.ToType) == null); - wr.Write("_dafny.RealOfFrac("); - TargetWriter w; - if (AsNativeType(e.E.Type) is NativeType nt) { - wr.Write("_dafny.IntOf{0}(", Capitalize(GetNativeTypeName(nt))); - w = wr.Fork(); - wr.Write(")"); - } else { - w = wr; - } - TrParenExpr(e.E, w, inLetExprBody); - wr.Write(", _dafny.One)"); + throw NotSupported("Real numbers", e.tok); } else if (e.ToType.IsCharType) { wr.Write("_dafny.Char("); TrParenExpr(e.E, wr, inLetExprBody); @@ -2379,7 +2301,7 @@ protected override string GetCollectionBuilder_Build(CollectionType ct, Bpl.ITok } protected override void EmitSingleValueGenerator(Expression e, bool inLetExprBody, string type, TargetWriter wr) { - TrParenExpr("_dafny.SingleValue", e, wr, inLetExprBody); + throw NotSupported("EmitSingleValueGenerator", e.tok); } // ----- Target compilation and execution ------------------------------------------------------------- From 1dca986db0d90f3313fa59f394bdf155e058de25 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 22:46:28 -0400 Subject: [PATCH 276/573] Small cleanup of formatting of emitted C++ code --- Source/Dafny/Compiler-cpp.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b181eb441c7..7dc53b26490 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -200,7 +200,8 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool classDeclWriter.WriteLine("class {0};", name); methodDeclWriter.Write("public:\n"); - methodDeclWriter.WriteLine("// Default constructor\n {0}() {{}}", name); + methodDeclWriter.WriteLine("// Default constructor"); + methodDeclWriter.WriteLine("{0}() {{}}", name); // Create the code for the specialization of get_default var fullName = moduleName + "::" + name; @@ -321,12 +322,12 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the comparison operator - ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); - ws.Write("\treturn true "); + var wrCompOp = ws.NewNamedBlock("friend bool operator==(const {0} &left, const {0} &right)", DtT_protected); + wrCompOp.Write("\treturn true"); foreach (var arg in argNames) { - ws.WriteLine("\t\t&& left.{0} == right.{0}", arg); + wrCompOp.WriteLine("\t\t&& left.{0} == right.{0}", arg); } - ws.WriteLine(";\n}"); + wrCompOp.WriteLine(";"); // Overload the not-comparison operator ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); From 6839653663b679aedd31fb8723b9a5f77940d365 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 22:47:37 -0400 Subject: [PATCH 277/573] Clean up test files --- Test/c++/arrays.dfy | 11 ------- Test/c++/maps.dfy | 70 --------------------------------------------- Test/c++/sets.dfy | 21 -------------- 3 files changed, 102 deletions(-) diff --git a/Test/c++/arrays.dfy b/Test/c++/arrays.dfy index 000221b532d..4e0cb8ee746 100644 --- a/Test/c++/arrays.dfy +++ b/Test/c++/arrays.dfy @@ -1,15 +1,4 @@ -//newtype{:nativeType "sbyte"} sbyte = i:int | -0x80 <= i < 0x80 -//newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 -//newtype{:nativeType "short"} int16 = i:int | -0x8000 <= i < 0x8000 -//newtype{:nativeType "ushort"} uint16 = i:int | 0 <= i < 0x10000 -//newtype{:nativeType "int"} int32 = i:int | -0x80000000 <= i < 0x80000000 newtype{:nativeType "uint"} uint32 = i:int | 0 <= i < 0x100000000 -//newtype{:nativeType "long"} int64 = i:int | -0x8000000000000000 <= i < 0x8000000000000000 -//newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x10000000000000000 -//newtype{:nativeType "sbyte"} nat8 = i:int | 0 <= i < 0x80 -//newtype{:nativeType "short"} nat16 = i:int | 0 <= i < 0x8000 -//newtype{:nativeType "int"} nat32 = i:int | 0 <= i < 0x80000000 -//newtype{:nativeType "long"} nat64 = i:int | 0 <= i < 0x8000000000000000 method returnANullArray() returns (a: array?) ensures a == null diff --git a/Test/c++/maps.dfy b/Test/c++/maps.dfy index 732e613ade7..1dee9c64167 100644 --- a/Test/c++/maps.dfy +++ b/Test/c++/maps.dfy @@ -39,76 +39,6 @@ method Basic() { Test("Keys membership 4", 4 in s_keys); } -/* -method SetSeq() { - var m1:seq := [1]; - var m2:seq := [1, 2]; - var m3:seq := [1, 2, 3]; - var m4:seq := [1, 2, 3, 4]; - var n1:seq := [1]; - var n2:seq := [1, 2]; - var n3:seq := [1, 2, 3]; - - var s1:set> := { m1, m2, m3 }; - var s2:set> := s1 - { m1 }; - - Test("SeqMembership1", m1 in s1); - Test("SeqMembership2", m2 in s1); - Test("SeqMembership3", m3 in s1); - Test("SeqNonMembership1", !(m1 in s2)); - Test("SeqNonMembership2", !(m4 in s1)); - Test("SeqNonMembership3", !(m4 in s2)); - - Test("SeqMembershipValue1", n1 in s1); - Test("SeqMembershipValue2", n2 in s1); - Test("SeqMembershipValue3", n3 in s1); -} - -method ValueEquality() { - var m0:seq := [1, 2, 3]; - var m1:seq := m0[1..]; - var m2:seq := [2, 3]; - if m1 == m2 { - print "ValueEquality: This is expected\n"; - } else { - print "ValueEquality: This is unexpected\n"; - assert false; - } -} - -method Contains() { - var m1:seq := [1]; - var m2:seq := [1, 2]; - var m3:seq := [1, 2, 3]; - var m3identical:seq := [1, 2, 3]; - var mm := [m1, m3, m1]; - - if m1 in mm { - print "Membership 1: This is expected\n"; - } else { - print "Membership 1: This is unexpected\n"; - assert false; - } - if m2 in mm { - print "Membership 2: This is unexpected\n"; - assert false; - } else { - print "Membership 2: This is expected\n"; - } - if m3 in mm { - print "Membership 3: This is expected\n"; - } else { - print "Membership 3: This is unexpected\n"; - assert false; - } - if m3identical in mm { - print "Membership 3 value equality: This is expected\n"; - } else { - print "Membership 3 value equality: This is unexpected\n"; - assert false; - } -} -*/ method Main() { Basic(); diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index 132486c8732..e47efb19aa8 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -69,14 +69,6 @@ method SetComprehension(s:set) requires forall i :: 0 <= i < 10 ==> i in s; requires |s| == 10; { - /* - var s:set := set x:uint32 | 0 <= x < 10; - Test("SetComprehensionMembership1", 1 in s); - Test("SetComprehensionMembership2", 2 in s); - Test("SetComprehensionMembership9", 9 in s); - Test("SetComprehensionNonMembership1", !(11 in s)); - */ - var t:set := set y:uint32 | y in s; Test("SetComprehensionInEquality", t == s); Test("SetComprehensionInMembership", 0 in t); @@ -91,19 +83,6 @@ method LetSuchThat() { Test("LetSuchThatValue", e == 0 || e == 1 || e == 2 || e == 3); } -/* -method ValueEquality() { - var m0:seq := [1, 2, 3]; - var m1:seq := m0[1..]; - var m2:seq := [2, 3]; - if m1 == m2 { - print "ValueEquality: This is expected\n"; - } else { - print "ValueEquality: This is unexpected\n"; - assert false; - } -} - method Contains() { var m1:seq := [1]; var m2:seq := [1, 2]; From f3a20c29e9a62f2d02bdee4d6a3d2b5998362348 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 2 Jul 2020 23:20:36 -0400 Subject: [PATCH 278/573] Adapt to more changes in the compiler --- Source/Dafny/Compiler-cpp.cs | 17 +++++++++-------- Source/Dafny/Compiler.cs | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7dc53b26490..b9829cc46e5 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -679,19 +679,19 @@ public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter met this.Finisher = finisher; } - public BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody) { - return Compiler.CreateMethod(m, createBody, MethodDeclWriter, MethodWriter); + public BlockTargetWriter/*?*/ CreateMethod(Method m, List typeArgs, bool createBody, bool forBodyInheritance) { + return Compiler.CreateMethod(m, createBody, MethodDeclWriter, MethodWriter, forBodyInheritance); } - public BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member) { + public BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return Compiler.CreateFunction(member.EnclosingClass.CompileName, member.EnclosingClass.TypeArgs, name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member) { + public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodWriter); } - public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter) { + public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); } - public void DeclareField(string name, TopLevelDecl enclosingDecl, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs) { + public void DeclareField(string name, TopLevelDecl enclosingDecl, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, Field field) { Compiler.DeclareField(ClassName, enclosingDecl.TypeArgs, name, isStatic, isConst, type, tok, rhs, FieldWriter, Finisher); } public void InitializeField(Field field, Type instantiatedFieldType, TopLevelDeclWithMembers enclosingClass) { @@ -701,7 +701,7 @@ public void InitializeField(Field field, Type instantiatedFieldType, TopLevelDec public void Finish() { } } - protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, BlockTargetWriter wdr, TargetWriter wr) { + protected BlockTargetWriter/*?*/ CreateMethod(Method m, bool createBody, BlockTargetWriter wdr, TargetWriter wr, bool forBodyInheritance) { List nonGhostOuts = m.Outs.Where(o => !o.IsGhost).ToList(); string targetReturnTypeReplacement = null; if (nonGhostOuts.Count == 1) { @@ -1245,8 +1245,9 @@ protected override void EmitAbsurd(string/*?*/ message, TargetWriter wr) { wr.WriteLine("throw \"{0}\";", message); } - protected override void EmitHalt(Expression messageExpr, TargetWriter wr) { + protected override void EmitHalt(Bpl.IToken tok, Expression messageExpr, TargetWriter wr) { wr.Write("throw DafnyHaltException("); + if (tok != null) wr.Write("\"" + Dafny.ErrorReporter.TokenToString(tok) + ": \" + "); TrExpr(messageExpr, wr, false); wr.WriteLine(");"); } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 3b95cf2276c..625215b9095 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -3896,7 +3896,7 @@ protected void TrExpr(Expression expr, TargetWriter wr, bool inLetExprBody) { wr.Write(")"); } else { void writeObj(TargetWriter w) { - Contract.Assert(!sf.IsStatic); + //Contract.Assert(!sf.IsStatic); w = EmitCoercionIfNecessary(e.Obj.Type, UserDefinedType.UpcastToMemberEnclosingType(e.Obj.Type, e.Member), e.tok, w); TrParenExpr(e.Obj, w, inLetExprBody); } From e0b8f3623bdc5cc1a7fad36baa401a91e2a77ff8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 3 Jul 2020 09:52:35 -0400 Subject: [PATCH 279/573] Still adapting to latest compiler changes. Const class fields work but not static const --- Source/Dafny/Compiler-cpp.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b9829cc46e5..e51e7d08866 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -686,7 +686,7 @@ public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter met return Compiler.CreateFunction(member.EnclosingClass.CompileName, member.EnclosingClass.TypeArgs, name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); } public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { - return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodWriter); + return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); @@ -808,9 +808,19 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { throw NotSupported(string.Format("RuntimeTypeDescriptor {0} not yet supported", type), tok); } - protected BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wr) { - // We don't use getters - return createBody ? new TargetWriter().NewBlock("") : null; + protected BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wdr, TargetWriter wr) { + // Compiler insists on using Getter for constants, but we just use the raw variable name to hold the value, + // because o/w Compiler tries to use the Getter function as an Lvalue in assignments + // Unfortunately, Compiler doesn't tell us what the initial value is, so we hack around it + // by declaring the variable and a function to statically initialize it + BlockTargetWriter w = null; + string postfix = ""; + if (createBody) { + w = wdr.NewNamedBlock("{0}{1} init__{2}()", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); + postfix = String.Format(" = init__{0}()", name); + } + wdr.Write("{0}{1} {2}{3};", isStatic ? "static " : "", TypeName(resultType, wr, tok), name, postfix); + return w; } protected BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, out TargetWriter setterWriter, TargetWriter wr) { From 9e2e1e3bfdcca1d76efc570f8a6ef4650de3d144 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 3 Jul 2020 10:18:00 -0400 Subject: [PATCH 280/573] Finally get class.dfy working again, after expanding the interface for CreateGetter --- Source/Dafny/Compiler-Csharp.cs | 2 +- Source/Dafny/Compiler-cpp.cs | 20 +++++++++++++------- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Compiler-java.cs | 2 +- Source/Dafny/Compiler-js.cs | 2 +- Source/Dafny/Compiler.cs | 16 ++++++++-------- Test/c++/sets.dfy | 1 - 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 4124fdc33b9..84515804553 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -704,7 +704,7 @@ public BlockTargetWriter Writer(bool isStatic, bool createBody, MemberDecl/*?*/ public BlockTargetWriter/*?*/ CreateFunction(string name, List typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return Compiler.CreateFunction(name, typeArgs, formals, resultType, tok, isStatic, createBody, member, Writer(isStatic, createBody, member), forBodyInheritance); } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { + public BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, Writer(isStatic, createBody, member)); } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index e51e7d08866..0eb169f3c49 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -685,8 +685,8 @@ public ClassWriter(string className, CppCompiler compiler, BlockTargetWriter met public BlockTargetWriter/*?*/ CreateFunction(string name, List/*?*/ typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return Compiler.CreateFunction(member.EnclosingClass.CompileName, member.EnclosingClass.TypeArgs, name, typeArgs, formals, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { - return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodDeclWriter, MethodWriter); + public BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { + return Compiler.CreateGetter(name, enclosingDecl, resultType, tok, isStatic, isConst, createBody, MethodDeclWriter, MethodWriter); } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { return Compiler.CreateGetterSetter(name, resultType, tok, isStatic, createBody, out setterWriter, MethodWriter); @@ -808,18 +808,20 @@ string RuntimeTypeDescriptor(Type type, Bpl.IToken tok, TextWriter wr) { throw NotSupported(string.Format("RuntimeTypeDescriptor {0} not yet supported", type), tok); } - protected BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, TargetWriter wdr, TargetWriter wr) { + protected BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl cls, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, TargetWriter wdr, TargetWriter wr) { // Compiler insists on using Getter for constants, but we just use the raw variable name to hold the value, // because o/w Compiler tries to use the Getter function as an Lvalue in assignments // Unfortunately, Compiler doesn't tell us what the initial value is, so we hack around it // by declaring the variable and a function to statically initialize it + BlockTargetWriter w = null; - string postfix = ""; + string postfix = null; if (createBody) { w = wdr.NewNamedBlock("{0}{1} init__{2}()", isStatic ? "static " : "", TypeName(resultType, wr, tok), name); - postfix = String.Format(" = init__{0}()", name); + postfix = String.Format(" init__{0}()", name); } - wdr.Write("{0}{1} {2}{3};", isStatic ? "static " : "", TypeName(resultType, wr, tok), name, postfix); + DeclareField(cls.CompileName, cls.TypeArgs, name, isStatic, isConst, resultType, tok, postfix, wdr, wr); + //wdr.Write("{0}{1} {2}{3};", isStatic ? "static " : "", TypeName(resultType, wr, tok), name, postfix); return w; } @@ -1638,7 +1640,11 @@ protected override void GetSpecialFieldInfo(SpecialField.ID id, object idParam, protected override ILvalue EmitMemberSelect(Action obj, Type objType, MemberDecl member, List typeArgs, Dictionary typeMap, Type expectedType, string/*?*/ additionalCustomParameter = null, bool internalAccess = false) { if (member.IsStatic && member is ConstantField) { - return SuffixLvalue(obj, "::{0}", member.CompileName); + // This used to work, but now obj comes in wanting to use TypeName on the class, which results in (std::shared_ptr<_module::MyClass>)::c; + //return SuffixLvalue(obj, "::{0}", member.CompileName); + return SimpleLvalue(wr => { + wr.Write("{0}::{1}", IdProtect(member.EnclosingClass.CompileName) , IdProtect(member.CompileName)); + }); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { return SuffixLvalue(obj, ".get_{0}()", dtor.Name); } else if (member is SpecialField sf2 && sf2.SpecialId == SpecialField.ID.UseIdParam && sf2.IdParam is string fieldName diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 653769dd648..baae438e0b0 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -1056,7 +1056,7 @@ public TargetWriter FieldInitWriter(bool isStatic) { public BlockTargetWriter/*?*/ CreateFunction(string name, List typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return Compiler.CreateFunction(name, typeArgs, formals, resultType, tok, isStatic, createBody, member, ClassName, AbstractMethodWriter, ConcreteMethodWriter, forBodyInheritance); } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { + public BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, member, ClassName, AbstractMethodWriter, ConcreteMethodWriter, forBodyInheritance); } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 6ea622c05dc..3c5690b90b3 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -408,7 +408,7 @@ public BlockTargetWriter CreateConstructor(TopLevelDeclWithMembers c, List typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return Compiler.CreateFunction(name, typeArgs, formals, resultType, tok, isStatic, createBody, member, MethodWriter, forBodyInheritance); } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { + public BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { return Compiler.CreateGetter(name, resultType, tok, isStatic, createBody, MethodWriter); } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 625215b9095..c2cb5666244 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -93,7 +93,7 @@ protected interface IClassWriter { BlockTargetWriter/*?*/ CreateMethod(Method m, List typeArgs, bool createBody, bool forBodyInheritance); BlockTargetWriter/*?*/ CreateFunction(string name, List typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance = false); - BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance); // returns null iff !createBody + BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance); // returns null iff !createBody BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance); // if createBody, then result and setterWriter are non-null, else both are null void DeclareField(string name, TopLevelDecl enclosingDecl, bool isStatic, bool isConst, Type type, Bpl.IToken tok, string rhs, Field/*?*/ field); /// @@ -926,7 +926,7 @@ public NullClassWriter() { public BlockTargetWriter/*?*/ CreateFunction(string name, List typeArgs, List formals, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl member, bool forBodyInheritance) { return createBody ? block : null; } - public BlockTargetWriter/*?*/ CreateGetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { + public BlockTargetWriter/*?*/ CreateGetter(string name, TopLevelDecl enclosingDecl, Type resultType, Bpl.IToken tok, bool isStatic, bool isConst, bool createBody, MemberDecl/*?*/ member, bool forBodyInheritance) { return createBody ? block : null; } public BlockTargetWriter/*?*/ CreateGetterSetter(string name, Type resultType, Bpl.IToken tok, bool isStatic, bool createBody, MemberDecl/*?*/ member, out TargetWriter setterWriter, bool forBodyInheritance) { @@ -1157,7 +1157,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { Contract.Assert(!cf.IsStatic); // as checked above, only instance members can be inherited classWriter.DeclareField("_" + cf.CompileName, c, false, false, cfType, cf.tok, DefaultValue(cfType, errorWr, cf.tok, true), cf); } - var w = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, true, null, true); + var w = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, false, true, true, null, true); Contract.Assert(w != null); // since the previous line asked for a body if (cf.Rhs == null) { var sw = EmitReturnExpr(w); @@ -1229,7 +1229,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { } else { BlockTargetWriter wBody; if (cf.IsStatic) { - wBody = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, true, true, cf, false); + wBody = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, true, true, true, cf, false); Contract.Assert(wBody != null); // since the previous line asked for a body } else if (NeedsCustomReceiver(cf)) { // An instance field in a newtype needs to be modeled as a static function that takes a parameter, @@ -1240,19 +1240,19 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { Contract.Assert(wBody != null); // since the previous line asked for a body if (c is TraitDecl) { // also declare a function for the field in the interface - var wBodyInterface = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, false, cf, false); + var wBodyInterface = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, false, true, false, cf, false); Contract.Assert(wBodyInterface == null); // since the previous line said not to create a body } } else if (c is TraitDecl) { - wBody = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, false, cf, false); + wBody = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, false, true, false, cf, false); Contract.Assert(wBody == null); // since the previous line said not to create a body } else if (cf.Rhs == null) { // create a backing field, since this constant field may be assigned in constructors classWriter.DeclareField("_" + f.CompileName, c, false, false, f.Type, f.tok, DefaultValue(f.Type, errorWr, f.tok, true), f); - wBody = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, true, cf, false); + wBody = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, false, true, true, cf, false); Contract.Assert(wBody != null); // since the previous line asked for a body } else { - wBody = classWriter.CreateGetter(IdName(cf), cf.Type, cf.tok, false, true, cf, false); + wBody = classWriter.CreateGetter(IdName(cf), c, cf.Type, cf.tok, false, true, true, cf, false); Contract.Assert(wBody != null); // since the previous line asked for a body } if (wBody != null) { diff --git a/Test/c++/sets.dfy b/Test/c++/sets.dfy index e47efb19aa8..84b94f10676 100644 --- a/Test/c++/sets.dfy +++ b/Test/c++/sets.dfy @@ -115,7 +115,6 @@ method Contains() { assert false; } } -*/ method Main() { Basic(); From 640d241f8bb59b782df0edd5e58995116d81cd5a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 6 Jul 2020 11:55:23 -0400 Subject: [PATCH 281/573] Add ability to compile and run C++ programs --- Source/Dafny/Compiler-cpp.cs | 50 ++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0eb169f3c49..9313e3c1307 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2323,16 +2323,62 @@ protected override void EmitSingleValueGenerator(Expression e, bool inLetExprBod } // ----- Target compilation and execution ------------------------------------------------------------- + private string ComputeExeName(string targetFilename) { + return Path.GetFileNameWithoutExtension(targetFilename); + } public override bool CompileTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string/*?*/ targetFilename, ReadOnlyCollection otherFileNames, bool hasMain, bool runAfterCompile, TextWriter outputWriter, out object compilationResult) { + var assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location; + Contract.Assert(assemblyLocation != null); + var codebase = System.IO.Path.GetDirectoryName(assemblyLocation); + Contract.Assert(codebase != null); + var exeName = ComputeExeName(targetFilename); + var args = $"-g -Wall -Wextra -Wpedantic -std=c++17 -I{codebase} -o {exeName} {targetFilename}"; compilationResult = null; - throw NotSupported("Compilation of C++ files is not yet supported"); + var psi = new ProcessStartInfo("g++", args) { + CreateNoWindow = true, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(targetFilename)) + }; + var proc = Process.Start(psi); + while (!proc.StandardOutput.EndOfStream) { + outputWriter.WriteLine(proc.StandardOutput.ReadLine()); + } + while (!proc.StandardError.EndOfStream) { + outputWriter.WriteLine(proc.StandardError.ReadLine()); + } + proc.WaitForExit(); + if (proc.ExitCode != 0) { + throw new Exception($"Error while compiling C++ files. Process exited with exit code {proc.ExitCode}"); + } + return true; } public override bool RunTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string targetFilename, ReadOnlyCollection otherFileNames, object compilationResult, TextWriter outputWriter) { - throw NotSupported("Running C++ programs is not yet supported"); + var exeName = ComputeExeName(targetFilename); + var psi = new ProcessStartInfo(exeName) { + CreateNoWindow = true, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(targetFilename)) + }; + var proc = Process.Start(psi); + while (!proc.StandardOutput.EndOfStream) { + outputWriter.WriteLine(proc.StandardOutput.ReadLine()); + } + while (!proc.StandardError.EndOfStream) { + outputWriter.WriteLine(proc.StandardError.ReadLine()); + } + proc.WaitForExit(); + if (proc.ExitCode != 0) { + throw new Exception($"Error while running C++ file {targetFilename}. Process exited with exit code {proc.ExitCode}"); + } + return true; } } } From 40130fe4b53274c97a9bc4aa2a604abb591d4161 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 6 Jul 2020 14:46:44 -0400 Subject: [PATCH 282/573] Fix extension handling in a way that should handle old and new cases --- Source/DafnyDriver/DafnyDriver.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/DafnyDriver/DafnyDriver.cs b/Source/DafnyDriver/DafnyDriver.cs index bd54fad8256..d3458143ca4 100644 --- a/Source/DafnyDriver/DafnyDriver.cs +++ b/Source/DafnyDriver/DafnyDriver.cs @@ -542,7 +542,9 @@ static string WriteDafnyProgramToFiles(Compiler compiler, string dafnyProgramNam Contract.Assert(false); throw new cce.UnreachableException(); } - string targetBaseName = Path.ChangeExtension(dafnyProgramName, targetExtension); + + // Note that using Path.ChangeExtension here does the wrong thing when dafnyProgramName has multiple periods (e.g., a.b.dfy) + string targetBaseName = baseName + "." + targetExtension; string targetDir = Path.Combine(Path.GetDirectoryName(dafnyProgramName), targetBaseDir); // WARNING: Make sure that Directory.Delete is only called when the compilation target is Java. // If called during C# or JS compilation, you will lose your entire target directory. From 101050b2951f39f63f227e78bd724da997e8e7a1 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 10 Jul 2020 02:17:29 +0200 Subject: [PATCH 283/573] Add inout formals and arguments to the parser --- Source/Dafny/Cloner.cs | 15 ++-- Source/Dafny/Dafny.atg | 67 +++++++++++----- Source/Dafny/DafnyAst.cs | 19 ++++- Source/Dafny/Parser.cs | 103 ++++++++++++++++-------- Source/Dafny/Printer.cs | 31 ++++++++ Source/Dafny/Resolver.cs | 164 +++++++++++++++++++++++---------------- Source/Dafny/Rewriter.cs | 9 ++- 7 files changed, 276 insertions(+), 132 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index fbba2ef20f3..9c47cf9bd9f 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -486,7 +486,8 @@ public NestedMatchCaseExpr CloneNestedMatchCaseExpr(NestedMatchCaseExpr c) { } public virtual Expression CloneApplySuffix(ApplySuffix e) { - return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll(CloneExpr)); + return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( + x => new ApplySuffixArg { Inout = x.Inout, Expr = CloneExpr(x.Expr) })); } public virtual CasePattern CloneCasePattern(CasePattern pat) where VT: IVariable { @@ -1131,10 +1132,10 @@ protected Expression CloneCallAndAddK(ApplySuffix e) { name = edn.SuffixName; lhs = new ExprDotName(Tok(edn.tok), CloneExpr(edn.Lhs), name + "#", edn.OptTypeArguments == null ? null : edn.OptTypeArguments.ConvertAll(CloneType)); } - var args = new List(); - args.Add(k); + var args = new List(); + args.Add(new ApplySuffixArg { Inout = false, Expr = k }); foreach (var arg in e.Args) { - args.Add(CloneExpr(arg)); + args.Add(new ApplySuffixArg { Inout = arg.Inout, Expr = CloneExpr(arg.Expr) }); } var apply = new ApplySuffix(Tok(e.tok), lhs, args); reporter.Info(MessageSource.Cloner, e.tok, name + suffix); @@ -1336,9 +1337,9 @@ public override AssignmentRhs CloneRHS(AssignmentRhs rhs) { var lhs = (ExprDotName)apply.Lhs; lhsClone = new ExprDotName(Tok(lhs.tok), CloneExpr(lhs.Lhs), lhs.SuffixName + "#", lhs.OptTypeArguments == null ? null : lhs.OptTypeArguments.ConvertAll(CloneType)); } - var args = new List(); - args.Add(k); - apply.Args.ForEach(arg => args.Add(CloneExpr(arg))); + var args = new List(); + args.Add(new ApplySuffixArg { Inout = false, Expr = k }); + apply.Args.ForEach(arg => args.Add(new ApplySuffixArg { Inout = arg.Inout, Expr = CloneExpr(arg.Expr) })); var applyClone = new ApplySuffix(Tok(apply.tok), lhsClone, args); var c = new ExprRhs(applyClone); reporter.Info(MessageSource.Cloner, apply.Lhs.tok, mse.Member.Name + suffix); diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 03bbe230e74..d66ae689445 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -43,6 +43,8 @@ struct DeclModifierData { public IToken StaticToken; public bool IsProtected; public IToken ProtectedToken; + public bool Inout; + public IToken InoutToken; } // Check that token has not been set, then set it. @@ -69,6 +71,7 @@ enum AllowedDeclModifiers { Protected = 16, Linear = 32, Shared = 64, + Inout = 128, }; /// @@ -100,6 +103,15 @@ void CheckDeclModifiers(DeclModifierData dmod, string declCaption, AllowedDeclMo dmod.Usage = Usage.Ordinary; } } + if (dmod.Inout) { + if ((allowed & AllowedDeclModifiers.AlreadyGhost) != 0) { + SemErr(dmod.InoutToken, declCaption + " cannot be declared inout (they are 'ghost' by default)."); + dmod.Inout = false; + } else if ((allowed & AllowedDeclModifiers.Inout) == 0) { + SemErr(dmod.InoutToken, declCaption + " cannot be declared 'inout'."); + dmod.Inout = false; + } + } if (dmod.IsStatic && ((allowed & AllowedDeclModifiers.Static) == 0)) { SemErr(dmod.StaticToken, declCaption + " cannot be declared 'static'."); dmod.IsStatic = false; @@ -879,6 +891,7 @@ DeclModifier | "ghost" (. dmod.Usage = Usage.Ghost; CheckAndSetToken(ref dmod.UsageToken); .) | "linear" (. dmod.Usage = Usage.Linear; CheckAndSetToken(ref dmod.UsageToken); .) | "shared" (. dmod.Usage = Usage.Shared; CheckAndSetToken(ref dmod.UsageToken); .) + | "inout" (. dmod.Inout = true; CheckAndSetToken(ref dmod.InoutToken); .) | "static" (. dmod.IsStatic = true; CheckAndSetToken(ref dmod.StaticToken); .) | "protected" (. dmod.IsProtected = true; CheckAndSetToken(ref dmod.ProtectedToken); .) ) @@ -1312,13 +1325,13 @@ OtherTypeDecl +GIdentType /* usage always returns Ordinary if allowGhostKeyword is false */ = (. Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); - usage = Usage.Ordinary; isOld = allowNewKeyword; .) + usage = Usage.Ordinary; isOld = allowNewKeyword; inout = false; .) { "ghost" (. if (allowGhostKeyword) { usage = Usage.Ghost; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } .) - | "inout" (. if (allowGhostKeyword) { usage = Usage.Inout; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } .) + | "inout" (. if (allowInoutKeyword) { inout = true; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } .) | "linear" (. if (allowLinearKeyword) { usage = Usage.Linear; } else { SemErr(t, "formal cannot be declared 'linear' in this context"); } .) | "shared" (. if (allowLinearKeyword) { usage = Usage.Shared; } else { SemErr(t, "formal cannot be declared 'shared' in this context"); } .) | "new" (. if (allowNewKeyword) { isOld = false; } else { SemErr(t, "formal cannot be declared 'new' in this context"); } .) @@ -1432,11 +1445,11 @@ IteratorDecl ( [ GenericParameters ] - Formals + Formals [ ( "yields" | "returns" (. SemErr(t, "iterators don't have a 'returns' clause; did you mean 'yields'?"); .) ) - Formals + Formals ] | "..." (. signatureEllipsis = t; .) ) @@ -1542,7 +1555,7 @@ MethodDecl (. if (!(isCoLemma || isIndLemma)) { SemErr(t, "type of _k can only be specified for inductive lemmas and co-lemmas"); } .) ] (. var isCompilable = (isPlainOlMethod && dmod.Usage != Usage.Ghost) || isConstructor; .) - Formals + Formals [ "returns" (. if (isConstructor) { SemErr(t, "constructors cannot have out-parameters"); } .) - Formals + Formals ] | "..." (. signatureEllipsis = t; .) ) @@ -1712,19 +1725,20 @@ IteratorSpec<.List/*!*/ reads, List/ | "decreases" { Attribute } DecreasesList OldSemi ) . -Formals<.bool incoming, bool allowGhostKeyword, bool allowNewKeyword, List formals.> +Formals<.bool incoming, bool allowGhostKeyword, bool allowInoutKeyword, bool allowNewKeyword, List formals.> = (. Contract.Requires(cce.NonNullElements(formals)); IToken id; Type ty; Usage usage; bool isOld; + bool inout; .) "(" [ - GIdentType - (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); .) - { "," GIdentType - (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); .) + GIdentType + (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld, inout)); .) + { "," GIdentType + (. formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld, inout)); .) } ] ")" @@ -1935,7 +1949,7 @@ FunctionDecl ( [ GenericParameters ] - Formals + Formals ":" ( IF(FollowedByColon()) "(" @@ -1944,8 +1958,9 @@ FunctionDecl + GIdentType (. Contract.Assert(usage != Usage.Ghost && !isOld); result = new Formal(resultId, resultId.val, ty, false, usage, false); .) @@ -1979,7 +1994,7 @@ FunctionDecl ( [ GenericParameters ] (. missingOpenParen = true; .) - [ Formals (. missingOpenParen = false; .) + [ Formals (. missingOpenParen = false; .) ] (. if (missingOpenParen) { errors.Warning(t, "with the new support of higher-order functions in Dafny, parentheses-less predicates are no longer supported; in the new syntax, parentheses are required for the declaration and uses of predicates, even if the predicate takes no additional arguments"); } .) [ ":" (. SemErr(t, "predicates do not have an explicitly declared return type; it is always bool"); .) ] @@ -1998,7 +2013,7 @@ FunctionDecl ] [ KType ] - Formals + Formals [ ":" (. SemErr(t, "inductive predicates do not have an explicitly declared return type; it is always bool"); .) ] | "..." (. signatureEllipsis = t; .) @@ -2016,7 +2031,7 @@ FunctionDecl ] [ KType ] - Formals + Formals [ ":" (. SemErr(t, "copredicates do not have an explicitly declared return type; it is always bool"); .) ] | "..." (. signatureEllipsis = t; .) @@ -3909,6 +3924,18 @@ HashCall<.IToken id, out IToken openParen, out List typeArgs, out List ] ")" . + +SuffixExpression += (. Expression expr; bool inout = false; .) + ["inout" (. inout = true; .)] Expression + (. arg = new ApplySuffixArg { Inout = inout, Expr = expr }; .) + . +SuffixArgumentExpressions<.List args.> += (. ApplySuffixArg a; .) + SuffixExpression (. args.Add(a); .) + { "," SuffixExpression (. args.Add(a); .) + } + . Suffix = (. Contract.Requires(e != null); Contract.Ensures(e!=null); IToken id, x; @@ -4012,8 +4039,8 @@ Suffix } .) "]" - | "(" (. IToken openParen = t; var args = new List(); .) - [ Expressions ] + | "(" (. IToken openParen = t; var args = new List(); .) + [ SuffixArgumentExpressions ] ")" (. e = new ApplySuffix(openParen, e, args); .) ) . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 3a5329f9416..094c5fccdd7 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -5499,7 +5499,9 @@ public override bool IsMutable { } public readonly bool IsOld; - public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, bool isOld = false) + public readonly bool inout; + + public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, bool isOld = false, bool inout = false) : base(tok, name, type, usage) { Contract.Requires(tok != null); Contract.Requires(name != null); @@ -8241,6 +8243,8 @@ public bool WasResolved() return Type != null; } + public bool Inout = false; + public Expression Resolved { get { Contract.Requires(WasResolved()); // should be called only on resolved expressions; this approximates that precondition @@ -11675,25 +11679,34 @@ public ExprDotName(IToken tok, Expression obj, string suffixName, List opt } } + public class ApplySuffixArg { + public bool Inout; + public Expression Expr; + } + /// /// An ApplySuffix desugars into either an ApplyExpr or a FunctionCallExpr /// public class ApplySuffix : SuffixExpr { - public readonly List Args; + public readonly List Args; [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(Args != null); } - public ApplySuffix(IToken tok, Expression lhs, List args) + public ApplySuffix(IToken tok, Expression lhs, List args) : base(tok, lhs) { Contract.Requires(tok != null); Contract.Requires(lhs != null); Contract.Requires(cce.NonNullElements(args)); Args = args; } + + public ApplySuffix(IToken tok, Expression lhs, List args) + : this(tok, lhs, args.ConvertAll(e => new ApplySuffixArg { Inout = false, Expr = e })) + {} } public class Specification where T : class diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index c671179cc2d..e83a4e175ed 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -157,6 +157,8 @@ struct DeclModifierData { public IToken StaticToken; public bool IsProtected; public IToken ProtectedToken; + public bool Inout; + public IToken InoutToken; } // Check that token has not been set, then set it. @@ -183,6 +185,7 @@ enum AllowedDeclModifiers { Protected = 16, Linear = 32, Shared = 64, + Inout = 128, }; /// @@ -214,6 +217,15 @@ void CheckDeclModifiers(DeclModifierData dmod, string declCaption, AllowedDeclMo dmod.Usage = Usage.Ordinary; } } + if (dmod.Inout) { + if ((allowed & AllowedDeclModifiers.AlreadyGhost) != 0) { + SemErr(dmod.InoutToken, declCaption + " cannot be declared inout (they are 'ghost' by default)."); + dmod.Inout = false; + } else if ((allowed & AllowedDeclModifiers.Inout) == 0) { + SemErr(dmod.InoutToken, declCaption + " cannot be declared 'inout'."); + dmod.Inout = false; + } + } if (dmod.IsStatic && ((allowed & AllowedDeclModifiers.Static) == 0)) { SemErr(dmod.StaticToken, declCaption + " cannot be declared 'static'."); dmod.IsStatic = false; @@ -984,6 +996,11 @@ void DeclModifier(ref DeclModifierData dmod) { dmod.Usage = Usage.Shared; CheckAndSetToken(ref dmod.UsageToken); break; } + case 77: { + Get(); + dmod.Inout = true; CheckAndSetToken(ref dmod.InoutToken); + break; + } case 53: { Get(); dmod.IsStatic = true; CheckAndSetToken(ref dmod.StaticToken); @@ -1380,7 +1397,7 @@ void IteratorDecl(DeclModifierData dmod, ModuleDefinition module, out IteratorDe if (la.kind == 86) { GenericParameters(typeArgs, true); } - Formals(true, true, false, ins); + Formals(true, true, false, false, ins); if (la.kind == 106 || la.kind == 107) { if (la.kind == 106) { Get(); @@ -1388,7 +1405,7 @@ void IteratorDecl(DeclModifierData dmod, ModuleDefinition module, out IteratorDe Get(); SemErr(t, "iterators don't have a 'returns' clause; did you mean 'yields'?"); } - Formals(false, true, false, outs); + Formals(false, true, false, false, outs); } } else if (la.kind == 93) { Get(); @@ -1762,7 +1779,7 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi if (la.kind == 86) { GenericParameters(typeArgs, false); } - Formals(true, isFunctionMethod, isTwoState, formals); + Formals(true, isFunctionMethod, false, isTwoState, formals); Expect(26); if (FollowedByColon()) { Expect(84); @@ -1770,8 +1787,9 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi Type ty; Usage usage; bool isOld; + bool inout; - GIdentType(false, true, false, out resultId, out ty, out usage, out isOld); + GIdentType(false, true, false, false, out resultId, out ty, out usage, out isOld, out inout); Contract.Assert(usage != Usage.Ghost && !isOld); result = new Formal(resultId, resultId.val, ty, false, usage, false); @@ -1820,7 +1838,7 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi } missingOpenParen = true; if (la.kind == 84) { - Formals(true, isFunctionMethod, isTwoState, formals); + Formals(true, isFunctionMethod, false, isTwoState, formals); missingOpenParen = false; } if (missingOpenParen) { errors.Warning(t, "with the new support of higher-order functions in Dafny, parentheses-less predicates are no longer supported; in the new syntax, parentheses are required for the declaration and uses of predicates, even if the predicate takes no additional arguments"); } @@ -1852,7 +1870,7 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi if (la.kind == 82) { KType(ref kType); } - Formals(true, isFunctionMethod, false, formals); + Formals(true, isFunctionMethod, false, false, formals); if (la.kind == 26) { Get(); SemErr(t, "inductive predicates do not have an explicitly declared return type; it is always bool"); @@ -1880,7 +1898,7 @@ void FunctionDecl(DeclModifierData dmod, bool isWithinAbstractModule, out Functi if (la.kind == 82) { KType(ref kType); } - Formals(true, isFunctionMethod, false, formals); + Formals(true, isFunctionMethod, false, false, formals); if (la.kind == 26) { Get(); SemErr(t, "copredicates do not have an explicitly declared return type; it is always bool"); @@ -1967,7 +1985,7 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr Get(); isPlainOlMethod = true; caption = "Methods"; allowed = AllowedDeclModifiers.Ghost | AllowedDeclModifiers.Static - | AllowedDeclModifiers.Linear | AllowedDeclModifiers.Shared; + | AllowedDeclModifiers.Linear | AllowedDeclModifiers.Shared | AllowedDeclModifiers.Inout; break; } case 52: { @@ -2047,11 +2065,11 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr if (!(isCoLemma || isIndLemma)) { SemErr(t, "type of _k can only be specified for inductive lemmas and co-lemmas"); } } var isCompilable = (isPlainOlMethod && dmod.Usage != Usage.Ghost) || isConstructor; - Formals(true, isCompilable, isTwoStateLemma, ins); + Formals(true, isCompilable, isPlainOlMethod, isTwoStateLemma, ins); if (la.kind == 107) { Get(); if (isConstructor) { SemErr(t, "constructors cannot have out-parameters"); } - Formals(false, isCompilable, false, outs); + Formals(false, isCompilable, false, false, outs); } } else if (la.kind == 93) { Get(); @@ -2207,17 +2225,17 @@ void TypeParameterCharacteristics(ref TypeParameter.TypeParameterCharacteristics Expect(85); } - void GIdentType(bool allowGhostKeyword, bool allowLinearKeyword, bool allowNewKeyword, out IToken/*!*/ id, out Type/*!*/ ty, out Usage usage, out bool isOld) { + void GIdentType(bool allowGhostKeyword, bool allowLinearKeyword, bool allowInoutKeyword, bool allowNewKeyword, out IToken/*!*/ id, out Type/*!*/ ty, out Usage usage, out bool isOld, out bool inout) { Contract.Ensures(Contract.ValueAtReturn(out id)!=null); Contract.Ensures(Contract.ValueAtReturn(out ty)!=null); - usage = Usage.Ordinary; isOld = allowNewKeyword; + usage = Usage.Ordinary; isOld = allowNewKeyword; inout = false; while (StartOf(15)) { if (la.kind == 73) { Get(); if (allowGhostKeyword) { usage = Usage.Ghost; } else { SemErr(t, "formal cannot be declared 'ghost' in this context"); } } else if (la.kind == 77) { Get(); - if (allowGhostKeyword) { usage = Usage.Inout; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } + if (allowInoutKeyword) { inout = true; } else { SemErr(t, "formal cannot be declared 'inout' in this context"); } } else if (la.kind == 74) { Get(); if (allowLinearKeyword) { usage = Usage.Linear; } else { SemErr(t, "formal cannot be declared 'linear' in this context"); } @@ -2556,21 +2574,22 @@ void TypeAndToken(out IToken tok, out Type ty, bool inExpressionContext) { } } - void Formals(bool incoming, bool allowGhostKeyword, bool allowNewKeyword, List formals) { + void Formals(bool incoming, bool allowGhostKeyword, bool allowInoutKeyword, bool allowNewKeyword, List formals) { Contract.Requires(cce.NonNullElements(formals)); IToken id; Type ty; Usage usage; bool isOld; + bool inout; Expect(84); if (StartOf(17)) { - GIdentType(allowGhostKeyword, allowGhostKeyword, allowNewKeyword, out id, out ty, out usage, out isOld); - formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); + GIdentType(allowGhostKeyword, allowGhostKeyword, allowInoutKeyword, allowNewKeyword, out id, out ty, out usage, out isOld, out inout); + formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld, inout)); while (la.kind == 27) { Get(); - GIdentType(allowGhostKeyword, allowGhostKeyword, allowNewKeyword, out id, out ty, out usage, out isOld); - formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld)); + GIdentType(allowGhostKeyword, allowGhostKeyword, allowInoutKeyword, allowNewKeyword, out id, out ty, out usage, out isOld, out inout); + formals.Add(new Formal(id, id.val, ty, incoming, usage, isOld, inout)); } } Expect(85); @@ -5142,9 +5161,9 @@ void Suffix(ref Expression e) { Expect(83); } else if (la.kind == 84) { Get(); - IToken openParen = t; var args = new List(); - if (StartOf(8)) { - Expressions(args); + IToken openParen = t; var args = new List(); + if (StartOf(45)) { + SuffixArgumentExpressions(args); } Expect(85); e = new ApplySuffix(openParen, e, args); @@ -5245,7 +5264,7 @@ void EndlessExpression(out Expression e, bool allowSemi, bool allowLambda, bool } else if (IsMatch()) { NestedMatchExpression(out e, allowSemi, allowLambda, allowBitwiseOps); - } else if (StartOf(45)) { + } else if (StartOf(46)) { QuantifierGuts(out e, allowSemi, allowLambda); } else if (la.kind == 18) { Get(); @@ -5255,7 +5274,7 @@ void EndlessExpression(out Expression e, bool allowSemi, bool allowLambda, bool Get(); x = t; SetComprehensionExpr(x, false, out e, allowSemi, allowLambda, true); - } else if (StartOf(46)) { + } else if (StartOf(47)) { StmtInExpr(out s); Expression(out e, allowSemi, allowLambda, allowBitwiseOps); e = new StmtExpr(s.Tok, s, e); @@ -5545,7 +5564,7 @@ void NestedMatchExpression(out Expression e, bool allowSemi, bool allowLambda, b cases.Add(c); } Expect(81); - } else if (StartOf(47)) { + } else if (StartOf(48)) { while (la.kind == _case) { NestedCaseExpression(out c, allowSemi, allowLambda, allowBitwiseOps); cases.Add(c); @@ -5844,6 +5863,27 @@ void HashCall(IToken id, out IToken openParen, out List typeArgs, out List Expect(85); } + void SuffixExpression(out ApplySuffixArg arg) { + Expression expr; bool inout = false; + if (la.kind == 77) { + Get(); + inout = true; + } + Expression(out expr, true, true); + arg = new ApplySuffixArg { Inout = inout, Expr = expr }; + } + + void SuffixArgumentExpressions(List args) { + ApplySuffixArg a; + SuffixExpression(out a); + args.Add(a); + while (la.kind == 27) { + Get(); + SuffixExpression(out a); + args.Add(a); + } + } + void MemberBindingUpdate(out IToken id, out Expression e) { id = Token.NoToken; e = dummyExpr; if (la.kind == 1) { @@ -5911,16 +5951,16 @@ public void Parse() { static readonly bool[,] set = { {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_T,_T, _x,_x,_x,_x, _x,_T,_T,_x, _x,_T,_T,_x, _T,_x,_x,_x, _x,_T,_T,_T, _T,_T,_T,_x, _x,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, - {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, + {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, + {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, + {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, + {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_x,_x, _x,_T,_T,_T, _x,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, + {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _x,_T,_x,_x, _T,_T,_x,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, @@ -5954,10 +5994,11 @@ public void Parse() { {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x}, + {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x} + {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x} }; } // end Parser diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index c96976a65d8..87ab2fe5002 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -2766,6 +2766,22 @@ void PrintActualArguments(List args, string name) { wr.Write(")"); } + void PrintActualArguments(List args, string name) { + Contract.Requires(args != null); + if (name != null && name.EndsWith("#")) { + wr.Write("["); + if (args[0].Inout) { + wr.Write("inout "); + } + PrintExpression(args[0].Expr, false); + wr.Write("]"); + args = new List(args.Skip(1)); + } + wr.Write("("); + PrintExpressionList(args, false); + wr.Write(")"); + } + void PrintExpressionList(List exprs, bool isFollowedBySemicolon) { Contract.Requires(exprs != null); string sep = ""; @@ -2776,6 +2792,21 @@ void PrintExpressionList(List exprs, bool isFollowedBySemicolon) { PrintExpression(e, isFollowedBySemicolon); } } + + void PrintExpressionList(List exprs, bool isFollowedBySemicolon) { + Contract.Requires(exprs != null); + string sep = ""; + foreach (ApplySuffixArg e in exprs) { + Contract.Assert(e != null); + wr.Write(sep); + sep = ", "; + if (e.Inout) { + wr.Write("inout "); + } + PrintExpression(e.Expr, isFollowedBySemicolon); + } + } + void PrintExpressionPairList(List exprs) { Contract.Requires(exprs != null); string sep = ""; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3f18f14e368..5725d6ada29 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -14737,24 +14737,35 @@ public MethodCallInformation(IToken tok, MemberSelectExpr callee, List ApplySuffixArgListToExpressionList(List args) { + return args.ConvertAll(a => a.Expr); + } + MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool allowMethodCall) { Contract.Requires(e != null); Contract.Requires(opts != null); Contract.Ensures(Contract.Result() == null || allowMethodCall); Expression r = null; // upon success, the expression to which the ApplySuffix resolves var errorCount = reporter.Count(ErrorLevel.Error); + bool hasInOutArg = e.Args.Exists(x => x.Inout); + // TODO(andrea) remove // if (hasInOutArg) { + // TODO(andrea) remove // reporter.Warning(MessageSource.Resolver, e.tok, "has inout arguments"); + // TODO(andrea) remove // } if (e.Lhs is NameSegment) { - r = ResolveNameSegment((NameSegment)e.Lhs, true, e.Args, opts, allowMethodCall); + r = ResolveNameSegment((NameSegment)e.Lhs, true, ApplySuffixArgListToExpressionList(e.Args), opts, allowMethodCall); // note, if r is non-null, then e.Args have been resolved and r is a resolved expression that incorporates e.Args } else if (e.Lhs is ExprDotName) { - r = ResolveDotSuffix((ExprDotName)e.Lhs, true, e.Args, opts, allowMethodCall); + r = ResolveDotSuffix((ExprDotName)e.Lhs, true, ApplySuffixArgListToExpressionList(e.Args), opts, allowMethodCall); // note, if r is non-null, then e.Args have been resolved and r is a resolved expression that incorporates e.Args } else { ResolveExpression(e.Lhs, opts); } + if (r != null && hasInOutArg) { + reporter.Error(MessageSource.Resolver, e.tok, "inout arguments are not allowed in this context"); + } if (r == null) { foreach (var arg in e.Args) { - ResolveExpression(arg, opts); + ResolveExpression(arg.Expr, opts); } var improvedType = PartiallyResolveTypeForMemberSelection(e.Lhs.tok, e.Lhs.Type, "_#apply"); var fnType = improvedType.AsArrowType; @@ -14768,31 +14779,46 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a if (ri.TypeParamDecl != null) { reporter.Error(MessageSource.Resolver, e.tok, "name of type parameter ({0}) is used as a function", ri.TypeParamDecl.Name); } else { - var decl = ri.Decl; - var ty = new UserDefinedType(e.tok, decl.Name, decl, ri.TypeArgs); - if (ty.AsNewtype != null) { - reporter.Deprecated(MessageSource.Resolver, e.tok, "the syntax \"{0}(expr)\" for type conversions has been deprecated; the new syntax is \"expr as {0}\"", decl.Name); - if (e.Args.Count != 1) { - reporter.Error(MessageSource.Resolver, e.tok, "conversion operation to {0} got wrong number of arguments (expected 1, got {1})", decl.Name, e.Args.Count); - } - var conversionArg = 1 <= e.Args.Count ? e.Args[0] : - ty.IsNumericBased(Type.NumericPersuation.Int) ? LiteralExpr.CreateIntLiteral(e.tok, 0) : - LiteralExpr.CreateRealLiteral(e.tok, Basetypes.BigDec.ZERO); - r = new ConversionExpr(e.tok, conversionArg, ty); - ResolveExpression(r, opts); - // resolve the rest of the arguments, if any - for (int i = 1; i < e.Args.Count; i++) { - ResolveExpression(e.Args[i], opts); - } + if (hasInOutArg) { + reporter.Error(MessageSource.Resolver, e.tok, "inout arguments are not allowed in this context"); } else { - reporter.Error(MessageSource.Resolver, e.tok, "name of type ({0}) is used as a function", decl.Name); + var decl = ri.Decl; + var ty = new UserDefinedType(e.tok, decl.Name, decl, ri.TypeArgs); + if (ty.AsNewtype != null) { + reporter.Deprecated(MessageSource.Resolver, e.tok, "the syntax \"{0}(expr)\" for type conversions has been deprecated; the new syntax is \"expr as {0}\"", decl.Name); + if (e.Args.Count != 1) { + reporter.Error(MessageSource.Resolver, e.tok, "conversion operation to {0} got wrong number of arguments (expected 1, got {1})", decl.Name, e.Args.Count); + } + var conversionArg = 1 <= e.Args.Count ? e.Args[0].Expr : + ty.IsNumericBased(Type.NumericPersuation.Int) ? LiteralExpr.CreateIntLiteral(e.tok, 0) : + LiteralExpr.CreateRealLiteral(e.tok, Basetypes.BigDec.ZERO); + r = new ConversionExpr(e.tok, conversionArg, ty); + ResolveExpression(r, opts); + // resolve the rest of the arguments, if any + for (int i = 1; i < e.Args.Count; i++) { + ResolveExpression(e.Args[i].Expr, opts); + } + } else { + reporter.Error(MessageSource.Resolver, e.tok, "name of type ({0}) is used as a function", decl.Name); + } } } } else { if (lhs is MemberSelectExpr && ((MemberSelectExpr)lhs).Member is Method) { var mse = (MemberSelectExpr)lhs; if (allowMethodCall) { - var cRhs = new MethodCallInformation(e.tok, mse, e.Args); + foreach (var arg in e.Args) { + if (arg.Inout) { + if (arg.Expr.Resolved is MemberSelectExpr || arg.Expr.Resolved is IdentifierExpr) { + // TODO(andrea) actually check it's a valid path + reporter.Warning(MessageSource.Resolver, arg.Expr.tok, "[oxide] maybe unsound: unchecked inout argument"); + } else { + reporter.Error(MessageSource.Resolver, arg.Expr.tok, "invalid inout argument"); + return null; + } + } + } + var cRhs = new MethodCallInformation(e.tok, mse, ApplySuffixArgListToExpressionList(e.Args)); return cRhs; } else { reporter.Error(MessageSource.Resolver, e.tok, "method call is not allowed to be used in an expression context ({0})", mse.Member.Name); @@ -14802,59 +14828,63 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a } } } else { - var mse = e.Lhs is NameSegment || e.Lhs is ExprDotName ? e.Lhs.Resolved as MemberSelectExpr : null; - var callee = mse == null ? null : mse.Member as Function; - if (fnType.Arity != e.Args.Count) { - var what = callee != null ? string.Format("function '{0}'", callee.Name) : string.Format("function type '{0}'", fnType); - reporter.Error(MessageSource.Resolver, e.tok, "wrong number of arguments to function application ({0} expects {1}, got {2})", what, fnType.Arity, e.Args.Count); + if (hasInOutArg) { + reporter.Error(MessageSource.Resolver, e.tok, "inout arguments are not allowed in this context"); } else { - for (var i = 0; i < fnType.Arity; i++) { - AddAssignableConstraint(e.Args[i].tok, fnType.Args[i], e.Args[i].Type, "type mismatch for argument" + (fnType.Arity == 1 ? "" : " " + i) + " (function expects {0}, got {1})"); - } - if (errorCount != reporter.Count(ErrorLevel.Error)) { - // do nothing else; error has been reported - } else if (callee != null) { - // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) - var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, e.Args); - // resolve it here: - rr.Function = callee; - Contract.Assert(!(mse.Obj is StaticReceiverExpr) || callee.IsStatic); // this should have been checked already - Contract.Assert(callee.Formals.Count == rr.Args.Count); // this should have been checked already - // build the type substitution map - rr.TypeArgumentSubstitutions = new Dictionary(); - int enclosingTypeArgsCount = callee.EnclosingClass == null ? 0 : callee.EnclosingClass.TypeArgs.Count; - Contract.Assert(mse.TypeApplication.Count == enclosingTypeArgsCount + callee.TypeArgs.Count); - for (int i = 0; i < enclosingTypeArgsCount; i++) { - rr.TypeArgumentSubstitutions.Add(callee.EnclosingClass.TypeArgs[i], mse.TypeApplication[i]); + var mse = e.Lhs is NameSegment || e.Lhs is ExprDotName ? e.Lhs.Resolved as MemberSelectExpr : null; + var callee = mse == null ? null : mse.Member as Function; + if (fnType.Arity != e.Args.Count) { + var what = callee != null ? string.Format("function '{0}'", callee.Name) : string.Format("function type '{0}'", fnType); + reporter.Error(MessageSource.Resolver, e.tok, "wrong number of arguments to function application ({0} expects {1}, got {2})", what, fnType.Arity, e.Args.Count); + } else { + for (var i = 0; i < fnType.Arity; i++) { + AddAssignableConstraint(e.Args[i].Expr.tok, fnType.Args[i], e.Args[i].Expr.Type, "type mismatch for argument" + (fnType.Arity == 1 ? "" : " " + i) + " (function expects {0}, got {1})"); } + if (errorCount != reporter.Count(ErrorLevel.Error)) { + // do nothing else; error has been reported + } else if (callee != null) { + // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) + var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args)); + // resolve it here: + rr.Function = callee; + Contract.Assert(!(mse.Obj is StaticReceiverExpr) || callee.IsStatic); // this should have been checked already + Contract.Assert(callee.Formals.Count == rr.Args.Count); // this should have been checked already + // build the type substitution map + rr.TypeArgumentSubstitutions = new Dictionary(); + int enclosingTypeArgsCount = callee.EnclosingClass == null ? 0 : callee.EnclosingClass.TypeArgs.Count; + Contract.Assert(mse.TypeApplication.Count == enclosingTypeArgsCount + callee.TypeArgs.Count); + for (int i = 0; i < enclosingTypeArgsCount; i++) { + rr.TypeArgumentSubstitutions.Add(callee.EnclosingClass.TypeArgs[i], mse.TypeApplication[i]); + } - for (int i = 0; i < callee.TypeArgs.Count; i++) { - rr.TypeArgumentSubstitutions.Add(callee.TypeArgs[i], mse.TypeApplication[enclosingTypeArgsCount + i]); - } - Dictionary subst = BuildTypeArgumentSubstitute(rr.TypeArgumentSubstitutions); + for (int i = 0; i < callee.TypeArgs.Count; i++) { + rr.TypeArgumentSubstitutions.Add(callee.TypeArgs[i], mse.TypeApplication[enclosingTypeArgsCount + i]); + } + Dictionary subst = BuildTypeArgumentSubstitute(rr.TypeArgumentSubstitutions); - // type check the arguments + // type check the arguments #if DEBUG - Contract.Assert(callee.Formals.Count == fnType.Arity); - for (int i = 0; i < callee.Formals.Count; i++) { - Expression farg = rr.Args[i]; - Contract.Assert(farg.WasResolved()); - Contract.Assert(farg.Type != null); - Type s = SubstType(callee.Formals[i].Type, subst); - Contract.Assert(s.Equals(fnType.Args[i])); - Contract.Assert(farg.Type.Equals(e.Args[i].Type)); - } + Contract.Assert(callee.Formals.Count == fnType.Arity); + for (int i = 0; i < callee.Formals.Count; i++) { + Expression farg = rr.Args[i]; + Contract.Assert(farg.WasResolved()); + Contract.Assert(farg.Type != null); + Type s = SubstType(callee.Formals[i].Type, subst); + Contract.Assert(s.Equals(fnType.Args[i])); + Contract.Assert(farg.Type.Equals(e.Args[i].Expr.Type)); + } #endif - rr.Type = SubstType(callee.ResultType, subst); - // further bookkeeping - if (callee is FixpointPredicate) { - ((FixpointPredicate)callee).Uses.Add(rr); + rr.Type = SubstType(callee.ResultType, subst); + // further bookkeeping + if (callee is FixpointPredicate) { + ((FixpointPredicate)callee).Uses.Add(rr); + } + AddCallGraphEdge(opts.codeContext, callee, rr, IsFunctionReturnValue(callee, ApplySuffixArgListToExpressionList(e.Args), opts)); + r = rr; + } else { + r = new ApplyExpr(e.Lhs.tok, e.Lhs, ApplySuffixArgListToExpressionList(e.Args)); + r.Type = fnType.Result; } - AddCallGraphEdge(opts.codeContext, callee, rr, IsFunctionReturnValue(callee, e.Args, opts)); - r = rr; - } else { - r = new ApplyExpr(e.Lhs.tok, e.Lhs, e.Args); - r.Type = fnType.Result; } } } diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index 822f194be6d..a76df44f378 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -1554,12 +1554,13 @@ public override Expression CloneApplySuffix(ApplySuffix e) { if (bv.tok is MatchCaseToken) { Contract.Assert(e.Args.Count == cp.Arguments.Count); for (int i = 0; i < e.Args.Count; i++) { - ((MatchCaseToken)bv.tok).AddVar(e.Args[i].tok, cp.Arguments[i].Var, false); + ((MatchCaseToken)bv.tok).AddVar(e.Args[i].Expr.tok, cp.Arguments[i].Var, false); } } return new NameSegment(new AutoGeneratedToken(e.tok), bv.Name, null); } else { - return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll(CloneExpr)); + return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( + x => new ApplySuffixArg { Inout = x.Inout, Expr = CloneExpr(x.Expr) })); } } @@ -1584,8 +1585,8 @@ private bool FindMatchingPattern(ApplySuffix e, out CasePattern patter for (int i = 0; i < e.Args.Count; i++) { var arg1 = e.Args[i]; var arg2 = cp.Arguments[i]; - if (arg1.Resolved is IdentifierExpr) { - var bv1 = ((IdentifierExpr)arg1.Resolved).Var; + if (arg1.Expr.Resolved is IdentifierExpr) { + var bv1 = ((IdentifierExpr)arg1.Expr.Resolved).Var; if (bv1 != arg2.Var) { found = false; } From 25c1455d332995ec98370f234d8ebce25dbbdc7c Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 10 Jul 2020 18:32:42 +0200 Subject: [PATCH 284/573] Adapt linearity checks to inout formals Some unsoundness remains: only MemberSelectExpr of linear members should be allowed as inout arguments --- Source/Dafny/Cloner.cs | 4 +- Source/Dafny/Compiler-Csharp.cs | 2 +- Source/Dafny/Compiler-cpp.cs | 2 +- Source/Dafny/Compiler-java.cs | 2 +- Source/Dafny/Compiler.cs | 6 +- Source/Dafny/Dafny.atg | 2 +- Source/Dafny/DafnyAst.cs | 23 ++++--- Source/Dafny/Parser.cs | 2 +- Source/Dafny/RefinementTransformer.cs | 2 +- Source/Dafny/Resolver.cs | 92 +++++++++++++++++++-------- Source/Dafny/Rewriter.cs | 2 +- Source/Dafny/Translator.cs | 11 ++-- 12 files changed, 97 insertions(+), 53 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 9c47cf9bd9f..6b0dff3e1ba 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -202,7 +202,7 @@ public virtual Type CloneType(Type t) { } public Formal CloneFormal(Formal formal) { - Formal f = new Formal(Tok(formal.tok), formal.Name, CloneType(formal.Type), formal.InParam, formal.Usage, formal.IsOld); + Formal f = new Formal(Tok(formal.tok), formal.Name, CloneType(formal.Type), formal.InParam, formal.Usage, formal.IsOld, formal.Inout); //if (f.Type is UserDefinedType && formal.Type is UserDefinedType) // ((UserDefinedType)f.Type).ResolvedClass = ((UserDefinedType)(formal.Type)).ResolvedClass; return f; @@ -807,7 +807,7 @@ public virtual Method CloneMethod(Method m) { return new TwoStateLemma(Tok(m.tok), m.Name, m.HasStaticKeyword, tps, ins, m.Outs.ConvertAll(CloneFormal), req, mod, ens, decreases, body, CloneAttributes(m.Attributes), null); } else { - return new Method(Tok(m.tok), m.Name, m.HasStaticKeyword, m.Usage, tps, ins, m.Outs.ConvertAll(CloneFormal), + return new Method(Tok(m.tok), m.Name, m.HasStaticKeyword, m.Usage, m.HasInoutThis, tps, ins, m.Outs.ConvertAll(CloneFormal), req, mod, ens, decreases, body, CloneAttributes(m.Attributes), null); } } diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 8f230b75bb4..dd3117cc09b 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -1231,7 +1231,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal Formal p = ctor.Ins[i]; if (!p.IsGhost) { wr.Write(sep); - TrExpr(initCall.Args[i], wr, false); + TrExpr(initCall.Args[i].Expr, wr, false); sep = ", "; } } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5a391ce742d..ac742ace8f6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1589,7 +1589,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal Formal p = ctor.Ins[i]; if (!p.IsGhost) { wr.Write(sep); - TrExpr(initCall.Args[i], wr, false); + TrExpr(initCall.Args[i].Expr, wr, false); sep = ", "; } } diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 2fe91f2085d..42e0acf1fba 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -2242,7 +2242,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt initCall, Ta Formal p = ctor.Ins[i]; if (!p.IsGhost) { wr.Write(sep); - TrExpr(initCall.Args[i], wr, false); + TrExpr(initCall.Args[i].Expr, wr, false); sep = ", "; } } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index d9aa094916a..6b6d0c7ae24 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -3003,7 +3003,7 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { if (!p.IsGhost) { string inTmp = idGenerator.FreshId("_in"); inTmps.Add(inTmp); - DeclareLocalVar(inTmp, null, null, p.Usage, s.Args[i], false, wr, p.Type); + DeclareLocalVar(inTmp, null, null, p.Usage, s.Args[i].Expr, false, wr, p.Type); } } // Now, assign to the formals @@ -3150,11 +3150,11 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { if (!p.IsGhost) { wr.Write(sep); // Order of coercions is important here: EmitCoercionToNativeForm may coerce into a type we're unaware of, so it *has* to be second - var w = EmitCoercionIfNecessary(s.Args[i].Type, s.Method.Ins[i].Type, s.Tok, wr); + var w = EmitCoercionIfNecessary(s.Args[i].Expr.Type, s.Method.Ins[i].Type, s.Tok, wr); if (s.Method.IsExtern(out _, out _)) { w = EmitCoercionToNativeForm(s.Method.Ins[i].Type, s.Tok, w); } - TrExpr(s.Args[i], w, false); + TrExpr(s.Args[i].Expr, w, false); sep = ", "; } } diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index d66ae689445..c76dda9e2c4 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1633,7 +1633,7 @@ MethodDecl(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } else { - m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage, typeArgs, ins, outs, + m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage, dmod.Inout, typeArgs, ins, outs, req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } m.BodyStartTok = bodyStart; diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 094c5fccdd7..074020cdfd1 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4534,7 +4534,6 @@ public enum Usage { Ordinary, Shared, Linear, - Inout, Ghost, } @@ -5499,7 +5498,7 @@ public override bool IsMutable { } public readonly bool IsOld; - public readonly bool inout; + public readonly bool Inout; public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, bool isOld = false, bool inout = false) : base(tok, name, type, usage) { @@ -5508,6 +5507,7 @@ public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, boo Contract.Requires(type != null); InParam = inParam; IsOld = isOld; + Inout = inout; } public bool HasName { @@ -5969,6 +5969,7 @@ public class Method : MemberDecl, TypeParameter.ParentType, IMethodCodeContext public readonly ISet AssignedAssumptionVariables = new HashSet(); public Method OverriddenMethod; private static BlockStmt emptyBody = new BlockStmt(Token.NoToken, Token.NoToken, new List()); + public readonly bool HasInoutThis; public override IEnumerable SubExpressions { get { @@ -6000,6 +6001,7 @@ void ObjectInvariant() { public Method(IToken tok, string name, bool hasStaticKeyword, Usage usage, + bool hasInoutThis, [Captured] List typeArgs, [Captured] List ins, [Captured] List outs, [Captured] List req, [Captured] Specification mod, @@ -6026,6 +6028,7 @@ public Method(IToken tok, string name, this.Decreases = decreases; this.methodBody = body; this.SignatureEllipsis = signatureEllipsis; + this.HasInoutThis = hasInoutThis; MustReverify = false; } @@ -6113,7 +6116,7 @@ public Lemma(IToken tok, string name, [Captured] Specification decreases, [Captured] BlockStmt body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, false, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { } } @@ -6130,7 +6133,7 @@ public TwoStateLemma(IToken tok, string name, [Captured] Specification decreases, [Captured] BlockStmt body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, false, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(typeArgs != null); @@ -6176,7 +6179,7 @@ public Constructor(IToken tok, string name, Specification decreases, DividedBlockStmt body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, false, Usage.Ordinary, typeArgs, ins, new List(), req, mod, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, false, Usage.Ordinary, false, typeArgs, ins, new List(), req, mod, ens, decreases, body, attributes, signatureEllipsis) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(cce.NonNullElements(typeArgs)); @@ -6206,7 +6209,7 @@ public PrefixLemma(IToken tok, string name, bool hasStaticKeyword, List typeArgs, Formal k, List ins, List outs, List req, Specification mod, List ens, Specification decreases, BlockStmt body, Attributes attributes, FixpointLemma fixpointLemma) - : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, null) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, false, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, null) { Contract.Requires(k != null); Contract.Requires(ins != null && 1 <= ins.Count && ins[0] == k); Contract.Requires(fixpointLemma != null); @@ -6234,7 +6237,7 @@ public FixpointLemma(IToken tok, string name, Specification decreases, BlockStmt body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, false, typeArgs, ins, outs, req, mod, ens, decreases, body, attributes, signatureEllipsis) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(cce.NonNullElements(typeArgs)); @@ -7269,12 +7272,12 @@ void ObjectInvariant() { public readonly List Lhs; public readonly MemberSelectExpr MethodSelect; - public readonly List Args; + public readonly List Args; public Expression Receiver { get { return MethodSelect.Obj; } } public Method Method { get { return (Method)MethodSelect.Member; } } - public CallStmt(IToken tok, IToken endTok, List lhs, MemberSelectExpr memSel, List args) + public CallStmt(IToken tok, IToken endTok, List lhs, MemberSelectExpr memSel, List args) : base(tok, endTok) { Contract.Requires(tok != null); Contract.Requires(endTok != null); @@ -7296,7 +7299,7 @@ public override IEnumerable SubExpressions { } yield return MethodSelect; foreach (var ee in Args) { - yield return ee; + yield return ee.Expr; } } } diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index e83a4e175ed..79d64030b62 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -2109,7 +2109,7 @@ void MethodDecl(DeclModifierData dmod, bool allowConstructor, bool isWithinAbstr req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } else { - m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage, typeArgs, ins, outs, + m = new Method(tok, id.val, dmod.IsStatic, dmod.Usage, dmod.Inout, typeArgs, ins, outs, req, new Specification(mod, modAttrs), ens, new Specification(dec, decAttrs), body, attrs, signatureEllipsis); } m.BodyStartTok = bodyStart; diff --git a/Source/Dafny/RefinementTransformer.cs b/Source/Dafny/RefinementTransformer.cs index 41e0ef9c691..71c5eb3ffa5 100644 --- a/Source/Dafny/RefinementTransformer.cs +++ b/Source/Dafny/RefinementTransformer.cs @@ -471,7 +471,7 @@ Method CloneMethod(Method m, List moreEnsures, Specificatio return new TwoStateLemma(new RefinementToken(m.tok, moduleUnderConstruction), m.Name, m.HasStaticKeyword, tps, ins, m.Outs.ConvertAll(refinementCloner.CloneFormal), req, mod, ens, decreases, body, refinementCloner.MergeAttributes(m.Attributes, moreAttributes), null); } else { - return new Method(new RefinementToken(m.tok, moduleUnderConstruction), m.Name, m.HasStaticKeyword, m.Usage, tps, ins, m.Outs.ConvertAll(refinementCloner.CloneFormal), + return new Method(new RefinementToken(m.tok, moduleUnderConstruction), m.Name, m.HasStaticKeyword, m.Usage, m.HasInoutThis, tps, ins, m.Outs.ConvertAll(refinementCloner.CloneFormal), req, mod, ens, decreases, body, refinementCloner.MergeAttributes(m.Attributes, moreAttributes), null); } } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5725d6ada29..e8ef13288ec 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1746,7 +1746,7 @@ ModuleSignature RegisterTopLevelDecls(ModuleDefinition moduleDef, bool useImport new Specification(new List(), null), null, Predicate.BodyOriginKind.OriginalOrInherited, null, null); // --- here comes method MoveNext - var moveNext = new Method(iter.tok, "MoveNext", false, Usage.Ordinary, new List(), + var moveNext = new Method(iter.tok, "MoveNext", false, Usage.Ordinary, false, new List(), new List(), new List() { new Formal(iter.tok, "more", Type.Bool, false, Usage.Ordinary) }, new List(), new Specification(new List(), null), @@ -2591,7 +2591,7 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, methodSel.Member = prefixLemma; // resolve here methodSel.TypeApplication = typeApplication; methodSel.Type = new InferredTypeProxy(); - var recursiveCall = new CallStmt(com.tok, com.tok, new List(), methodSel, recursiveCallArgs); + var recursiveCall = new CallStmt(com.tok, com.tok, new List(), methodSel, recursiveCallArgs.ConvertAll(a => new ApplySuffixArg { Inout = false, Expr = a })); recursiveCall.IsGhost = prefixLemma.IsGhost; // resolve here var range = smaller; // The range will be strengthened later with the call's precondition, substituted @@ -3067,12 +3067,28 @@ private void ResolveClassMembers_Pass1(TopLevelDeclWithMembers cl) { usageContext = ComputeGhostInterest(m.Body, m.IsGhost, m, usageContext); CheckExpression(m.Body, this, m); PopUsageContext(m.Body.EndTok, outer, usageContext); - if (!member.IsStatic && m.Usage == Usage.Linear && usageContext.available[usageContext.thisId.Var] != Available.Consumed) { - reporter.Error(MessageSource.Resolver, member.tok, "linear 'this' must be unavailable at method exit"); + if (!member.IsStatic && m.Usage == Usage.Linear) { + if (m.HasInoutThis) { + if (usageContext.available[usageContext.thisId.Var] != Available.Available) { + reporter.Error(MessageSource.Resolver, member.tok, "linear inout 'this' must be assigned at method exit"); + } + } else { + if (usageContext.available[usageContext.thisId.Var] != Available.Consumed) { + reporter.Error(MessageSource.Resolver, member.tok, "linear 'this' must be unavailable at method exit"); + } + } } foreach (Formal x in m.Ins) { - if (x.IsLinear && usageContext.available[x] != Available.Consumed) { - reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at method exit"); + if (x.IsLinear) { + if (x.Inout) { + if (usageContext.available[x] != Available.Available) { + reporter.Error(MessageSource.Resolver, x, "linear inout variable must be assigned at method exit"); + } + } else { + if (usageContext.available[x] != Available.Consumed) { + reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at method exit"); + } + } } } foreach (Formal x in m.Outs) { @@ -6851,7 +6867,7 @@ protected override bool VisitOneStmt(Statement stmt, ref bool st) { i = 0; foreach (var ee in s.Args) { if (!s.Method.Ins[i].IsGhost) { - Visit(ee, st); + Visit(ee.Expr, st); } i++; } @@ -7370,7 +7386,7 @@ public void Visit(Statement stmt, bool mustBeErasable) { if (rhs.InitCall != null) { foreach (var inArg in rhs.InitCall.Method.Ins.Zip(rhs.InitCall.Args)) { if (!inArg.Item1.IsGhost) { - resolver.CheckIsCompilable(inArg.Item2, usageContext, inArg.Item1.Usage); + resolver.CheckIsCompilable(inArg.Item2.Expr, usageContext, inArg.Item1.Usage); } } } @@ -7400,7 +7416,22 @@ public void Visit(Statement stmt, bool mustBeErasable) { foreach (var e in s.Args) { Contract.Assume(j < callee.Ins.Count); // this should have already been checked by the resolver if (!callee.Ins[j].IsGhost) { - resolver.CheckIsCompilable(e, usageContext, callee.Ins[j].Usage); + if (e.Inout) { + if (!callee.Ins[j].Inout) { + Error(e.Expr, "inout is only allowed for inout arguments"); + } else { + // TODO(andrea) use Inout here to determine usage ? + resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); + } + } else { // !e.Inout + if (callee.Ins[j].Inout) { + Error(e.Expr, "inout is required for inout arguments"); + } else { // !callee.Ins[j].Inout + resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage); + } + } + } else if (e.Inout) { + Error(e.Expr, "inout is not allowed for ghost arguments"); } j++; } @@ -7670,7 +7701,7 @@ protected override void VisitOneStmt(Statement stmt) { var argsSubstMap = new Dictionary(); // maps formal arguments to actuals Contract.Assert(cs.Method.Ins.Count == cs.Args.Count); for (int i = 0; i < cs.Method.Ins.Count; i++) { - argsSubstMap.Add(cs.Method.Ins[i], cs.Args[i]); + argsSubstMap.Add(cs.Method.Ins[i], cs.Args[i].Expr); } var substituter = new Translator.AlphaConverting_Substituter(cs.Receiver, argsSubstMap, new Dictionary()); if (!Attributes.Contains(s.Attributes, "auto_generated")) { @@ -9487,6 +9518,10 @@ public void ResolveStatement(Statement stmt, ICodeContext codeContext) { if (methodCallInfo == null) { reporter.Error(MessageSource.Resolver, expr.tok, "expression has no reveal lemma"); } else { + if (methodCallInfo.Args.Exists(a => a.Inout)) { + // bug in inout + throw new cce.UnreachableException(); + } var call = new CallStmt(methodCallInfo.Tok, s.EndTok, new List(), methodCallInfo.Callee, methodCallInfo.Args); s.ResolvedStatements.Add(call); } @@ -11248,6 +11283,7 @@ private void ResolveUpdateStmt(UpdateStmt update, ICodeContext codeContext, int resolvedLhss.Add(ll.Resolved); } var a = new CallStmt(methodCallInfo.Tok, update.EndTok, resolvedLhss, methodCallInfo.Callee, methodCallInfo.Args); + // TODO(andrea) HERE? .ConvertAll(arg => new ApplySuffixArg { Inout = false, Expr = arg })); update.ResolvedStatements.Add(a); } } @@ -11406,8 +11442,8 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { } // resolve arguments int j = 0; - foreach (Expression e in s.Args) { - ResolveExpression(e, new ResolveOpts(codeContext, true)); + foreach (ApplySuffixArg e in s.Args) { + ResolveExpression(e.Expr, new ResolveOpts(codeContext, true)); j++; } @@ -11439,7 +11475,7 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { for (int i = 0; i < callee.Ins.Count; i++) { var it = callee.Ins[i].Type; Type st = SubstType(it, subst); - AddAssignableConstraint(s.Tok, st, s.Args[i].Type, "incorrect type of method in-parameter" + (callee.Ins.Count == 1 ? "" : " " + i) + " (expected {0}, got {1})"); + AddAssignableConstraint(s.Tok, st, s.Args[i].Expr.Type, "incorrect type of method in-parameter" + (callee.Ins.Count == 1 ? "" : " " + i) + " (expected {0}, got {1})"); } for (int i = 0; i < callee.Outs.Count; i++) { var it = callee.Outs[i].Type; @@ -11944,7 +11980,8 @@ Type ResolveTypeRhs(TypeRhs rr, Statement stmt, ICodeContext codeContext) { Contract.Assert(callLhs.ResolvedExpression is MemberSelectExpr); // since ResolveApplySuffix succeeded and call.Lhs denotes an expression (not a module or a type) var methodSel = (MemberSelectExpr)callLhs.ResolvedExpression; if (methodSel.Member is Method) { - rr.InitCall = new CallStmt(initCallTok, stmt.EndTok, new List(), methodSel, rr.Arguments); + rr.InitCall = new CallStmt(initCallTok, stmt.EndTok, new List(), methodSel, + rr.Arguments.ConvertAll(a => new ApplySuffixArg { Inout = false, Expr = a })); ResolveCallStmt(rr.InitCall, codeContext, rr.EType); if (rr.InitCall.Method is Constructor) { callsConstructor = true; @@ -14716,7 +14753,7 @@ class MethodCallInformation { public readonly IToken Tok; public readonly MemberSelectExpr Callee; - public readonly List Args; + public readonly List Args; [ContractInvariantMethod] void ObjectInvariant() { @@ -14726,7 +14763,7 @@ void ObjectInvariant() { Contract.Invariant(cce.NonNullElements(Args)); } - public MethodCallInformation(IToken tok, MemberSelectExpr callee, List args) { + public MethodCallInformation(IToken tok, MemberSelectExpr callee, List args) { Contract.Requires(tok != null); Contract.Requires(callee != null); Contract.Requires(callee.Member is Method); @@ -14810,7 +14847,7 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a foreach (var arg in e.Args) { if (arg.Inout) { if (arg.Expr.Resolved is MemberSelectExpr || arg.Expr.Resolved is IdentifierExpr) { - // TODO(andrea) actually check it's a valid path + // TODO(andrea) actually check it's a valid sequence of MemberSelectExpr reporter.Warning(MessageSource.Resolver, arg.Expr.tok, "[oxide] maybe unsound: unchecked inout argument"); } else { reporter.Error(MessageSource.Resolver, arg.Expr.tok, "invalid inout argument"); @@ -14818,7 +14855,7 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a } } } - var cRhs = new MethodCallInformation(e.tok, mse, ApplySuffixArgListToExpressionList(e.Args)); + var cRhs = new MethodCallInformation(e.tok, mse, e.Args); return cRhs; } else { reporter.Error(MessageSource.Resolver, e.tok, "method call is not allowed to be used in an expression context ({0})", mse.Member.Name); @@ -15134,7 +15171,7 @@ public static string UsageName(Usage u) { (u == Usage.Ghost) ? "ghost" : (u == Usage.Linear) ? "linear" : (u == Usage.Shared) ? "shared" : - (u == Usage.Inout) ? "inout" : + // TODO(andrea) ?? (u == Usage.Inout) ? "inout" : "ordinary"; } @@ -15143,7 +15180,7 @@ public static string UsageNameNonGhost(Usage u) { (u == Usage.Ghost) ? "ghost" : (u == Usage.Linear) ? "linear" : (u == Usage.Shared) ? "shared" : - (u == Usage.Inout) ? "inout" : + // TODO(andrea) ?? (u == Usage.Inout) ? "inout" : "non-ghost"; } @@ -15152,7 +15189,7 @@ public static string UsagePrefix(Usage u) { (u == Usage.Ghost) ? "ghost " : (u == Usage.Linear) ? "linear " : (u == Usage.Shared) ? "shared " : - (u == Usage.Inout) ? "inout " : + // TODO(andrea) ?? (u == Usage.Inout) ? "inout " : ""; } @@ -15175,7 +15212,7 @@ void CheckIsCompilable(Expression expr) { CheckIsCompilable(expr, null, Usage.Ordinary); } - void CheckIsCompilable(Expression expr, UsageContext usageContext, Usage expectedUsage) { + void CheckIsCompilable(Expression expr, UsageContext usageContext, Usage expectedUsage, bool inoutUsage = false) { IdentifierExpr x = ExprAsIdentifier(usageContext, expr); if (usageContext != null && expectedUsage == Usage.Shared && x != null && x.Var.Usage == Usage.Linear) { // Try to borrow x @@ -15184,7 +15221,7 @@ void CheckIsCompilable(Expression expr, UsageContext usageContext, Usage expecte } usageContext.available[x.Var] = Available.Borrowed; } else { - Usage usage = CheckIsCompilable(expr, usageContext); + Usage usage = CheckIsCompilable(expr, usageContext, inoutUsage); if (expectedUsage != Usage.Ghost && usage != expectedUsage) { reporter.Error(MessageSource.Resolver, expr, "expected {0} expression, found {1} expression", UsageName(expectedUsage), UsageName(usage)); @@ -15192,7 +15229,7 @@ void CheckIsCompilable(Expression expr, UsageContext usageContext, Usage expecte } } - Usage CheckIsCompilable(Expression expr, UsageContext usageContext) { + Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUsage = false) { Contract.Requires(expr != null); Contract.Requires(expr.WasResolved()); // this check approximates the requirement that "expr" be resolved @@ -15205,7 +15242,10 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext) { if (available.ContainsKey(e.Var)) { if (available[e.Var] == Available.Available) { ok = true; - available[e.Var] = Available.Consumed; + // TODO(andrea) only consume when not mutably borrowing + if (!inoutUsage) { + available[e.Var] = Available.Consumed; + } } } } @@ -15417,7 +15457,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext) { e.Operands.ForEach(ee => CheckIsCompilable(ee, usageContext, Usage.Ordinary)); return Usage.Ordinary; } else if (expr is ConcreteSyntaxExpression) { - return CheckIsCompilable(((ConcreteSyntaxExpression)expr).ResolvedExpression, usageContext); + return CheckIsCompilable(((ConcreteSyntaxExpression)expr).ResolvedExpression, usageContext, inoutUsage); } else if (expr is ITEExpr) { ITEExpr e = (ITEExpr)expr; var uc0 = UsageContext.Copy(usageContext); diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index a76df44f378..dd1f322c98f 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -208,7 +208,7 @@ protected override bool VisitOneStmt(Statement stmt, ref bool st) { var argsSubstMap = new Dictionary(); // maps formal arguments to actuals Contract.Assert(s0.Method.Ins.Count == s0.Args.Count); for (int i = 0; i < s0.Method.Ins.Count; i++) { - argsSubstMap.Add(s0.Method.Ins[i], s0.Args[i]); + argsSubstMap.Add(s0.Method.Ins[i], s0.Args[i].Expr); } var substituter = new Translator.AlphaConverting_Substituter(s0.Receiver, argsSubstMap, s0.MethodSelect.TypeArgumentSubstitutions()); // Strengthen the range of the "forall" statement with the precondition of the call, suitably substituted with the actual parameters. diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 782efc77df2..35ed14286b5 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -4310,7 +4310,7 @@ void AddMethodImpl(Method m, Bpl.Procedure proc, bool wellformednessProc) methodSel.Member = m; // resolve here methodSel.TypeApplication = typeApplication; methodSel.Type = new InferredTypeProxy(); - var recursiveCall = new CallStmt(m.tok, m.tok, new List(), methodSel, recursiveCallArgs); + var recursiveCall = new CallStmt(m.tok, m.tok, new List(), methodSel, recursiveCallArgs.ConvertAll(a => new ApplySuffixArg { Inout = false, Expr = a })); recursiveCall.IsGhost = m.IsGhost; // resolve here Expression parRange = new LiteralExpr(m.tok, true); @@ -11237,8 +11237,8 @@ void TrForallStmtCall(IToken tok, List boundVars, List locals builder.Add(Bpl.Cmd.SimpleAssign(s.Tok, initHeap, etran.HeapExpr)); } builder.Add(new CommentCmd("TrCallStmt: Before ProcessCallStmt")); - ProcessCallStmt(s.Tok, tySubst, GetTypeParams(s.Method), s.Receiver, actualReceiver, s.Method, s.Args, bLhss, lhsTypes, builder, locals, etran); + ProcessCallStmt(s.Tok, tySubst, GetTypeParams(s.Method), s.Receiver, actualReceiver, s.Method, s.Args.ConvertAll(a => a.Expr), bLhss, lhsTypes, builder, locals, etran); builder.Add(new CommentCmd("TrCallStmt: After ProcessCallStmt")); for (int i = 0; i < lhsBuilders.Count; i++) { var lhs = s.Lhs[i]; @@ -18269,7 +18269,8 @@ protected virtual Statement SubstStmt(Statement stmt) { r = new AssignStmt(s.Tok, s.EndTok, Substitute(s.Lhs), SubstRHS(s.Rhs)); } else if (stmt is CallStmt) { var s = (CallStmt)stmt; - var rr = new CallStmt(s.Tok, s.EndTok, s.Lhs.ConvertAll(Substitute), (MemberSelectExpr)Substitute(s.MethodSelect), s.Args.ConvertAll(Substitute)); + var rr = new CallStmt(s.Tok, s.EndTok, s.Lhs.ConvertAll(Substitute), (MemberSelectExpr)Substitute(s.MethodSelect), + s.Args.ConvertAll(a => new ApplySuffixArg { Inout = a.Inout, Expr = Substitute(a.Expr) })); r = rr; } else if (stmt is DividedBlockStmt) { r = SubstDividedBlockStmt((DividedBlockStmt)stmt); From 178c0cb31ad79a5f6da15b0ee5637e760b31ccd0 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 10 Jul 2020 18:58:59 +0200 Subject: [PATCH 285/573] Disallow borrowing (shared) a linear variable that was already mutably borrowed and viceversa --- Source/Dafny/Resolver.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e8ef13288ec..f70a321b92f 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -14996,9 +14996,10 @@ private void ResolveDatatypeValue(ResolveOpts opts, DatatypeValue dtv, DatatypeD enum Available { - Available, // if x is available, it can be borrowed or consumed (A --> B, A --> C) + Available, // if x is available, it can be borrowed or consumed (A --> B, A --> C, A --> M) Borrowed, // if x is borrowed, it can be borrowed again (but not consumed) (B --> B) Consumed, // if x is consumed, it cannot be consumed or borrowed + MutablyBorrowed, // if x is mutably borrowed, it cannot be consumed or borrowed // Borrowed is used to implement Wadler's "let!(x) y = e1 in e2" expression, // in which linear x is borrowed (appears as "shared") inside e1 before being // consumed by e2. (See Wadler, "Linear types can change the world!") @@ -15012,7 +15013,7 @@ enum Available { // assuming call-by-value evaluation, even if expression evaluation is otherwise unordered) // If e2 does not consume x, x stays Borrowed. // Borrowed is only meaningful in expressions; it does not propagate across statements. - // If statement s contains expressions that borrow x, x is reset to Available after s is checked. + // If statement s contains expressions that (mutably) borrow x, x is reset to Available after s is checked. // (In other words, if s does not consume x, s can borrow x temporarily, releasing x after s finishes.) } @@ -15061,7 +15062,7 @@ internal void AssertNoBorrowed() { // Replace Borrowed with Available (after each statement) internal void Unborrow() { foreach (var k in available.Keys.ToList()) { - if (available[k] == Available.Borrowed) { + if (available[k] == Available.Borrowed || available[k] == Available.MutablyBorrowed) { available[k] = Available.Available; } } @@ -15242,10 +15243,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs if (available.ContainsKey(e.Var)) { if (available[e.Var] == Available.Available) { ok = true; - // TODO(andrea) only consume when not mutably borrowing - if (!inoutUsage) { - available[e.Var] = Available.Consumed; - } + available[e.Var] = (inoutUsage) ? Available.MutablyBorrowed : Available.Consumed; } } } From 9f46834bcceb7443a2f56e8eb6149ec4e2a7cb7c Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 13 Jul 2020 16:41:25 +0200 Subject: [PATCH 286/573] Only permit linear member select expressions as inout arguments --- Source/Dafny/Resolver.cs | 45 +++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f70a321b92f..c1cb6ced5e5 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7165,6 +7165,38 @@ protected void Error(IToken tok, string msg, params object[] msgArgs) { Contract.Requires(msgArgs != null); resolver.reporter.Error(MessageSource.Resolver, tok, msg, msgArgs); } + + bool CheckValidInoutArg(UsageContext usageContext, Expression expr, bool last) { + IdentifierExpr x = ExprAsIdentifier(usageContext, expr); + if (expr is NameSegment && x != null) { + if (!x.Var.IsLinear) { + Error(expr, "only linear member selection is allowed in inout args"); + return false; + } else { + return true; + } + } else if (expr is ConcreteSyntaxExpression) { + var mse = (((ConcreteSyntaxExpression) expr).ResolvedExpression as MemberSelectExpr); + if (mse == null) { + Error(expr, "only linear member selection is allowed in inout args"); + return false; + } else if (!last) { + var d = mse.Member as DatatypeDestructor; + if (d == null || !d.CorrespondingFormals.All(f => f.IsLinear)) { + Error(expr, "only linear member selection is allowed in inout args: \"{0}\" is not linear", mse.Member.Name); + return false; + } else { + return true; + } + } else { + CheckValidInoutArg(usageContext, mse.Obj, false); + return true; + } + } else { + return false; + } + } + /// /// This method does three things, in order: /// 0. Sets .IsGhost to "true" if the statement is ghost. This often depends on some guard of the statement @@ -7419,8 +7451,9 @@ public void Visit(Statement stmt, bool mustBeErasable) { if (e.Inout) { if (!callee.Ins[j].Inout) { Error(e.Expr, "inout is only allowed for inout arguments"); + } else if (!CheckValidInoutArg(usageContext, e.Expr, true)) { + Error(e.Expr, "invalid expression for inout argument"); } else { - // TODO(andrea) use Inout here to determine usage ? resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); } } else { // !e.Inout @@ -11283,7 +11316,6 @@ private void ResolveUpdateStmt(UpdateStmt update, ICodeContext codeContext, int resolvedLhss.Add(ll.Resolved); } var a = new CallStmt(methodCallInfo.Tok, update.EndTok, resolvedLhss, methodCallInfo.Callee, methodCallInfo.Args); - // TODO(andrea) HERE? .ConvertAll(arg => new ApplySuffixArg { Inout = false, Expr = arg })); update.ResolvedStatements.Add(a); } } @@ -14785,9 +14817,6 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a Expression r = null; // upon success, the expression to which the ApplySuffix resolves var errorCount = reporter.Count(ErrorLevel.Error); bool hasInOutArg = e.Args.Exists(x => x.Inout); - // TODO(andrea) remove // if (hasInOutArg) { - // TODO(andrea) remove // reporter.Warning(MessageSource.Resolver, e.tok, "has inout arguments"); - // TODO(andrea) remove // } if (e.Lhs is NameSegment) { r = ResolveNameSegment((NameSegment)e.Lhs, true, ApplySuffixArgListToExpressionList(e.Args), opts, allowMethodCall); // note, if r is non-null, then e.Args have been resolved and r is a resolved expression that incorporates e.Args @@ -14847,8 +14876,7 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a foreach (var arg in e.Args) { if (arg.Inout) { if (arg.Expr.Resolved is MemberSelectExpr || arg.Expr.Resolved is IdentifierExpr) { - // TODO(andrea) actually check it's a valid sequence of MemberSelectExpr - reporter.Warning(MessageSource.Resolver, arg.Expr.tok, "[oxide] maybe unsound: unchecked inout argument"); + // TODO(andrea) shall we check the "path" (member select expressions) here? } else { reporter.Error(MessageSource.Resolver, arg.Expr.tok, "invalid inout argument"); return null; @@ -15172,7 +15200,6 @@ public static string UsageName(Usage u) { (u == Usage.Ghost) ? "ghost" : (u == Usage.Linear) ? "linear" : (u == Usage.Shared) ? "shared" : - // TODO(andrea) ?? (u == Usage.Inout) ? "inout" : "ordinary"; } @@ -15181,7 +15208,6 @@ public static string UsageNameNonGhost(Usage u) { (u == Usage.Ghost) ? "ghost" : (u == Usage.Linear) ? "linear" : (u == Usage.Shared) ? "shared" : - // TODO(andrea) ?? (u == Usage.Inout) ? "inout" : "non-ghost"; } @@ -15190,7 +15216,6 @@ public static string UsagePrefix(Usage u) { (u == Usage.Ghost) ? "ghost " : (u == Usage.Linear) ? "linear " : (u == Usage.Shared) ? "shared " : - // TODO(andrea) ?? (u == Usage.Inout) ? "inout " : ""; } From ff8f0cd7bc18fdbf4215b479c648d8e8d819195e Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 17 Jul 2020 12:20:42 +0200 Subject: [PATCH 287/573] Transform inout signatures and callsites to vanilla dafny for resolution --- Source/Dafny/Cloner.cs | 8 +- Source/Dafny/DafnyAst.cs | 8 +- Source/Dafny/DafnyPipeline.csproj | 1 + Source/Dafny/Linear.cs | 226 ++++++++++++++++++++++++++++++ Source/Dafny/Resolver.cs | 50 ++++--- 5 files changed, 274 insertions(+), 19 deletions(-) create mode 100644 Source/Dafny/Linear.cs diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 6b0dff3e1ba..bdecb2a80dc 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -645,7 +645,9 @@ public virtual Statement CloneStmt(Statement stmt) { } else if (stmt is UpdateStmt) { var s = (UpdateStmt)stmt; - r = new UpdateStmt(Tok(s.Tok), Tok(s.EndTok), s.Lhss.ConvertAll(CloneExpr), s.Rhss.ConvertAll(CloneRHS), s.CanMutateKnownState); + var clonedUpdateStmt = new UpdateStmt(Tok(s.Tok), Tok(s.EndTok), s.Lhss.ConvertAll(CloneExpr), s.Rhss.ConvertAll(CloneRHS), s.CanMutateKnownState); + clonedUpdateStmt.InoutGenerated = s.InoutGenerated; + r = clonedUpdateStmt; } else if (stmt is AssignOrReturnStmt) { var s = (AssignOrReturnStmt)stmt; @@ -1098,6 +1100,10 @@ public ModuleSignature CloneModuleSignature(ModuleSignature org, ModuleSignature } return sig; } + + // TODO(andrea) undo the inout transformation for compilation + // public override Method CloneMethod(Method m) { + // public override BlockStmt CloneMethodBody(Method m) { } /// diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 074020cdfd1..5ad13fcead7 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4535,6 +4535,7 @@ public enum Usage { Shared, Linear, Ghost, + Ignore, } public abstract class MemberDecl : Declaration { @@ -5493,7 +5494,7 @@ public class Formal : NonglobalVariable { public readonly bool InParam; // true to in-parameter, false for out-parameter public override bool IsMutable { get { - return !InParam; + return !InParam || Inout; } } public readonly bool IsOld; @@ -5971,6 +5972,9 @@ public class Method : MemberDecl, TypeParameter.ParentType, IMethodCodeContext private static BlockStmt emptyBody = new BlockStmt(Token.NoToken, Token.NoToken, new List()); public readonly bool HasInoutThis; + // TODO(andrea) public List CompileIns; + // TODO(andrea) public List CompileOuts; + public override IEnumerable SubExpressions { get { foreach (var e in Req) { @@ -6984,6 +6988,8 @@ public class UpdateStmt : ConcreteUpdateStatement public readonly List Rhss; public readonly bool CanMutateKnownState; + public bool InoutGenerated = false; + public readonly List ResolvedStatements = new List(); // contents filled in during resolution public override IEnumerable SubStatements { get { return ResolvedStatements; } diff --git a/Source/Dafny/DafnyPipeline.csproj b/Source/Dafny/DafnyPipeline.csproj index 6e2e3f191cb..9d0dccf8694 100644 --- a/Source/Dafny/DafnyPipeline.csproj +++ b/Source/Dafny/DafnyPipeline.csproj @@ -173,6 +173,7 @@ + diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs new file mode 100644 index 00000000000..a9c6aa10967 --- /dev/null +++ b/Source/Dafny/Linear.cs @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Boogie; +using System.Diagnostics.Contracts; +using System.ComponentModel; + +namespace Microsoft.Dafny.Linear { + + // TODO(andrea) move/remove + static class Util { + static public void PrintObject(Object obj) { + System.Type t = obj.GetType(); + foreach(var fieldInfo in t.GetFields()) { + Console.WriteLine("[f] {0}={1}", fieldInfo.Name, fieldInfo.GetValue(obj)); + } + foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj)) + { + string name=descriptor.Name; + object value; + try { + value = descriptor.GetValue(obj); + } catch (System.Reflection.TargetInvocationException e) { + if (e.InnerException is NullReferenceException) { + value = ""; + } else { + value = ""; + } + } + Console.WriteLine("[p] {0}={1}",name,value); + } + } + + static public void PrintObjects(Object obj1, Object obj2) { + System.Type t = obj1.GetType(); + foreach(var fieldInfo in t.GetFields()) { + var value1 = fieldInfo.GetValue(obj1); + var value2 = fieldInfo.GetValue(obj2); + Console.WriteLine("[f] {3} {0} = {1} <> {2}", fieldInfo.Name, + value1, value2, value1 != null ? (value1.Equals(value2) ? " " : "!=") : "??"); + } + foreach(PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj1)) + { + string name=descriptor.Name; + object value1; + try { + value1 = descriptor.GetValue(obj1); + } catch (System.Reflection.TargetInvocationException e) { + if (e.InnerException is NullReferenceException) { + value1 = ""; + } else { + value1 = ""; + } + } + object value2; + try { + value2 = descriptor.GetValue(obj2); + } catch (System.Reflection.TargetInvocationException e) { + if (e.InnerException is NullReferenceException) { + value2 = ""; + } else { + value2 = ""; + } + } + Console.WriteLine("[p] {3} {0} = {1} <> {2}", name, value1, value2, value1.Equals(value2) ? " " : "!="); + } + } + } + + class InoutVisitor : TopDownVisitor { + protected override bool VisitOneExpr(Expression expr, ref Object context) { + return true; + } + } + + public class InoutTranslateRewriter : IRewriter { + public delegate string FreshTempVarName(string prefix, ICodeContext context); + + FreshTempVarName freshTempVarName; + + public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTempVarName) : base(reporter) { + this.freshTempVarName = freshTempVarName; + } + + Cloner cloner = new Cloner(); + + (String, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { + var tok = new AutoGeneratedToken(expr.tok); + if (expr is ExprDotName) { + var dotName = (ExprDotName) expr; + var newValue = new DatatypeUpdateExpr(tok, cloner.CloneExpr(dotName.Lhs), + new List> { Tuple.Create((IToken) tok, dotName.SuffixName, value) }); + return DatatypeUpdateExprFor(dotName.Lhs, newValue); + } else if (expr is NameSegment) { + return (((NameSegment) expr).Name, value); + } else { + reporter.Error(MessageSource.Rewriter, expr.tok, "invalid inout argument"); + return null; + } + } + + void PreRewriteMethod(Method m) { + Contract.Requires(m != null); + // TODO(andrea) m.CompileOuts = m.Outs.ToList(); + // TODO(andrea) m.CompileIns = m.Ins.ToList(); + + var body = m.Body?.Body; + + for (int i = 0; i < m.Ins.Count; i++) { + if (m.Ins[i].Inout) { + var f = m.Ins[i]; + m.Ins.RemoveAt(i); + + var fTok = new AutoGeneratedToken(f.tok); + + var outFormal = new Formal(fTok, f.Name, f.Type, false, f.Usage, false, false); + m.Outs.Add(outFormal); + + var inFormal = new Formal(fTok, "old_" + f.Name, f.Type, false, f.Usage, false, true); + m.Ins.Insert(i, inFormal); + + if (body != null) { + var mTok = new AutoGeneratedToken(m.tok); + + var lhs = new IdentifierExpr(mTok, outFormal); + var rhsNameSegment = new NameSegment(fTok, "old_" + f.Name, null); + var rhs = new ExprRhs(rhsNameSegment); + var updateStmt = new UpdateStmt(mTok, mTok, + new List { lhs }, + new List { rhs }); + updateStmt.InoutGenerated = false; + m.Body.Body.Insert(0, updateStmt); + } + } + } + + if (body != null) { + for (int s = 0; s < m.Body.Body.Count; s++) { + var stmt = body[s]; + var varDeclStmt = stmt as VarDeclStmt; + var updStmt = (stmt as UpdateStmt) ?? (varDeclStmt?.Update as UpdateStmt); + var applySuffix = (updStmt?.Rhss.First() as ExprRhs)?.Expr as ApplySuffix; + if (applySuffix != null) { + var inoutArgs = applySuffix.Args.Where(a => a.Inout).ToList(); + if (inoutArgs.Count == 0) { + continue; + } + var updatedFields = inoutArgs.ConvertAll(a => { + var aTok = new AutoGeneratedToken(a.Expr.tok); + var varName = freshTempVarName("_inout_tmp_", m); + var datatypeUpdateFor = DatatypeUpdateExprFor(a.Expr, new IdentifierExpr(aTok, varName)); + // TODO(andrea) + UpdateStmt updateStmt = null; + if (datatypeUpdateFor.HasValue) { + var (updateName, updateExpr) = datatypeUpdateFor.Value; + updateStmt = new UpdateStmt(aTok, aTok, + new List { new IdentifierExpr(aTok, updateName) }, + new List { new ExprRhs(updateExpr) }); + updateStmt.InoutGenerated = true; + Console.WriteLine("OXIDE DEBUG varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); + } + return ( + new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), + updateStmt); + }); + var tempLocalVars = updatedFields.Select(x => x.Item1).ToList(); + foreach (var tv in tempLocalVars) { + updStmt.Lhss.Add(new IdentifierExpr(tv.Tok, tv.Name)); + } + if (varDeclStmt == null) { + var asTok = new AutoGeneratedToken(applySuffix.tok); + varDeclStmt = new VarDeclStmt(asTok, asTok, tempLocalVars, null); + body.Insert(s, varDeclStmt); + // TODO(andrea) + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + s++; + } else { + varDeclStmt.Locals.AddRange(tempLocalVars); + } + foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { + if (newUpdStmt != null) { + s++; + body.Insert(s, newUpdStmt); + } + } + // TODO(andrea) + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + } + } + } + + } + + static bool memberIsMethod(MemberDecl decl) { + var m = decl as Method; + if (m == null) { + return false; + } + return !( + m is Constructor || + m is InductiveLemma || + m is CoLemma || + m is Lemma || + m is TwoStateLemma); + } + + static IEnumerable AllMethodMembers(ModuleDefinition module) { + foreach (var decl in module.TopLevelDecls) { + var cl = decl as ClassDecl; + if (cl != null) { + foreach (var m in cl.Members.Where(memberIsMethod)) { + var method = (Method) m; + yield return method; + } + } + } + } + + internal override void PreResolve(ModuleDefinition module) { + foreach (Method method in AllMethodMembers(module)) { + PreRewriteMethod(method); + } + } + + } +} diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index c1cb6ced5e5..6e0383d51c2 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -361,6 +361,8 @@ public void ResolveProgram(Program prog) { } rewriters = new List(); + rewriters.Add(new Linear.InoutTranslateRewriter(reporter, this.FreshTempVarName)); + refinementTransformer = new RefinementTransformer(prog); rewriters.Add(refinementTransformer); rewriters.Add(new AutoContractsRewriter(reporter, builtIns)); @@ -3080,14 +3082,11 @@ private void ResolveClassMembers_Pass1(TopLevelDeclWithMembers cl) { } foreach (Formal x in m.Ins) { if (x.IsLinear) { - if (x.Inout) { - if (usageContext.available[x] != Available.Available) { - reporter.Error(MessageSource.Resolver, x, "linear inout variable must be assigned at method exit"); - } - } else { - if (usageContext.available[x] != Available.Consumed) { - reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at method exit"); + if (usageContext.available[x] != Available.Consumed) { + if (x.Inout) { + Contract.Assert(false); } + reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at method exit"); } } } @@ -7216,7 +7215,7 @@ bool CheckValidInoutArg(UsageContext usageContext, Expression expr, bool last) { /// this reason, it is not necessary to visit all subexpressions, unless the subexpression /// matter for the ghost checking/recording of "stmt". /// - public void Visit(Statement stmt, bool mustBeErasable) { + public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = false) { Contract.Requires(stmt != null); Contract.Assume(!codeContext.IsGhost || mustBeErasable); // (this is really a precondition) codeContext.IsGhost ==> mustBeErasable if (usageContext != null) usageContext.AssertNoBorrowed(); @@ -7317,7 +7316,8 @@ public void Visit(Statement stmt, bool mustBeErasable) { } else if (stmt is UpdateStmt) { var s = (UpdateStmt)stmt; - s.ResolvedStatements.Iter(ss => Visit(ss, mustBeErasable)); + Contract.Assert(!inoutGenerated); + s.ResolvedStatements.Iter(ss => Visit(ss, mustBeErasable, s.InoutGenerated)); s.IsGhost = s.ResolvedStatements.All(ss => ss.IsGhost); } else if (stmt is AssignOrReturnStmt) { @@ -7393,7 +7393,9 @@ public void Visit(Statement stmt, bool mustBeErasable) { if (s.Rhs is ExprRhs) { var rhs = (ExprRhs)s.Rhs; Usage expectedUsage = x != null ? x.Var.Usage : Usage.Ordinary; - resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + if (!inoutGenerated) { + resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + } if (x != null && x.Var.IsLinear) { if (usageContext.available[x.Var] != Available.Consumed) { Error(x, "variable must be unavailable before assignment"); @@ -7503,12 +7505,18 @@ public void Visit(Statement stmt, bool mustBeErasable) { Error(s, "actual out-parameter{0} is required to be a ghost variable", s.Lhs.Count == 1 ? "" : " " + j); } } else if (jUsage == Usage.Linear) { - if (xUsage != Usage.Linear) { + if (xUsage == Usage.Ignore) { + // ok + } else if (xUsage != Usage.Linear) { Error(x, "variable must be linear"); - } else if (usageContext.available[x.Var] != Available.Consumed) { + } else if (usageContext.available[x.Var] != Available.Consumed && usageContext.available[x.Var] != Available.MutablyBorrowed) { + // TODO(andrea) is this check sufficient? Error(x, "variable must be unavailable before assignment"); } - usageContext.available[x.Var] = Available.Available; + if (xUsage != Usage.Ignore) + { + usageContext.available[x.Var] = Available.Available; + } } else if (xUsage != jUsage) { Error(x, "expected {0} variable, found {1} variable", UsageName(jUsage), UsageName(xUsage)); } @@ -15077,7 +15085,7 @@ internal static UsageContext Copy(UsageContext uc) { } internal bool Borrows() { - return available.Values.Contains(Available.Borrowed); + return available.Values.Contains(Available.Borrowed) || available.Values.Contains(Available.MutablyBorrowed); } // Assert that there are no borrowed variables (before each statement) @@ -15245,6 +15253,9 @@ void CheckIsCompilable(Expression expr, UsageContext usageContext, Usage expecte if (usageContext.available[x.Var] == Available.Consumed) { reporter.Error(MessageSource.Resolver, expr, "tried to borrow variable, but it was already unavailable"); } + if (usageContext.available[x.Var] == Available.MutablyBorrowed) { + reporter.Error(MessageSource.Resolver, expr, "tried to borrow variable, but it was already mutably borrowed"); + } usageContext.available[x.Var] = Available.Borrowed; } else { Usage usage = CheckIsCompilable(expr, usageContext, inoutUsage); @@ -15300,9 +15311,14 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs bool linearDestructor = (d == null) ? false : d.CorrespondingFormals.Exists(x => x.IsLinear); var id = ExprAsIdentifier(usageContext, e.Obj); if (id != null && (id.Var.IsLinear || id.Var.IsShared)) { - // Try to share id - CheckIsCompilable(e.Obj, usageContext, Usage.Shared); - return linearDestructor ? Usage.Shared : Usage.Ordinary; + if (inoutUsage) { + CheckIsCompilable(e.Obj, usageContext, Usage.Linear); + return linearDestructor ? Usage.Linear : Usage.Ordinary; + } else { + // Try to share id + CheckIsCompilable(e.Obj, usageContext, Usage.Shared); + return linearDestructor ? Usage.Shared : Usage.Ordinary; + } } else if (linearDestructor) { CheckIsCompilable(e.Obj, usageContext, Usage.Shared); return Usage.Shared; From 903bde822a0c2ca9af9d3caad3e7d08696da2a54 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 20 Jul 2020 13:37:54 +0200 Subject: [PATCH 288/573] Fix linearity check for inout arguments --- Source/Dafny/Resolver.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 6e0383d51c2..e466f4f0370 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7517,6 +7517,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal { usageContext.available[x.Var] = Available.Available; } + } else if (jUsage == Usage.Ordinary && xUsage == Usage.Ignore) { + // ok } else if (xUsage != jUsage) { Error(x, "expected {0} variable, found {1} variable", UsageName(jUsage), UsageName(xUsage)); } @@ -15098,9 +15100,12 @@ internal void AssertNoBorrowed() { // Replace Borrowed with Available (after each statement) internal void Unborrow() { foreach (var k in available.Keys.ToList()) { - if (available[k] == Available.Borrowed || available[k] == Available.MutablyBorrowed) { + if (available[k] == Available.Borrowed) { available[k] = Available.Available; } + if (available[k] == Available.MutablyBorrowed) { + available[k] = Available.Consumed; + } } } } From 0c4268e1f997f73b9f165d6f85d620efd83fd7a9 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 20 Jul 2020 13:38:35 +0200 Subject: [PATCH 289/573] Support inout `this` (`self`) for datatype members --- Source/Dafny/Dafny.atg | 11 ++- Source/Dafny/DafnyAst.cs | 3 + Source/Dafny/DafnyPipeline.csproj | 1 - Source/Dafny/Linear.cs | 119 ++++++++++++++++++++---------- Source/Dafny/Parser.cs | 80 +++++++++++--------- Source/Dafny/Resolver.cs | 4 +- 6 files changed, 140 insertions(+), 78 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index c76dda9e2c4..a1b4b6cce27 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2271,11 +2271,13 @@ UpdateStmt Expression suchThat = null; IToken exceptionExpect = null; Expression exceptionExpr = null; + bool inoutThis = false; + IToken inoutTok = null; .) -( Lhs (. x = e.tok; .) +( ["inout" (. inoutThis = true; inoutTok = t; .) ] Lhs (. x = e.tok; .) ( { Attribute } - ";" (. endTok = t; rhss.Add(new ExprRhs(e, attrs)); .) - | (. lhss.Add(e); .) + ";" (. endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutThis; rhss.Add(exprRhs); .) + | (. lhss.Add(e); if (inoutThis) { SemErr(inoutTok, "inout not allowed here"); } .) { "," Lhs (. lhss.Add(e); .) } ( ":=" (. x = t; .) @@ -2330,6 +2332,7 @@ Rhs List display = null; r = dummyRhs; // to please compiler Attributes attrs = null; + bool inoutThis = false; .) ( "new" (. newToken = t; .) ( NewArray // "ty" is set to InferredTypeProxy above @@ -2354,7 +2357,7 @@ Rhs } .) | "*" (. r = new HavocRhs(t); .) - | Expression (. r = new ExprRhs(e); .) + | ["inout" (. inoutThis = true; .) ] Expression (. ExprRhs exprRhs = new ExprRhs(e); exprRhs.InoutThis = inoutThis; r = exprRhs; .) ) { Attribute } (. r.Attributes = attrs; .) . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 5ad13fcead7..21adc2921e2 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6696,6 +6696,9 @@ public virtual IEnumerable SubStatements{ public class ExprRhs : AssignmentRhs { public readonly Expression Expr; + + public bool InoutThis = false; + [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(Expr != null); diff --git a/Source/Dafny/DafnyPipeline.csproj b/Source/Dafny/DafnyPipeline.csproj index 9d0dccf8694..a19425b1dcf 100644 --- a/Source/Dafny/DafnyPipeline.csproj +++ b/Source/Dafny/DafnyPipeline.csproj @@ -142,7 +142,6 @@ - 4.8 diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index a9c6aa10967..5c8635d1e40 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -84,7 +84,7 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp Cloner cloner = new Cloner(); - (String, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { + (Expression, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { var tok = new AutoGeneratedToken(expr.tok); if (expr is ExprDotName) { var dotName = (ExprDotName) expr; @@ -92,59 +92,92 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp new List> { Tuple.Create((IToken) tok, dotName.SuffixName, value) }); return DatatypeUpdateExprFor(dotName.Lhs, newValue); } else if (expr is NameSegment) { - return (((NameSegment) expr).Name, value); + return (new IdentifierExpr(tok, ((NameSegment) expr).Name), value); + } else if (expr is ThisExpr) { + return null; // (new ThisExpr(tok), value); } else { reporter.Error(MessageSource.Rewriter, expr.tok, "invalid inout argument"); return null; } } - void PreRewriteMethod(Method m) { + void PreRewriteMethod(Method m, TopLevelDecl enclosingDecl) { + Console.WriteLine("OXIDE DEBUG Rewriting method " + m.Name + " " + ErrorReporter.TokenToString(m.tok)); Contract.Requires(m != null); // TODO(andrea) m.CompileOuts = m.Outs.ToList(); // TODO(andrea) m.CompileIns = m.Ins.ToList(); var body = m.Body?.Body; - for (int i = 0; i < m.Ins.Count; i++) { - if (m.Ins[i].Inout) { - var f = m.Ins[i]; - m.Ins.RemoveAt(i); + void AddGeneratedInoutFormals(Formal f, int insertAt) { + var fTok = new AutoGeneratedToken(f.tok); - var fTok = new AutoGeneratedToken(f.tok); + var outFormal = new Formal(fTok, f.Name, f.Type, false, f.Usage, false, false); + m.Outs.Add(outFormal); - var outFormal = new Formal(fTok, f.Name, f.Type, false, f.Usage, false, false); - m.Outs.Add(outFormal); + var inFormal = new Formal(fTok, "old_" + f.Name, f.Type, false, f.Usage, false, true); + m.Ins.Insert(insertAt, inFormal); - var inFormal = new Formal(fTok, "old_" + f.Name, f.Type, false, f.Usage, false, true); - m.Ins.Insert(i, inFormal); + if (body != null) { + var mTok = new AutoGeneratedToken(m.tok); - if (body != null) { - var mTok = new AutoGeneratedToken(m.tok); + var lhs = new IdentifierExpr(mTok, outFormal); + var rhsNameSegment = new NameSegment(fTok, "old_" + f.Name, null); + var rhs = new ExprRhs(rhsNameSegment); + var updateStmt = new UpdateStmt(mTok, mTok, + new List { lhs }, + new List { rhs }); + updateStmt.InoutGenerated = false; + m.Body.Body.Insert(0, updateStmt); + } + } - var lhs = new IdentifierExpr(mTok, outFormal); - var rhsNameSegment = new NameSegment(fTok, "old_" + f.Name, null); - var rhs = new ExprRhs(rhsNameSegment); - var updateStmt = new UpdateStmt(mTok, mTok, - new List { lhs }, - new List { rhs }); - updateStmt.InoutGenerated = false; - m.Body.Body.Insert(0, updateStmt); - } + for (int i = 0; i < m.Ins.Count; i++) { + if (m.Ins[i].Inout) { + var f = m.Ins[i]; + m.Ins.RemoveAt(i); + + AddGeneratedInoutFormals(f, i); } } + if (m.HasInoutThis) { + AddGeneratedInoutFormals(new Formal(new AutoGeneratedToken(m.tok), "self", UserDefinedType.FromTopLevelDecl(m.tok, enclosingDecl), false, m.Usage, false, true), 0); + // TODO(andrea) DISALLOW "this" in body + } + if (body != null) { for (int s = 0; s < m.Body.Body.Count; s++) { var stmt = body[s]; var varDeclStmt = stmt as VarDeclStmt; var updStmt = (stmt as UpdateStmt) ?? (varDeclStmt?.Update as UpdateStmt); - var applySuffix = (updStmt?.Rhss.First() as ExprRhs)?.Expr as ApplySuffix; + var firstExprRhs = updStmt?.Rhss.First() as ExprRhs; + var applySuffix = firstExprRhs?.Expr as ApplySuffix; if (applySuffix != null) { var inoutArgs = applySuffix.Args.Where(a => a.Inout).ToList(); - if (inoutArgs.Count == 0) { + if (inoutArgs.Count == 0 && !firstExprRhs.InoutThis) { continue; } + + // TODO(andrea) + if (firstExprRhs.InoutThis) { + Console.WriteLine("OXIDE DEBUG rewriting " + Printer.StatementToString(stmt) + " (inout this)"); + } else { + Console.WriteLine("OXIDE DEBUG rewriting " + Printer.StatementToString(stmt)); + } + + if (firstExprRhs.InoutThis) { + var dotNameMethod = applySuffix.Lhs as ExprDotName; + if (dotNameMethod == null) { + reporter.Error(MessageSource.Rewriter, applySuffix, "invalid inout call"); + return; + } + Expression selfArg = cloner.CloneExpr(((ExprDotName) applySuffix.Lhs).Lhs); + var selfApplySuffixArg = new ApplySuffixArg { Expr = selfArg, Inout = true }; + applySuffix.Args.Insert(0, selfApplySuffixArg); + inoutArgs.Add(selfApplySuffixArg); + } + var updatedFields = inoutArgs.ConvertAll(a => { var aTok = new AutoGeneratedToken(a.Expr.tok); var varName = freshTempVarName("_inout_tmp_", m); @@ -152,12 +185,12 @@ void PreRewriteMethod(Method m) { // TODO(andrea) UpdateStmt updateStmt = null; if (datatypeUpdateFor.HasValue) { - var (updateName, updateExpr) = datatypeUpdateFor.Value; + var (updateLhs, updateExpr) = datatypeUpdateFor.Value; updateStmt = new UpdateStmt(aTok, aTok, - new List { new IdentifierExpr(aTok, updateName) }, + new List { updateLhs }, new List { new ExprRhs(updateExpr) }); updateStmt.InoutGenerated = true; - Console.WriteLine("OXIDE DEBUG varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); + Console.WriteLine("OXIDE DEBUG varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); } return ( new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), @@ -172,19 +205,23 @@ void PreRewriteMethod(Method m) { varDeclStmt = new VarDeclStmt(asTok, asTok, tempLocalVars, null); body.Insert(s, varDeclStmt); // TODO(andrea) - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); s++; } else { varDeclStmt.Locals.AddRange(tempLocalVars); + // TODO(andrea) + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); } + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(stmt)); foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { if (newUpdStmt != null) { s++; body.Insert(s, newUpdStmt); + Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); } } - // TODO(andrea) - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + } else if (firstExprRhs?.InoutThis ?? false) { + reporter.Error(MessageSource.Rewriter, firstExprRhs.Tok, "inout not allowed here"); } } } @@ -204,23 +241,29 @@ m is Lemma || m is TwoStateLemma); } - static IEnumerable AllMethodMembers(ModuleDefinition module) { + static IEnumerable<(TopLevelDecl, Method)> AllMethodMembers(ModuleDefinition module) { foreach (var decl in module.TopLevelDecls) { - var cl = decl as ClassDecl; - if (cl != null) { - foreach (var m in cl.Members.Where(memberIsMethod)) { + var topLevelDecl = ((decl as ClassDecl) as TopLevelDeclWithMembers) ?? ((decl as DatatypeDecl) as TopLevelDeclWithMembers); + if (topLevelDecl != null) { + foreach (var m in topLevelDecl.Members.Where(memberIsMethod)) { var method = (Method) m; - yield return method; + yield return (topLevelDecl, method); } } } } internal override void PreResolve(ModuleDefinition module) { - foreach (Method method in AllMethodMembers(module)) { - PreRewriteMethod(method); + foreach (var (tld, method) in AllMethodMembers(module)) { + PreRewriteMethod(method, tld); } } + // TODO(andrea) remove + // internal override void PostResolve(ModuleDefinition module) { + // foreach (var (tld, method) in AllMethodMembers(module)) { + // } + // } + } } diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index 79d64030b62..a5d13350bc1 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -3207,8 +3207,14 @@ void UpdateStmt(out Statement/*!*/ s) { Expression suchThat = null; IToken exceptionExpect = null; Expression exceptionExpr = null; + bool inoutThis = false; + IToken inoutTok = null; if (StartOf(28)) { + if (la.kind == 77) { + Get(); + inoutThis = true; inoutTok = t; + } Lhs(out e); x = e.tok; if (la.kind == 35 || la.kind == 79) { @@ -3216,9 +3222,9 @@ void UpdateStmt(out Statement/*!*/ s) { Attribute(ref attrs); } Expect(35); - endTok = t; rhss.Add(new ExprRhs(e, attrs)); + endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutThis; rhss.Add(exprRhs); } else if (StartOf(29)) { - lhss.Add(e); + lhss.Add(e); if (inoutThis) { SemErr(inoutTok, "inout not allowed here"); } while (la.kind == 27) { Get(); Lhs(out e); @@ -3811,6 +3817,7 @@ void Rhs(out AssignmentRhs r) { List display = null; r = dummyRhs; // to please compiler Attributes attrs = null; + bool inoutThis = false; if (la.kind == 105) { Get(); @@ -3847,9 +3854,13 @@ void Rhs(out AssignmentRhs r) { } else if (la.kind == 91) { Get(); r = new HavocRhs(t); - } else if (StartOf(8)) { + } else if (StartOf(38)) { + if (la.kind == 77) { + Get(); + inoutThis = true; + } Expression(out e, false, true); - r = new ExprRhs(e); + ExprRhs exprRhs = new ExprRhs(e); exprRhs.InoutThis = inoutThis; r = exprRhs; } else SynErr(243); while (la.kind == 79) { Attribute(ref attrs); @@ -3865,7 +3876,7 @@ void Lhs(out Expression e) { while (la.kind == 33 || la.kind == 82 || la.kind == 84) { Suffix(ref e); } - } else if (StartOf(38)) { + } else if (StartOf(39)) { ConstAtomExpression(out e, false, false); Suffix(ref e); while (la.kind == 33 || la.kind == 82 || la.kind == 84) { @@ -3960,7 +3971,7 @@ void CasePatternLocal(out CasePattern pat, Usage usage) { arguments = new List>(); usages = new List(); - if (StartOf(39)) { + if (StartOf(40)) { if (la.kind == 73 || la.kind == 74) { if (la.kind == 74) { Get(); @@ -4081,10 +4092,10 @@ void AlternativeBlockCase(bool allowExistentialGuards, out GuardedAlternative al } else SynErr(249); Expect(36); body = new List(); - while (!(StartOf(40))) {SynErr(250); Get();} + while (!(StartOf(41))) {SynErr(250); Get();} while (IsNotEndOfCase()) { Stmt(body); - while (!(StartOf(40))) {SynErr(251); Get();} + while (!(StartOf(41))) {SynErr(251); Get();} } alt = new GuardedAlternative(x, isExistentialGuard, e, body); } @@ -4141,7 +4152,7 @@ void ExtendedPattern(out ExtendedPattern pat) { Expect(84); id = t; arguments = new List(); - if (StartOf(28)) { + if (StartOf(42)) { ExtendedPattern(out pat); arguments.Add(pat); while (la.kind == 27) { @@ -4164,7 +4175,7 @@ void ExtendedPattern(out ExtendedPattern pat) { Ident(out id); arguments = new List(); Expect(84); - if (StartOf(28)) { + if (StartOf(42)) { ExtendedPattern(out pat); arguments.Add(pat); while (la.kind == 27) { @@ -4175,7 +4186,7 @@ void ExtendedPattern(out ExtendedPattern pat) { } Expect(85); pat = new IdPattern(id, id.val, arguments); - } else if (StartOf(38)) { + } else if (StartOf(39)) { ConstAtomExpression(out te, false, false); if (te is LiteralExpr){ lit = (LiteralExpr)te; @@ -4336,10 +4347,10 @@ void NestedCaseStatement(out NestedMatchCaseStmt/*!*/ c) { ExtendedPattern(out pat); Expect(36); - while (!(StartOf(40))) {SynErr(258); Get();} + while (!(StartOf(41))) {SynErr(258); Get();} while (IsNotEndOfCase()) { Stmt(body); - while (!(StartOf(40))) {SynErr(259); Get();} + while (!(StartOf(41))) {SynErr(259); Get();} } c = new NestedMatchCaseStmt(x, pat, body); } @@ -4595,7 +4606,7 @@ void LogicalExpression(out Expression e0, bool allowSemi, bool allowLambda, bool e0 = new BinaryExpr(x, BinaryExpr.Opcode.Or, new LiteralExpr(x, false), e0); } - } else if (StartOf(41)) { + } else if (StartOf(43)) { RelationalExpression(out e0, allowSemi, allowLambda, allowBitwiseOps); if (IsAndOp() || IsOrOp()) { if (la.kind == 140 || la.kind == 141) { @@ -4980,7 +4991,7 @@ void UnaryExpression(out Expression e, bool allowSemi, bool allowLambda, bool al } } else if (IsLambda(allowLambda)) { LambdaExpression(out e, allowSemi, allowBitwiseOps); - } else if (StartOf(42)) { + } else if (StartOf(44)) { EndlessExpression(out e, allowSemi, allowLambda, allowBitwiseOps); } else if (la.kind == 1) { NameSegment(out e); @@ -5002,7 +5013,7 @@ void UnaryExpression(out Expression e, bool allowSemi, bool allowLambda, bool al while (IsSuffix()) { Suffix(ref e); } - } else if (StartOf(38)) { + } else if (StartOf(39)) { ConstAtomExpression(out e, allowSemi, allowLambda); while (IsSuffix()) { Suffix(ref e); @@ -5046,7 +5057,7 @@ void Suffix(ref Expression e) { } Expect(85); e = new DatatypeUpdateExpr(x, e, updates); - } else if (StartOf(43)) { + } else if (StartOf(45)) { DotSuffix(out id, out x); if (x != null) { // process id as a Suffix in its own right @@ -5060,7 +5071,7 @@ void Suffix(ref Expression e) { GenericInstantiation(typeArgs); } else if (la.kind == 129) { HashCall(id, out openParen, out typeArgs, out args); - } else if (StartOf(44)) { + } else if (StartOf(46)) { } else SynErr(279); e = new ExprDotName(id, e, id.val, typeArgs); if (openParen != null) { @@ -5162,7 +5173,7 @@ void Suffix(ref Expression e) { } else if (la.kind == 84) { Get(); IToken openParen = t; var args = new List(); - if (StartOf(45)) { + if (StartOf(38)) { SuffixArgumentExpressions(args); } Expect(85); @@ -5264,7 +5275,7 @@ void EndlessExpression(out Expression e, bool allowSemi, bool allowLambda, bool } else if (IsMatch()) { NestedMatchExpression(out e, allowSemi, allowLambda, allowBitwiseOps); - } else if (StartOf(46)) { + } else if (StartOf(47)) { QuantifierGuts(out e, allowSemi, allowLambda); } else if (la.kind == 18) { Get(); @@ -5274,7 +5285,7 @@ void EndlessExpression(out Expression e, bool allowSemi, bool allowLambda, bool Get(); x = t; SetComprehensionExpr(x, false, out e, allowSemi, allowLambda, true); - } else if (StartOf(47)) { + } else if (StartOf(48)) { StmtInExpr(out s); Expression(out e, allowSemi, allowLambda, allowBitwiseOps); e = new StmtExpr(s.Tok, s, e); @@ -5305,7 +5316,7 @@ void NameSegment(out Expression e) { GenericInstantiation(typeArgs); } else if (la.kind == 129) { HashCall(id, out openParen, out typeArgs, out args); - } else if (StartOf(44)) { + } else if (StartOf(46)) { } else SynErr(287); e = new NameSegment(id, id.val, typeArgs); if (openParen != null) { @@ -5564,7 +5575,7 @@ void NestedMatchExpression(out Expression e, bool allowSemi, bool allowLambda, b cases.Add(c); } Expect(81); - } else if (StartOf(48)) { + } else if (StartOf(49)) { while (la.kind == _case) { NestedCaseExpression(out c, allowSemi, allowLambda, allowBitwiseOps); cases.Add(c); @@ -5785,7 +5796,7 @@ void CasePattern(out CasePattern pat) { arguments = new List>(); usages = new List(); - if (StartOf(39)) { + if (StartOf(40)) { if (la.kind == 73 || la.kind == 74) { if (la.kind == 74) { Get(); @@ -5950,7 +5961,7 @@ public void Parse() { } static readonly bool[,] set = { - {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_T,_T, _x,_x,_x,_x, _x,_T,_T,_x, _x,_T,_T,_x, _T,_x,_x,_x, _x,_T,_T,_T, _T,_T,_T,_x, _x,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_T,_T, _x,_x,_x,_x, _x,_T,_T,_x, _x,_T,_T,_x, _T,_x,_x,_x, _x,_T,_T,_T, _T,_T,_T,_x, _x,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, @@ -5970,32 +5981,33 @@ public void Parse() { {_x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_T,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, - {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, - {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, + {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_T,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x}, - {_x,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_T,_T, _T,_T,_T,_T, _T,_T,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _T,_T,_x,_x, _T,_x,_T,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _x,_T,_T,_x, _T,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_T,_T,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_T,_T, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x}, {_T,_T,_T,_T, _T,_x,_x,_x, _x,_x,_x,_T, _x,_T,_x,_x, _x,_x,_x,_x, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_x, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_x,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_T,_T,_x, _x,_x,_x,_x, _x,_T,_x,_x, _T,_T,_T,_T, _T,_T,_x,_x, _x,_T,_T,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_x,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_T, _x,_x,_x,_x, _T,_T,_T,_T, _T,_T,_T,_T, _T,_T,_T,_x, _T,_T,_x,_x} diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e466f4f0370..f0759a5de5c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7442,7 +7442,9 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal bool returnsShared = callee.Outs.Exists(o => o.IsShared); bool isPureCall = callee.Mod.Expressions.Count == 0 && callee.Outs.TrueForAll(x => x.Usage != Usage.Shared); if (!callee.IsGhost) { - resolver.CheckIsCompilable(s.Receiver, usageContext, callee.Usage); + if (!callee.HasInoutThis) { // TODO(andrea) is it safe to entirely skip this check? + resolver.CheckIsCompilable(s.Receiver, usageContext, callee.Usage); + } j = 0; if (usageContext != null) { usageContext.insidePureCall = isPureCall; From a6bec17f48ccaeb220510612a0900c2afde57834 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 20 Jul 2020 15:40:29 +0200 Subject: [PATCH 290/573] Inout debug to stderr, with command line flag /oxideDebug --- Source/Dafny/DafnyOptions.cs | 6 ++++++ Source/Dafny/Linear.cs | 25 +++++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Source/Dafny/DafnyOptions.cs b/Source/Dafny/DafnyOptions.cs index 344c6714551..13763ca9d6e 100644 --- a/Source/Dafny/DafnyOptions.cs +++ b/Source/Dafny/DafnyOptions.cs @@ -106,6 +106,7 @@ public enum IncludesModes { None, Immediate, Transitive } false #endif ; + public bool OxideDebug = false; protected override bool ParseOption(string name, Bpl.CommandLineOptionEngine.CommandLineParseState ps) { var args = ps.args; // convenient synonym @@ -407,6 +408,11 @@ protected override bool ParseOption(string name, Bpl.CommandLineOptionEngine.Com } return true; + case "oxideDebug": { + OxideDebug = true; + return true; + } + default: break; } diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 5c8635d1e40..af31c77a3c8 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -9,6 +9,15 @@ namespace Microsoft.Dafny.Linear { // TODO(andrea) move/remove static class Util { + + internal static void OxideDebug(IToken token, String msg, params object[] args) { + if (DafnyOptions.O.OxideDebug) { + Console.ForegroundColor = ConsoleColor.Cyan; + Console.Error.WriteLine("[oxide] " + ErrorReporter.TokenToString(token).PadRight(20) + " " + String.Format(msg, args)); + Console.ResetColor(); + } + } + static public void PrintObject(Object obj) { System.Type t = obj.GetType(); foreach(var fieldInfo in t.GetFields()) { @@ -102,7 +111,7 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp } void PreRewriteMethod(Method m, TopLevelDecl enclosingDecl) { - Console.WriteLine("OXIDE DEBUG Rewriting method " + m.Name + " " + ErrorReporter.TokenToString(m.tok)); + Util.OxideDebug(m.tok, "Rewriting method {0}", m.Name); Contract.Requires(m != null); // TODO(andrea) m.CompileOuts = m.Outs.ToList(); // TODO(andrea) m.CompileIns = m.Ins.ToList(); @@ -161,9 +170,9 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { // TODO(andrea) if (firstExprRhs.InoutThis) { - Console.WriteLine("OXIDE DEBUG rewriting " + Printer.StatementToString(stmt) + " (inout this)"); + Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt) + " (inout this)"); } else { - Console.WriteLine("OXIDE DEBUG rewriting " + Printer.StatementToString(stmt)); + Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt)); } if (firstExprRhs.InoutThis) { @@ -190,7 +199,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { new List { updateLhs }, new List { new ExprRhs(updateExpr) }); updateStmt.InoutGenerated = true; - Console.WriteLine("OXIDE DEBUG varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); + Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); } return ( new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), @@ -205,19 +214,19 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { varDeclStmt = new VarDeclStmt(asTok, asTok, tempLocalVars, null); body.Insert(s, varDeclStmt); // TODO(andrea) - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); s++; } else { varDeclStmt.Locals.AddRange(tempLocalVars); // TODO(andrea) - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); } - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(stmt)); + Util.OxideDebug(stmt.Tok, " " + Printer.StatementToString(stmt)); foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { if (newUpdStmt != null) { s++; body.Insert(s, newUpdStmt); - Console.WriteLine("OXIDE DEBUG " + Printer.StatementToString(body[s])); + Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); } } } else if (firstExprRhs?.InoutThis ?? false) { From 66898d3411e75893a9a0f111d0675c26872ff8eb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 20 Jul 2020 10:20:19 -0400 Subject: [PATCH 291/573] Minor cleanup and documentation --- Util/interact.py | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Util/interact.py b/Util/interact.py index 404c2d624de..720c9c36107 100755 --- a/Util/interact.py +++ b/Util/interact.py @@ -28,6 +28,12 @@ def color(s, color): "reset" : 0} return u"\u001b[%sm%s\u001b[%sm" % (colors[color], s, colors["reset"]) +############################################# +# +# Interacting with the Dafny Server +# +############################################# + class Task: def __init__(self, args, file_label, sourceIsFile, file_name): self.args = args @@ -278,7 +284,11 @@ def event_loop(server): else: pass - +############################################# +# +# Main +# +############################################# def main(): default_arg_file_name = 'dfy.args' @@ -310,20 +320,6 @@ def main(): event_loop(server) -# label = args.dfy -# task = Task(dfy_args, label, True, args.dfy) - #print(server.get_version()) - #print(server.get_functions_methods(task)) - #print(server.do_verification(task)) - #sys.stdin.readline() - #server.send_version_query() - #server.send_verification_query(task) -# server.send_symbol_query(task) -# response = server.recv_response() -# symbols = server.parse_symbols(response) -# print(find_functions_methods(symbols)) - - #event_loop() if (__name__=="__main__"): main() From 6012f6db3e5c563b1a098241bbcf62e54b742041 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 21 Jul 2020 13:56:46 +0200 Subject: [PATCH 292/573] Support blocks, ifs, match statements --- Source/Dafny/Linear.cs | 167 +++++++++++++++++++++++------------------ 1 file changed, 92 insertions(+), 75 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index af31c77a3c8..90c5230cbb1 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -76,12 +76,6 @@ static public void PrintObjects(Object obj1, Object obj2) { } } - class InoutVisitor : TopDownVisitor { - protected override bool VisitOneExpr(Expression expr, ref Object context) { - return true; - } - } - public class InoutTranslateRewriter : IRewriter { public delegate string FreshTempVarName(string prefix, ICodeContext context); @@ -93,6 +87,28 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp Cloner cloner = new Cloner(); + static IEnumerable> AllStatementLists(List stmts) { + foreach (var stmt in stmts) { + switch (stmt) { + case BlockStmt bs: + foreach (var ls in AllStatementLists(bs.Body)) { yield return ls; } + break; + case IfStmt ifs: + foreach (var ls in AllStatementLists(ifs.Thn.Body)) { yield return ls; } + if (ifs.Els != null) { + foreach (var ls in AllStatementLists(((BlockStmt) ifs.Els).Body)) { yield return ls; } + } + break; + case NestedMatchStmt ms: + foreach (var mc in ms.Cases) { + foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } + } + break; + } + } + yield return stmts; + } + (Expression, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { var tok = new AutoGeneratedToken(expr.tok); if (expr is ExprDotName) { @@ -137,7 +153,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { new List { lhs }, new List { rhs }); updateStmt.InoutGenerated = false; - m.Body.Body.Insert(0, updateStmt); + body.Insert(0, updateStmt); } } @@ -156,85 +172,86 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { } if (body != null) { - for (int s = 0; s < m.Body.Body.Count; s++) { - var stmt = body[s]; - var varDeclStmt = stmt as VarDeclStmt; - var updStmt = (stmt as UpdateStmt) ?? (varDeclStmt?.Update as UpdateStmt); - var firstExprRhs = updStmt?.Rhss.First() as ExprRhs; - var applySuffix = firstExprRhs?.Expr as ApplySuffix; - if (applySuffix != null) { - var inoutArgs = applySuffix.Args.Where(a => a.Inout).ToList(); - if (inoutArgs.Count == 0 && !firstExprRhs.InoutThis) { - continue; - } + foreach (var stmtList in AllStatementLists(body)) { + for (int s = 0; s < stmtList.Count; s++) { + var stmt = stmtList[s]; + var varDeclStmt = stmt as VarDeclStmt; + var updStmt = (stmt as UpdateStmt) ?? (varDeclStmt?.Update as UpdateStmt); + var firstExprRhs = updStmt?.Rhss.First() as ExprRhs; + var applySuffix = firstExprRhs?.Expr as ApplySuffix; + if (applySuffix != null) { + var inoutArgs = applySuffix.Args.Where(a => a.Inout).ToList(); + if (inoutArgs.Count == 0 && !firstExprRhs.InoutThis) { + continue; + } - // TODO(andrea) - if (firstExprRhs.InoutThis) { - Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt) + " (inout this)"); - } else { - Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt)); - } + // TODO(andrea) + if (firstExprRhs.InoutThis) { + Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt) + " (inout this)"); + } else { + Util.OxideDebug(stmt.Tok, " rewriting " + Printer.StatementToString(stmt)); + } - if (firstExprRhs.InoutThis) { - var dotNameMethod = applySuffix.Lhs as ExprDotName; - if (dotNameMethod == null) { - reporter.Error(MessageSource.Rewriter, applySuffix, "invalid inout call"); - return; + if (firstExprRhs.InoutThis) { + var dotNameMethod = applySuffix.Lhs as ExprDotName; + if (dotNameMethod == null) { + reporter.Error(MessageSource.Rewriter, applySuffix, "invalid inout call"); + return; + } + Expression selfArg = cloner.CloneExpr(((ExprDotName) applySuffix.Lhs).Lhs); + var selfApplySuffixArg = new ApplySuffixArg { Expr = selfArg, Inout = true }; + applySuffix.Args.Insert(0, selfApplySuffixArg); + inoutArgs.Add(selfApplySuffixArg); } - Expression selfArg = cloner.CloneExpr(((ExprDotName) applySuffix.Lhs).Lhs); - var selfApplySuffixArg = new ApplySuffixArg { Expr = selfArg, Inout = true }; - applySuffix.Args.Insert(0, selfApplySuffixArg); - inoutArgs.Add(selfApplySuffixArg); - } - var updatedFields = inoutArgs.ConvertAll(a => { - var aTok = new AutoGeneratedToken(a.Expr.tok); - var varName = freshTempVarName("_inout_tmp_", m); - var datatypeUpdateFor = DatatypeUpdateExprFor(a.Expr, new IdentifierExpr(aTok, varName)); - // TODO(andrea) - UpdateStmt updateStmt = null; - if (datatypeUpdateFor.HasValue) { - var (updateLhs, updateExpr) = datatypeUpdateFor.Value; - updateStmt = new UpdateStmt(aTok, aTok, - new List { updateLhs }, - new List { new ExprRhs(updateExpr) }); - updateStmt.InoutGenerated = true; - Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); + var updatedFields = inoutArgs.ConvertAll(a => { + var aTok = new AutoGeneratedToken(a.Expr.tok); + var varName = freshTempVarName("_inout_tmp_", m); + var datatypeUpdateFor = DatatypeUpdateExprFor(a.Expr, new IdentifierExpr(aTok, varName)); + // TODO(andrea) + UpdateStmt updateStmt = null; + if (datatypeUpdateFor.HasValue) { + var (updateLhs, updateExpr) = datatypeUpdateFor.Value; + updateStmt = new UpdateStmt(aTok, aTok, + new List { updateLhs }, + new List { new ExprRhs(updateExpr) }); + updateStmt.InoutGenerated = true; + Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); + } + return ( + new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), + updateStmt); + }); + var tempLocalVars = updatedFields.Select(x => x.Item1).ToList(); + foreach (var tv in tempLocalVars) { + updStmt.Lhss.Add(new IdentifierExpr(tv.Tok, tv.Name)); } - return ( - new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), - updateStmt); - }); - var tempLocalVars = updatedFields.Select(x => x.Item1).ToList(); - foreach (var tv in tempLocalVars) { - updStmt.Lhss.Add(new IdentifierExpr(tv.Tok, tv.Name)); - } - if (varDeclStmt == null) { - var asTok = new AutoGeneratedToken(applySuffix.tok); - varDeclStmt = new VarDeclStmt(asTok, asTok, tempLocalVars, null); - body.Insert(s, varDeclStmt); - // TODO(andrea) - Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); - s++; - } else { - varDeclStmt.Locals.AddRange(tempLocalVars); - // TODO(andrea) - Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); - } - Util.OxideDebug(stmt.Tok, " " + Printer.StatementToString(stmt)); - foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { - if (newUpdStmt != null) { + if (varDeclStmt == null) { + var asTok = new AutoGeneratedToken(applySuffix.tok); + varDeclStmt = new VarDeclStmt(asTok, asTok, tempLocalVars, null); + stmtList.Insert(s, varDeclStmt); + // TODO(andrea) + Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); s++; - body.Insert(s, newUpdStmt); - Util.OxideDebug(body[s].Tok, " " + Printer.StatementToString(body[s])); + } else { + varDeclStmt.Locals.AddRange(tempLocalVars); + // TODO(andrea) + Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); } + Util.OxideDebug(stmt.Tok, " " + Printer.StatementToString(stmt)); + foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { + if (newUpdStmt != null) { + s++; + stmtList.Insert(s, newUpdStmt); + Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); + } + } + } else if (firstExprRhs?.InoutThis ?? false) { + reporter.Error(MessageSource.Rewriter, firstExprRhs.Tok, "inout not allowed here"); } - } else if (firstExprRhs?.InoutThis ?? false) { - reporter.Error(MessageSource.Rewriter, firstExprRhs.Tok, "inout not allowed here"); } } } - } static bool memberIsMethod(MemberDecl decl) { From fe2481dc89ad05332c270a3ef2b67ac40f78bf37 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 21 Jul 2020 14:40:16 +0200 Subject: [PATCH 293/573] Fix linearity check for nested MemberSelectExprs, support while statements --- Source/Dafny/Linear.cs | 3 +++ Source/Dafny/Resolver.cs | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 90c5230cbb1..fc44eafc3d7 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -104,6 +104,9 @@ static IEnumerable> AllStatementLists(List stmts) { foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } } break; + case WhileStmt ws: + foreach (var ls in AllStatementLists(ws.Body.Body)) { yield return ls; } + break; } } yield return stmts; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f0759a5de5c..0823c0cfa80 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -15319,7 +15319,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs var id = ExprAsIdentifier(usageContext, e.Obj); if (id != null && (id.Var.IsLinear || id.Var.IsShared)) { if (inoutUsage) { - CheckIsCompilable(e.Obj, usageContext, Usage.Linear); + CheckIsCompilable(e.Obj, usageContext, Usage.Linear, true); return linearDestructor ? Usage.Linear : Usage.Ordinary; } else { // Try to share id @@ -15330,8 +15330,8 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs CheckIsCompilable(e.Obj, usageContext, Usage.Shared); return Usage.Shared; } else { - var u = CheckIsCompilable(e.Obj, usageContext); - if (u != Usage.Shared && u != Usage.Ordinary) { + var u = CheckIsCompilable(e.Obj, usageContext, inoutUsage); + if (u != Usage.Shared && u != Usage.Ordinary && !inoutUsage) { reporter.Error(MessageSource.Resolver, expr, "cannot select from linear expression"); } return Usage.Ordinary; From b75ac2ca310e3cec7634bcbd9cdc077ece1d3c41 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 21 Jul 2020 15:56:02 +0200 Subject: [PATCH 294/573] Fix cast exception when enumerating statement blocks --- Source/Dafny/Linear.cs | 52 +++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index fc44eafc3d7..a9bffa84bef 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -89,29 +89,34 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp static IEnumerable> AllStatementLists(List stmts) { foreach (var stmt in stmts) { - switch (stmt) { - case BlockStmt bs: - foreach (var ls in AllStatementLists(bs.Body)) { yield return ls; } - break; - case IfStmt ifs: - foreach (var ls in AllStatementLists(ifs.Thn.Body)) { yield return ls; } - if (ifs.Els != null) { - foreach (var ls in AllStatementLists(((BlockStmt) ifs.Els).Body)) { yield return ls; } - } - break; - case NestedMatchStmt ms: - foreach (var mc in ms.Cases) { - foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } - } - break; - case WhileStmt ws: - foreach (var ls in AllStatementLists(ws.Body.Body)) { yield return ls; } - break; - } + foreach (var ls in AllStatementLists(stmt)) { yield return ls; } } + yield return stmts; } + static IEnumerable> AllStatementLists(Statement stmt) { + switch (stmt) { + case BlockStmt bs: + foreach (var ls in AllStatementLists(bs.Body)) { yield return ls; } + break; + case IfStmt ifs: + foreach (var ls in AllStatementLists(ifs.Thn.Body)) { yield return ls; } + if (ifs.Els != null) { + foreach (var ls in AllStatementLists(ifs.Els)) { yield return ls; } + } + break; + case NestedMatchStmt ms: + foreach (var mc in ms.Cases) { + foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } + } + break; + case WhileStmt ws: + foreach (var ls in AllStatementLists(ws.Body.Body)) { yield return ls; } + break; + } + } + (Expression, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { var tok = new AutoGeneratedToken(expr.tok); if (expr is ExprDotName) { @@ -160,18 +165,27 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { } } + bool signatureRewritten = false; + for (int i = 0; i < m.Ins.Count; i++) { if (m.Ins[i].Inout) { var f = m.Ins[i]; m.Ins.RemoveAt(i); AddGeneratedInoutFormals(f, i); + signatureRewritten = true; } } if (m.HasInoutThis) { AddGeneratedInoutFormals(new Formal(new AutoGeneratedToken(m.tok), "self", UserDefinedType.FromTopLevelDecl(m.tok, enclosingDecl), false, m.Usage, false, true), 0); // TODO(andrea) DISALLOW "this" in body + + signatureRewritten = true; + } + + if (signatureRewritten) { + Util.OxideDebug(m.tok, " new signature: {0}", Printer.MethodSignatureToString(m)); } if (body != null) { From 8fbf3fdbc9c10117f9e78a231727c32d49ca15cd Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 21 Jul 2020 15:56:25 +0200 Subject: [PATCH 295/573] Support ghost fields as inout arguments --- Source/Dafny/Dafny.atg | 7 ++++--- Source/Dafny/DafnyAst.cs | 1 + Source/Dafny/Linear.cs | 2 +- Source/Dafny/Parser.cs | 8 ++++++-- Source/Dafny/Resolver.cs | 3 ++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index a1b4b6cce27..728e9066bc0 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -3929,9 +3929,10 @@ HashCall<.IToken id, out IToken openParen, out List typeArgs, out List -= (. Expression expr; bool inout = false; .) - ["inout" (. inout = true; .)] Expression - (. arg = new ApplySuffixArg { Inout = inout, Expr = expr }; .) += (. Expression expr; bool inout = false; bool ghost = false; .) + // TODO(andrea) allow reordering + ["ghost" (. ghost = true; .)] ["inout" (. inout = true; .)] Expression + (. arg = new ApplySuffixArg { Inout = inout, Ghost = ghost, Expr = expr }; .) . SuffixArgumentExpressions<.List args.> = (. ApplySuffixArg a; .) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 21adc2921e2..bb3e08d23a2 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -11693,6 +11693,7 @@ public ExprDotName(IToken tok, Expression obj, string suffixName, List opt public class ApplySuffixArg { public bool Inout; + public bool Ghost = false; public Expression Expr; } diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index a9bffa84bef..0e5526d2bbc 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -236,7 +236,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); } return ( - new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), + new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), a.Ghost ? Usage.Ghost : Usage.Ignore), updateStmt); }); var tempLocalVars = updatedFields.Select(x => x.Item1).ToList(); diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index a5d13350bc1..26d52da6ac0 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -5875,13 +5875,17 @@ void HashCall(IToken id, out IToken openParen, out List typeArgs, out List } void SuffixExpression(out ApplySuffixArg arg) { - Expression expr; bool inout = false; + Expression expr; bool inout = false; bool ghost = false; + if (la.kind == 73) { + Get(); + ghost = true; + } if (la.kind == 77) { Get(); inout = true; } Expression(out expr, true, true); - arg = new ApplySuffixArg { Inout = inout, Expr = expr }; + arg = new ApplySuffixArg { Inout = inout, Ghost = ghost, Expr = expr }; } void SuffixArgumentExpressions(List args) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 0823c0cfa80..44a92906302 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7397,7 +7397,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } if (x != null && x.Var.IsLinear) { - if (usageContext.available[x.Var] != Available.Consumed) { + // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? + if (usageContext.available[x.Var] != Available.Consumed && !inoutGenerated) { Error(x, "variable must be unavailable before assignment"); } usageContext.available[x.Var] = Available.Available; From 9fe29cf76b7c52e3abaf6c90701eb225da4b143c Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 24 Jul 2020 18:36:55 +0200 Subject: [PATCH 296/573] Improve inout argument diagnostics --- Source/Dafny/Resolver.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 44a92906302..b354f17115f 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -11494,6 +11494,15 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { if (callee.Ins.Count != s.Args.Count) { reporter.Error(MessageSource.Resolver, s, "wrong number of method arguments (got {0}, expected {1})", s.Args.Count, callee.Ins.Count); + } else if (callee.Ins.Zip(s.Args).Any(z => z.Item1.Inout != z.Item2.Inout)) { + foreach (var (fInout, aInout, idx) in callee.Ins.Zip(s.Args).Select((z, index) => (z.Item1.Inout, z.Item2.Inout, index))) { + if (fInout) { + reporter.Error(MessageSource.Resolver, s, "method in-parameter {0} should be inout", idx); + } else { + Contract.Assert(aInout); + reporter.Error(MessageSource.Resolver, s, "method in-parameter {0} should not be inout", idx); + } + } } else if (callee.Outs.Count != s.Lhs.Count) { if (isInitCall) { reporter.Error(MessageSource.Resolver, s, "a method called as an initialization method must not have any result arguments"); From 9bd264c6dbbec9ab812b83b810c698ffbf2987f6 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Sat, 25 Jul 2020 23:05:58 +0200 Subject: [PATCH 297/573] Fix error checking when resolving method calls with inout args --- Source/Dafny/Resolver.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b354f17115f..98ee800e984 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -11495,7 +11495,9 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { if (callee.Ins.Count != s.Args.Count) { reporter.Error(MessageSource.Resolver, s, "wrong number of method arguments (got {0}, expected {1})", s.Args.Count, callee.Ins.Count); } else if (callee.Ins.Zip(s.Args).Any(z => z.Item1.Inout != z.Item2.Inout)) { - foreach (var (fInout, aInout, idx) in callee.Ins.Zip(s.Args).Select((z, index) => (z.Item1.Inout, z.Item2.Inout, index))) { + foreach (var (fInout, aInout, idx) in callee.Ins.Zip(s.Args) + .Select((z, index) => (z.Item1.Inout, z.Item2.Inout, index)) + .Where(ff => ff.Item1 != ff.Item2)) { if (fInout) { reporter.Error(MessageSource.Resolver, s, "method in-parameter {0} should be inout", idx); } else { From 673ae820146d92289beb986008c321078f03216c Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Sat, 25 Jul 2020 23:07:42 +0200 Subject: [PATCH 298/573] Overhaul inout assign: support inout update stmt, disallow unsound inout ghost argument --- Source/Dafny/Dafny.atg | 28 +++++++++++++-------- Source/Dafny/DafnyAst.cs | 15 +++++++++++- Source/Dafny/Linear.cs | 53 +++++++++++++++++++++++++++++++++++++--- Source/Dafny/Parser.cs | 30 ++++++++++++++--------- Source/Dafny/Resolver.cs | 30 ++++++++++++++++++----- 5 files changed, 124 insertions(+), 32 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 728e9066bc0..a4a8799e912 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2271,20 +2271,24 @@ UpdateStmt Expression suchThat = null; IToken exceptionExpect = null; Expression exceptionExpr = null; - bool inoutThis = false; + bool inoutUpdate = false; IToken inoutTok = null; + bool ghostInoutUpdate = false; .) -( ["inout" (. inoutThis = true; inoutTok = t; .) ] Lhs (. x = e.tok; .) +( [ "inout" (. inoutUpdate = true; inoutTok = t; .) + ["ghost" (. ghostInoutUpdate = true; .) ] ] + Lhs (. x = e.tok; .) ( { Attribute } - ";" (. endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutThis; rhss.Add(exprRhs); .) - | (. lhss.Add(e); if (inoutThis) { SemErr(inoutTok, "inout not allowed here"); } .) - { "," Lhs (. lhss.Add(e); .) + ";" (. endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); .) + | (. lhss.Add(e); .) + { "," Lhs (. lhss.Add(e); if (inoutUpdate) { SemErr(inoutTok, "inout not allowed here"); } .) } ( ":=" (. x = t; .) Rhs (. rhss.Add(r); .) { "," Rhs (. rhss.Add(r); .) } - | ":|" (. x = t; .) + | (. if (inoutUpdate) { SemErr(inoutTok, "inout not allowed here"); } .) + ":|" (. x = t; .) [ IF(la.kind == _assume) /* an Expression can also begin with an "assume", so this says to resolve it to pick up any "assume" here */ "assume" (. suchThatAssume = t; .) ] @@ -2317,7 +2321,11 @@ UpdateStmt if (lhss.Count == 0 && rhss.Count == 0) { s = new BlockStmt(x, endTok, new List()); // error, give empty statement } else { - s = new UpdateStmt(x, endTok, lhss, rhss); + UpdateStmt updateStmt = new UpdateStmt(x, endTok, lhss, rhss); + updateStmt.InoutAssign = inoutUpdate ? ( + ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : + InoutAssign.No; + s = updateStmt; } } .) @@ -3929,10 +3937,10 @@ HashCall<.IToken id, out IToken openParen, out List typeArgs, out List -= (. Expression expr; bool inout = false; bool ghost = false; .) += (. Expression expr; bool inout = false; .) // TODO(andrea) allow reordering - ["ghost" (. ghost = true; .)] ["inout" (. inout = true; .)] Expression - (. arg = new ApplySuffixArg { Inout = inout, Ghost = ghost, Expr = expr }; .) + [ "inout" (. inout = true; .) ] Expression + (. arg = new ApplySuffixArg { Inout = inout, Expr = expr }; .) . SuffixArgumentExpressions<.List args.> = (. ApplySuffixArg a; .) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index bb3e08d23a2..80d62e97a77 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6986,13 +6986,25 @@ public override IEnumerable SubExpressions { } } + public enum InoutAssign { No, Ordinary, Ghost, } + public class UpdateStmt : ConcreteUpdateStatement { public readonly List Rhss; public readonly bool CanMutateKnownState; + public InoutAssign InoutAssign = InoutAssign.No; + + public bool IsInoutAssign { + get { + return this.InoutAssign == InoutAssign.Ordinary || this.InoutAssign == InoutAssign.Ghost; + } + } + public bool InoutGenerated = false; + public (Usage, Expression)? InoutAssignTarget = null; + public readonly List ResolvedStatements = new List(); // contents filled in during resolution public override IEnumerable SubStatements { get { return ResolvedStatements; } @@ -7062,6 +7074,8 @@ public AssignOrReturnStmt(IToken tok, IToken endTok, List lhss, Expr public class AssignStmt : Statement { public readonly Expression Lhs; public readonly AssignmentRhs Rhs; + internal (Usage, Expression)? InoutAssignTarget = null; + [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(Lhs != null); @@ -11693,7 +11707,6 @@ public ExprDotName(IToken tok, Expression obj, string suffixName, List opt public class ApplySuffixArg { public bool Inout; - public bool Ghost = false; public Expression Expr; } diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 0e5526d2bbc..8423e8e6010 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -186,6 +186,10 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { if (signatureRewritten) { Util.OxideDebug(m.tok, " new signature: {0}", Printer.MethodSignatureToString(m)); + + if (m.IsGhost) { + reporter.Error(MessageSource.Rewriter, m.tok, "inout formals not allowed in ghost methods"); + } } if (body != null) { @@ -196,7 +200,49 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { var updStmt = (stmt as UpdateStmt) ?? (varDeclStmt?.Update as UpdateStmt); var firstExprRhs = updStmt?.Rhss.First() as ExprRhs; var applySuffix = firstExprRhs?.Expr as ApplySuffix; - if (applySuffix != null) { + if (updStmt != null && updStmt.IsInoutAssign) { + // inout assignment + Util.OxideDebug(stmt.Tok, " rewriting assignment " + Printer.StatementToString(stmt)); + var exprRhs = updStmt.Rhss[0] as ExprRhs; + if (exprRhs == null) { + reporter.Error(MessageSource.Rewriter, updStmt, "invalid rhs for inout update statement"); + } else { + var aTok = new AutoGeneratedToken(stmt.Tok); + var rhs = cloner.CloneExpr(exprRhs.Expr); + var varName = freshTempVarName("_inout_tmp_", m); + var datatypeUpdateFor = DatatypeUpdateExprFor(updStmt.Lhss[0], new IdentifierExpr(aTok, varName)); + if (datatypeUpdateFor.HasValue) { + stmtList.RemoveAt(s); + var genLocalVar = + new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), + updStmt.InoutAssign == InoutAssign.Ghost ? Usage.Ghost : ( + updStmt.InoutAssign == InoutAssign.Ordinary ? Usage.Ordinary : + throw new Exception("invalid InoutAssign") + )); + var genUpdStmt = new UpdateStmt(aTok, aTok, + new List { new IdentifierExpr(genLocalVar.Tok, genLocalVar.Name) }, + new List { new ExprRhs(rhs) }); + var genVarDeclStmt = new VarDeclStmt(aTok, aTok, new List { genLocalVar }, genUpdStmt); + stmtList.Insert(s, genVarDeclStmt); + Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); + s++; + + var (updateLhs, updateExpr) = datatypeUpdateFor.Value; + var newExprRhs = new ExprRhs(updateExpr); + var newUpdStmt = new UpdateStmt(aTok, aTok, + new List { updateLhs }, + new List { newExprRhs }); + newUpdStmt.InoutGenerated = true; + newUpdStmt.InoutAssignTarget = + (updStmt.InoutAssign == InoutAssign.Ghost ? Usage.Ghost : ( + (updStmt.InoutAssign == InoutAssign.Ordinary ? Usage.Ordinary : + throw new Exception("invalid InoutAssign")) + ), updStmt.Lhss[0]); + stmtList.Insert(s, newUpdStmt); + Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); + } + } + } else if (applySuffix != null && !updStmt.IsInoutAssign) { var inoutArgs = applySuffix.Args.Where(a => a.Inout).ToList(); if (inoutArgs.Count == 0 && !firstExprRhs.InoutThis) { continue; @@ -236,8 +282,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); } return ( - new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), a.Ghost ? Usage.Ghost : Usage.Ignore), - updateStmt); + new LocalVariable(aTok, aTok, varName, new InferredTypeProxy(), Usage.Ignore), updateStmt); }); var tempLocalVars = updatedFields.Select(x => x.Item1).ToList(); foreach (var tv in tempLocalVars) { @@ -265,6 +310,8 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { } } else if (firstExprRhs?.InoutThis ?? false) { reporter.Error(MessageSource.Rewriter, firstExprRhs.Tok, "inout not allowed here"); + } else if (updStmt?.IsInoutAssign ?? false) { + reporter.Error(MessageSource.Rewriter, stmt.Tok, "invalid inout update"); } } } diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index 26d52da6ac0..771a96e689a 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -3207,13 +3207,18 @@ void UpdateStmt(out Statement/*!*/ s) { Expression suchThat = null; IToken exceptionExpect = null; Expression exceptionExpr = null; - bool inoutThis = false; + bool inoutUpdate = false; IToken inoutTok = null; + bool ghostInoutUpdate = false; if (StartOf(28)) { if (la.kind == 77) { Get(); - inoutThis = true; inoutTok = t; + inoutUpdate = true; inoutTok = t; + if (la.kind == 73) { + Get(); + ghostInoutUpdate = true; + } } Lhs(out e); x = e.tok; @@ -3222,13 +3227,13 @@ void UpdateStmt(out Statement/*!*/ s) { Attribute(ref attrs); } Expect(35); - endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutThis; rhss.Add(exprRhs); + endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); } else if (StartOf(29)) { - lhss.Add(e); if (inoutThis) { SemErr(inoutTok, "inout not allowed here"); } + lhss.Add(e); while (la.kind == 27) { Get(); Lhs(out e); - lhss.Add(e); + lhss.Add(e); if (inoutUpdate) { SemErr(inoutTok, "inout not allowed here"); } } if (la.kind == 30) { Get(); @@ -3241,6 +3246,7 @@ void UpdateStmt(out Statement/*!*/ s) { rhss.Add(r); } } else if (la.kind == 31) { + if (inoutUpdate) { SemErr(inoutTok, "inout not allowed here"); } Get(); x = t; if (la.kind == _assume) { @@ -3286,7 +3292,11 @@ void UpdateStmt(out Statement/*!*/ s) { if (lhss.Count == 0 && rhss.Count == 0) { s = new BlockStmt(x, endTok, new List()); // error, give empty statement } else { - s = new UpdateStmt(x, endTok, lhss, rhss); + UpdateStmt updateStmt = new UpdateStmt(x, endTok, lhss, rhss); + updateStmt.InoutAssign = inoutUpdate ? ( + ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : + InoutAssign.No; + s = updateStmt; } } @@ -5875,17 +5885,13 @@ void HashCall(IToken id, out IToken openParen, out List typeArgs, out List } void SuffixExpression(out ApplySuffixArg arg) { - Expression expr; bool inout = false; bool ghost = false; - if (la.kind == 73) { - Get(); - ghost = true; - } + Expression expr; bool inout = false; if (la.kind == 77) { Get(); inout = true; } Expression(out expr, true, true); - arg = new ApplySuffixArg { Inout = inout, Ghost = ghost, Expr = expr }; + arg = new ApplySuffixArg { Inout = inout, Expr = expr }; } void SuffixArgumentExpressions(List args) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 98ee800e984..1bef86ab836 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7165,11 +7165,11 @@ protected void Error(IToken tok, string msg, params object[] msgArgs) { resolver.reporter.Error(MessageSource.Resolver, tok, msg, msgArgs); } - bool CheckValidInoutArg(UsageContext usageContext, Expression expr, bool last) { + bool CheckValidInoutArg(String contextDesc, UsageContext usageContext, Expression expr, bool last) { IdentifierExpr x = ExprAsIdentifier(usageContext, expr); if (expr is NameSegment && x != null) { if (!x.Var.IsLinear) { - Error(expr, "only linear member selection is allowed in inout args"); + Error(expr, String.Format("only linear member selection is allowed in inout {0}", contextDesc)); return false; } else { return true; @@ -7177,18 +7177,18 @@ bool CheckValidInoutArg(UsageContext usageContext, Expression expr, bool last) { } else if (expr is ConcreteSyntaxExpression) { var mse = (((ConcreteSyntaxExpression) expr).ResolvedExpression as MemberSelectExpr); if (mse == null) { - Error(expr, "only linear member selection is allowed in inout args"); + Error(expr, String.Format("only linear member selection is allowed in inout {0}", contextDesc)); return false; } else if (!last) { var d = mse.Member as DatatypeDestructor; if (d == null || !d.CorrespondingFormals.All(f => f.IsLinear)) { - Error(expr, "only linear member selection is allowed in inout args: \"{0}\" is not linear", mse.Member.Name); + Error(expr, "only linear member selection is allowed in inout {0}: \"{1}\" is not linear", contextDesc, mse.Member.Name); return false; } else { return true; } } else { - CheckValidInoutArg(usageContext, mse.Obj, false); + CheckValidInoutArg(contextDesc, usageContext, mse.Obj, false); return true; } } else { @@ -7390,6 +7390,19 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal if (x != null && HasLinearity(x.Var.Usage) && !(s.Rhs is ExprRhs)) { Error(s, "only expressions can be assigned to linear or shared variables"); } + if (s.InoutAssignTarget.HasValue) { + var (inoutAssignTargetUsage, inoutAssignTargetExpr) = s.InoutAssignTarget.Value; + var mse = inoutAssignTargetExpr.Resolved as MemberSelectExpr; + if (mse != null) { + if (mse.Member.Usage != inoutAssignTargetUsage) { + Error(mse, "expected {0} lhs, found {1} lhs", UsageName(inoutAssignTargetUsage), UsageName(mse.Member.Usage)); + } else if (!CheckValidInoutArg("lhs", usageContext, inoutAssignTargetExpr, true)) { + // errors emitted by check + } + } else { + Error(s, "invalid inout update lhs"); + } + } if (s.Rhs is ExprRhs) { var rhs = (ExprRhs)s.Rhs; Usage expectedUsage = x != null ? x.Var.Usage : Usage.Ordinary; @@ -7456,7 +7469,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal if (e.Inout) { if (!callee.Ins[j].Inout) { Error(e.Expr, "inout is only allowed for inout arguments"); - } else if (!CheckValidInoutArg(usageContext, e.Expr, true)) { + } else if (!CheckValidInoutArg("args", usageContext, e.Expr, true)) { Error(e.Expr, "invalid expression for inout argument"); } else { resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); @@ -11284,6 +11297,11 @@ private void ResolveUpdateStmt(UpdateStmt update, ICodeContext codeContext, int // add the statements here in a sequence, but don't use that sequence later for translation (instead, should translate properly as multi-assignment) for (int i = 0; i < update.Lhss.Count; i++) { var a = new AssignStmt(update.Tok, update.EndTok, update.Lhss[i].Resolved, update.Rhss[i]); + if (i == 0 && update.InoutAssignTarget.HasValue) { + var (_, inoutAssignTargetExpr) = update.InoutAssignTarget.Value; + ResolveExpression(inoutAssignTargetExpr, new ResolveOpts(codeContext, true)); + a.InoutAssignTarget = update.InoutAssignTarget; + } update.ResolvedStatements.Add(a); } } From d13d94eee307ae906d5427609afb82578bf60503 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 27 Jul 2020 15:10:26 +0200 Subject: [PATCH 299/573] Fix interaction between inout this and inout update --- Source/Dafny/Dafny.atg | 11 +++++++---- Source/Dafny/Parser.cs | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index a4a8799e912..90ae0310189 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2274,12 +2274,13 @@ UpdateStmt bool inoutUpdate = false; IToken inoutTok = null; bool ghostInoutUpdate = false; + bool inoutThis = false; .) ( [ "inout" (. inoutUpdate = true; inoutTok = t; .) ["ghost" (. ghostInoutUpdate = true; .) ] ] Lhs (. x = e.tok; .) ( { Attribute } - ";" (. endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); .) + ";" (. endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); inoutThis = inoutUpdate; .) | (. lhss.Add(e); .) { "," Lhs (. lhss.Add(e); if (inoutUpdate) { SemErr(inoutTok, "inout not allowed here"); } .) } @@ -2322,9 +2323,11 @@ UpdateStmt s = new BlockStmt(x, endTok, new List()); // error, give empty statement } else { UpdateStmt updateStmt = new UpdateStmt(x, endTok, lhss, rhss); - updateStmt.InoutAssign = inoutUpdate ? ( - ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : - InoutAssign.No; + if (!inoutThis) { + updateStmt.InoutAssign = inoutUpdate ? ( + ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : + InoutAssign.No; + } s = updateStmt; } } diff --git a/Source/Dafny/Parser.cs b/Source/Dafny/Parser.cs index 771a96e689a..e9bef15b816 100644 --- a/Source/Dafny/Parser.cs +++ b/Source/Dafny/Parser.cs @@ -3210,6 +3210,7 @@ void UpdateStmt(out Statement/*!*/ s) { bool inoutUpdate = false; IToken inoutTok = null; bool ghostInoutUpdate = false; + bool inoutThis = false; if (StartOf(28)) { if (la.kind == 77) { @@ -3227,7 +3228,7 @@ void UpdateStmt(out Statement/*!*/ s) { Attribute(ref attrs); } Expect(35); - endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); + endTok = t; ExprRhs exprRhs = new ExprRhs(e, attrs); exprRhs.InoutThis = inoutUpdate; rhss.Add(exprRhs); inoutThis = inoutUpdate; } else if (StartOf(29)) { lhss.Add(e); while (la.kind == 27) { @@ -3293,9 +3294,11 @@ void UpdateStmt(out Statement/*!*/ s) { s = new BlockStmt(x, endTok, new List()); // error, give empty statement } else { UpdateStmt updateStmt = new UpdateStmt(x, endTok, lhss, rhss); - updateStmt.InoutAssign = inoutUpdate ? ( - ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : - InoutAssign.No; + if (!inoutThis) { + updateStmt.InoutAssign = inoutUpdate ? ( + ghostInoutUpdate ? InoutAssign.Ghost : InoutAssign.Ordinary) : + InoutAssign.No; + } s = updateStmt; } } From 05bf817b9669ed10f508015c8d174e15610e27a7 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Thu, 30 Jul 2020 13:50:56 +0200 Subject: [PATCH 300/573] Fix linearity check being too strict for inout actual args --- Source/Dafny/Resolver.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 1bef86ab836..b10de9c0fa1 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7472,7 +7472,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal } else if (!CheckValidInoutArg("args", usageContext, e.Expr, true)) { Error(e.Expr, "invalid expression for inout argument"); } else { - resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); + // TODO(andrea) this is too strict, do we need a different check? + // resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); } } else { // !e.Inout if (callee.Ins[j].Inout) { From cae85db87380ca4614dc572d367fe8dbf89ae983 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Thu, 30 Jul 2020 14:35:40 +0200 Subject: [PATCH 301/573] Fix linearity check allowing multiple mutable borrows in the same call --- Source/Dafny/Resolver.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b10de9c0fa1..500bfd136e4 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7472,8 +7472,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal } else if (!CheckValidInoutArg("args", usageContext, e.Expr, true)) { Error(e.Expr, "invalid expression for inout argument"); } else { - // TODO(andrea) this is too strict, do we need a different check? - // resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); + // TODO(andrea) is this sufficient? + resolver.CheckIsCompilable(e.Expr, usageContext, callee.Ins[j].Usage, true); } } else { // !e.Inout if (callee.Ins[j].Inout) { @@ -15322,7 +15322,11 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } } if (!ok) { - reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here"); + if (usageContext.available.ContainsKey(e.Var) && usageContext.available[e.Var] == Available.MutablyBorrowed) { + reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here (it's already mutably borrowed)"); + } else { + reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here"); + } } } if (e.Var != null && e.Var.IsShared && usageContext == null) { @@ -15358,8 +15362,9 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs return linearDestructor ? Usage.Shared : Usage.Ordinary; } } else if (linearDestructor) { - CheckIsCompilable(e.Obj, usageContext, Usage.Shared); - return Usage.Shared; + var expectedUsage = inoutUsage ? Usage.Linear : Usage.Shared; + CheckIsCompilable(e.Obj, usageContext, expectedUsage, inoutUsage); + return expectedUsage; } else { var u = CheckIsCompilable(e.Obj, usageContext, inoutUsage); if (u != Usage.Shared && u != Usage.Ordinary && !inoutUsage) { From 7b524371a302f4c35f2249e063439322aa54f592 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 3 Aug 2020 15:15:01 +0200 Subject: [PATCH 302/573] Fix caller_must_be_pure check for datatype members (treat receiver as an argument) --- Source/Dafny/Resolver.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 500bfd136e4..a7a0ea68b55 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7456,13 +7456,13 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal bool returnsShared = callee.Outs.Exists(o => o.IsShared); bool isPureCall = callee.Mod.Expressions.Count == 0 && callee.Outs.TrueForAll(x => x.Usage != Usage.Shared); if (!callee.IsGhost) { - if (!callee.HasInoutThis) { // TODO(andrea) is it safe to entirely skip this check? - resolver.CheckIsCompilable(s.Receiver, usageContext, callee.Usage); - } - j = 0; if (usageContext != null) { usageContext.insidePureCall = isPureCall; } + if (!callee.HasInoutThis) { // TODO(andrea) is it safe to entirely skip this check? is this check safe for pure calls? + resolver.CheckIsCompilable(s.Receiver, usageContext, callee.Usage); + } + j = 0; foreach (var e in s.Args) { Contract.Assume(j < callee.Ins.Count); // this should have already been checked by the resolver if (!callee.Ins[j].IsGhost) { From c3fde0cedc1c2569c19972d39accedcf3397fd12 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 3 Aug 2020 15:12:51 -0700 Subject: [PATCH 303/573] Fix linearity bug in if/else statements --- Source/Dafny/Resolver.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3f18f14e368..f26f62176f8 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7477,6 +7477,7 @@ public void Visit(Statement stmt, bool mustBeErasable) { if (s.Els != null) { Visit(s.Els, s.IsGhost); } + uc2 = usageContext; // if both branches were all ghost, then we can mark the enclosing statement as ghost as well s.IsGhost = s.IsGhost || (s.Thn.IsGhost && (s.Els == null || s.Els.IsGhost)); resolver.MergeUsageContexts(s.Tok, uc1, uc2); From b09c37d01657a54e2a6bd5e19e0738810c61867c Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 3 Aug 2020 15:12:51 -0700 Subject: [PATCH 304/573] Fix linearity bug in if/else statements --- Source/Dafny/Resolver.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index a7a0ea68b55..b89fc1b7346 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7568,6 +7568,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal if (s.Els != null) { Visit(s.Els, s.IsGhost); } + uc2 = usageContext; // if both branches were all ghost, then we can mark the enclosing statement as ghost as well s.IsGhost = s.IsGhost || (s.Thn.IsGhost && (s.Els == null || s.Els.IsGhost)); resolver.MergeUsageContexts(s.Tok, uc1, uc2); From 25a2fc15842ee0c3f43a9ae8ee1a0af1a4b1ca1e Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 4 Aug 2020 23:52:06 +0200 Subject: [PATCH 305/573] Undo inout rewriting before compilation --- Source/Dafny/Cloner.cs | 10 +-- Source/Dafny/DafnyAst.cs | 2 + Source/Dafny/Linear.cs | 144 +++++++++++++++++++++++++++------------ Source/Dafny/Printer.cs | 11 +++ Source/Dafny/Resolver.cs | 1 + 5 files changed, 118 insertions(+), 50 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index bdecb2a80dc..5b133034e29 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Numerics; using System.Diagnostics.Contracts; +using System.Linq; using IToken = Microsoft.Boogie.IToken; namespace Microsoft.Dafny @@ -647,6 +648,7 @@ public virtual Statement CloneStmt(Statement stmt) { var s = (UpdateStmt)stmt; var clonedUpdateStmt = new UpdateStmt(Tok(s.Tok), Tok(s.EndTok), s.Lhss.ConvertAll(CloneExpr), s.Rhss.ConvertAll(CloneRHS), s.CanMutateKnownState); clonedUpdateStmt.InoutGenerated = s.InoutGenerated; + clonedUpdateStmt.InoutAssignTarget = s.InoutAssignTarget; r = clonedUpdateStmt; } else if (stmt is AssignOrReturnStmt) { @@ -656,7 +658,9 @@ public virtual Statement CloneStmt(Statement stmt) { } else if (stmt is VarDeclStmt) { var s = (VarDeclStmt)stmt; var lhss = s.Locals.ConvertAll(c => new LocalVariable(Tok(c.Tok), Tok(c.EndTok), c.Name, CloneType(c.OptionalType), c.Usage)); - r = new VarDeclStmt(Tok(s.Tok), Tok(s.EndTok), lhss, (ConcreteUpdateStatement)CloneStmt(s.Update)); + var clonedVarDeclStmt = new VarDeclStmt(Tok(s.Tok), Tok(s.EndTok), lhss, (ConcreteUpdateStatement)CloneStmt(s.Update)); + clonedVarDeclStmt.InoutRewrittenArgs = s.InoutRewrittenArgs; + r = clonedVarDeclStmt; } else if (stmt is LetStmt) { var s = (LetStmt) stmt; @@ -1100,10 +1104,6 @@ public ModuleSignature CloneModuleSignature(ModuleSignature org, ModuleSignature } return sig; } - - // TODO(andrea) undo the inout transformation for compilation - // public override Method CloneMethod(Method m) { - // public override BlockStmt CloneMethodBody(Method m) { } /// diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 80d62e97a77..1d49d54070a 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6870,6 +6870,8 @@ void ObjectInvariant() { Contract.Invariant(Locals.Count != 0); } + public int? InoutRewrittenArgs = null; + public VarDeclStmt(IToken tok, IToken endTok, List locals, ConcreteUpdateStatement update) : base(tok, endTok) { diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 8423e8e6010..60f9e414670 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -76,18 +76,8 @@ static public void PrintObjects(Object obj1, Object obj2) { } } - public class InoutTranslateRewriter : IRewriter { - public delegate string FreshTempVarName(string prefix, ICodeContext context); - - FreshTempVarName freshTempVarName; - - public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTempVarName) : base(reporter) { - this.freshTempVarName = freshTempVarName; - } - - Cloner cloner = new Cloner(); - - static IEnumerable> AllStatementLists(List stmts) { + internal static class Visit { + internal static IEnumerable> AllStatementLists(List stmts) { foreach (var stmt in stmts) { foreach (var ls in AllStatementLists(stmt)) { yield return ls; } } @@ -95,7 +85,7 @@ static IEnumerable> AllStatementLists(List stmts) { yield return stmts; } - static IEnumerable> AllStatementLists(Statement stmt) { + internal static IEnumerable> AllStatementLists(Statement stmt) { switch (stmt) { case BlockStmt bs: foreach (var ls in AllStatementLists(bs.Body)) { yield return ls; } @@ -117,6 +107,44 @@ static IEnumerable> AllStatementLists(Statement stmt) { } } + static bool memberIsMethod(MemberDecl decl) { + var m = decl as Method; + if (m == null) { + return false; + } + return !( + m is Constructor || + m is InductiveLemma || + m is CoLemma || + m is Lemma || + m is TwoStateLemma); + } + + internal static IEnumerable<(TopLevelDecl, Method)> AllMethodMembers(ModuleDefinition module) { + foreach (var decl in module.TopLevelDecls) { + var topLevelDecl = ((decl as ClassDecl) as TopLevelDeclWithMembers) ?? ((decl as DatatypeDecl) as TopLevelDeclWithMembers); + if (topLevelDecl != null) { + foreach (var m in topLevelDecl.Members.Where(memberIsMethod)) { + var method = (Method) m; + yield return (topLevelDecl, method); + } + } + } + } + + } + + public class InoutTranslateRewriter : IRewriter { + public delegate string FreshTempVarName(string prefix, ICodeContext context); + + FreshTempVarName freshTempVarName; + + public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTempVarName) : base(reporter) { + this.freshTempVarName = freshTempVarName; + } + + Cloner cloner = new Cloner(); + (Expression, Expression)? DatatypeUpdateExprFor(Expression expr, Expression value) { var tok = new AutoGeneratedToken(expr.tok); if (expr is ExprDotName) { @@ -193,7 +221,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { } if (body != null) { - foreach (var stmtList in AllStatementLists(body)) { + foreach (var stmtList in Visit.AllStatementLists(body)) { for (int s = 0; s < stmtList.Count; s++) { var stmt = stmtList[s]; var varDeclStmt = stmt as VarDeclStmt; @@ -239,7 +267,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { throw new Exception("invalid InoutAssign")) ), updStmt.Lhss[0]); stmtList.Insert(s, newUpdStmt); - Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); + Util.OxideDebug(stmtList[s].Tok, " -> " + Printer.StatementToString(stmtList[s])); } } } else if (applySuffix != null && !updStmt.IsInoutAssign) { @@ -300,6 +328,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { // TODO(andrea) Util.OxideDebug(stmtList[s].Tok, " " + Printer.StatementToString(stmtList[s])); } + varDeclStmt.InoutRewrittenArgs = updatedFields.Count; Util.OxideDebug(stmt.Tok, " " + Printer.StatementToString(stmt)); foreach (var newUpdStmt in updatedFields.Select(x => x.Item2)) { if (newUpdStmt != null) { @@ -318,42 +347,67 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { } } - static bool memberIsMethod(MemberDecl decl) { - var m = decl as Method; - if (m == null) { - return false; + internal override void PreResolve(ModuleDefinition module) { + foreach (var (tld, method) in Visit.AllMethodMembers(module)) { + PreRewriteMethod(method, tld); } - return !( - m is Constructor || - m is InductiveLemma || - m is CoLemma || - m is Lemma || - m is TwoStateLemma); } + } - static IEnumerable<(TopLevelDecl, Method)> AllMethodMembers(ModuleDefinition module) { - foreach (var decl in module.TopLevelDecls) { - var topLevelDecl = ((decl as ClassDecl) as TopLevelDeclWithMembers) ?? ((decl as DatatypeDecl) as TopLevelDeclWithMembers); - if (topLevelDecl != null) { - foreach (var m in topLevelDecl.Members.Where(memberIsMethod)) { - var method = (Method) m; - yield return (topLevelDecl, method); + static class OxideCompilationRewriter { + public static void Rewrite(ModuleDefinition module) { + foreach (var (tld, method) in Visit.AllMethodMembers(module)) { + Util.OxideDebug(method.tok, "Rewriting method for compilation {0}", method.Name); + + var body = method.Body?.Body; + if (body != null) { + foreach (var stmtList in Visit.AllStatementLists(body)) { + for (int s = 0; s < stmtList.Count; s++) { + var stmt = stmtList[s]; + var updStmt = stmt as UpdateStmt; + var varDeclStmt = stmt as VarDeclStmt; + if (updStmt != null && updStmt.InoutGenerated && updStmt.InoutAssignTarget.HasValue) { + var (usage, targetExpr) = updStmt.InoutAssignTarget.Value; + Util.OxideDebug(stmtList[s - 1].Tok, " (assign) removing {0}", Printer.StatementToString(stmtList[s - 1])); + var rhs = (ExprRhs) ((UpdateStmt) ((VarDeclStmt) stmtList[s - 1]).Update).Rhss[0]; + stmtList.RemoveAt(s - 1); + s--; + + Util.OxideDebug(stmtList[s].Tok, " (assign) {0} has target {1}, rhs {2}", + Printer.StatementToString(stmtList[s]), Printer.ExprToString(targetExpr), Printer.ExprToString(rhs.Expr)); + updStmt.Lhss.Clear(); + updStmt.Lhss.Add(targetExpr); + updStmt.Rhss.Clear(); + updStmt.Rhss.Add(rhs); + updStmt.InoutAssign = usage == Usage.Ordinary ? InoutAssign.Ordinary : ( + usage == Usage.Ghost ? InoutAssign.Ghost : + throw new Exception("invalid InoutAssignUsage")); + Util.OxideDebug(stmtList[s].Tok, " (assign) rewritten as {0} ({1})", + Printer.StatementToString(stmtList[s]), updStmt.InoutAssign); + } else if (varDeclStmt != null && varDeclStmt.InoutRewrittenArgs.HasValue) { + var argCount = varDeclStmt.InoutRewrittenArgs.Value; + Util.OxideDebug(stmtList[s].Tok, " (apply) undoing rewrite for {0} args starting {1} (inline update {2})", + argCount, Printer.StatementToString(stmtList[s]), varDeclStmt.Update != null ? "present" : "absent"); + if (varDeclStmt.Update == null) { + Util.OxideDebug(stmtList[s].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s])); + stmtList.RemoveAt(s); + var updateStmt = (UpdateStmt) stmtList[s]; + updateStmt.Lhss.RemoveRange(updateStmt.Lhss.Count - argCount, argCount); + Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten as {0}", Printer.StatementToString(stmtList[s])); + } else { + varDeclStmt.Locals.RemoveRange(varDeclStmt.Locals.Count - argCount, argCount); + varDeclStmt.Update.Lhss.RemoveRange(varDeclStmt.Update.Lhss.Count - argCount, argCount); + Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten as {0}", Printer.StatementToString(stmtList[s])); + } + for (int c = 0; c < argCount; ++c) { + Util.OxideDebug(stmtList[s + 1].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s + 1])); + stmtList.RemoveAt(s + 1); + } + } + } } } } } - - internal override void PreResolve(ModuleDefinition module) { - foreach (var (tld, method) in AllMethodMembers(module)) { - PreRewriteMethod(method, tld); - } - } - - // TODO(andrea) remove - // internal override void PostResolve(ModuleDefinition module) { - // foreach (var (tld, method) in AllMethodMembers(module)) { - // } - // } - } } diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index 87ab2fe5002..2bf1874ace4 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -1443,6 +1443,17 @@ public void PrintStatement(Statement stmt, int indent) { } else if (stmt is ConcreteUpdateStatement) { var s = (ConcreteUpdateStatement)stmt; string sep = ""; + var updateStmt = stmt as UpdateStmt; + if (updateStmt != null && updateStmt.InoutAssign != InoutAssign.No) { + wr.Write(sep); + wr.Write("inout"); + if (updateStmt.InoutAssign == InoutAssign.Ghost) { + wr.Write(" ghost"); + } else { + Contract.Assert(updateStmt.InoutAssign == InoutAssign.Ordinary); + } + wr.Write(" "); + } foreach (var lhs in s.Lhss) { wr.Write(sep); PrintExpression(lhs, true); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b89fc1b7346..b3cecc12232 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -467,6 +467,7 @@ public void ResolveProgram(Program prog) { // Now we're ready to resolve the cloned module definition, using the compile signature ResolveModuleDefinition(nw, compileSig); + Linear.OxideCompilationRewriter.Rewrite(nw); prog.CompileModules.Add(nw); useCompileSignatures = false; // reset the flag Type.EnableScopes(); From e759fe5af504d1b4189af4d0d3f658489918d433 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Thu, 6 Aug 2020 15:13:36 +0200 Subject: [PATCH 306/573] Undo inout rewriting of methods before compilation --- Source/Dafny/Cloner.cs | 2 +- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Linear.cs | 32 ++++++++++++++++++++++++++++---- Source/Dafny/Resolver.cs | 10 +++++----- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 5b133034e29..fde3cdf4caf 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -647,7 +647,7 @@ public virtual Statement CloneStmt(Statement stmt) { } else if (stmt is UpdateStmt) { var s = (UpdateStmt)stmt; var clonedUpdateStmt = new UpdateStmt(Tok(s.Tok), Tok(s.EndTok), s.Lhss.ConvertAll(CloneExpr), s.Rhss.ConvertAll(CloneRHS), s.CanMutateKnownState); - clonedUpdateStmt.InoutGenerated = s.InoutGenerated; + clonedUpdateStmt.AssumeRhsCompilable = s.AssumeRhsCompilable; clonedUpdateStmt.InoutAssignTarget = s.InoutAssignTarget; r = clonedUpdateStmt; diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 1d49d54070a..0a6bb6a2973 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -7003,7 +7003,7 @@ public bool IsInoutAssign { } } - public bool InoutGenerated = false; + public bool AssumeRhsCompilable = false; public (Usage, Expression)? InoutAssignTarget = null; diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 60f9e414670..fe9336e916a 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -188,8 +188,9 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { var updateStmt = new UpdateStmt(mTok, mTok, new List { lhs }, new List { rhs }); - updateStmt.InoutGenerated = false; + updateStmt.AssumeRhsCompilable = false; body.Insert(0, updateStmt); + Util.OxideDebug(updateStmt.Tok, " {0}", Printer.StatementToString(updateStmt)); } } @@ -260,7 +261,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { var newUpdStmt = new UpdateStmt(aTok, aTok, new List { updateLhs }, new List { newExprRhs }); - newUpdStmt.InoutGenerated = true; + newUpdStmt.AssumeRhsCompilable = true; newUpdStmt.InoutAssignTarget = (updStmt.InoutAssign == InoutAssign.Ghost ? Usage.Ghost : ( (updStmt.InoutAssign == InoutAssign.Ordinary ? Usage.Ordinary : @@ -306,7 +307,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { updateStmt = new UpdateStmt(aTok, aTok, new List { updateLhs }, new List { new ExprRhs(updateExpr) }); - updateStmt.InoutGenerated = true; + updateStmt.AssumeRhsCompilable = true; Util.OxideDebug(a.Expr.tok, " varName: " + varName + ", " + Printer.ExprToString(a.Expr) + ", " + Printer.ExprToString(updateExpr)); } return ( @@ -359,14 +360,37 @@ public static void Rewrite(ModuleDefinition module) { foreach (var (tld, method) in Visit.AllMethodMembers(module)) { Util.OxideDebug(method.tok, "Rewriting method for compilation {0}", method.Name); + var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); + var inoutArgCount = inoutInArgs.Count; + method.Outs.RemoveRange(method.Outs.Count - inoutArgCount, inoutArgCount); + const String oldPrefix = "old_"; + foreach (var i in inoutInArgs) { + var arg = method.Ins[i]; + Contract.Assert(arg.Name.StartsWith(oldPrefix)); + var rewrittenArg = new Formal( + arg.Tok, arg.Name.Substring(oldPrefix.Length), arg.Type, arg.InParam, + arg.Usage, arg.IsOld, arg.Inout); + method.Ins[i] = rewrittenArg; + } + if (inoutArgCount > 0) { + method.Req.Clear(); + method.Ens.Clear(); + } + Util.OxideDebug(method.tok, " {0}", Printer.MethodSignatureToString(method)); + var body = method.Body?.Body; if (body != null) { + for (int i = 0; i < inoutArgCount; i++) { + Util.OxideDebug(body[i].Tok, " removing {0}", Printer.StatementToString(body[i])); + } + body.RemoveRange(0, inoutArgCount); + foreach (var stmtList in Visit.AllStatementLists(body)) { for (int s = 0; s < stmtList.Count; s++) { var stmt = stmtList[s]; var updStmt = stmt as UpdateStmt; var varDeclStmt = stmt as VarDeclStmt; - if (updStmt != null && updStmt.InoutGenerated && updStmt.InoutAssignTarget.HasValue) { + if (updStmt != null && updStmt.AssumeRhsCompilable && updStmt.InoutAssignTarget.HasValue) { var (usage, targetExpr) = updStmt.InoutAssignTarget.Value; Util.OxideDebug(stmtList[s - 1].Tok, " (assign) removing {0}", Printer.StatementToString(stmtList[s - 1])); var rhs = (ExprRhs) ((UpdateStmt) ((VarDeclStmt) stmtList[s - 1]).Update).Rhss[0]; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b3cecc12232..ba905f65ffb 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7216,7 +7216,7 @@ bool CheckValidInoutArg(String contextDesc, UsageContext usageContext, Expressio /// this reason, it is not necessary to visit all subexpressions, unless the subexpression /// matter for the ghost checking/recording of "stmt". /// - public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = false) { + public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable = false) { Contract.Requires(stmt != null); Contract.Assume(!codeContext.IsGhost || mustBeErasable); // (this is really a precondition) codeContext.IsGhost ==> mustBeErasable if (usageContext != null) usageContext.AssertNoBorrowed(); @@ -7317,8 +7317,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal } else if (stmt is UpdateStmt) { var s = (UpdateStmt)stmt; - Contract.Assert(!inoutGenerated); - s.ResolvedStatements.Iter(ss => Visit(ss, mustBeErasable, s.InoutGenerated)); + Contract.Assert(!assumeRhsCompilable); + s.ResolvedStatements.Iter(ss => Visit(ss, mustBeErasable, s.AssumeRhsCompilable)); s.IsGhost = s.ResolvedStatements.All(ss => ss.IsGhost); } else if (stmt is AssignOrReturnStmt) { @@ -7407,12 +7407,12 @@ public void Visit(Statement stmt, bool mustBeErasable, bool inoutGenerated = fal if (s.Rhs is ExprRhs) { var rhs = (ExprRhs)s.Rhs; Usage expectedUsage = x != null ? x.Var.Usage : Usage.Ordinary; - if (!inoutGenerated) { + if (!assumeRhsCompilable) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } if (x != null && x.Var.IsLinear) { // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? - if (usageContext.available[x.Var] != Available.Consumed && !inoutGenerated) { + if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { Error(x, "variable must be unavailable before assignment"); } usageContext.available[x.Var] = Available.Available; From 947536697dbcc3d2ad93f6c8d20ad707240d8b12 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Thu, 6 Aug 2020 16:17:37 +0200 Subject: [PATCH 307/573] Undo inout rewriting later, to fix resolution errors --- Source/Dafny/Resolver.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index ba905f65ffb..e2f1f205d82 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -467,7 +467,6 @@ public void ResolveProgram(Program prog) { // Now we're ready to resolve the cloned module definition, using the compile signature ResolveModuleDefinition(nw, compileSig); - Linear.OxideCompilationRewriter.Rewrite(nw); prog.CompileModules.Add(nw); useCompileSignatures = false; // reset the flag Type.EnableScopes(); @@ -502,6 +501,12 @@ public void ResolveProgram(Program prog) { } else { Contract.Assert(false); } Contract.Assert(decl.Signature != null); } + + // oxide + foreach (var nw in prog.CompileModules) { + Linear.OxideCompilationRewriter.Rewrite(nw); + } + if (reporter.Count(ErrorLevel.Error) != origErrorCount) { // do nothing else return; From d7bdf4ba10bb97f2432585beb27418060e27f063 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Thu, 6 Aug 2020 17:31:51 +0200 Subject: [PATCH 308/573] Add inout to formal arg printer --- Source/Dafny/Printer.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index 2bf1874ace4..0f966c4fe7f 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -973,6 +973,9 @@ void PrintFormal(Formal f, bool showNewKeyword) { if (showNewKeyword && !f.IsOld) { wr.Write("new "); } + if (f.Inout) { + wr.Write("inout "); + } if (f.IsGhost) { wr.Write("ghost "); } From 55f164e4702ab2fdc3d592b445b45c21b02bd7ef Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 14 Sep 2020 18:30:15 +0200 Subject: [PATCH 309/573] Undo inout this rewriting --- Source/Dafny/Cloner.cs | 4 +++- Source/Dafny/DafnyAst.cs | 2 ++ Source/Dafny/Linear.cs | 18 ++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index fde3cdf4caf..b4877b9579f 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -487,8 +487,10 @@ public NestedMatchCaseExpr CloneNestedMatchCaseExpr(NestedMatchCaseExpr c) { } public virtual Expression CloneApplySuffix(ApplySuffix e) { - return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( + var applySuffix = new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( x => new ApplySuffixArg { Inout = x.Inout, Expr = CloneExpr(x.Expr) })); + applySuffix.RewrittenAsInoutThis = e.RewrittenAsInoutThis; + return applySuffix; } public virtual CasePattern CloneCasePattern(CasePattern pat) where VT: IVariable { diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 0a6bb6a2973..ce380188b71 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -11719,6 +11719,8 @@ public class ApplySuffix : SuffixExpr { public readonly List Args; + public bool RewrittenAsInoutThis; + [ContractInvariantMethod] void ObjectInvariant() { Contract.Invariant(Args != null); diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index fe9336e916a..d4ccdff51e7 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -293,6 +293,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { Expression selfArg = cloner.CloneExpr(((ExprDotName) applySuffix.Lhs).Lhs); var selfApplySuffixArg = new ApplySuffixArg { Expr = selfArg, Inout = true }; applySuffix.Args.Insert(0, selfApplySuffixArg); + applySuffix.RewrittenAsInoutThis = true; inoutArgs.Add(selfApplySuffixArg); } @@ -360,6 +361,11 @@ public static void Rewrite(ModuleDefinition module) { foreach (var (tld, method) in Visit.AllMethodMembers(module)) { Util.OxideDebug(method.tok, "Rewriting method for compilation {0}", method.Name); + if (method.HasInoutThis) { + method.Ins.RemoveAt(0); + method.Outs.RemoveAt(0); + } + var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); var inoutArgCount = inoutInArgs.Count; method.Outs.RemoveRange(method.Outs.Count - inoutArgCount, inoutArgCount); @@ -417,11 +423,19 @@ public static void Rewrite(ModuleDefinition module) { stmtList.RemoveAt(s); var updateStmt = (UpdateStmt) stmtList[s]; updateStmt.Lhss.RemoveRange(updateStmt.Lhss.Count - argCount, argCount); - Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten as {0}", Printer.StatementToString(stmtList[s])); + var exprRhs = (ExprRhs) updateStmt.Rhss[0]; + var applySuffix = exprRhs.Expr as ApplySuffix; + if (applySuffix != null && applySuffix.RewrittenAsInoutThis) { + Contract.Assert(updateStmt.Rhss.Count == 1); + applySuffix.Args.RemoveAt(0); + exprRhs.Expr.Inout = true; + } + Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (a) as {0}", Printer.StatementToString(stmtList[s])); } else { varDeclStmt.Locals.RemoveRange(varDeclStmt.Locals.Count - argCount, argCount); varDeclStmt.Update.Lhss.RemoveRange(varDeclStmt.Update.Lhss.Count - argCount, argCount); - Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten as {0}", Printer.StatementToString(stmtList[s])); + throw new NotImplementedException("TODO: Inout this may not be supported, but I forget what's this case."); + Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (b) as {0}", Printer.StatementToString(stmtList[s])); } for (int c = 0; c < argCount; ++c) { Util.OxideDebug(stmtList[s + 1].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s + 1])); From d2c5b434a2364d8bfb62e175b8574afbfac0fa95 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 2 Oct 2020 10:56:49 -0400 Subject: [PATCH 310/573] Add special handling for datatype methods --- Source/Dafny/Compiler-Csharp.cs | 2 +- Source/Dafny/Compiler-cpp.cs | 16 ++++++++++++++-- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Compiler-java.cs | 2 +- Source/Dafny/Compiler-js.cs | 2 +- Source/Dafny/Compiler.cs | 20 ++++++++++++-------- Test/c++/LinearMaybe.s.dfy | 5 +++++ Test/c++/LinearMaybe.s.expect | 1 + Test/c++/datatypes.dfy | 23 +++++++++++++++++++++++ Test/c++/functions.expect | 3 +++ Test/c++/run_cpp_tests.py | 2 ++ 11 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 Test/c++/LinearMaybe.s.expect diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 8f230b75bb4..95ea8745bd3 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -1581,7 +1581,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr) { + protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { var custom = (enclosingMethod != null && enclosingMethod.IsTailRecursive) || (enclosingFunction != null && enclosingFunction.IsTailRecursive) || diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5a391ce742d..92e3a2d480c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -403,6 +403,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); var wdecl = this.dtDeclWr; var wdef = writer; + BlockTargetWriter wmethodDecl = null; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations @@ -415,6 +416,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); + wmethodDecl = ws; // Declare the struct members var i = 0; @@ -450,6 +452,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } + // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes + ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); + // Overload the comparison operator ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, TemplateMethod(dt.TypeArgs)); var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs))); @@ -551,6 +556,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr /*** Declare the overall tagged union ***/ var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.WriteLine("std::variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); + wmethodDecl = ws; // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) @@ -616,6 +622,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); } + // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes + ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); + // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); ws.WriteLine("\treturn left.v == right.v;\n}"); @@ -685,7 +694,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } - return null; + return new ClassWriter(DtT_protected, this, wmethodDecl, wdef, wmethodDecl, writer); } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { @@ -1856,7 +1865,10 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr) { + protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { + if (!thisIsPointer) { + wr.Write("*"); + } wr.Write("this"); } diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 339619ed36a..1e2cac158c0 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -2208,7 +2208,7 @@ private bool IsExternMemberOfExternModule(MemberDecl/*?*/ member, TopLevelDecl c return member != null && cl is ClassDecl cdecl && cdecl.IsDefaultClass && Attributes.Contains(cdecl.Module.Attributes, "extern") && member.IsExtern(out _, out _); } - protected override void EmitThis(TargetWriter wr) { + protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { wr.Write("_this"); } diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 2fe91f2085d..5568a369d28 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -1083,7 +1083,7 @@ private bool IsJavaPrimitiveType(Type type) { return type.IsBoolType || type.IsCharType || AsNativeType(type) != null; } - protected override void EmitThis(TargetWriter wr) { + protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { var custom = (enclosingMethod != null && enclosingMethod.IsTailRecursive) || (enclosingFunction != null && enclosingFunction.IsTailRecursive) || diff --git a/Source/Dafny/Compiler-js.cs b/Source/Dafny/Compiler-js.cs index 4c5d6b543a2..6bbc1e01471 100644 --- a/Source/Dafny/Compiler-js.cs +++ b/Source/Dafny/Compiler-js.cs @@ -1359,7 +1359,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr) { + protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { wr.Write("_this"); } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index d9aa094916a..0fc50ea7407 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -34,6 +34,7 @@ public Compiler(ErrorReporter reporter) { protected Function enclosingFunction; // non-null when a function body is being translated FreshIdGenerator idGenerator = new FreshIdGenerator(); + private bool MakeThisPointer = true; static FreshIdGenerator compileNameIdGenerator = new FreshIdGenerator(); public static string FreshId() { @@ -516,7 +517,7 @@ protected virtual string IdProtect(string name) { return name; } protected abstract string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null); - protected abstract void EmitThis(TargetWriter wr); + protected abstract void EmitThis(TargetWriter wr, bool thisIsPointer); protected virtual void EmitNull(Type type, TargetWriter wr) { wr.Write("null"); } @@ -701,7 +702,10 @@ public void Compile(Program program, TargetWriter wrx) { } var w = DeclareDatatype(dt, wr); if (w != null) { + var oldMakeThisPointer = MakeThisPointer; + MakeThisPointer = false; CompileClassMembers(dt, w); + MakeThisPointer = oldMakeThisPointer; } } else if (d is IteratorDecl) { var iter = (IteratorDecl)d; @@ -979,7 +983,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { if (cf.Rhs == null) { var sw = EmitReturnExpr(w); // get { return this._{0}; } - EmitThis(sw); + EmitThis(sw, c is ClassDecl); sw.Write("._{0}", cf.CompileName); } else { CompileReturnBody(cf.Rhs, w, null); @@ -995,12 +999,12 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { { var sw = EmitReturnExpr(wGet); // get { return this._{0}; } - EmitThis(sw); + EmitThis(sw, c is ClassDecl); sw.Write("._{0}", f.CompileName); } { // set { this._{0} = value; } - EmitThis(wSet); + EmitThis(wSet, c is ClassDecl); wSet.Write("._{0}", f.CompileName); var sw = EmitAssignmentRhs(wSet); EmitSetterParameter(sw); @@ -1022,12 +1026,12 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { { var sw = EmitReturnExpr(wGet); // get { return this.{0}; } - EmitThis(sw); + EmitThis(sw, c is ClassDecl); sw.Write(".{0}", f.CompileName); } { // set { this.{0} = value; } - EmitThis(wSet); + EmitThis(wSet, c is ClassDecl); wSet.Write(".{0}", f.CompileName); var sw = EmitAssignmentRhs(wSet); EmitSetterParameter(sw); @@ -1086,7 +1090,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { CompileReturnBody(cf.Rhs, wBody, null); } else if (!cf.IsStatic) { var sw = EmitReturnExpr(wBody); - EmitMemberSelect(EmitThis, cf, f.Type, internalAccess: true).EmitRead(sw); + EmitMemberSelect(w => EmitThis(w, c is ClassDecl), cf, f.Type, internalAccess: true).EmitRead(sw); } else { EmitReturnExpr(DefaultValue(cf.Type, wBody, cf.tok, Usage.Ordinary, true), wBody); } @@ -3336,7 +3340,7 @@ protected void TrExpr(Expression expr, TargetWriter wr, bool inLetExprBody) { EmitLiteralExpr(wr, e); } else if (expr is ThisExpr) { - EmitThis(wr); + EmitThis(wr, MakeThisPointer); } else if (expr is IdentifierExpr) { var e = (IdentifierExpr)expr; diff --git a/Test/c++/LinearMaybe.s.dfy b/Test/c++/LinearMaybe.s.dfy index 10878d1f079..993c0ed8dc0 100644 --- a/Test/c++/LinearMaybe.s.dfy +++ b/Test/c++/LinearMaybe.s.dfy @@ -28,3 +28,8 @@ function method {:extern "LinearMaybe", "discard"} discard(linear m:maybe) requires !has(m) } + +method Main() { + print "Maybe\n"; +} + diff --git a/Test/c++/LinearMaybe.s.expect b/Test/c++/LinearMaybe.s.expect new file mode 100644 index 00000000000..4899c072edc --- /dev/null +++ b/Test/c++/LinearMaybe.s.expect @@ -0,0 +1 @@ +Maybe diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 9f7f552760d..1d623332f83 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -137,6 +137,29 @@ method TestNestedLet() { var Level2(u, Level1(v)) := x; } +// Test datatype methods +datatype Car = Car(passengers: bool) | Toy(t:bool) { + method Free() { + if this.Car? { + var Car(_) := this; + } + } + + method LoadPassengers(b:bool) returns (self: Car) + { + if this.Car? { + var Car(passengers) := this; + } + self := Car(b); + } +} + +method CarTest() { + var c := Car(true); + c := c.LoadPassengers(false); + c.Free(); +} + method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); diff --git a/Test/c++/functions.expect b/Test/c++/functions.expect index e69de29bb2d..21245e8a9dd 100644 --- a/Test/c++/functions.expect +++ b/Test/c++/functions.expect @@ -0,0 +1,3 @@ +6 +7 +8 diff --git a/Test/c++/run_cpp_tests.py b/Test/c++/run_cpp_tests.py index 5978f47fd64..9dd35fdc36a 100644 --- a/Test/c++/run_cpp_tests.py +++ b/Test/c++/run_cpp_tests.py @@ -34,6 +34,8 @@ def run_test(test): def run_tests(tests): for test in tests: + if test == "LinearSequence.s": + continue run_test(test) if __name__ == "__main__": From 1d4f917d8a3a8e77ee530b1e7b31f8239433b4c4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 6 Oct 2020 22:37:49 -0400 Subject: [PATCH 311/573] Revert "Add special handling for datatype methods" This reverts commit d2c5b434a2364d8bfb62e175b8574afbfac0fa95. --- Source/Dafny/Compiler-Csharp.cs | 2 +- Source/Dafny/Compiler-cpp.cs | 16 ++-------------- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Compiler-java.cs | 2 +- Source/Dafny/Compiler-js.cs | 2 +- Source/Dafny/Compiler.cs | 20 ++++++++------------ Test/c++/LinearMaybe.s.dfy | 5 ----- Test/c++/LinearMaybe.s.expect | 1 - Test/c++/datatypes.dfy | 23 ----------------------- Test/c++/functions.expect | 3 --- Test/c++/run_cpp_tests.py | 2 -- 11 files changed, 14 insertions(+), 64 deletions(-) delete mode 100644 Test/c++/LinearMaybe.s.expect diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 95ea8745bd3..8f230b75bb4 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -1581,7 +1581,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { + protected override void EmitThis(TargetWriter wr) { var custom = (enclosingMethod != null && enclosingMethod.IsTailRecursive) || (enclosingFunction != null && enclosingFunction.IsTailRecursive) || diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 92e3a2d480c..5a391ce742d 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -403,7 +403,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); var wdecl = this.dtDeclWr; var wdef = writer; - BlockTargetWriter wmethodDecl = null; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations @@ -416,7 +415,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); - wmethodDecl = ws; // Declare the struct members var i = 0; @@ -452,9 +450,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } - // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes - ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); - // Overload the comparison operator ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, TemplateMethod(dt.TypeArgs)); var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs))); @@ -556,7 +551,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr /*** Declare the overall tagged union ***/ var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.WriteLine("std::variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); - wmethodDecl = ws; // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) @@ -622,9 +616,6 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); } - // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes - ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); - // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); ws.WriteLine("\treturn left.v == right.v;\n}"); @@ -694,7 +685,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } - return new ClassWriter(DtT_protected, this, wmethodDecl, wdef, wmethodDecl, writer); + return null; } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { @@ -1865,10 +1856,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { - if (!thisIsPointer) { - wr.Write("*"); - } + protected override void EmitThis(TargetWriter wr) { wr.Write("this"); } diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 1e2cac158c0..339619ed36a 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -2208,7 +2208,7 @@ private bool IsExternMemberOfExternModule(MemberDecl/*?*/ member, TopLevelDecl c return member != null && cl is ClassDecl cdecl && cdecl.IsDefaultClass && Attributes.Contains(cdecl.Module.Attributes, "extern") && member.IsExtern(out _, out _); } - protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { + protected override void EmitThis(TargetWriter wr) { wr.Write("_this"); } diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 5568a369d28..2fe91f2085d 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -1083,7 +1083,7 @@ private bool IsJavaPrimitiveType(Type type) { return type.IsBoolType || type.IsCharType || AsNativeType(type) != null; } - protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { + protected override void EmitThis(TargetWriter wr) { var custom = (enclosingMethod != null && enclosingMethod.IsTailRecursive) || (enclosingFunction != null && enclosingFunction.IsTailRecursive) || diff --git a/Source/Dafny/Compiler-js.cs b/Source/Dafny/Compiler-js.cs index 6bbc1e01471..4c5d6b543a2 100644 --- a/Source/Dafny/Compiler-js.cs +++ b/Source/Dafny/Compiler-js.cs @@ -1359,7 +1359,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } } - protected override void EmitThis(TargetWriter wr, bool thisIsPointer) { + protected override void EmitThis(TargetWriter wr) { wr.Write("_this"); } diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 0fc50ea7407..d9aa094916a 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -34,7 +34,6 @@ public Compiler(ErrorReporter reporter) { protected Function enclosingFunction; // non-null when a function body is being translated FreshIdGenerator idGenerator = new FreshIdGenerator(); - private bool MakeThisPointer = true; static FreshIdGenerator compileNameIdGenerator = new FreshIdGenerator(); public static string FreshId() { @@ -517,7 +516,7 @@ protected virtual string IdProtect(string name) { return name; } protected abstract string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null); - protected abstract void EmitThis(TargetWriter wr, bool thisIsPointer); + protected abstract void EmitThis(TargetWriter wr); protected virtual void EmitNull(Type type, TargetWriter wr) { wr.Write("null"); } @@ -702,10 +701,7 @@ public void Compile(Program program, TargetWriter wrx) { } var w = DeclareDatatype(dt, wr); if (w != null) { - var oldMakeThisPointer = MakeThisPointer; - MakeThisPointer = false; CompileClassMembers(dt, w); - MakeThisPointer = oldMakeThisPointer; } } else if (d is IteratorDecl) { var iter = (IteratorDecl)d; @@ -983,7 +979,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { if (cf.Rhs == null) { var sw = EmitReturnExpr(w); // get { return this._{0}; } - EmitThis(sw, c is ClassDecl); + EmitThis(sw); sw.Write("._{0}", cf.CompileName); } else { CompileReturnBody(cf.Rhs, w, null); @@ -999,12 +995,12 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { { var sw = EmitReturnExpr(wGet); // get { return this._{0}; } - EmitThis(sw, c is ClassDecl); + EmitThis(sw); sw.Write("._{0}", f.CompileName); } { // set { this._{0} = value; } - EmitThis(wSet, c is ClassDecl); + EmitThis(wSet); wSet.Write("._{0}", f.CompileName); var sw = EmitAssignmentRhs(wSet); EmitSetterParameter(sw); @@ -1026,12 +1022,12 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { { var sw = EmitReturnExpr(wGet); // get { return this.{0}; } - EmitThis(sw, c is ClassDecl); + EmitThis(sw); sw.Write(".{0}", f.CompileName); } { // set { this.{0} = value; } - EmitThis(wSet, c is ClassDecl); + EmitThis(wSet); wSet.Write(".{0}", f.CompileName); var sw = EmitAssignmentRhs(wSet); EmitSetterParameter(sw); @@ -1090,7 +1086,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { CompileReturnBody(cf.Rhs, wBody, null); } else if (!cf.IsStatic) { var sw = EmitReturnExpr(wBody); - EmitMemberSelect(w => EmitThis(w, c is ClassDecl), cf, f.Type, internalAccess: true).EmitRead(sw); + EmitMemberSelect(EmitThis, cf, f.Type, internalAccess: true).EmitRead(sw); } else { EmitReturnExpr(DefaultValue(cf.Type, wBody, cf.tok, Usage.Ordinary, true), wBody); } @@ -3340,7 +3336,7 @@ protected void TrExpr(Expression expr, TargetWriter wr, bool inLetExprBody) { EmitLiteralExpr(wr, e); } else if (expr is ThisExpr) { - EmitThis(wr, MakeThisPointer); + EmitThis(wr); } else if (expr is IdentifierExpr) { var e = (IdentifierExpr)expr; diff --git a/Test/c++/LinearMaybe.s.dfy b/Test/c++/LinearMaybe.s.dfy index 993c0ed8dc0..10878d1f079 100644 --- a/Test/c++/LinearMaybe.s.dfy +++ b/Test/c++/LinearMaybe.s.dfy @@ -28,8 +28,3 @@ function method {:extern "LinearMaybe", "discard"} discard(linear m:maybe) requires !has(m) } - -method Main() { - print "Maybe\n"; -} - diff --git a/Test/c++/LinearMaybe.s.expect b/Test/c++/LinearMaybe.s.expect deleted file mode 100644 index 4899c072edc..00000000000 --- a/Test/c++/LinearMaybe.s.expect +++ /dev/null @@ -1 +0,0 @@ -Maybe diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 1d623332f83..9f7f552760d 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -137,29 +137,6 @@ method TestNestedLet() { var Level2(u, Level1(v)) := x; } -// Test datatype methods -datatype Car = Car(passengers: bool) | Toy(t:bool) { - method Free() { - if this.Car? { - var Car(_) := this; - } - } - - method LoadPassengers(b:bool) returns (self: Car) - { - if this.Car? { - var Car(passengers) := this; - } - self := Car(b); - } -} - -method CarTest() { - var c := Car(true); - c := c.LoadPassengers(false); - c.Free(); -} - method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); diff --git a/Test/c++/functions.expect b/Test/c++/functions.expect index 21245e8a9dd..e69de29bb2d 100644 --- a/Test/c++/functions.expect +++ b/Test/c++/functions.expect @@ -1,3 +0,0 @@ -6 -7 -8 diff --git a/Test/c++/run_cpp_tests.py b/Test/c++/run_cpp_tests.py index 9dd35fdc36a..5978f47fd64 100644 --- a/Test/c++/run_cpp_tests.py +++ b/Test/c++/run_cpp_tests.py @@ -34,8 +34,6 @@ def run_test(test): def run_tests(tests): for test in tests: - if test == "LinearSequence.s": - continue run_test(test) if __name__ == "__main__": From 2928a9004d680af661d2d8279b25c41b3a1003df Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 6 Oct 2020 22:42:44 -0400 Subject: [PATCH 312/573] New fix for compilation of datatype member functions --- Source/Dafny/Compiler-cpp.cs | 14 +++++++++++++- Test/c++/LinearMaybe.s.dfy | 5 +++++ Test/c++/datatypes.dfy | 23 +++++++++++++++++++++++ Test/c++/functions.expect | 3 +++ Test/c++/run_cpp_tests.py | 2 ++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 5a391ce742d..831c6802d3a 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -403,6 +403,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr this.modDeclWr.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); var wdecl = this.dtDeclWr; var wdef = writer; + BlockTargetWriter wmethodDecl = null; if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations @@ -415,6 +416,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr if (dt.Ctors.Count == 1) { var ctor = dt.Ctors[0]; var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); + wmethodDecl = ws; // Declare the struct members var i = 0; @@ -450,6 +452,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } + // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes + ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); + // Overload the comparison operator ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, TemplateMethod(dt.TypeArgs)); var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs))); @@ -551,6 +556,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr /*** Declare the overall tagged union ***/ var ws = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), DtT_protected), ";"); ws.WriteLine("std::variant<{0}> v;", Util.Comma(dt.Ctors, ctor => DatatypeSubStructName(ctor, true))); + wmethodDecl = ws; // Declare static "constructors" for each Dafny constructor foreach (var ctor in dt.Ctors) @@ -616,6 +622,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr DeclareTemplate(dt.TypeArgs), name, DtT_protected, TemplateMethod(dt.TypeArgs), holds); } + // Overload the -> operator, since Dafny's Compiler.cs wants to treat datatypes as classes + ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); + // Overload the comparison operator ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); ws.WriteLine("\treturn left.v == right.v;\n}"); @@ -685,7 +694,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } } - return null; + return new ClassWriter(DtT_protected, this, wmethodDecl, wdef, wmethodDecl, writer); } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, TargetWriter wr) { @@ -1857,6 +1866,9 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } protected override void EmitThis(TargetWriter wr) { + if (thisContext is IndDatatypeDecl) { + wr.Write("*"); + } wr.Write("this"); } diff --git a/Test/c++/LinearMaybe.s.dfy b/Test/c++/LinearMaybe.s.dfy index 10878d1f079..993c0ed8dc0 100644 --- a/Test/c++/LinearMaybe.s.dfy +++ b/Test/c++/LinearMaybe.s.dfy @@ -28,3 +28,8 @@ function method {:extern "LinearMaybe", "discard"} discard(linear m:maybe) requires !has(m) } + +method Main() { + print "Maybe\n"; +} + diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 9f7f552760d..1d623332f83 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -137,6 +137,29 @@ method TestNestedLet() { var Level2(u, Level1(v)) := x; } +// Test datatype methods +datatype Car = Car(passengers: bool) | Toy(t:bool) { + method Free() { + if this.Car? { + var Car(_) := this; + } + } + + method LoadPassengers(b:bool) returns (self: Car) + { + if this.Car? { + var Car(passengers) := this; + } + self := Car(b); + } +} + +method CarTest() { + var c := Car(true); + c := c.LoadPassengers(false); + c.Free(); +} + method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); diff --git a/Test/c++/functions.expect b/Test/c++/functions.expect index e69de29bb2d..21245e8a9dd 100644 --- a/Test/c++/functions.expect +++ b/Test/c++/functions.expect @@ -0,0 +1,3 @@ +6 +7 +8 diff --git a/Test/c++/run_cpp_tests.py b/Test/c++/run_cpp_tests.py index 5978f47fd64..9dd35fdc36a 100644 --- a/Test/c++/run_cpp_tests.py +++ b/Test/c++/run_cpp_tests.py @@ -34,6 +34,8 @@ def run_test(test): def run_tests(tests): for test in tests: + if test == "LinearSequence.s": + continue run_test(test) if __name__ == "__main__": From 28e341e5f30145456874186d581dcf16ada38766 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 6 Oct 2020 22:45:53 -0400 Subject: [PATCH 313/573] Ignore some files --- Test/c++/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 Test/c++/.gitignore diff --git a/Test/c++/.gitignore b/Test/c++/.gitignore new file mode 100644 index 00000000000..6814f507564 --- /dev/null +++ b/Test/c++/.gitignore @@ -0,0 +1 @@ +*dSYM From dae4154594baaad7a819e54f8fca920cc7918f8e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 7 Oct 2020 09:50:15 -0400 Subject: [PATCH 314/573] Fix for matching on datatypes --- Source/Dafny/Compiler-cpp.cs | 6 +++++- Test/c++/datatypes.dfy | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 0b62b5bbea2..65d12128aaa 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -2156,7 +2156,11 @@ protected override TargetWriter EmitBetaRedex(List boundVars, List typeArgs, Type bvType, TargetWriter wr) { diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 1d623332f83..5c7185673ab 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -143,6 +143,10 @@ datatype Car = Car(passengers: bool) | Toy(t:bool) { if this.Car? { var Car(_) := this; } + match this { + case Car(_) => print "It's a car\n"; + case Toy(_) => print "No, it's a toy\n"; + } } method LoadPassengers(b:bool) returns (self: Car) From b2dbdc86499d2260c898f196bd0812ad48dbf921 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 13 Oct 2020 11:51:03 -0400 Subject: [PATCH 315/573] Treat inout parameters as formal parameters --- Source/Dafny/Compiler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 6b6d0c7ae24..229501398e0 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -845,7 +845,7 @@ protected int WriteFormals(string sep, List formals, TextWriter wr) { foreach (Formal arg in formals) { if (!arg.IsGhost) { string name = FormalName(arg, i); - if (DeclareFormal(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam, wr)) { + if (DeclareFormal(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam | arg.Inout, wr)) { sep = ", "; } i++; From 46ed3d71b869967d80eb0860e445c5bc353e8109 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 13 Oct 2020 11:51:23 -0400 Subject: [PATCH 316/573] Better declaration of extern types --- Source/Dafny/Compiler-cpp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 65d12128aaa..b8d87b9786d 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1358,7 +1358,7 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, TemplateMethod(d.TypeArgs)); + modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1};", DeclareTemplate(d.TypeArgs), d.Name); } else if (compileTypeHint.AsStringLiteral() == "predefined") { // This type already exists, so no declaration needed } else { From 7e94516a48d44ed8e2abf9d41e251026fad4de04 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 13 Oct 2020 11:51:41 -0400 Subject: [PATCH 317/573] Small test file --- Test/c++/LinearInout.dfy | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Test/c++/LinearInout.dfy diff --git a/Test/c++/LinearInout.dfy b/Test/c++/LinearInout.dfy new file mode 100644 index 00000000000..3a20a46a875 --- /dev/null +++ b/Test/c++/LinearInout.dfy @@ -0,0 +1,53 @@ + +include "LinearSequence.s.dfy" + +module LinearInout { + +import opened Types +import opened LinearMaybe +import opened LinearLSeq + +linear datatype Val0 = Leaf(linear x:bool) //| Branch(linear v:Val0) + +method {:extern} do(linear inout m:Val0) + +method test(linear inout m:Val0) +{ + do(inout m); +} + +/* +function lseqs(l:lseq):(s:seq) + ensures rank_is_less_than(s, l) + ensures |s| == |lseqs_raw(l)| +{ + var s := seq(|lseqs_raw(l)|, i requires 0 <= i < |lseqs_raw(l)| => read(lseqs_raw(l)[i])); + axiom_lseqs_rank(l, s); + s +} + +function lseq_has(l:lseq):(s:seq) + ensures |s| == |lseqs_raw(l)| +{ + seq(|lseqs_raw(l)|, i requires 0 <= i < |lseqs_raw(l)| => has(lseqs_raw(l)[i])) +} + +method lseq_swap_inout(linear inout s:lseq, i:uint64, linear a1:A) returns(linear a2:A) + requires i as int < |lseqs(old_s)| + requires lseq_has(old_s)[i] +// ensures a2 == lseqs(s)[i] +// ensures lseqs(s) == lseqs(old_s)[i as int := a1] +// requires i as nat < |old_s| && i as nat in old_s +// ensures a2 == s[i as nat] +// ensures lseq_has(s) == lseq_has(old_s) +// ensures lseqs(s) == lseqs(old_s)[i as nat := a1] +{ + //s, a2 := lseq_swap(s, i, a1); + linear var x1:maybe := give(a1); + linear var (s2tmp, x2) := lseq_swap_raw_fun(s, i, x1); + s := s2tmp; + a2 := unwrap(x2); +} +*/ + +} From 99689176d478d6488a7345049e533d7e4a4b41cb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 15 Oct 2020 14:38:38 -0400 Subject: [PATCH 318/573] Small fix to eliminate a warning about unreachable code --- Source/Dafny/Linear.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index d4ccdff51e7..8ed2d523d97 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -434,8 +434,8 @@ public static void Rewrite(ModuleDefinition module) { } else { varDeclStmt.Locals.RemoveRange(varDeclStmt.Locals.Count - argCount, argCount); varDeclStmt.Update.Lhss.RemoveRange(varDeclStmt.Update.Lhss.Count - argCount, argCount); - throw new NotImplementedException("TODO: Inout this may not be supported, but I forget what's this case."); Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (b) as {0}", Printer.StatementToString(stmtList[s])); + throw new NotImplementedException("TODO: Inout this may not be supported, but I forget what's this case."); } for (int c = 0; c < argCount; ++c) { Util.OxideDebug(stmtList[s + 1].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s + 1])); From fc36b3e0b52d7758b6125206b749591426e894bd Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Sun, 18 Oct 2020 20:22:15 +0200 Subject: [PATCH 319/573] attempt to fix compilation for inout arguments/assign --- Source/Dafny/Compiler-Csharp.cs | 6 +++--- Source/Dafny/Compiler-cpp.cs | 10 +++++----- Source/Dafny/Compiler-go.cs | 2 +- Source/Dafny/Compiler-java.cs | 6 +++--- Source/Dafny/Compiler-js.cs | 6 +++--- Source/Dafny/Compiler.cs | 5 +++-- Source/Dafny/DafnyAst.cs | 4 ++-- Source/Dafny/Linear.cs | 17 +++++++++++++---- Test/c++/LinearInout.dfy | 7 +++++-- 9 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index dd3117cc09b..36485fdbbb9 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -738,7 +738,7 @@ public void Finish() { } if (customReceiver) { var nt = m.EnclosingClass; var receiverType = UserDefinedType.FromTopLevelDecl(m.tok, nt); - DeclareFormal("", "_this", receiverType, m.tok, Usage.Ordinary, true, wr); + DeclareFormal("", "_this", receiverType, m.tok, Usage.Ordinary, true, false, wr); nIns = 1; } else { nIns = 0; @@ -776,7 +776,7 @@ public void Finish() { } if (customReceiver) { var nt = member.EnclosingClass; var receiverType = UserDefinedType.FromTopLevelDecl(tok, nt); - DeclareFormal("", "_this", receiverType, tok, Usage.Ordinary, true, wr); + DeclareFormal("", "_this", receiverType, tok, Usage.Ordinary, true, false, wr); } WriteFormals(customReceiver ? ", " : "", formals, wr); if (!createBody || hasDllImportAttribute) { @@ -1079,7 +1079,7 @@ protected void DeclareField(string name, bool isStatic, bool isConst, Type type, isConst ? "readonly " : ""); } - protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr) { + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr) { wr.Write("{0}{1}{2} {3}", prefix, isInParam ? "" : "out ", TypeName(type, wr, tok), name); return true; } diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index b8d87b9786d..9aacb591d15 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1377,16 +1377,16 @@ protected void DeclareField(string className, List targs, string } } - private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam) { + private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam) { if (isInParam) { - return String.Format("{0}{2} {1}", prefix, name, TypeName(type, null, tok, usage:usage)); + return String.Format("{0}{2}{3} {1}", prefix, name, TypeName(type, null, tok, usage:usage), isInoutParam ? "&" : ""); } else { return null; } } - protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr) { - var formal_str = DeclareFormalString(prefix, name, type, tok, usage, isInParam); + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr) { + var formal_str = DeclareFormalString(prefix, name, type, tok, usage, isInParam, isInoutParam); if (formal_str != null) { wr.Write(formal_str); return true; @@ -1402,7 +1402,7 @@ private string DeclareFormals(List formals) { foreach (Formal arg in formals) { if (!arg.IsGhost) { string name = FormalName(arg, i); - string decl = DeclareFormalString(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam); + string decl = DeclareFormalString(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam, arg.Inout); if (decl != null) { ret += decl; sep = ", "; diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 339619ed36a..433585281ff 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -1656,7 +1656,7 @@ protected void DeclareField(string name, bool isExtern, bool isStatic, bool isCo } } - protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr) { + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr) { if (isInParam) { wr.Write("{0}{1} {2}", prefix, name, TypeName(type, wr, tok)); return true; diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index 42e0acf1fba..7e6442cae5e 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -486,7 +486,7 @@ protected BlockTargetWriter CreateMethod(Method m, bool createBody, TargetWriter var nTypes = WriteRuntimeTypeDescriptorsFormals(m, m.TypeArgs, useAllTypeArgs: true, wr); var sep = nTypes > 0 ? ", " : ""; if (customReceiver) { - DeclareFormal(sep, "_this", receiverType, m.tok, Usage.Ordinary, true, wr); + DeclareFormal(sep, "_this", receiverType, m.tok, Usage.Ordinary, true, false, wr); sep = ", "; } WriteFormals(sep, m.Ins, wr); @@ -550,7 +550,7 @@ protected BlockTargetWriter CreateConstructor(TopLevelDeclWithMembers c, TargetW var sep = ""; var argCount = 0; if (customReceiver) { - DeclareFormal(sep, "_this", receiverType, tok, Usage.Ordinary, true, wr); + DeclareFormal(sep, "_this", receiverType, tok, Usage.Ordinary, true, false, wr); sep = ", "; argCount++; } @@ -780,7 +780,7 @@ protected override string TypeNameArrayBrackets(int dims) { return name + "]"; } - protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr) { + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr) { if (!isInParam) return false; wr.Write($"{prefix}{TypeName(type, wr, tok)} {name}"); return true; diff --git a/Source/Dafny/Compiler-js.cs b/Source/Dafny/Compiler-js.cs index 4c5d6b543a2..17423736b79 100644 --- a/Source/Dafny/Compiler-js.cs +++ b/Source/Dafny/Compiler-js.cs @@ -587,7 +587,7 @@ public void Finish() { } if (customReceiver) { var nt = m.EnclosingClass; var receiverType = UserDefinedType.FromTopLevelDecl(m.tok, nt); - DeclareFormal(nTypes != 0 ? ", " : "", "_this", receiverType, m.tok, Usage.Ordinary, true, wr); + DeclareFormal(nTypes != 0 ? ", " : "", "_this", receiverType, m.tok, Usage.Ordinary, true, false, wr); } int nIns = WriteFormals(nTypes != 0 || customReceiver ? ", " : "", m.Ins, wr); var w = wr.NewBlock(")"); @@ -616,7 +616,7 @@ protected override BlockTargetWriter EmitMethodReturns(Method m, BlockTargetWrit if (customReceiver) { var nt = member.EnclosingClass; var receiverType = UserDefinedType.FromTopLevelDecl(tok, nt); - DeclareFormal(nTypes != 0 ? ", " : "", "_this", receiverType, tok, Usage.Ordinary, true, wr); + DeclareFormal(nTypes != 0 ? ", " : "", "_this", receiverType, tok, Usage.Ordinary, true, false, wr); } int nIns = WriteFormals(nTypes != 0 || customReceiver ? ", " : "", formals, wr); var w = wr.NewBlock(")", ";"); @@ -980,7 +980,7 @@ protected void DeclareField(string name, bool isStatic, bool isConst, Type type, } } - protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr) { + protected override bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr) { if (isInParam) { wr.Write("{0}{1}", prefix, name); return true; diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 229501398e0..a5132aa0df5 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -241,7 +241,7 @@ protected virtual Type NativeForm(Type type) { return type; } - protected abstract bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, TextWriter wr); + protected abstract bool DeclareFormal(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam, TextWriter wr); /// /// If "leaveRoomForRhs" is false and "rhs" is null, then generates: /// type name; @@ -845,7 +845,7 @@ protected int WriteFormals(string sep, List formals, TextWriter wr) { foreach (Formal arg in formals) { if (!arg.IsGhost) { string name = FormalName(arg, i); - if (DeclareFormal(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam | arg.Inout, wr)) { + if (DeclareFormal(sep, name, arg.Type, arg.tok, arg.Usage, arg.InParam | arg.Inout, arg.Inout, wr)) { sep = ", "; } i++; @@ -2027,6 +2027,7 @@ void TrStmt(Statement stmt, TargetWriter wr) { } } } else if (stmt is AssignStmt) { + /* TODO DEBUG */ Console.WriteLine("TODO DEBUG " + Printer.StatementToString(stmt)); var s = (AssignStmt)stmt; Contract.Assert(!(s.Lhs is SeqSelectExpr) || ((SeqSelectExpr)s.Lhs).SelectOne); // multi-element array assignments are not allowed if (s.Rhs is HavocRhs) { diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index ce380188b71..a8234e28952 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -5369,7 +5369,7 @@ public string Name { public string DisplayName { get { return LocalVariable.DisplayNameHelper(this); } } - private string uniqueName; + protected string uniqueName; public string UniqueName { get { return uniqueName; @@ -5499,7 +5499,7 @@ public override bool IsMutable { } public readonly bool IsOld; - public readonly bool Inout; + public bool Inout; public Formal(IToken tok, string name, Type type, bool inParam, Usage usage, bool isOld = false, bool inout = false) : base(tok, name, type, usage) { diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 8ed2d523d97..4aa15bdde93 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -368,15 +368,18 @@ public static void Rewrite(ModuleDefinition module) { var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); var inoutArgCount = inoutInArgs.Count; + var inoutOutArgs = method.Outs.GetRange(method.Outs.Count - inoutArgCount, inoutArgCount); method.Outs.RemoveRange(method.Outs.Count - inoutArgCount, inoutArgCount); const String oldPrefix = "old_"; foreach (var i in inoutInArgs) { var arg = method.Ins[i]; Contract.Assert(arg.Name.StartsWith(oldPrefix)); - var rewrittenArg = new Formal( - arg.Tok, arg.Name.Substring(oldPrefix.Length), arg.Type, arg.InParam, - arg.Usage, arg.IsOld, arg.Inout); - method.Ins[i] = rewrittenArg; + // var rewrittenArg = new Formal( + // arg.Tok, inoutOutArgs[i].Name, arg.Type, arg.InParam, arg.Usage, arg.IsOld, arg.Inout, + // inoutOutArgs[i].UniqueName); + var inoutArg = inoutOutArgs[i]; + inoutArg.Inout = true; + method.Ins[i] = inoutArg; } if (inoutArgCount > 0) { method.Req.Clear(); @@ -412,6 +415,12 @@ public static void Rewrite(ModuleDefinition module) { updStmt.InoutAssign = usage == Usage.Ordinary ? InoutAssign.Ordinary : ( usage == Usage.Ghost ? InoutAssign.Ghost : throw new Exception("invalid InoutAssignUsage")); + // var resolvedAssignStmt = (AssignStmt) updStmt.ResolvedStatements[0]; + var generatedTok = new AutoGeneratedToken(stmtList[s].Tok); + var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); + updStmt.ResolvedStatements.Clear(); + updStmt.ResolvedStatements.Add(resolvedAssignStmt); + Console.WriteLine(targetExpr.Resolved); Util.OxideDebug(stmtList[s].Tok, " (assign) rewritten as {0} ({1})", Printer.StatementToString(stmtList[s]), updStmt.InoutAssign); } else if (varDeclStmt != null && varDeclStmt.InoutRewrittenArgs.HasValue) { diff --git a/Test/c++/LinearInout.dfy b/Test/c++/LinearInout.dfy index 3a20a46a875..24118926145 100644 --- a/Test/c++/LinearInout.dfy +++ b/Test/c++/LinearInout.dfy @@ -9,11 +9,14 @@ import opened LinearLSeq linear datatype Val0 = Leaf(linear x:bool) //| Branch(linear v:Val0) -method {:extern} do(linear inout m:Val0) +method do_something(linear inout m:Val0) +{ + inout m.x := true; +} method test(linear inout m:Val0) { - do(inout m); + do_something(inout m); } /* From 0c181d9eb1ebda259e3eda9ffe7a31a3ee799bfc Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 10:27:43 +0200 Subject: [PATCH 320/573] fix inadvertent aliasing in Cloner --- Source/Dafny/Cloner.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index b4877b9579f..ff8a6e4b91a 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -650,7 +650,11 @@ public virtual Statement CloneStmt(Statement stmt) { var s = (UpdateStmt)stmt; var clonedUpdateStmt = new UpdateStmt(Tok(s.Tok), Tok(s.EndTok), s.Lhss.ConvertAll(CloneExpr), s.Rhss.ConvertAll(CloneRHS), s.CanMutateKnownState); clonedUpdateStmt.AssumeRhsCompilable = s.AssumeRhsCompilable; - clonedUpdateStmt.InoutAssignTarget = s.InoutAssignTarget; + if (s.InoutAssignTarget.HasValue) { + clonedUpdateStmt.InoutAssignTarget = (s.InoutAssignTarget.Value.Item1, CloneExpr(s.InoutAssignTarget.Value.Item2)); + } else { + clonedUpdateStmt.InoutAssignTarget = null; + } r = clonedUpdateStmt; } else if (stmt is AssignOrReturnStmt) { From f2c9e0be319930e171de4726507661cd851b4bd7 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 10:28:01 +0200 Subject: [PATCH 321/573] uniqueName needn't be protected anymore --- Source/Dafny/DafnyAst.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index a8234e28952..dd1a178c24e 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -5369,7 +5369,7 @@ public string Name { public string DisplayName { get { return LocalVariable.DisplayNameHelper(this); } } - protected string uniqueName; + private string uniqueName; public string UniqueName { get { return uniqueName; From 525ae7a71bfe01a43dd8ba26bbbc7d1216d894cc Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 11:20:19 +0200 Subject: [PATCH 322/573] fix resolved statement for inout calls --- Source/Dafny/Linear.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 4aa15bdde93..47d2be9d3a3 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -418,6 +418,7 @@ public static void Rewrite(ModuleDefinition module) { // var resolvedAssignStmt = (AssignStmt) updStmt.ResolvedStatements[0]; var generatedTok = new AutoGeneratedToken(stmtList[s].Tok); var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); + Contract.Assert(updStmt.ResolvedStatements.Count == 1); updStmt.ResolvedStatements.Clear(); updStmt.ResolvedStatements.Add(resolvedAssignStmt); Console.WriteLine(targetExpr.Resolved); @@ -439,6 +440,9 @@ public static void Rewrite(ModuleDefinition module) { applySuffix.Args.RemoveAt(0); exprRhs.Expr.Inout = true; } + Contract.Assert(updateStmt.ResolvedStatements.Count == 1); + var resolvedCallStmt = (CallStmt) updateStmt.ResolvedStatements[0]; + resolvedCallStmt.Lhs.RemoveRange(resolvedCallStmt.Lhs.Count - argCount, argCount); Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (a) as {0}", Printer.StatementToString(stmtList[s])); } else { varDeclStmt.Locals.RemoveRange(varDeclStmt.Locals.Count - argCount, argCount); From f04b07b4809c5dcfc0258aebe434168d985c70ce Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 11:22:07 +0200 Subject: [PATCH 323/573] remove debug Console.WriteLine calls --- Source/Dafny/Compiler.cs | 1 - Source/Dafny/Linear.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index a5132aa0df5..3710ce1b0f4 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -2027,7 +2027,6 @@ void TrStmt(Statement stmt, TargetWriter wr) { } } } else if (stmt is AssignStmt) { - /* TODO DEBUG */ Console.WriteLine("TODO DEBUG " + Printer.StatementToString(stmt)); var s = (AssignStmt)stmt; Contract.Assert(!(s.Lhs is SeqSelectExpr) || ((SeqSelectExpr)s.Lhs).SelectOne); // multi-element array assignments are not allowed if (s.Rhs is HavocRhs) { diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 47d2be9d3a3..c785e43968e 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -421,7 +421,6 @@ public static void Rewrite(ModuleDefinition module) { Contract.Assert(updStmt.ResolvedStatements.Count == 1); updStmt.ResolvedStatements.Clear(); updStmt.ResolvedStatements.Add(resolvedAssignStmt); - Console.WriteLine(targetExpr.Resolved); Util.OxideDebug(stmtList[s].Tok, " (assign) rewritten as {0} ({1})", Printer.StatementToString(stmtList[s]), updStmt.InoutAssign); } else if (varDeclStmt != null && varDeclStmt.InoutRewrittenArgs.HasValue) { From 96812af30bde94a36e26fec46092d25d221f5d51 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 11:37:49 +0200 Subject: [PATCH 324/573] add Main to LinearInout test --- Test/c++/LinearInout.dfy | 13 ++++++++++++- Test/c++/LinearMaybe.s.dfy | 4 ---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Test/c++/LinearInout.dfy b/Test/c++/LinearInout.dfy index 24118926145..4d3452fe31a 100644 --- a/Test/c++/LinearInout.dfy +++ b/Test/c++/LinearInout.dfy @@ -7,18 +7,29 @@ import opened Types import opened LinearMaybe import opened LinearLSeq -linear datatype Val0 = Leaf(linear x:bool) //| Branch(linear v:Val0) +linear datatype Val0 = Leaf(x:bool) //| Branch(linear v:Val0) method do_something(linear inout m:Val0) +ensures m.x == true { inout m.x := true; } method test(linear inout m:Val0) +ensures m.x == true { do_something(inout m); } +method Main() { + linear var v := Leaf(false); + do_something(inout v); + var b := v.x; + assert b; + print b; + linear var Leaf(_) := v; +} + /* function lseqs(l:lseq):(s:seq) ensures rank_is_less_than(s, l) diff --git a/Test/c++/LinearMaybe.s.dfy b/Test/c++/LinearMaybe.s.dfy index 993c0ed8dc0..605f5b16937 100644 --- a/Test/c++/LinearMaybe.s.dfy +++ b/Test/c++/LinearMaybe.s.dfy @@ -29,7 +29,3 @@ function method {:extern "LinearMaybe", "discard"} discard(linear m:maybe) } -method Main() { - print "Maybe\n"; -} - From 01cbe7ddf83a275bad79ad57ae5b13334e0fad9c Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 19 Oct 2020 12:25:37 +0200 Subject: [PATCH 325/573] linear inout compilation support for datatype methods --- Source/Dafny/Compiler-cpp.cs | 5 +++++ Source/Dafny/Linear.cs | 4 ++++ Test/c++/LinearInout2.dfy | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 Test/c++/LinearInout2.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 9aacb591d15..1f99f91a58c 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -897,6 +897,11 @@ public void Finish() { } EmitReturn(m.Outs, r); w.BodySuffix = r.ToString(); } + + if (m.HasInoutThis) { + // TODO(andrea) don't use type inference + w.WriteLine("auto& self = *this;"); + } return w; } diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index c785e43968e..58e14ad078b 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -389,6 +389,10 @@ public static void Rewrite(ModuleDefinition module) { var body = method.Body?.Body; if (body != null) { + if (method.HasInoutThis) { + Util.OxideDebug(body[0].Tok, " removing {0}", Printer.StatementToString(body[0])); + body.RemoveRange(0, 1); + } for (int i = 0; i < inoutArgCount; i++) { Util.OxideDebug(body[i].Tok, " removing {0}", Printer.StatementToString(body[i])); } diff --git a/Test/c++/LinearInout2.dfy b/Test/c++/LinearInout2.dfy new file mode 100644 index 00000000000..f455dc946f8 --- /dev/null +++ b/Test/c++/LinearInout2.dfy @@ -0,0 +1,32 @@ +include "LinearSequence.s.dfy" + +module LinearInout2 { + +import opened Types +import opened LinearMaybe +import opened LinearLSeq + +linear datatype Val0 = Leaf(x:bool) { + linear inout method flip_inner() + ensures self.x == !old_self.x + { + inout self.x := !self.x; + } + + linear inout method flip() + ensures self.x == !old_self.x + { + inout self.flip_inner(); + } +} + +method Main() { + linear var v := Leaf(true); + inout v.flip(); + var b := v.x; + assert !b; + print b; + linear var Leaf(_) := v; +} + +} From daf30d850e24366ee69a2e7863d5f6c74934a366 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 23 Oct 2020 16:01:32 +0200 Subject: [PATCH 326/573] remove commented lines --- Source/Dafny/Linear.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 58e14ad078b..94839c50b9a 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -374,9 +374,6 @@ public static void Rewrite(ModuleDefinition module) { foreach (var i in inoutInArgs) { var arg = method.Ins[i]; Contract.Assert(arg.Name.StartsWith(oldPrefix)); - // var rewrittenArg = new Formal( - // arg.Tok, inoutOutArgs[i].Name, arg.Type, arg.InParam, arg.Usage, arg.IsOld, arg.Inout, - // inoutOutArgs[i].UniqueName); var inoutArg = inoutOutArgs[i]; inoutArg.Inout = true; method.Ins[i] = inoutArg; @@ -419,7 +416,6 @@ public static void Rewrite(ModuleDefinition module) { updStmt.InoutAssign = usage == Usage.Ordinary ? InoutAssign.Ordinary : ( usage == Usage.Ghost ? InoutAssign.Ghost : throw new Exception("invalid InoutAssignUsage")); - // var resolvedAssignStmt = (AssignStmt) updStmt.ResolvedStatements[0]; var generatedTok = new AutoGeneratedToken(stmtList[s].Tok); var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); Contract.Assert(updStmt.ResolvedStatements.Count == 1); From 59e7982975155cee2c8fadc2958ed782cf5c1cf8 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 23 Oct 2020 16:41:32 +0200 Subject: [PATCH 327/573] attempt to implement missing case in compilation rewriter --- Source/Dafny/Linear.cs | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 94839c50b9a..ebd68515a03 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -427,27 +427,38 @@ public static void Rewrite(ModuleDefinition module) { var argCount = varDeclStmt.InoutRewrittenArgs.Value; Util.OxideDebug(stmtList[s].Tok, " (apply) undoing rewrite for {0} args starting {1} (inline update {2})", argCount, Printer.StatementToString(stmtList[s]), varDeclStmt.Update != null ? "present" : "absent"); - if (varDeclStmt.Update == null) { - Util.OxideDebug(stmtList[s].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s])); - stmtList.RemoveAt(s); - var updateStmt = (UpdateStmt) stmtList[s]; - updateStmt.Lhss.RemoveRange(updateStmt.Lhss.Count - argCount, argCount); - var exprRhs = (ExprRhs) updateStmt.Rhss[0]; + + void RewriteAUpdateStmt(UpdateStmt updateStmt) { + var exprRhs = (ExprRhs)updateStmt.Rhss[0]; var applySuffix = exprRhs.Expr as ApplySuffix; if (applySuffix != null && applySuffix.RewrittenAsInoutThis) { Contract.Assert(updateStmt.Rhss.Count == 1); applySuffix.Args.RemoveAt(0); exprRhs.Expr.Inout = true; } - Contract.Assert(updateStmt.ResolvedStatements.Count == 1); - var resolvedCallStmt = (CallStmt) updateStmt.ResolvedStatements[0]; - resolvedCallStmt.Lhs.RemoveRange(resolvedCallStmt.Lhs.Count - argCount, argCount); + if (updateStmt.ResolvedStatements.Count == 1) { + var resolvedCallStmt = (CallStmt)updateStmt.ResolvedStatements[0]; + resolvedCallStmt.Lhs.RemoveRange(resolvedCallStmt.Lhs.Count - argCount, argCount); + } else { + // TODO(andrea) should this case ever happen? + Util.OxideDebug(stmtList[s].Tok, " (apply) DEBUG no resolved statement for {0}", Printer.StatementToString(updateStmt)); + } + } + + if (varDeclStmt.Update == null) { + Util.OxideDebug(stmtList[s].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s])); + stmtList.RemoveAt(s); + var updateStmt = (UpdateStmt) stmtList[s]; + updateStmt.Lhss.RemoveRange(updateStmt.Lhss.Count - argCount, argCount); + RewriteAUpdateStmt(updateStmt); Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (a) as {0}", Printer.StatementToString(stmtList[s])); } else { varDeclStmt.Locals.RemoveRange(varDeclStmt.Locals.Count - argCount, argCount); varDeclStmt.Update.Lhss.RemoveRange(varDeclStmt.Update.Lhss.Count - argCount, argCount); + // TODO(andrea) deduplicate + var updateStmt = (UpdateStmt)varDeclStmt.Update; + RewriteAUpdateStmt(updateStmt); Util.OxideDebug(stmtList[s].Tok, " (apply) rewritten (b) as {0}", Printer.StatementToString(stmtList[s])); - throw new NotImplementedException("TODO: Inout this may not be supported, but I forget what's this case."); } for (int c = 0; c < argCount; ++c) { Util.OxideDebug(stmtList[s + 1].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s + 1])); @@ -458,6 +469,7 @@ public static void Rewrite(ModuleDefinition module) { } } } + } } } From ba9b19d71e78010f64cb249b9b0b01c345c0e76f Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Sat, 24 Oct 2020 02:06:49 +0200 Subject: [PATCH 328/573] attempt to partly fix rewriting for compilation of resolved statements --- Source/Dafny/Linear.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index ebd68515a03..ae3ba414e4f 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -402,11 +402,15 @@ public static void Rewrite(ModuleDefinition module) { var varDeclStmt = stmt as VarDeclStmt; if (updStmt != null && updStmt.AssumeRhsCompilable && updStmt.InoutAssignTarget.HasValue) { var (usage, targetExpr) = updStmt.InoutAssignTarget.Value; + var debugTargetExpr = Printer.ExprToString(targetExpr); + var debugRhs = Printer.ExprToString(((ExprRhs) updStmt.Rhss[0]).Expr).Contains("lseq_take_inout"); Util.OxideDebug(stmtList[s - 1].Tok, " (assign) removing {0}", Printer.StatementToString(stmtList[s - 1])); - var rhs = (ExprRhs) ((UpdateStmt) ((VarDeclStmt) stmtList[s - 1]).Update).Rhss[0]; + var innerUpdStmt = (UpdateStmt) ((VarDeclStmt) stmtList[s - 1]).Update; + var rhs = (ExprRhs) innerUpdStmt.Rhss[0]; + Contract.Assert(innerUpdStmt.ResolvedStatements.Count == 1); + var resolvedRhs = innerUpdStmt.ResolvedStatements[0]; stmtList.RemoveAt(s - 1); s--; - Util.OxideDebug(stmtList[s].Tok, " (assign) {0} has target {1}, rhs {2}", Printer.StatementToString(stmtList[s]), Printer.ExprToString(targetExpr), Printer.ExprToString(rhs.Expr)); updStmt.Lhss.Clear(); @@ -417,10 +421,15 @@ public static void Rewrite(ModuleDefinition module) { usage == Usage.Ghost ? InoutAssign.Ghost : throw new Exception("invalid InoutAssignUsage")); var generatedTok = new AutoGeneratedToken(stmtList[s].Tok); - var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); Contract.Assert(updStmt.ResolvedStatements.Count == 1); updStmt.ResolvedStatements.Clear(); - updStmt.ResolvedStatements.Add(resolvedAssignStmt); + if (resolvedRhs is CallStmt callStmt) { + updStmt.ResolvedStatements.Add(resolvedRhs); + } else { + var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); + updStmt.ResolvedStatements.Add(resolvedAssignStmt); + } + Util.OxideDebug(stmtList[s].Tok, " (assign) rewritten as {0} ({1})", Printer.StatementToString(stmtList[s]), updStmt.InoutAssign); } else if (varDeclStmt != null && varDeclStmt.InoutRewrittenArgs.HasValue) { @@ -430,6 +439,7 @@ public static void Rewrite(ModuleDefinition module) { void RewriteAUpdateStmt(UpdateStmt updateStmt) { var exprRhs = (ExprRhs)updateStmt.Rhss[0]; + var debugRhs = Printer.ExprToString(exprRhs.Expr).Contains("lseq_take_inout"); var applySuffix = exprRhs.Expr as ApplySuffix; if (applySuffix != null && applySuffix.RewrittenAsInoutThis) { Contract.Assert(updateStmt.Rhss.Count == 1); @@ -446,6 +456,7 @@ void RewriteAUpdateStmt(UpdateStmt updateStmt) { } if (varDeclStmt.Update == null) { + // TODO(andrea) this case should probably be impossible Util.OxideDebug(stmtList[s].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s])); stmtList.RemoveAt(s); var updateStmt = (UpdateStmt) stmtList[s]; From 2f60c2674f22e585c7956dd3bf8d50873181a583 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 14:44:27 +0100 Subject: [PATCH 329/573] linear inout tests --- Test/c++/linearinout/Makefile | 45 +++++++++++++++++++++++++++++++++ Test/c++/linearinout/basic.dfy | 26 +++++++++++++++++++ Test/c++/linearinout/return.dfy | 23 +++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 Test/c++/linearinout/Makefile create mode 100644 Test/c++/linearinout/basic.dfy create mode 100644 Test/c++/linearinout/return.dfy diff --git a/Test/c++/linearinout/Makefile b/Test/c++/linearinout/Makefile new file mode 100644 index 00000000000..3c7b7a427d2 --- /dev/null +++ b/Test/c++/linearinout/Makefile @@ -0,0 +1,45 @@ + +DAFNYS=$(wildcard *.dfy) +CPPS=$(subst .dfy,.cpp,$(DAFNYS)) +DOT_H_S=$(subst .dfy,.h,$(DAFNYS)) +EXECS=$(subst .dfy,,$(DAFNYS)) +DAFNY_DIR=../../.. +DAFNY=$(DAFNY_DIR)/Binaries/dafny +DAFNY_RUNTIME_DIR=$(DAFNY_DIR)/Binaries +DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h +DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) +TEST_LOG=tests.log + +CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) + +.SECONDARY: $(CPPS) + +all:$(EXECS) +#all:hello ints + +vars: + echo $(DAFNYS) + echo $(CPPS) + echo $(EXECS) + +%.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) + $(DAFNY) /timeLimit:10 /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + +%.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) + $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< + +$(EXECS): % : %.cpp $(DAFNY_RUNTIME_CPP) + $(CXX) $(CXXFLAGS) -o $@ $< + +test: $(EXECS) + python run_cpp_tests.py $(EXECS) +#for e in $(EXECS); do echo; echo "*******************"; echo "Running $$e"; echo "*******************"; echo; ./$$e; done | tee $(TEST_LOG) +# grep unexpected $(TEST_LOG) +# if [ $$? -ne 0 ]; then +# echo "FAILED A TEST" +# else +# echo "SUCCESS!" +# fi + +clean: + rm -f *.cpp $(DOT_H_S) $(EXECS) $(TEST_LOG); rm -Rf *.dSYM; diff --git a/Test/c++/linearinout/basic.dfy b/Test/c++/linearinout/basic.dfy new file mode 100644 index 00000000000..bd4303f9325 --- /dev/null +++ b/Test/c++/linearinout/basic.dfy @@ -0,0 +1,26 @@ +module LinearInout2 { + +linear datatype Val0 = Leaf(x:bool) { + linear inout method flip_inner() + ensures self.x == !old_self.x + { + inout self.x := !self.x; + } + + linear inout method flip() + ensures self.x == !old_self.x + { + inout self.flip_inner(); + } +} + +method Main() { + linear var v := Leaf(true); + inout v.flip(); + var b := v.x; + assert !b; + print b; + linear var Leaf(_) := v; +} + +} diff --git a/Test/c++/linearinout/return.dfy b/Test/c++/linearinout/return.dfy new file mode 100644 index 00000000000..d917504c2c4 --- /dev/null +++ b/Test/c++/linearinout/return.dfy @@ -0,0 +1,23 @@ +module LinearInout2 { + +linear datatype Val0 = Leaf(x:bool) { + linear inout method flip() returns (prev: bool) + ensures self.x == !old_self.x + ensures prev == old_self.x + { + prev := self.x; + inout self.x := !self.x; + } +} + +method Main() { + linear var v := Leaf(true); + var p := inout v.flip(); + var b := v.x; + assert p; + assert !b; + print b; + linear var Leaf(_) := v; +} + +} From 0c44d24a0c6b953ee9ff796a325eb878dcf13b5f Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 14:50:49 +0100 Subject: [PATCH 330/573] remove the right Out argument for inout this --- Source/Dafny/Linear.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index ae3ba414e4f..a572dedf03b 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -363,7 +363,7 @@ public static void Rewrite(ModuleDefinition module) { if (method.HasInoutThis) { method.Ins.RemoveAt(0); - method.Outs.RemoveAt(0); + method.Outs.RemoveAt(method.Outs.Count - 1); } var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); From 2898913b043489f3de2ed680f5ebf2380f94c7f3 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 15:34:16 +0100 Subject: [PATCH 331/573] more linear inout tests --- Test/c++/linearinout/basic.dfy | 22 ++++++---------- Test/c++/linearinout/dt-basic.dfy | 26 +++++++++++++++++++ Test/c++/linearinout/dt-return.dfy | 23 +++++++++++++++++ Test/c++/linearinout/match.dfy | 41 ++++++++++++++++++++++++++++++ Test/c++/linearinout/return.dfy | 26 ++++++++++--------- 5 files changed, 112 insertions(+), 26 deletions(-) create mode 100644 Test/c++/linearinout/dt-basic.dfy create mode 100644 Test/c++/linearinout/dt-return.dfy create mode 100644 Test/c++/linearinout/match.dfy diff --git a/Test/c++/linearinout/basic.dfy b/Test/c++/linearinout/basic.dfy index bd4303f9325..e5906cd5d5f 100644 --- a/Test/c++/linearinout/basic.dfy +++ b/Test/c++/linearinout/basic.dfy @@ -1,24 +1,18 @@ module LinearInout2 { -linear datatype Val0 = Leaf(x:bool) { - linear inout method flip_inner() - ensures self.x == !old_self.x - { - inout self.x := !self.x; - } +linear datatype Val0 = Leaf(x:bool) - linear inout method flip() - ensures self.x == !old_self.x - { - inout self.flip_inner(); - } +method flip(linear inout v: Val0) +ensures v.x == !old_v.x +{ + inout v.x := !v.x; } method Main() { - linear var v := Leaf(true); - inout v.flip(); + linear var v := Leaf(false); + flip(inout v); var b := v.x; - assert !b; + assert b; print b; linear var Leaf(_) := v; } diff --git a/Test/c++/linearinout/dt-basic.dfy b/Test/c++/linearinout/dt-basic.dfy new file mode 100644 index 00000000000..bd4303f9325 --- /dev/null +++ b/Test/c++/linearinout/dt-basic.dfy @@ -0,0 +1,26 @@ +module LinearInout2 { + +linear datatype Val0 = Leaf(x:bool) { + linear inout method flip_inner() + ensures self.x == !old_self.x + { + inout self.x := !self.x; + } + + linear inout method flip() + ensures self.x == !old_self.x + { + inout self.flip_inner(); + } +} + +method Main() { + linear var v := Leaf(true); + inout v.flip(); + var b := v.x; + assert !b; + print b; + linear var Leaf(_) := v; +} + +} diff --git a/Test/c++/linearinout/dt-return.dfy b/Test/c++/linearinout/dt-return.dfy new file mode 100644 index 00000000000..d917504c2c4 --- /dev/null +++ b/Test/c++/linearinout/dt-return.dfy @@ -0,0 +1,23 @@ +module LinearInout2 { + +linear datatype Val0 = Leaf(x:bool) { + linear inout method flip() returns (prev: bool) + ensures self.x == !old_self.x + ensures prev == old_self.x + { + prev := self.x; + inout self.x := !self.x; + } +} + +method Main() { + linear var v := Leaf(true); + var p := inout v.flip(); + var b := v.x; + assert p; + assert !b; + print b; + linear var Leaf(_) := v; +} + +} diff --git a/Test/c++/linearinout/match.dfy b/Test/c++/linearinout/match.dfy new file mode 100644 index 00000000000..0ce872cd029 --- /dev/null +++ b/Test/c++/linearinout/match.dfy @@ -0,0 +1,41 @@ +module LinearInout2 { + +linear datatype Tree = Leaf(val: bool) | Node(linear left: Tree, linear right: Tree) { + linear method Free() { + linear match this { + case Node(left, right) => { + left.Free(); + right.Free(); + } + case Leaf(_) => {} + } + } +} + +predicate LeavesHaveValue(tree: Tree, val: bool) { + && (tree.Node? ==> LeavesHaveValue(tree.left, val) && LeavesHaveValue(tree.right, val)) + && (tree.Leaf? ==> tree.val == val) +} + +method flip(linear inout tree: Tree) +ensures forall val: bool :: LeavesHaveValue(old_tree, val) ==> LeavesHaveValue(tree, !val) +{ + if tree.Leaf? { + inout tree.val := !tree.val; + } else if tree.Node? { + flip(inout tree.left); + flip(inout tree.right); + } else { + assert false; + } +} + +method Main() { + linear var tree := Node(Leaf(false), Node(Leaf(false), Leaf(false))); + assert LeavesHaveValue(tree, false); + flip(inout tree); + assert LeavesHaveValue(tree, true); + tree.Free(); +} + +} diff --git a/Test/c++/linearinout/return.dfy b/Test/c++/linearinout/return.dfy index d917504c2c4..e6a029b14f9 100644 --- a/Test/c++/linearinout/return.dfy +++ b/Test/c++/linearinout/return.dfy @@ -1,22 +1,24 @@ module LinearInout2 { -linear datatype Val0 = Leaf(x:bool) { - linear inout method flip() returns (prev: bool) - ensures self.x == !old_self.x - ensures prev == old_self.x - { - prev := self.x; - inout self.x := !self.x; - } +linear datatype Val0 = Leaf(x:bool) + +method flip(linear inout v: Val0) returns (prev: bool) +ensures v.x == !old_v.x +ensures prev == old_v.x +{ + prev := v.x; + inout v.x := !v.x; } method Main() { - linear var v := Leaf(true); - var p := inout v.flip(); + linear var v := Leaf(false); + var p := flip(inout v); var b := v.x; - assert p; - assert !b; + assert b; + assert !p; print b; + print "\n"; + print p; linear var Leaf(_) := v; } From f095eaf5005d59e7def772bb592d644d1dcbad36 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 16:27:48 +0100 Subject: [PATCH 332/573] remove unnecessary todo --- Source/Dafny/Linear.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index a572dedf03b..228213f3f3a 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -456,7 +456,6 @@ void RewriteAUpdateStmt(UpdateStmt updateStmt) { } if (varDeclStmt.Update == null) { - // TODO(andrea) this case should probably be impossible Util.OxideDebug(stmtList[s].Tok, " (apply) removing {0}", Printer.StatementToString(stmtList[s])); stmtList.RemoveAt(s); var updateStmt = (UpdateStmt) stmtList[s]; From 5c04a6e3d4055192e891245b978cedbc6c7f37cf Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 18:33:31 +0100 Subject: [PATCH 333/573] rewrite resolved bodies of match statements --- Source/Dafny/Linear.cs | 7 +++++ Test/c++/linearinout/loopmatch.dfy | 41 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 Test/c++/linearinout/loopmatch.dfy diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 228213f3f3a..1eb4ebab4a9 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -100,6 +100,13 @@ internal static IEnumerable> AllStatementLists(Statement stmt) { foreach (var mc in ms.Cases) { foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } } + if (ms.ResolvedStatement != null) { + Contract.Assert(ms.ResolvedStatement is MatchStmt); + var resolvedMs = (MatchStmt) ms.ResolvedStatement; + foreach (var mc in resolvedMs.Cases) { + foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } + } + } break; case WhileStmt ws: foreach (var ls in AllStatementLists(ws.Body.Body)) { yield return ls; } diff --git a/Test/c++/linearinout/loopmatch.dfy b/Test/c++/linearinout/loopmatch.dfy new file mode 100644 index 00000000000..1bf96aa5dac --- /dev/null +++ b/Test/c++/linearinout/loopmatch.dfy @@ -0,0 +1,41 @@ +module Loop { +newtype{:nativeType "ulong"} uint64 = i:int | 0 <= i < 0x1_0000_0000_0000_0000 + +linear datatype LinearBool = LinearBool(x: bool) + +datatype Option = Some(value: A) | None + +method flip(linear inout v: LinearBool) +ensures v.x == !old_v.x +{ + inout v.x := !v.x; +} + +method Main() { + linear var b := LinearBool(false); + var i: uint64 := 0; + + var o: Option := Some(1); + + match o { + case Some(p) => { + while i < 10 + invariant i <= 10 + invariant i % 2 == 0 <==> !b.x + { + flip(inout b); + i := i + p; + var v := b.x; + print v; + } + assert !b.x; + var v := b.x; + print v; + } + case None => assert false; + } + + linear var LinearBool(_) := b; +} + +} From d2bbff441fd624cec1f4da298f5eb88483ccc176 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Mon, 26 Oct 2020 19:49:08 +0100 Subject: [PATCH 334/573] inout ghost assignment are ghost --- Source/Dafny/Resolver.cs | 3 +++ Test/c++/linearinout/ghostassign.dfy | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 Test/c++/linearinout/ghostassign.dfy diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e2f1f205d82..7cd1e8faa15 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7408,6 +7408,9 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } else { Error(s, "invalid inout update lhs"); } + if (inoutAssignTargetUsage == Usage.Ghost) { + s.IsGhost = true; + } } if (s.Rhs is ExprRhs) { var rhs = (ExprRhs)s.Rhs; diff --git a/Test/c++/linearinout/ghostassign.dfy b/Test/c++/linearinout/ghostassign.dfy new file mode 100644 index 00000000000..07458e44463 --- /dev/null +++ b/Test/c++/linearinout/ghostassign.dfy @@ -0,0 +1,23 @@ +module LinearInout2 { + +linear datatype Val0 = Leaf(x:bool, ghost x2:bool) + +method flip(linear inout v: Val0) +ensures v.x == !old_v.x +ensures v.x2 == v.x +{ + inout v.x := !v.x; + inout ghost v.x2 := v.x; +} + +method Main() { + linear var v := Leaf(false, false); + flip(inout v); + var b := v.x; + assert b; + assert v.x2; + print b; + linear var Leaf(_, _) := v; +} + +} From a7f849229eb84a46bcebb7810ba3e715b0add0fd Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 27 Oct 2020 11:38:28 +0100 Subject: [PATCH 335/573] fix resolved statement for inout assign CallStmt --- Source/Dafny/Linear.cs | 3 ++- Test/c++/linearinout/inoutassignself.dfy | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Test/c++/linearinout/inoutassignself.dfy diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 1eb4ebab4a9..a9e742f58f3 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -431,7 +431,8 @@ public static void Rewrite(ModuleDefinition module) { Contract.Assert(updStmt.ResolvedStatements.Count == 1); updStmt.ResolvedStatements.Clear(); if (resolvedRhs is CallStmt callStmt) { - updStmt.ResolvedStatements.Add(resolvedRhs); + var resolvedCallStmt = new CallStmt(generatedTok, generatedTok, new List { targetExpr.Resolved }, callStmt.MethodSelect, callStmt.Args); + updStmt.ResolvedStatements.Add(resolvedCallStmt); } else { var resolvedAssignStmt = new AssignStmt(generatedTok, generatedTok, targetExpr.Resolved, rhs); updStmt.ResolvedStatements.Add(resolvedAssignStmt); diff --git a/Test/c++/linearinout/inoutassignself.dfy b/Test/c++/linearinout/inoutassignself.dfy new file mode 100644 index 00000000000..6f3488430d4 --- /dev/null +++ b/Test/c++/linearinout/inoutassignself.dfy @@ -0,0 +1,21 @@ +module Contiguous { + +datatype Thing = Thing() + +method ChangeThing(thing: Thing) returns (res: Thing) { + res := Thing(); +} + +linear datatype Container = Container(thing: Thing) { + linear inout method DoSomething() { + inout self.thing := ChangeThing(self.thing); + } +} + +method Main() { + linear var cnt := Container(Thing()); + inout cnt.DoSomething(); + linear var Container(_) := cnt; +} + +} From a220c04423f80eeea1af2b4ac91281f4ee39eefa Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Fri, 25 Sep 2020 13:21:17 -0400 Subject: [PATCH 336/573] support __m128i in C++ backend --- Binaries/DafnyRuntime.h | 2 ++ Source/Dafny/Compiler-cpp.cs | 4 ++++ Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 1 + Test/comp/Module.dfy | 2 +- Test/dafny0/BitvectorsMore.dfy | 2 +- Test/dafny0/ComputationsLoop2.dfy | 2 +- Test/dafny0/ExternCopyFromTrait.dfy | 2 +- Test/dafny0/Trait/TraitExtend.dfy | 2 +- Test/dafny0/Trait/TraitsMultipleInheritance.dfy | 2 +- Test/dafny4/Bug113.dfy | 2 +- Test/dafny4/Bug120.dfy | 2 +- Test/dafny4/Bug150.dfy | 2 +- Test/dafny4/Bug161.dfy | 2 +- Test/dafny4/Bug162.dfy | 2 +- Test/dafny4/Bug165.dfy | 2 +- Test/dafny4/Bug166.dfy | 2 +- Test/dafny4/Bug168.dfy | 2 +- Test/dafny4/Bug169.dfy | 2 +- Test/dafny4/Bug170.dfy | 2 +- Test/dafny4/Bug56.dfy | 2 +- Test/dafny4/Bug58.dfy | 2 +- Test/dafny4/Bug67.dfy | 2 +- Test/dafny4/Bug68.dfy | 2 +- Test/dafny4/Bug69.dfy | 2 +- Test/dafny4/Bug72.dfy | 2 +- Test/dafny4/Bug79.dfy | 2 +- Test/dafny4/Bug88.dfy | 2 +- Test/dafny4/Bug89.dfy | 2 +- Test/dafny4/Bug91.dfy | 2 +- Test/dafny4/Bug92.dfy | 2 +- Test/dafny4/git-issue141.dfy | 2 +- Test/dafny4/git-issue155.dfy | 2 +- Test/dafny4/git-issue176.dfy | 2 +- Test/dafny4/git-issue250.dfy | 2 +- Test/dafny4/git-issue44.dfy | 2 +- Test/dafny4/git-issue49.dfy | 2 +- Test/exceptions/TestAttributeErrors.dfy | 2 +- Test/expectations/ExpectAndExceptions.dfy | 2 +- Test/patterns/PatternMatching.dfy | 2 +- 40 files changed, 44 insertions(+), 37 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 4f555934ec6..4fd9526e05d 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -10,6 +10,8 @@ #include #include #include +#include +#include class _dafny { public: diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 1f99f91a58c..1b0174cd4cb 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -797,6 +797,9 @@ protected override void GetNativeInfo(NativeType.Selection sel, out string name, case NativeType.Selection.ULong: name = "uint64"; break; + case NativeType.Selection.UInt128: + name = "__m128i"; + break; case NativeType.Selection.Number: case NativeType.Selection.Long: name = "int64"; @@ -1273,6 +1276,7 @@ public override string TypeInitializationValue(Type type, TextWriter/*?*/ wr, Bp if (td.Witness != null) { return td.Module.CompileName + "::class_" + td.CompileName + "::Witness"; } else if (td.NativeType != null) { + if (td.NativeType.Sel == NativeType.Selection.UInt128) return "_mm_setr_epi32(0,0,0,0)"; return "0"; } else { return TypeInitializationValue(td.BaseType, wr, tok, usage, inAutoInitContext); diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index dd1a178c24e..957af6e688d 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4915,7 +4915,7 @@ public class NativeType public readonly BigInteger LowerBound; public readonly BigInteger UpperBound; public readonly int Bitwidth; // for unasigned types, this shows the number of bits in the type; else is 0 - public enum Selection { Byte, SByte, UShort, Short, UInt, Int, Number, ULong, Long } + public enum Selection { Byte, SByte, UShort, Short, UInt, Int, Number, ULong, Long, UInt128 } public readonly Selection Sel; public readonly DafnyOptions.CompilationTarget CompilationTargets; public NativeType(string Name, BigInteger LowerBound, BigInteger UpperBound, int bitwidth, Selection sel, DafnyOptions.CompilationTarget compilationTargets) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 7cd1e8faa15..9631b621c11 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2230,6 +2230,7 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur new NativeType("number", -0x1f_ffff_ffff_ffff, 0x20_0000_0000_0000, 0, NativeType.Selection.Number, DafnyOptions.CompilationTarget.JavaScript), // JavaScript integers new NativeType("ulong", 0, new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000), 64, NativeType.Selection.ULong, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Java | DafnyOptions.CompilationTarget.Cpp), new NativeType("long", Int64.MinValue, 0x8000_0000_0000_0000, 0, NativeType.Selection.Long, DafnyOptions.CompilationTarget.Csharp | DafnyOptions.CompilationTarget.Go | DafnyOptions.CompilationTarget.Java | DafnyOptions.CompilationTarget.Cpp), + new NativeType("uint128", 0, new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000) * new BigInteger(0x1_0000_0000), 128, NativeType.Selection.UInt128, DafnyOptions.CompilationTarget.Cpp), }; public void ResolveTopLevelDecls_Core(List/*!*/ declarations, Graph/*!*/ datatypeDependencies, Graph/*!*/ codatatypeDependencies) { diff --git a/Test/comp/Module.dfy b/Test/comp/Module.dfy index 909886f9ac5..5e26d9d8ca7 100644 --- a/Test/comp/Module.dfy +++ b/Test/comp/Module.dfy @@ -15,4 +15,4 @@ module Parent { method Main() { Parent.Child.Test(); -} \ No newline at end of file +} diff --git a/Test/dafny0/BitvectorsMore.dfy b/Test/dafny0/BitvectorsMore.dfy index c19c1cdee11..277e6d16fba 100644 --- a/Test/dafny0/BitvectorsMore.dfy +++ b/Test/dafny0/BitvectorsMore.dfy @@ -198,4 +198,4 @@ method Rotate() returns (x: nat, bb: bv5) { method TestActualRotate() { var a: bv5 := 12; assert a == a.RotateLeft(3).RotateRight(3); -} \ No newline at end of file +} diff --git a/Test/dafny0/ComputationsLoop2.dfy b/Test/dafny0/ComputationsLoop2.dfy index c11dc9ad14d..0bd1a709ded 100644 --- a/Test/dafny0/ComputationsLoop2.dfy +++ b/Test/dafny0/ComputationsLoop2.dfy @@ -14,4 +14,4 @@ function KeepDoin'ItToo(x: nat): nat lemma Test(r: nat) { assert KeepDoin'It(20) == r; -} \ No newline at end of file +} diff --git a/Test/dafny0/ExternCopyFromTrait.dfy b/Test/dafny0/ExternCopyFromTrait.dfy index 1132aa1e473..aac9ba5d1ce 100644 --- a/Test/dafny0/ExternCopyFromTrait.dfy +++ b/Test/dafny0/ExternCopyFromTrait.dfy @@ -19,4 +19,4 @@ module {:extern "M"} M { method m2() { } } -} \ No newline at end of file +} diff --git a/Test/dafny0/Trait/TraitExtend.dfy b/Test/dafny0/Trait/TraitExtend.dfy index d66163e129f..54a4dbbbfaf 100644 --- a/Test/dafny0/Trait/TraitExtend.dfy +++ b/Test/dafny0/Trait/TraitExtend.dfy @@ -40,4 +40,4 @@ class c1 extends t var j:int := Mul (x,y); //error, too few parameters in calling inherited method var k:int := Plus(x,y,1); //error, too many parameters in calling inherited method } -} \ No newline at end of file +} diff --git a/Test/dafny0/Trait/TraitsMultipleInheritance.dfy b/Test/dafny0/Trait/TraitsMultipleInheritance.dfy index 2e2103e6c1f..1fcb86e975b 100644 --- a/Test/dafny0/Trait/TraitsMultipleInheritance.dfy +++ b/Test/dafny0/Trait/TraitsMultipleInheritance.dfy @@ -27,4 +27,4 @@ method Main() print "j1.x + j2.y = " , j1.x + j2.y, "\n"; assert c.x + c.y == j1.x + j2.y; -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug113.dfy b/Test/dafny4/Bug113.dfy index 23c759540cd..9eb9a8d71d4 100644 --- a/Test/dafny4/Bug113.dfy +++ b/Test/dafny4/Bug113.dfy @@ -7,4 +7,4 @@ method Main() { print D(10, 20, 30, 40); print "\n"; -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug120.dfy b/Test/dafny4/Bug120.dfy index d62c3252739..e3f169a0cc7 100644 --- a/Test/dafny4/Bug120.dfy +++ b/Test/dafny4/Bug120.dfy @@ -8,4 +8,4 @@ function G(n: nat): nat method Test() { assert G(10) == 5; -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug150.dfy b/Test/dafny4/Bug150.dfy index c3ee57a9cef..60112974114 100644 --- a/Test/dafny4/Bug150.dfy +++ b/Test/dafny4/Bug150.dfy @@ -10,4 +10,4 @@ method pop_run_impl() { var a := new int[10]; var i := 0; ghost var (x,y) := foo(a[..i+1]); -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug161.dfy b/Test/dafny4/Bug161.dfy index 606226145eb..3ea624e280e 100644 --- a/Test/dafny4/Bug161.dfy +++ b/Test/dafny4/Bug161.dfy @@ -12,4 +12,4 @@ lemma L(x:t) assume P(x); assume forall y :: P(y) ==> y == x; assert F(x) == C(); // FAILS -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug162.dfy b/Test/dafny4/Bug162.dfy index 00ea59c2f0a..4adcf9c8020 100644 --- a/Test/dafny4/Bug162.dfy +++ b/Test/dafny4/Bug162.dfy @@ -27,4 +27,4 @@ method bar() var s':imap; foo(s'); -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug165.dfy b/Test/dafny4/Bug165.dfy index b262e51b805..e33dcdcc727 100644 --- a/Test/dafny4/Bug165.dfy +++ b/Test/dafny4/Bug165.dfy @@ -17,4 +17,4 @@ method Main(s1: seq) assert multiset(r1) == multiset(r2); -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug166.dfy b/Test/dafny4/Bug166.dfy index 5e44a99e2fd..e93d89d939c 100644 --- a/Test/dafny4/Bug166.dfy +++ b/Test/dafny4/Bug166.dfy @@ -5,4 +5,4 @@ predicate P(x:int) method test(s:seq) ensures forall x :: x > 5 ==> P(x); - ensures forall i :: 0 <= i < |s| ==> P(s[i]); \ No newline at end of file + ensures forall i :: 0 <= i < |s| ==> P(s[i]); diff --git a/Test/dafny4/Bug168.dfy b/Test/dafny4/Bug168.dfy index 3f654d70616..cee83038522 100644 --- a/Test/dafny4/Bug168.dfy +++ b/Test/dafny4/Bug168.dfy @@ -7,4 +7,4 @@ function Crash(xs: List): int requires xs.Cons? { var Cons(h, Nil) := xs; h -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug169.dfy b/Test/dafny4/Bug169.dfy index ccad2ba2da5..410440bce6d 100644 --- a/Test/dafny4/Bug169.dfy +++ b/Test/dafny4/Bug169.dfy @@ -8,4 +8,4 @@ inductive lemma P(x: int) forall x | R(x) { } -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug170.dfy b/Test/dafny4/Bug170.dfy index 4e9cbd3a21b..e56ac9f3822 100644 --- a/Test/dafny4/Bug170.dfy +++ b/Test/dafny4/Bug170.dfy @@ -56,4 +56,4 @@ module CoThings { AA(x+1); assert A(x+1); // this one should be replaced by A#[_k-1] (which will happen, provided that BB is listed as also being specialized for A) } -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug56.dfy b/Test/dafny4/Bug56.dfy index aaa95951832..d73af210352 100644 --- a/Test/dafny4/Bug56.dfy +++ b/Test/dafny4/Bug56.dfy @@ -20,4 +20,4 @@ lemma L2(b:int->D) requires I(j => G(b(j)))(0); { L1(b); // FAILS TO SATISFY L1's PRECONDITION -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug58.dfy b/Test/dafny4/Bug58.dfy index dce57be75ce..677ba621442 100644 --- a/Test/dafny4/Bug58.dfy +++ b/Test/dafny4/Bug58.dfy @@ -14,4 +14,4 @@ lemma L(f:map, i:int) requires forall j:int, f:map :: M1(f, j) == (j in f && f[j]); { assert f[i]; -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug67.dfy b/Test/dafny4/Bug67.dfy index 731018a293b..3c6f0125ef4 100644 --- a/Test/dafny4/Bug67.dfy +++ b/Test/dafny4/Bug67.dfy @@ -8,4 +8,4 @@ method Main() assert D([10, 20]) == D([10, 20]); // succeeds print [10, 20] == [10, 20], "\n"; // prints True print D([10, 20]) == D([10, 20]); // prints False -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug68.dfy b/Test/dafny4/Bug68.dfy index a211206acba..c6e3ea96f5b 100644 --- a/Test/dafny4/Bug68.dfy +++ b/Test/dafny4/Bug68.dfy @@ -62,4 +62,4 @@ method Main() M3(); M3'(); M4(); -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug69.dfy b/Test/dafny4/Bug69.dfy index 0ed495062d4..67d062a07fe 100644 --- a/Test/dafny4/Bug69.dfy +++ b/Test/dafny4/Bug69.dfy @@ -11,4 +11,4 @@ module M2 import opened M1 predicate P(i:int) requires X(i) { true } // ok predicate{:opaque} O(i:int) requires X(i) { true } // resolution/type error: X does not exist -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug72.dfy b/Test/dafny4/Bug72.dfy index 27ee2363357..a27198cc5ef 100644 --- a/Test/dafny4/Bug72.dfy +++ b/Test/dafny4/Bug72.dfy @@ -19,4 +19,4 @@ lemma Cases() //assert b2.seqno == b2.seqno; assert BalLt(b2, b1); // Fails without asserts above } -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug79.dfy b/Test/dafny4/Bug79.dfy index 6e060672a04..2add2cdd806 100644 --- a/Test/dafny4/Bug79.dfy +++ b/Test/dafny4/Bug79.dfy @@ -7,4 +7,4 @@ function bar(s:int) : bool { var (x, rest) := foo(s); x > 0 -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug88.dfy b/Test/dafny4/Bug88.dfy index e0f98febe09..24766860ce5 100644 --- a/Test/dafny4/Bug88.dfy +++ b/Test/dafny4/Bug88.dfy @@ -15,4 +15,4 @@ lemma A(i: int) if * { } else { } -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug89.dfy b/Test/dafny4/Bug89.dfy index a7abf93a4d2..17b0dda41e1 100644 --- a/Test/dafny4/Bug89.dfy +++ b/Test/dafny4/Bug89.dfy @@ -12,4 +12,4 @@ method Main() { var x := F(); print x; -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug91.dfy b/Test/dafny4/Bug91.dfy index 647dda716a0..8518f02614d 100644 --- a/Test/dafny4/Bug91.dfy +++ b/Test/dafny4/Bug91.dfy @@ -37,4 +37,4 @@ function UnAckedLists(s:SendState) : set> function UnAckedMessages5(s:SendState) : set { set m, list | list in UnAckedLists(s) && m in list :: m -} \ No newline at end of file +} diff --git a/Test/dafny4/Bug92.dfy b/Test/dafny4/Bug92.dfy index e6c9441417a..568e84bf436 100644 --- a/Test/dafny4/Bug92.dfy +++ b/Test/dafny4/Bug92.dfy @@ -94,4 +94,4 @@ module ModFuel { { assert (y, z) == Hidden(x); } -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue141.dfy b/Test/dafny4/git-issue141.dfy index 51354c73f23..7d0b46d59f3 100644 --- a/Test/dafny4/git-issue141.dfy +++ b/Test/dafny4/git-issue141.dfy @@ -16,4 +16,4 @@ class List { && spine[i] in repr && (spine[i].next == (if i < |spine| - 1 then spine[i+1] else null)) } -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue155.dfy b/Test/dafny4/git-issue155.dfy index d1b157ba9f0..7f9f2dd718b 100644 --- a/Test/dafny4/git-issue155.dfy +++ b/Test/dafny4/git-issue155.dfy @@ -14,4 +14,4 @@ method M(a: A, b: B) { match (a, b) case (A0, B0) => -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue176.dfy b/Test/dafny4/git-issue176.dfy index c74c3269d5f..d24587a8ac0 100644 --- a/Test/dafny4/git-issue176.dfy +++ b/Test/dafny4/git-issue176.dfy @@ -16,4 +16,4 @@ predicate Thing2(ctx: Context) { method Main() { assert Thing1(); assert Thing2(Context(map[2 := 3])); -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue250.dfy b/Test/dafny4/git-issue250.dfy index 3046034985f..d8f4df6a1af 100644 --- a/Test/dafny4/git-issue250.dfy +++ b/Test/dafny4/git-issue250.dfy @@ -12,4 +12,4 @@ method Main() { -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue44.dfy b/Test/dafny4/git-issue44.dfy index fd2b13ae6c8..716ef4c8da1 100644 --- a/Test/dafny4/git-issue44.dfy +++ b/Test/dafny4/git-issue44.dfy @@ -23,4 +23,4 @@ function Example2(len:nat) : map function Example3(len:nat) : array { RepeatArrayValue(5 as uint32, len) -} \ No newline at end of file +} diff --git a/Test/dafny4/git-issue49.dfy b/Test/dafny4/git-issue49.dfy index adade76ad58..2f265624596 100644 --- a/Test/dafny4/git-issue49.dfy +++ b/Test/dafny4/git-issue49.dfy @@ -6,4 +6,4 @@ module m1 { type T = int function f(x:T) : T { x } -} \ No newline at end of file +} diff --git a/Test/exceptions/TestAttributeErrors.dfy b/Test/exceptions/TestAttributeErrors.dfy index ef762b3d09c..ad33ccc093e 100644 --- a/Test/exceptions/TestAttributeErrors.dfy +++ b/Test/exceptions/TestAttributeErrors.dfy @@ -9,4 +9,4 @@ function {:test} PassingTest(): VoidOutcome { // compile error: function must be function {:test} FailingTest(): VoidOutcome { // compile error: function must be compiled to use the {:test} attribute VoidFailure("Whoopsie") -} \ No newline at end of file +} diff --git a/Test/expectations/ExpectAndExceptions.dfy b/Test/expectations/ExpectAndExceptions.dfy index 735510069e6..db691cb5826 100644 --- a/Test/expectations/ExpectAndExceptions.dfy +++ b/Test/expectations/ExpectAndExceptions.dfy @@ -20,4 +20,4 @@ method TestAssignOrHalt() { method Main() { TestAssignOrHalt(); -} \ No newline at end of file +} diff --git a/Test/patterns/PatternMatching.dfy b/Test/patterns/PatternMatching.dfy index 477126c066a..075b149d37f 100644 --- a/Test/patterns/PatternMatching.dfy +++ b/Test/patterns/PatternMatching.dfy @@ -222,4 +222,4 @@ method Main() { var r5 := MultipleNestedMatch(A(0), t4, bb); print "Testing MultipleNestedMatch: ", r0, r1, r2, r3, r4, r5, ", should return 012345\n"; -} \ No newline at end of file +} From 040c7271645926760e44b6b6b9ef488bf6234861 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Thu, 10 Dec 2020 22:26:05 -0800 Subject: [PATCH 337/573] Add Docs/Linear directory with documentation on the linear type system --- Docs/Linear/Introduction.md | 434 ++++++++++++++++++++++++++++++++++++ Docs/Linear/TypingRules.md | 340 ++++++++++++++++++++++++++++ linear-notes/README.md | 1 + 3 files changed, 775 insertions(+) create mode 100644 Docs/Linear/Introduction.md create mode 100644 Docs/Linear/TypingRules.md create mode 100644 linear-notes/README.md diff --git a/Docs/Linear/Introduction.md b/Docs/Linear/Introduction.md new file mode 100644 index 00000000000..ac9ec63dd91 --- /dev/null +++ b/Docs/Linear/Introduction.md @@ -0,0 +1,434 @@ +# A linear type system for Dafny + +This document describes a linear type system that extends Dafny's original type system. + +Throughout this document, the term *linear Dafny* refers to the Dafny implementation +with the linear type system, and *standard Dafny* refers to Dafny without the linear type system. + +## Why linearity? + +Standard Dafny supports both immutable data structures (e.g. `datatype` and `seq`) +and mutable data structures (e.g. `class` and `array`). +Programs with mutable data structures are often more difficult to verify, +because of aliasing and mutation: two variable may refer to the same object, +and therefore a write to one variable may affect reads from another variable: + +```dafny +method M(x: array, y: array) + requires x.Length == y.Length == 10 + requires x[3] == 30 + modifies y +{ + assert x[3] == 30; // ok + y[3] := 31; // in-place update + assert x[3] == 30; // FAILS: update to y might have affected x +} +``` + +Programs based on immutable data structures do not have to worry about aliasing and mutation. +Without mutation, though, programs may have to copy a data structures to update the data structure: + +```dafny +method M(x: seq, y: seq) returns(y': seq) + requires |x| == |y| == 10 + requires x[3] == 30 +{ + assert x[3] == 30; // ok + y' := y[3 := 31]; // copy entire sequence + assert x[3] == 30; // ok +} +``` + +Ideally, we'd like to have the best of both worlds: +the efficient in-place mutations of mutable data structures +and the easier verification of immutable data structures. +That is, we'd like the Dafny verifier to treat data structures as immutable +and the Dafny compiler to treat data structures as mutable to perform in-place updates. +In general, this combination would not be sound. +However, there's an important special case: +if the compiler knows that there's only one reference to an object (i.e. no aliases), +it can perform an in-place update without invalidating any assertions made by the verifier. + +Linear type systems provide a way to express this "no aliasing" constraint +so that the compiler can safely perform in-place updates. +A variable tagged as `linear` in linear Dafny is guaranteed to hold the only reference to the data: + +```dafny +function method SeqUpdate(linear s: seq, i: nat, a: A): (linear s': seq) + requires i < |s| + ensures s' == s[i := a] + +method M(linear x: seq, linear y: seq) returns(linear x': seq, linear y': seq) + requires |x| == |y| == 10 + requires x[3] == 30 +{ + assert x[3] == 30; // ok + y' := SeqUpdate(y, 3, 31); // in-place update + assert x[3] == 30; // ok + x' := x; +} +``` + +Since `x` and `y` are linear variables of type `seq`, +each contains a unique, unaliased reference to a sequence of integers. +Therefore, the linear Dafny compiler knows that an update to `y` (namely, `y' := SeqUpdate(y, 3, 31)`) +can be implemented in-place without disturbing `x`. +To the linear Dafny verifier, the update looks like an ordinary standard Dafny copy (`y' := y[3 := 31]`). +In fact, linear Dafny makes no changes to the verification process: +linear Dafny generates the same SMT queries (satisfiability modulo theories queries) as standard Dafny would, +with changes only to type checking and compilation. + +The linear Dafny type checker enforces the no-aliasing property on `linear` variables. +To do this, the type checker forbids duplication and discarding of `linear` variables. +For example, it is a type error to try to pass the same linear variable `z` twice in a method call (shown in `N1`), +or to try to copy `z` into two coexisting local variables `x` and `y` (shown in `N2`): + +```dafny +method M(linear x: seq, linear y: seq) + +method N1(linear z: seq) { + M(z, z); // FAILS: cannot duplicate linear variable z +} + +method N2(linear z: seq) { + linear var x := z; // ok, consumes z + linear var y := z; // FAILS: z was already consumed by x, so it is not available for y + M(x, y); +} +``` + +Because linear variables are neither duplicated nor discarded, +it's common to pass them as arguments and also return them as return values: + +```dafny +method M(linear x: seq, linear y: seq) returns(linear x': seq, linear y': seq) +``` + +To make this more convenient, linear Dafny supports `inout` parameters: + +```dafny +method SeqSet(linear inout s: seq, i: nat, a: A) + // TODO: currently, one has to write old_s instead of s and old(s), but the goal is to support s and old(s) + requires i < |s| + ensures s == old(s)[i := a] +{ + s := SeqUpdate(s, i, a); +} + +method M(linear inout x: seq, linear inout y: seq) + requires |x| == |y| == 10 + requires x[3] == 30 + ensures x == old(x) + ensures y == old(y)[3 := 31] +{ + assert x[3] == 30; // ok + SeqSet(inout y, 3, 31); // in-place update + assert x[3] == 30; // ok +} +``` + +To the Dafny verifier, `inout` parameters appear as both arguments and return values. +(For efficiency, though, the Dafny compiler treats `inout` parameters as pass-by-reference.) + +The no-aliasing property is restrictive. +Sometimes, it's useful to temporarily allow aliases, as long as mutation is disallowed. +Therefore, linear Dafny also supports aliasiable, immutable `shared` variables +that are temporarily *borrowed* from `linear` variables: + +```dafny +method M(shared x1: seq, shared x2: seq, linear inout y: seq) + requires |x1| == |x2| == |y| == 10 + requires x1[3] == 30 +{ + assert x1[3] == 30; // ok + SeqSet(inout y, 3, 31); // in-place update + assert x1[3] == 30; // ok +} + +method N(linear inout x: seq, linear inout y: seq) + requires |x| == |y| == 10 + requires x[3] == 30 +{ + M(x, x, inout y); // borrow from linear x to instantiate shared x1, x2 +} +``` + +Unlike `linear` variables, `shared` variables may be freely duplicated and discarded. +The scope of such `shared` variables is restricted so that they cannot coexist with +the linear variable that they borrow from. +This ensures that at any place in a program, a value can either be held +in a single `linear` variable or multiple `shared` variables, but not both. + +## Linear variables and shared variables + +Each Dafny variable is one of the following: + - `ghost` + - `linear` + - `shared` + - ordinary (no annotation) + +For example: +```dafny + ghost var xg: T; + linear var xl: T; + shared var xs: T; + var xo: T; +``` + +Ghost, linear, shared, and ordinary variables may be assigned to ghost variables: +```dafny + xg := xg'; + xg := xl'; + xg := xs'; + xg := xo'; +``` + +Linear variables may be assigned to linear variables: +```dafny + xl := xl'; +``` + +Shared variables may be assigned to shared variables: +```dafny + xs := xs'; +``` + +Ordinary variables may be assigned to ordinary variables: +```dafny + xo := xo'; +``` + +Other assignments are disallowed +(except for a special case of "borrowing" linear variables into shared variables, described below). + +Linear variables cannot be duplicated. +The following is disallowed because it tries to duplicate xl: +```dafny + linear var xl := ...; + linear var xl1 := xl; + linear var xl2 := xl; +``` + +Linear variables cannot be discarded. +The following is disallowed because it tries to discard xl at the end of a block: +```dafny + { + linear var xl := ...; + // xl discarded at end of block + } +``` + +At any place in a program, a linear variable is either "available" or "unavailable". +When a linear variable is assigned, it becomes available. +When a linear variable is used, it becomes unavailable (it is "consumed" by the use). +It is illegal to use an unavailable variable, except in ghost code; this prevents duplication. +It is illegal to let an available variable go out of scope; this prevents discarding. +For example: +```dafny + linear var xl := ...; + // xl is available + linear var xl1 := xl; // ok, because xl is available here + // xl is unavailable, xl1 is available + linear var xl2 := xl; // illegal: tries to use xl, which is unavailable here + ghost var xg := xl; // ok: ghost code can use unavailable variables +``` + +All linear input parameters are assumed to be available at method entry. +All linear return values must be available at method exit: + +```dafny +method M(linear x: seq) returns(linear x': seq) { + // x is available + x' := x; + // x consumed, x' now available +} +``` + +## Tuples and datatypes + +Standard Dafny has tuple types `(t1, ..., tn)`, for types `t1` ... `tn`, +with tuple constructors `(e1, ..., en)`, for expressions `e1` ... `en`, +and pattern matching to deconstruct tuples. +Linear Dafny extends these tuples to allow `linear` and `ghost` fields, +using `linear t` or `ghost t` in the field types and `linear e` or `ghost e` in the constructor fields: + +```dafny +method M(linear inout x: seq, y: int, ghost g: int) { + linear var z: (linear seq, int, ghost int); + z := (linear x, y, ghost g); + linear var (x', y', g') := z; + x := x'; +} +``` + +A tuple with one or more linear fields is itself linear: it can be stored in a linear variable, +like `z` in the code above, but not in an ordinary variable. + +In addition to `linear` tuples, user-defined datatypes may be declared `linear`, +and `linear` datatypes may contain `linear` fields. +An constructor for a `linear` datatype produces a `linear` value, +and a `linear match` deconstructs a linear datatype value: + +```dafny +linear datatype LOption = LNone | LSome(linear a: A) +linear datatype LList = LNil | LCons(hd: A, linear tl: LList) + +function method IncrAll(linear l: LList): linear LList { + linear match l { + case LNil => LNil + case LCons(hd, tl) => LCons(hd + 1, IncrAll(tl)) + } +} + +method IncrAllHere(inout linear l: LList) { + if l.LCons? { + inout l.hd := l.hd + 1; + IncrAllHere(inout l.tl); + } +} +``` + +A `linear match` consumes and deallocates the linear value that it deconstructs, +so that the `IncrAll` method shown above recursively deallocates an entire linear list +and generates a new linear list. + +It's also possible to update linear datatypes in place. +An `inout x.f := ...` statement performs an in-place update of an ordinary field `f` of a linear datatype x, +as shown above in the `IncrAllHere` method, +which recursively updates an entire linear list without deallocating it or allocating a new list. + +Tuple and datatype fields cannot be declared `shared`. +(This prevents `shared` variables from escaping their original scope.) +However, a program can borrow from a `linear` reference to a linear datatype, +resulting in a `shared` reference to the linear datatype. +Any `linear` fields in such a `shared` reference act like `shared` fields, +producing a `shared` result. +For example, the linear `tl` field appears as `shared` in the `shared` pattern match in +`Length` and the field access `s.tl` in `Length'`: + +```dafny +linear datatype LOption = LNone | LSome(linear a: A) +linear datatype LList = LNil | LCons(hd: A, linear tl: LList) + +function method Length(shared s: LList): nat { + shared match s { + case LNil => 0 + case LCons(_, tl) => 1 + Length(tl) // tl is a shared LList, not a linear LList + } +} + +// Alternate implementation: +function method Length'(shared s: LList): nat { + if s.LNil? then 0 + else 1 + Length'(s.tl) // s.tl is a shared LList, not a linear LList +} +``` + +## Shared variables and borrowing + +An expression or method call may *borrow* a linear variable `x` +so that `x` appears as `shared` (immutable borrowing) or `inout` (mutable borrowing) within the expression or method call. +After the expression or method call, `x` becomes `linear` again. +The `MakeEven` and `CallCompute` demonstrate borrowing in an expression and in a method call: + +```dafny +linear datatype LOption = LNone | LSome(linear a: A) +linear datatype LList = LNil | LCons(hd: A, linear tl: LList) + +function method Length(shared s: LList): nat { + shared match s { + case LNil => 0 + case LCons(_, tl) => 1 + Length(tl) + } +} + +function method MakeEven(linear l: LList): linear LList { + var len: int := Length(l); // borrow linear l as shared inside expression Length(l) + if len % 2 == 0 then l else LCons(0, l) +} + +method ComputeLength(shared s: LList) returns(n: nat) + ensures n == Length(s) +{ + n := 0; + shared var iter := s; + while iter.LCons? + invariant n + Length(iter) == Length(s) + decreases Length(iter) + { + n := n + 1; + iter := iter.tl; + } +} + +method CallCompute(linear inout l: LList) { + var n := ComputeLength(l); // borrow linear argument l as shared inside method call ComputeLength(l) +} +``` + +When checking an expression or method call, linear Dafny tracks the state of each linear variable, +where the state is either available, borrowed, or consumed: + +- Using an available variable as an argument to a `linear` function/method parameter makes the variable consumed. +A consumed variable cannot be borrowed or used linearly. It can, however, be used as a ghost value. +- Using an available variable as an argument to a `linear inout` method parameter makes the variable borrowed mutably. +An mutably borrowed variable cannot be duplicated and cannot be used linearly. It can, however, be used as a ghost value. +- Using an available variable as an argument to a `shared` function/method parameter makes the variable borrowed immutably. +An immutably borrowed variable can be duplicated, but it cannot be used linearly. It can also be used as a ghost value. + +For example, the following method call `M(x, x, 10)` is ok, because `x` can be borrowed more than once, +but the subsequent method call `M(x, x, F(x))` has a type error, because `x` cannot be both borrowed and consumed: + +```dafny +function method F(linear x: int): int +method M(shared x: int, shared y: int, i: int) + +method N(linear inout x: int) { + M(x, x, 10); // ok + M(x, x, F(x)); // FAILS: x cannot be used linearly in F(x) after being borrowed by first two arguments +} +``` + +If an expression or method call produces a `shared` result, the expression or call is not allowed to borrow any `linear` variables as `shared`. +This ensures that the borrowed value stays confined in the expression or call, and doesn't escape outside +where it could coexist unsafely with the original `linear` variable. +Note that if an expression or call does not borrow any arguments, it may produce `shared` results: + +```dafny +method M1(shared s: int) returns(shared s': int) +method M2(shared s: int) returns(s': int) + +method N(linear inout x: int, shared y: int) { + shared var y1 := M1(y); // ok: no borrowing + var y2 := M2(x); // ok: no shared return value + shared var y3 := M1(x); // FAILS: can't borrow and return shared result +} +``` + +Future versions of linear Dafny could allow borrowing in more places. +Allowing a statement to borrow from a linear variable would be particularly useful: + +```dafny +method M(linear l: LList) { + { + shared var s := l; // would be useful, but is not yet supported + ...use s... + } + ...use l... +} +``` + +To work around the lack of statement-level borrowing, a program can use a method call: + +```dafny +method M'(shared s: LList) { + ...use s... +} + +method M(linear l: LList) +{ + M'(l); + ...use l... +} +``` + diff --git a/Docs/Linear/TypingRules.md b/Docs/Linear/TypingRules.md new file mode 100644 index 00000000000..81228362765 --- /dev/null +++ b/Docs/Linear/TypingRules.md @@ -0,0 +1,340 @@ +# The essence of linear Dafny + +To clarify the linear Dafny's typechecking rules, +this document formalizes a small language containing essential concepts from linear Dafny. +It starts with just ordinary and `linear` variables, +and then extends the language to support `ghost`, `shared`, and borrowing. + +Typing rules are written with assumptions above a horizontal lines and conclusions below the line: + +``` +assumptions +----------- +conclusions +``` + +If no assumptions are necessary, the horizontal line is omitted: + +``` +conclusions +``` + +## Basic linearity rules + +Let `e` denote expressions and `s` denote statements, where `x` stands for variables +and `f` stands for function/method names: + +``` +u ::= ordinary | linear +expression e ::= x | f(e, e) | e; e | u var x := e; e | if e then e else e +statement s ::= skip | e | x := e | s; s | if e then s else s +``` + +Each expression can be a variable `x`, a function application, a sequence of expressions, +a variable declaration, or a conditional expression. +For simplicity, every function/method takes exactly two arguments and returns one result. +Statements can be empty (`skip`), an expression `e`, a local variable update `x := e`, +a sequence of statements, or a conditional statement. + +Every variable is either ordinary or `linear`, described by a "usage" `u`. +Each function parameter and result has a usage, so that any function `f` +can be summarized with a usage typing `f: (u, u) -> u`. + +The type checker uses a set of variables `O` to track ordinary variables +and a set of variables `L` to track linear variables. +For any disjoint sets `X` and `Y`, the notation "`X, Y`" denotes the union of `X` and `Y`. +For simplicity, the type checker assumes that all variables in a program have been renamed to be distinct +before the type checking begins. + +For any `O` and `L`, the type checker can check that an expression `e` or a statement `s` is well-typed: +- `O ; L |- e : linear` means that `e` is a well-typed linear expression, consuming all of `L`. +- `O ; L |- e : ordinary` means that `e` is a well-typed ordinary expression, consuming all of `L`. +- `O ; L |- s : L'` means that `s` is a well-typed statement, +consuming some of all of `L`, and leaving any remaining linear variables in `L'`. + +When checking subexpressions `e1` and `e2` of an expression `f(e1, e2)`, +linear variables from `L` are split into disjoint `L1` and `L2`, +so that each linear variable is consumed in either `e1` or `e2`, +but not both: + +``` +f : (u1, u2) -> uf +O ; L1 |- e1 : u1 +O ; L2 |- e2 : u2 +---------------------------- +O ; L1, L2 |- f(e1, e2) : uf +``` + +Ordinary variables, on the other hand, may be used in both `e1` and `e2`. +Furthermore, linear variables must be used exactly once; they cannot be discarded. +This is enforced by requiring that `L = {x}` when checking the expression `x` +for a linear `x`, and that `L = {}` when checking other atomic expressions: + +``` +O, {x} ; {} |- x : ordinary + +O ; {x} |- x : linear +``` + +The remaining rules for expressions follow the patterns in the rules above: + +``` +O ; L1 |- e1 : u1 +O ; L2 |- e2 : u2 +------------------------- u1 != linear +O ; L1, L2 |- e1; e2 : u2 + +O ; L1 |- e1 : ordinary +O, {x} ; L2 |- e2 : u2 +------------------------------------------------------ +O ; L1, L2 |- ordinary var x := e1; e2 : u2 + +O ; L1 |- e1 : linear +O ; L2, {x} |- e2 : u2 +-------------------------------------------------- +O ; L1, L2 |- linear var x := e1; e2 : u2 + +O ; L0 |- e0 : ordinary +O ; L12 |- e1 : u12 +O ; L12 |- e2 : u12 +------------------------------------------ +O ; L0, L12 |- if e0 then e1 else e2 : u12 +``` + +Note that the rule for `if`/`else` shares the linear variables between the `then` and `else` clauses, +since only one of these two clauses will execute at run-time. + +Many of the rules shown above nondeterministically split `L` into `L1, L2` when checking subexpressions `e1` and `e2`. +Linear Dafny's type checker implementation computes this split lazily: +it first checks `e1`, and if `e1` consumes a linear variable `x`, +then the type checker knows `x` belongs to `L1`. +If `e2` consumes `x`, then `x` must belong to `L2`. +If neither consume `x`, then the type checker passes `x` to the next enclosing scope +(e.g. `x` might be used by `e3` in `f(f(e1, e2), e3)`. +If linear `x` is never used, the type checker reports a type error. + +Because statements may contain assignments `x := e`, +statements can produce `linear` variables as well as consuming `linear` variables. +Therefore, the typing for statements `O; L |- s : L'` tracks both the input linear variables `L` +and the output linear variables `L'`: + +``` +O ; L |- skip : L + +O ; L1 |- e : ordinary +---------------------- +O ; L1, L2 |- e : L2 + +O contains x +O ; L1 |- e : ordinary +------------------------- +O ; L1, L2 |- x := e : L2 + +O ; L1 |- e : linear +------------------------------ +O ; L1, L2 |- x := e : L2, {x} + +O ; L0 |- s1 : L1 +O ; L1 |- s2 : L2 +---------------------- +O ; L0 |- s1; s2 |- L2 + +O ; Le |- e : ordinary +O ; L0 |- s1 : L12 +O ; L0 |- s2 : L12 +---------------------------------------- +O ; Le, L0 |- if e then s1 else s2 : L12 +``` + +## Rules for ghost, shared, and borrowing + +This section adds `ghost` and `shared` usages, +as well as supporting `inout` parameters in methods `f`: + +``` +u ::= ghost | ordinary | shared | linear +io ::= | inout +f: (u io, u io) -> u +expression e ::= x | f(e, e) | e; e | u var x := e; e | if e then e else e +statement s ::= skip | e | x := e | s; s | if e then s else s +``` + +There is a set of variables for each usage: +`G` for `ghost`, `O` for `ordinary`, `S` for `shared`, and `L` for `linear`. +An additional set `M` tracks `linear` variables that have been mutably borrowed as `inout` arguments to methods: + +- `G ; O ; S ; M ; L |- e : u io` means that `e` is well typed, consuming `M` and `L`, +and that `e` has usage `u`, and, if `io` is `inout`, `e` can be used as an `inout` argument to a method. +- `G ; O ; S ; L |- s : L'` means that `s` is well typed, consuming some or all of `L`, +and producing `L'`. + +Note that any kind of variable can be used as a ghost argument to a function/method. +Therefore, *all* variables are placed in `G`, even if they also appear in `O`, `S`, `M`, or `L`. +This emphasizes two important points about linear Dafny's treatment of ghost code: +linear variables can always be used as `ghost`, even after the linear variable has been consumed, +and using a linear variable as `ghost` does not consume the linear variable. + +Arguments to a function/method `f` must match the usage and inoutness expected by `f`. +Note that a mutably borrowed variable can only be used for a single `inout` argument, +so the mutably borrowed variables `M` are split between the two arguments as `M1, M2`: + +``` +f : (u1 io1, u2 io2) -> uf +G ; O ; S ; M1 ; L1 |- e1 : u1 io1 +G ; O ; S ; M2 ; L2 |- e2 : u2 io2 +------------------------------------------------- +G ; O ; S ; M1, M2 ; L1, L2 |- f(e1, e2) : uf +``` +`ghost` and `shared` variables may be duplicated, +so `G` and `S` are shared between subexpressions `e1` and `e2`. + +The typing rules for variables simply read from `G`, `O`, `S`, `M`, or `L`: + +``` +G, {x} ; O ; S ; {} ; {} |- x : ghost + +G ; O, {x} ; S ; {} ; {} |- x : ordinary + +G ; O ; S, {x} ; {} ; {} |- x : shared + +G ; O ; S ; {x} ; {} |- x : linear inout + +G ; O ; S ; {} ; {x} |- x : linear +``` + +Unlike the rule for `f(e1, e2)`, the rule for `e1; e2` allows borrowing: +`e1` can temporarily borrow linear variables from `e2`, +using them as `shared` variables in `e1`. +This exploits the fact that in the run-time evaluation of `e1; e2`, +the expression `e1` is completely evaluated before `e2` begins evaluation, +so that any temporary variable manipulation in `e1` finishes before `e2` has a chance to consume the variables. +(By contrast, the evaluation order of `e1` and `e2` in `f(e1, e2)` is compiler-dependent; +if `e1` tried to borrow `x` from `e2`, the program could crash if the compiler decided to evaluate `e2` first +and `e2` consumed `x`.) + +The set `Bs` tracks borrowed immutable variables, +which appear as shared in `S, Bs` when checking `e1` +and then rejoin `Bs, L2` as linear when checking `e2`: + +``` +G ; O ; S, Bs ; {} ; L1 |- e1 : u1 +G ; O ; S ; {} ; Bs, L2 |- e2 : u2 +---------------------------------------------- u1 != linear +G ; O ; S ; {} ; L1, Bs, L2 |- e1; e2 : u2 +``` + +Variable declarations `u var x := e1; e2` also evaluate `e1` before `e2` +and thus allow borrowing inside `e1`. +For conciseness, the following rule covers all 4 cases of `u` = `ghost`, `ordinary`, `shared`, or `linear`, +placing the declared variable in `G`, `O`, `S`, or `L` as appropriate +(and always putting a copy in `G` for ghost usage): + +``` +Ox = {x} if u1 = ordinary, {} otherwise +Sx = {x} if u1 = shared , {} otherwise +Lx = {x} if u1 = linear , {} otherwise +If u1 = shared then Bs = {} +G ; O ; S, Bs ; {} ; L1 |- e1 : u1 +G, {x} ; O, Ox ; S, Sx ; {} ; Bs, L2, Lx |- e2 : u2 +----------------------------------------------------------------------- +G ; O ; S ; {} ; L1, Bs, L2 |- u1 var x := e1; e2 : u2 +``` + +Note that if `e1` borrows any variables immutably (`Bs != {}`), then `x` and `e1` cannot be `shared` (`u1 != shared`). +This prevents any borrowed variables in `Bs` from escaping `e1` through `x`. +Note that it is still possible to assign a borrowed variable to a `shared` variable, +as long as the borrowing happens outside the scope of the shared variable. +For example, the expression `(shared var y := x; f1(y, y)); f2(x, z)` borrows the linear variable `x` +across the entire subexpression `(shared var y := x; f1(y, y))`, +which is free to assign it to the `shared` variable `y` internally: + +``` + {} ; {} ; {x} ; {} ; {} |- x : shared + {} ; {} ; {x, y} ; {} ; {} |- f1(y, y) : ... + ----------------------------------------------------------------- no borrowing happens here: Bs = {} + {} ; {} ; {x} ; {} ; {} |- (shared var y := x; f1(y, y)) : ... + {} ; {} ; {} ; {} ; {x, z} |- f2(x, z) : ... + --------------------------------------------------------------------------- borrowing happens here: Bs = {x} + {} ; {} ; {} ; {} ; {x, z} |- (shared var y := x; f1(y, y)); f2(x, z) : ... +``` + +Linear Dafny's type checker implementation computes the split between `L1`, `Bs`, and `L2` lazily. +If `e1` uses a linear variable `x` as `shared` and `e2` then consumes `x`, +the checker places `x` in `Bs`. +If `e1` tries to borrow `x` but `e2` does not consume `x`, +then the borrowing is lifted to an enclosing scope +(e.g. if `e3` consumes `x` in the expression `((e1; e2); e3)`, +then `(e1; e2)` borrows `x` from `e3`). + +`if`/`else` expressions exploit order of evaluation (`e0` precedes `e1` or `e2`) allow borrowing: + +``` +G ; O ; S, Bs ; {} ; L0 |- e0 : u0 +G ; O ; S ; {} ; Bs, L12 |- e1 : u12 +G ; O ; S ; {} ; Bs, L12 |- e2 : u12 +--------------------------------------------------------------- u0 != linear +G ; O ; S ; {} ; L0, Bs, L12 |- if e0 then e1 else e2 : u12 +``` + +Typing rules for statements have the same form as the statement typing rules from the previous section, +but also allow borrowing within subexpressions, including mutably borrowed variables for `inout` arguments to methods `f`. +The set `Bm` tracks borrowed mutable variables, +which appear as borrowed mutable when checking `e` +and then rejoin `Bs, Bm, L2` in the linear output: + +``` +G ; O ; S ; L |- skip : L + +G ; O ; S, Bs ; Bm ; L1 |- e : u +----------------------------------------------------- u != linear +G ; O ; S ; L1, Bs, Bm, L2 |- e : Bs, Bm, L2 + +If u = ghost then G contains x +If u = ordinary then O contains x +If u = shared then S contains x and Bs = {} +u != linear (see rule below for linear) +G ; O ; S, Bs ; Bm ; L1 |- e : u +---------------------------------------------------------- u != linear +G ; O ; S ; L1, Bs, Bm, L2 |- x := e : Bs, Bm, L2 + +G ; O ; S, Bs ; Bm ; L1 |- e : linear +--------------------------------------------------------------- +G ; O ; S ; L1, Bs, Bm, L2 |- x := e : Bs, Bm, L2, {x} + +G ; O ; S ; L0 |- s1 : L1 +G ; O ; S ; L1 |- s2 : L2 +------------------------------ +G ; O ; S ; L0 |- s1; s2 |- L2 + +G ; O ; S, Bs ; Bm ; Le |- e : ordinary +G ; O ; S ; L0 |- s1 : L12 +G ; O ; S ; L0 |- s2 : L12 +---------------------------------------------------------------- +G ; O ; S ; Le, Bs, Bm, L0 |- if e then s1 else s2 : Bs, Bm, L12 +``` + +The current implementation of linear Dafny does not support borrowing across statements: +the typing rule for `s1; s2` shown above does not extend `S` when checking `s1`. +Suppose `x` is `shared` and `y` is `linear` when checking the statement `x := y; f(x, y)`: + +``` +G ; O ; S, {x} ; {y} |- x := y; f(x, y) : ... +``` + +If the `s1; s2` rule allowed `x := y` to borrow `y` from `f(x, y)`, +then `y` would appear in `S` when checking `x := y`, +and the assignment rule for `x := y` would allow the shared `y` to be assigned to the shared `x`. +Then `x` and `y` would hold the same value, which would get passed twice into `f(x, y)`, +which should not happen (the shared `x` should not coexist with the linear `y`). + +Note that this is not a problem for the `e1; s2` and `x := e1; s2` rules shown earlier, because a Dafny expression `e1` +cannot contain an assignment to a local variable. +(And in linear Dafny, `shared` is *only* used for local variables: +there are no global `shared` variables, `shared` fields in objects or datatypes, or `shared inout` parameters, +so that even if `e1` is a call to method, +the method can't use a side effect to leak the borrowed `x` into a larger scope.) + +Although the current for checking `s1; s2` is restrictive, +a future version of linear Dafny could support borrowing across statements by carefully tracking +`shared` variable dataflow, as in the Rust language. + diff --git a/linear-notes/README.md b/linear-notes/README.md new file mode 100644 index 00000000000..c45e62a552c --- /dev/null +++ b/linear-notes/README.md @@ -0,0 +1 @@ +See the Docs/Linear directory for documentation on the linear type system. From 4336f32723aa73eadff333eff8c85ace39b50b7e Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 11 Dec 2020 09:21:11 -0800 Subject: [PATCH 338/573] Fix some typos in Docs/Linear/TypingRules.md --- Docs/Linear/TypingRules.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Docs/Linear/TypingRules.md b/Docs/Linear/TypingRules.md index 81228362765..a4dcc4f3306 100644 --- a/Docs/Linear/TypingRules.md +++ b/Docs/Linear/TypingRules.md @@ -50,7 +50,7 @@ For any `O` and `L`, the type checker can check that an expression `e` or a stat - `O ; L |- e : linear` means that `e` is a well-typed linear expression, consuming all of `L`. - `O ; L |- e : ordinary` means that `e` is a well-typed ordinary expression, consuming all of `L`. - `O ; L |- s : L'` means that `s` is a well-typed statement, -consuming some of all of `L`, and leaving any remaining linear variables in `L'`. +consuming some or all of `L`, and leaving any remaining linear variables in `L'`. When checking subexpressions `e1` and `e2` of an expression `f(e1, e2)`, linear variables from `L` are split into disjoint `L1` and `L2`, @@ -269,10 +269,11 @@ then `(e1; e2)` borrows `x` from `e3`). `if`/`else` expressions exploit order of evaluation (`e0` precedes `e1` or `e2`) allow borrowing: ``` +u0 != linear G ; O ; S, Bs ; {} ; L0 |- e0 : u0 G ; O ; S ; {} ; Bs, L12 |- e1 : u12 G ; O ; S ; {} ; Bs, L12 |- e2 : u12 ---------------------------------------------------------------- u0 != linear +--------------------------------------------------------------- G ; O ; S ; {} ; L0, Bs, L12 |- if e0 then e1 else e2 : u12 ``` @@ -285,8 +286,9 @@ and then rejoin `Bs, Bm, L2` in the linear output: ``` G ; O ; S ; L |- skip : L +u != linear G ; O ; S, Bs ; Bm ; L1 |- e : u ------------------------------------------------------ u != linear +----------------------------------------------------- G ; O ; S ; L1, Bs, Bm, L2 |- e : Bs, Bm, L2 If u = ghost then G contains x @@ -294,7 +296,7 @@ If u = ordinary then O contains x If u = shared then S contains x and Bs = {} u != linear (see rule below for linear) G ; O ; S, Bs ; Bm ; L1 |- e : u ----------------------------------------------------------- u != linear +---------------------------------------------------------- G ; O ; S ; L1, Bs, Bm, L2 |- x := e : Bs, Bm, L2 G ; O ; S, Bs ; Bm ; L1 |- e : linear @@ -307,15 +309,15 @@ G ; O ; S ; L1 |- s2 : L2 G ; O ; S ; L0 |- s1; s2 |- L2 G ; O ; S, Bs ; Bm ; Le |- e : ordinary -G ; O ; S ; L0 |- s1 : L12 -G ; O ; S ; L0 |- s2 : L12 ----------------------------------------------------------------- -G ; O ; S ; Le, Bs, Bm, L0 |- if e then s1 else s2 : Bs, Bm, L12 +G ; O ; S ; Bs, Bm, L0 |- s1 : L12 +G ; O ; S ; Bs, Bm, L0 |- s2 : L12 +-------------------------------------------------------- +G ; O ; S ; Le, Bs, Bm, L0 |- if e then s1 else s2 : L12 ``` The current implementation of linear Dafny does not support borrowing across statements: the typing rule for `s1; s2` shown above does not extend `S` when checking `s1`. -Suppose `x` is `shared` and `y` is `linear` when checking the statement `x := y; f(x, y)`: +For example, suppose `x` is `shared` and `y` is `linear` when checking the statement `x := y; f(x, y)`: ``` G ; O ; S, {x} ; {y} |- x := y; f(x, y) : ... @@ -327,7 +329,7 @@ and the assignment rule for `x := y` would allow the shared `y` to be assigned t Then `x` and `y` would hold the same value, which would get passed twice into `f(x, y)`, which should not happen (the shared `x` should not coexist with the linear `y`). -Note that this is not a problem for the `e1; s2` and `x := e1; s2` rules shown earlier, because a Dafny expression `e1` +Note that this is not a problem for the `e1; e2` rule shown earlier, because a Dafny expression `e1` cannot contain an assignment to a local variable. (And in linear Dafny, `shared` is *only* used for local variables: there are no global `shared` variables, `shared` fields in objects or datatypes, or `shared inout` parameters, From 030cdaa1761c2ca77e95690f1663ec3acbca0543 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 11 Dec 2020 09:28:55 -0800 Subject: [PATCH 339/573] Minor reformatting in Docs/Linear/TypingRules.md --- Docs/Linear/TypingRules.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Docs/Linear/TypingRules.md b/Docs/Linear/TypingRules.md index a4dcc4f3306..bdb60ec0d9e 100644 --- a/Docs/Linear/TypingRules.md +++ b/Docs/Linear/TypingRules.md @@ -79,9 +79,10 @@ O ; {x} |- x : linear The remaining rules for expressions follow the patterns in the rules above: ``` +u1 != linear O ; L1 |- e1 : u1 O ; L2 |- e2 : u2 -------------------------- u1 != linear +------------------------- O ; L1, L2 |- e1; e2 : u2 O ; L1 |- e1 : ordinary @@ -217,9 +218,10 @@ which appear as shared in `S, Bs` when checking `e1` and then rejoin `Bs, L2` as linear when checking `e2`: ``` +u1 != linear G ; O ; S, Bs ; {} ; L1 |- e1 : u1 G ; O ; S ; {} ; Bs, L2 |- e2 : u2 ----------------------------------------------- u1 != linear +---------------------------------------------- G ; O ; S ; {} ; L1, Bs, L2 |- e1; e2 : u2 ``` From 0a4c4755ab7769d4f06f71cdacb7811889110bd2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Dec 2020 14:58:13 -0500 Subject: [PATCH 340/573] Minor fixes --- Docs/Linear/Introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Docs/Linear/Introduction.md b/Docs/Linear/Introduction.md index ac9ec63dd91..17417101033 100644 --- a/Docs/Linear/Introduction.md +++ b/Docs/Linear/Introduction.md @@ -10,7 +10,7 @@ with the linear type system, and *standard Dafny* refers to Dafny without the li Standard Dafny supports both immutable data structures (e.g. `datatype` and `seq`) and mutable data structures (e.g. `class` and `array`). Programs with mutable data structures are often more difficult to verify, -because of aliasing and mutation: two variable may refer to the same object, +because of aliasing and mutation: two variables may refer to the same object, and therefore a write to one variable may affect reads from another variable: ```dafny @@ -26,7 +26,7 @@ method M(x: array, y: array) ``` Programs based on immutable data structures do not have to worry about aliasing and mutation. -Without mutation, though, programs may have to copy a data structures to update the data structure: +Without mutation, though, programs may have to copy a data structure to update the data structure: ```dafny method M(x: seq, y: seq) returns(y': seq) From 5bb1a8dfc941441752e6c9f50463ecae086afa2f Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 14 Dec 2020 22:04:27 -0800 Subject: [PATCH 341/573] Add Docs/Linear/RelatedWork.md --- Docs/Linear/RelatedWork.md | 266 +++++++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 Docs/Linear/RelatedWork.md diff --git a/Docs/Linear/RelatedWork.md b/Docs/Linear/RelatedWork.md new file mode 100644 index 00000000000..66577496be2 --- /dev/null +++ b/Docs/Linear/RelatedWork.md @@ -0,0 +1,266 @@ +# Linear type systems: related work and alternative designs + +This document discusses the design of the linear type system in depth by +comparing to related work and presenting alternative approaches. + +Key questions: +1. For a given variable `x` in a program, how does the type checker know whether `x` +should be treated linearly (duplication/discarding of `x` disallowed) +or nonlinearly (duplication/discarding of `x` allowed)? +2. For linear `xl` and nonlinear `xn`, is the assignment `xl := xn` allowed? +In other words, can nonlinear variables flow into linear variables? +3. What mechanism exists, if any, for temporarily viewing +mutable linear variables as immutable nonlinear variables? + +For example, linear Dafny's answers to these questions are: +1. Each linear variable declaration is annotated with `linear`, +and each nonlinear variable declaration is annotated with `shared` or an empty annotation. +2. No, `xl := xn` is not allowed; linear and nonlinear variables are strictly segregated. +3. `linear` variables may be borrowed as nonlinear `shared` variables, +which are segregated from ordinary nonlinear variables. +Typing rules enforce a lexical scope restriction on `shared` variables where borrowing occurs. + +## Girard's linear logic + +In 1987, Girard introduced a linear logic that could directly express +consumption and production of limited resources +(see Wadler's "A Taste of Linear Logic" from 1993 for an introduction). +For example, Girards `-o` operator is similar to classical logic's implication operator `==>`, +but `A -o B` consumes `A` when producing `B`, so that you no longer have `A` after using `A -o B`. +By contrast, `A ==> B` produces `B` without consuming `A`; +classical logic expresses that if you know some fact `A`, +you can use that knowledge infinitely many times and never lose it. +Girard's logic uses a special operator, `!`, to represent an infinite supply of a resource: +`A` by itself can only be used once, but `!A` can be duplicated an unbounded number of times, yielding +an unbounded number of `A`s. + +For example, if you start with four resources, `dollar`, `dollar`, `dollar` and `(dollar -o banana)`, +you can use `dollar` and `(dollar -o banana)` to buy just one banana, +so that you end up with `dollar`, `dollar`, and `banana`. +If you start with `dollar`, `dollar`, `dollar` and `!(dollar -o banana)`, +you can buy multiple bananas, so that you may end up with +`banana`, `banana`, `banana` and `!(dollar -o banana)`. +If you start with `!dollar` and `!(dollar -o banana)`, +you can obtain as many bananas as you want. + +Answers to key questions (following Wadler's "A Taste of Linear Logic" presentation of Girard's work): +1. `x` may be declared as a function parameter or as a binding for `!A`: + * a function `lambda x:A. e` has type `A -o B`, assuming `e` has type `B`, and `x` is linear + * if an expression `e` has type `!A`, then `let !x = e in e'` + (written as `case e of !x -> e'` in Wadler's presentation) + introduces `x:A` nonlinearly in `e'` +2. Yes, nonlinear variables can flow into linear variables: if nonlinear `xn` has type `A`, +then `xn` can be passed as an argument to a `A -o B` function. +3. No borrowing + +## Wadler's "Linear Types Can Change the World" + +Wadler's 1990 paper introduced a type system inspired by Girard's linear logic. +Rather than using Girard's `!` operator, though, Wadler's approach +contained both linear and nonlinear versions of various operators. +For example, for implication (function types), Wadler's system +contained both a linear `A -o B` and a nonlinear `A -> B`, +where `A -> B` is analogous to Girard's `!(A -o B)`. + +In Wadler's system, every type is either linear or nonlinear. +For example, `A -o B` is linear and `A -> B` is nonlinear. +Values with linear type must be used exactly once, whereas values with nonlinear +type may be duplicated and discarded. +By strictly segregating linear and nonlinear types, +Wadler's approach gives valuable information to a compiler and run-time system: +if a variable `x` has linear type, then `x` contains the only reference to a value (no aliasing), +and it is safe to modify the value in place. + +Wadler's 1990 type system did not have generics/polymorphism, +but any type system that extends Wadler's approach with polymorphism must answer the following question: +if a function is polymorphic over some type `A`, should `A` be considered linear or nonlinear? +Systems that followed Wadler's approach often used a kind system to answer this question, +so that a type variable `A` can be declared with kind `linear` if it is intended to be linear +and kind `nonlinear` if it is intended to be nonlinear (for example, see the description of Cogent below). +It is also possible to support polymorphism over the linearity itself, +with type or kind variables that can be instantiated with `linear` or `nonlinear` +(see Ahmed, Fluet, and Morrisett, "A Step-Indexed Model of Substructural State", 2005, +or Walker, "Substructural Type Systems", 2005). + +Wadler's 1990 type system also introduced the idea of borrowing read-only access to a linear variable. +To understand how linear Dafny builds on (and differs from) Wadler's idea, +here is linear Dafny's rule for typing `u1 var x := e1; e2 : u2` from [TypingRules.md](TypingRules.md), +specialized to `u1 = ordinary` and omitting treatment of ghost variables: + +``` +O ; S, Bs ; {} ; L1 |- e1 : u1 +O, {x1} ; S ; {} ; Bs, L2 |- e2 : u2 +---------------------------------------------------------- +O ; S ; {} ; L1, Bs, L2 |- var x1 := e1; e2 : u2 +``` + +Here is what Wadler's original rule would look like written in the notation of [TypingRules.md](TypingRules.md): + +``` +For each xs in Bs, x1's type is "safe" for xs's type +O, Bs ; {} ; L1 |- e1 : u1 +O, {x1} ; {} ; Bs, L2 |- e2 : u2 +------------------------------------------------------- +O ; {} ; L1, Bs, L2 |- var!(Bs) x1 := e1; e2 : u2 +``` + +The idea behind the two rules is very similar: the variables `Bs` are borrowed nonlinearly in `e1` +and then become linear again in `e2`. +(Wadler's syntax has `Bs` explicitly in the `var` declaration, but it's easy and useful for linear Dafny to infer `Bs`.) +Linear Dafny treats borrowed variables cautiously, +using lexical scoping rules to make sure that borrowed variables don't escape from `e1`. +Linear Dafny's scoping enforcement mechanism is simple and crude +(compared with, say, Rust, which has more sophisticated scoping enforcement): +it puts *all* read-only borrowed variables into the set `S`, and *no* variables in `S` can be returned from `e1` through `x1`. +Ordinary variables in `O`, on the other hand, can be returned in `x1`. +In other words, the segregation between `S` and `O` blocks shared variables and allows ordinary to pass. + +By contrast, Wadler's proposal is more aggressive: it borrows directly into `O`. +This is convenient in some ways; there's no distinction between `var` and `shared var` for the programmer to worry about. +But it comes with an unusual restriction on the type of `x1`: +the type of `x1` cannot be a data structure with nonlinear field of an type that could contain any data read from the borrowed variables, +nor can `x1` contain a function type. +It is not obvious how to extend this restriction to more complex type systems. +For example, what if `x1`'s type is abstract, so the type checker can't see whether it is a datatype with nonlinear fields? +Because of these issues, later systems like Rust, Cogent, and linear Dafny have all used +other approaches to prevent borrowed variables from escaping. + +Answers to key questions: +1. If `x` has type `t`, then `x` is linear if `t` is linear and `x` is nonlinear if `t` is nonlinear. +2. No, `xl := xn` is not allowed; linear and nonlinear variables are strictly segregated. +3. Yes, linear variables may be borrowed read-only, but only if the types of the variables obviously disallow leaking the borrowed variables. + +## Linear Haskell + +Linear Haskell (POPL 2018) follows Girard's approach more than Wadler's 1990 approach. +It includes both an `A -o B` type and an `A -> B` type. +(The `A -> B` type is like Girard's `!A -o B`, although linear Haskell's datatype rules +differ slightly from Girard's, allowing `(A, B) -> A` to extract just the first item of a pair, +for example, whereas `!(A, B) -o A` is deliberately not provable in Girard's logic.) +If `e` has type `B`, then a function `lambda linear x:A. e` has type `A -o B`, using `x` linearly, +and a function `lambda nonlinear x:A. e` has type `A -> B`, using `x` nonlinearly. +In contrast to Wadler's 1990 approach, the type of `A` has no influence over `x`'s linearity. + +A function of type `A -o B` must use its argument `x:A` linearly. +As in Girard's approach, but in contrast to Wadler's 1990 approach, +callers of a `A -o B` may pass in any argument of type `A`, linear or nonlinear. +There is no a priori guarantee that a linear variable `x` holds unaliased data. +How, then, can linear Haskell safely allow in-place updates to `x`? +Linear Haskell's answer, following section 5.3 of Wadler's 1993 "A Taste of Linear Logic", +is that if a type T supports in-place update, +then no values of type T are ever placed into nonlinear variables. +For example, the constructor for mutable arrays, of type `MArray a`, +puts the newly allocated array into a linear variable, +and there's no way to assign a linear variable to a nonlinear variable. +Thus, any linear variable `x` of type `MArray a` must contain the only reference to the array. + +This approach has advantages and disadvantages. +By allowing nonlinear variables to flow into linear variables, +it allows more code reuse across linear and nonlinear code. +There's no need to have separate linear and nonlinear list types, +for example: you can declare a linear list type and then use that type +for both linear lists and nonlinear lists. +On the other hand, such a list type cannot support in-place updates, +because a linear `x` with a list in it could be an alias to a nonlinear list. +Linear datatypes in linear Dafny, by contrast, do support in-place updates. +Furthermore, linear Dafny uses standard Dafny's `seq` type both nonlinearly, without in-place updates, +and linearly, with in-place updates. + +Haskell pushes even further with linear/nonlinear code reuse by supporting +multiplicity polymorphism, where functions can be polymorphic over linearity. +For example, a single `map` function for lists can be declared to work both +for functions of type `A -o B` and `A -> B`. + +Answers to key questions: +1. `x` may be declared as a linear function parameter (for `A -o B` function types) +or as a nonlinear function parameter (for `A -> B` function types). +2. Yes, nonlinear variables can flow into linear variables: if nonlinear `xn` has type `A`, +then `xn` can be passed as an argument to a `A -o B` function. +3. The POPL 2018 paper proposes an extension to linear Haskell for borrowing as future work. + +## CIVL and linear maps + +Linear Dafny took its `linear x:t` syntax from CIVL's linear variables +("Automated and modular refinement reasoning for concurrent programs", CAV 2015), +which in turn grew out of Lahiri, Qadeer, and Walker's "Linear Maps" (PLPV 2011). +As in Linear Haskell, CIVL associates linearity with variable declarations +rather than with types. +As in linear Dafny, nonlinear variables cannot flow into linear variables. +CIVL lacks borrowing, so there are no `shared` variables. + +1. Each linear variable declaration is annotated with `linear`, +and nonlinear variable declarations have no annotation. +2. No, `xl := xn` is not allowed; linear and nonlinear variables are strictly segregated. +3. No mechanism for borrowing. + +## Cogent + +The Cogent language ("Cogent: Certified Compilation for a Functional Systems Language", 2016) +uses linear types for systems programming, +avoiding the need for garbage collection or reference counting. +In Cogent, unboxed values (primitive types and flat records, for example) may be nonlinear +but references are linear. + +Cogent follows Wadler's 1990 approach of using variable types to determine variable linearity, +organizing the types into *kinds* that represent different levels of linearity. +These kinds aren't named "linear" and "nonlinear", but instead are written as sets +of permissions: `D` for discardable, `S` for duplicable, and `E` for escapes-from-borrowing. +The most common kinds correspond to linear Dafny's ordinary, shared, and linear variables: + +| Cogent kind | linear Dafny | +|--------------|----------------| +| `{D, S, E}` | ordinary | +| `{D, S}` | shared | +| `{E}` | linear | + +Other combinations of permissions are less familiar, +but some correspond to affine/relevant types (see Walker, "Substructural Type Systems", 2005). +In addition, a mutably borrowed variable in linear Dafny might be thought of as having Cogent kind `{}`, +although Cogent doesn't directly use mutable borrowing: + +| Cogent kind | analogous to | +|--------------|------------------| +| `{D, E}` | affine | +| `{S, E}` | relevant | +| `{D}` | affine shared | +| `{S}` | relevant shared | +| `{}` | mutable borrowed | + +Like Wadler's 1990 approach, Cogent uses an explicit `!` variable binding syntax to borrow a variable. +However, Cogent does not use Wadler's "safe for" type rule to prevent borrowed variables from escaping. +Instead, Cogent's approach is like that of Rust and linear Dafny: +- When borrowing a linear variable `x` of type `T`, the borrowed variable appears +with type `bang(T)` in the borrowed scope, where `bang` replaces linear (`{E}`) with shared (`{D, S}`). +- Anything returned from a borrowing must be of a kind that includes `{E}`, +which forbids returning the shared (`{D, S}`) data. + +In many linear type systems, it is difficult to read or write a single linear field of a datatype: +reading the field would duplicate the field's linear data, which is not allowed, +and overwriting the field would discard the field's linear data, which is also not allowed. +Some systems allow swapping the field's linear value for another linear value, preserving linearity. +Following Rust, linear Dafny allows mutable borrowing of a linear field. +Cogent, on the other hand, allows "taking" a value from a linear field of a record, +which changes the type of the record to indicate that the field's value was taken and +is therefore no longer available. +A program can put a value back into the field to restore the record's type and make the +field available again. +Linear Dafny does not include this take/put feature in the core language, +but uses it in some libraries, such as arrays. + +Answers to key questions: + +1. For a variable `x`, the type checker uses the type of `x` to determine `x`'s linearity. +Specifically, the type's kind specifies the linearity. +2. Cogent prohibits assigning shared (`{D, S}`) variables to linear ({`E`}) variables. +Compared to Wadler's 1990 approach, linear Dafny, and Linear Haskell, +Cogent makes very sparing use of nonlinear nonshared types (kind `{D, S, E}`). +This avoids the need for garbage collection or reference counting. +In particular, reference types are treated linearly (`{E}`) or temporarily shared (`{D, S}`), not `{D, S, E}`. +Because of this, the question of whether `{D, S, E}` variables are assignable to `{E}` variables is moot +and has no impact on performing in-place updates on references. +3. Cogent uses an explicit `!` syntax to introduce borrowing. +The borrowed variables' types are tagged as shared (`{D, S}`) +so that the shared variables can't escape the scope of the borrowing. + +## Rust + From dfd9eacbc9ae998492fb0f373fbc7c798aac8201 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 16 Dec 2020 22:06:45 -0800 Subject: [PATCH 342/573] Add Rust comparison to Docs/Linear/RelatedWork.md --- Docs/Linear/RelatedWork.md | 127 +++++++++++++++++++++++++++++++++++++ Docs/Linear/TypingRules.md | 4 +- 2 files changed, 129 insertions(+), 2 deletions(-) diff --git a/Docs/Linear/RelatedWork.md b/Docs/Linear/RelatedWork.md index 66577496be2..013085ffb31 100644 --- a/Docs/Linear/RelatedWork.md +++ b/Docs/Linear/RelatedWork.md @@ -264,3 +264,130 @@ so that the shared variables can't escape the scope of the borrowing. ## Rust +Rust is a C-like language with a sophisticated type system for linearity and borrowing, +which allows Rust to be both low-level and type-safe, without requiring garbage collection +or reference counting. + +Answers to key questions: + +1. Rust uses a variable's type to determine the variable's linearity. +2. Rust prohibits assigning duplicable immutable variables to linear mutable variables. +3. Rust has a sophisticated borrowing system to temporarily view +linear mutable variables as duplicable immutable variables. + +### References vs. value types + +Rust is primarily an imperative language that manipulates C-like pointer-based data structures. +This contrasts with Wadler's 1990 language, Linear Haskell, and Cogent, +which are functional languages (although Cogent distinguishes between unboxed value types +and reference types). +Dafny supports both functional programming based on value types (e.g. seq, datatypes) +and imperative programming based on heap objects (e.g. arrays, class objects). +However, in contrast to Rust, linear Dafny uses linearity and borrowing just for +the functional subset of Dafny, for which it tends to be easier to write proofs. + +### Lifetime parameters + +One limitation of shared variables in linear Dafny (and similar `{D, S}` variables in Cogent) +is that the type checker blocks all shared variables from escaping +the scope of a borrowing. +In some cases, this is more restrictive than necessary. +In the following example, the call `f(x, y)` is not allowed to assign +the return value to a shared variable `y'`: + +``` +function method f(shared x: int, shared y: int): (shared y': int) { + y +} +function method consume(linear x: int, shared y: int): () +function method g(linear x: int, shared y: int): () { + shared var y' := f(x, y); // FAILS: borrowing x blocks the return of shared y' + consume(x, y') +} +``` + +Blocking `y'` is unfortunate in this example. +It's important to block `f(x, y)` from returning `x` as shared, +so that `x` cannot be simultaneously `linear` and `shared`, +but returning `y` as shared is perfectly safe. + +Rust "lifetime parameters" can distinguish between varying lifetimes +of different borrowed variables. +If linear Dafny had Rust's lifetime parameters, +then the code above could be written as: + +``` +function method f(shared x: int, shared y: int): (shared y': int) { + y +} +function method consume(linear x: int, shared y: int): () +function method g(linear x: int, shared y: int): () { + shared var y' := f(x, y); // ok to return y' because of its long lifetime + consume(x, y') +} +``` + +In this (hypothetical) code, `f`'s parameters `x` and `y` have explicitly +different lifetimes `a` and `b`, and the return value `y'` has the same lifetime as `y`, +namely `b`. +This tells `g` that `y'` outlives the borrowing of the linear `x`, +and therefore is safe to store in a local shared variable. + +### Borrowing components of data structures + +Linear Dafny's type system tracks borrowing of variables. +In some cases, it would be useful to separately borrow different components +of the data stored in a single variable: + +``` +method m1(shared x: int, shared y: int) +method m2(linear inout x: int, shared y: int) +method m3(linear inout x: int, linear inout y: int) +method n(linear inout p: (linear int, linear int)) { + m1(p.0, p.1); // supported (borrows all of p once, uses shared borrowed p twice) + m2(inout p.0, p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 + m3(inout p.0, inout p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 +} +``` + +Rust's checker tracks borrowing of fine-grained "paths" through variables, like `p.0` and `p.1`, +rather than just coarsely tracking borrowing of entire variables, +and is therefore able to support examples like the code shown above. + +### Non-lexical lifetimes + +Linear Dafny tracks the scope of linear and shared variables +to ensure that if shared `s` borrows from linear `x`, +then `x` remains unavailable until `s` is out of scope. +The following code fails to satisfy this criterion, +and is rejected by linear Dafny's type checker: + +``` +function method borrow(shared s: int): (shared s': int) +function method consume(i: int, linear x: int): () +function method f(shared s1: int, shared s2: int): (i: int) + +function method g(linear x: int): () { + shared var s := borrow(x); + var i := f(s, s); + consume(i, x) // FAILS: s is still lexically in scope when x is consumed +} +``` + +Thus, the code must be rewritten to reduce the scope of `s`: + +``` +function method g(linear x: int): () { + var i := ( + shared var s := borrow(x); + f(s, s)); + consume(i, x) // SUCCEEDS: s is not in scope when x is consumed +} +``` + +Rewriting the code like this is inconvenient. +After all, there's nothing inherently unsafe about the first version +of `g`, since it doesn't actually use `s` simultaneously with consuming `x`. +Therefore, newer versions of Rust support non-lexical lifetimes, +so that the checker tracks the actual usage of variables like `s` +rather than just their scope. diff --git a/Docs/Linear/TypingRules.md b/Docs/Linear/TypingRules.md index bdb60ec0d9e..08e52c72ac0 100644 --- a/Docs/Linear/TypingRules.md +++ b/Docs/Linear/TypingRules.md @@ -307,8 +307,8 @@ G ; O ; S ; L1, Bs, Bm, L2 |- x := e : Bs, Bm, L2, {x} G ; O ; S ; L0 |- s1 : L1 G ; O ; S ; L1 |- s2 : L2 ------------------------------- -G ; O ; S ; L0 |- s1; s2 |- L2 +----------------------------- +G ; O ; S ; L0 |- s1; s2 : L2 G ; O ; S, Bs ; Bm ; Le |- e : ordinary G ; O ; S ; Bs, Bm, L0 |- s1 : L12 From 12a20d7ff8a7ff1f2772345336c13e59106c2b2e Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 16 Dec 2020 22:17:37 -0800 Subject: [PATCH 343/573] Minor fixes to Docs/Linear/RelatedWork.md --- Docs/Linear/RelatedWork.md | 70 +++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/Docs/Linear/RelatedWork.md b/Docs/Linear/RelatedWork.md index 013085ffb31..3d7bdc0e659 100644 --- a/Docs/Linear/RelatedWork.md +++ b/Docs/Linear/RelatedWork.md @@ -25,7 +25,7 @@ Typing rules enforce a lexical scope restriction on `shared` variables where bor In 1987, Girard introduced a linear logic that could directly express consumption and production of limited resources (see Wadler's "A Taste of Linear Logic" from 1993 for an introduction). -For example, Girards `-o` operator is similar to classical logic's implication operator `==>`, +For example, Girard's `-o` operator is similar to classical logic's implication operator `==>`, but `A -o B` consumes `A` when producing `B`, so that you no longer have `A` after using `A -o B`. By contrast, `A ==> B` produces `B` without consuming `A`; classical logic expresses that if you know some fact `A`, @@ -292,22 +292,22 @@ One limitation of shared variables in linear Dafny (and similar `{D, S}` variabl is that the type checker blocks all shared variables from escaping the scope of a borrowing. In some cases, this is more restrictive than necessary. -In the following example, the call `f(x, y)` is not allowed to assign +In the following example, the call `F(x, y)` is not allowed to assign the return value to a shared variable `y'`: ``` -function method f(shared x: int, shared y: int): (shared y': int) { +function method F(shared x: int, shared y: int): (shared y': int) { y } -function method consume(linear x: int, shared y: int): () -function method g(linear x: int, shared y: int): () { - shared var y' := f(x, y); // FAILS: borrowing x blocks the return of shared y' - consume(x, y') +function method Consume(linear x: int, shared y: int): () +function method G(linear x: int, shared y: int): () { + shared var y' := F(x, y); // FAILS: borrowing x blocks the return of shared y' + Consume(x, y') } ``` Blocking `y'` is unfortunate in this example. -It's important to block `f(x, y)` from returning `x` as shared, +It's important to block `F(x, y)` from returning `x` as shared, so that `x` cannot be simultaneously `linear` and `shared`, but returning `y` as shared is perfectly safe. @@ -317,20 +317,20 @@ If linear Dafny had Rust's lifetime parameters, then the code above could be written as: ``` -function method f(shared x: int, shared y: int): (shared y': int) { +function method F(shared x: int, shared y: int): (shared y': int) { y } -function method consume(linear x: int, shared y: int): () -function method g(linear x: int, shared y: int): () { - shared var y' := f(x, y); // ok to return y' because of its long lifetime - consume(x, y') +function method Consume(linear x: int, shared y: int): () +function method G(linear x: int, shared y: int): () { + shared var y' := F(x, y); // ok to return y' because of its long lifetime + Consume(x, y') } ``` -In this (hypothetical) code, `f`'s parameters `x` and `y` have explicitly +In this (hypothetical) code, `F`'s parameters `x` and `y` have explicitly different lifetimes `a` and `b`, and the return value `y'` has the same lifetime as `y`, namely `b`. -This tells `g` that `y'` outlives the borrowing of the linear `x`, +This tells `G` that `y'` outlives the borrowing of the linear `x`, and therefore is safe to store in a local shared variable. ### Borrowing components of data structures @@ -340,13 +340,13 @@ In some cases, it would be useful to separately borrow different components of the data stored in a single variable: ``` -method m1(shared x: int, shared y: int) -method m2(linear inout x: int, shared y: int) -method m3(linear inout x: int, linear inout y: int) -method n(linear inout p: (linear int, linear int)) { - m1(p.0, p.1); // supported (borrows all of p once, uses shared borrowed p twice) - m2(inout p.0, p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 - m3(inout p.0, inout p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 +method M1(shared x: int, shared y: int) +method M2(linear inout x: int, shared y: int) +method M3(linear inout x: int, linear inout y: int) +method N(linear inout p: (linear int, linear int)) { + M1(p.0, p.1); // supported (borrows all of p once, uses shared borrowed p twice) + M2(inout p.0, p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 + M3(inout p.0, inout p.1); // not yet supported in linear Dafny: separately borrowing p.0 and p.1 } ``` @@ -363,31 +363,31 @@ The following code fails to satisfy this criterion, and is rejected by linear Dafny's type checker: ``` -function method borrow(shared s: int): (shared s': int) -function method consume(i: int, linear x: int): () -function method f(shared s1: int, shared s2: int): (i: int) - -function method g(linear x: int): () { - shared var s := borrow(x); - var i := f(s, s); - consume(i, x) // FAILS: s is still lexically in scope when x is consumed +function method Borrow(shared s: int): (shared s': int) +function method Consume(i: int, linear x: int): () +function method F(shared s1: int, shared s2: int): (i: int) + +function method G(linear x: int): () { + shared var s := Borrow(x); + var i := F(s, s); + Consume(i, x) // FAILS: s is still lexically in scope when x is consumed } ``` Thus, the code must be rewritten to reduce the scope of `s`: ``` -function method g(linear x: int): () { +function method G(linear x: int): () { var i := ( - shared var s := borrow(x); - f(s, s)); - consume(i, x) // SUCCEEDS: s is not in scope when x is consumed + shared var s := Borrow(x); + F(s, s)); + Consume(i, x) // SUCCEEDS: s is not in scope when x is consumed } ``` Rewriting the code like this is inconvenient. After all, there's nothing inherently unsafe about the first version -of `g`, since it doesn't actually use `s` simultaneously with consuming `x`. +of `G`, since it doesn't actually use `s` simultaneously with consuming `x`. Therefore, newer versions of Rust support non-lexical lifetimes, so that the checker tracks the actual usage of variables like `s` rather than just their scope. From ee03518b5aab422991ac174a32930595c15a4246 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 18 Dec 2020 10:34:22 -0800 Subject: [PATCH 344/573] Minor formatting fixes to Docs/Linear/RelatedWork.md --- Docs/Linear/RelatedWork.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Docs/Linear/RelatedWork.md b/Docs/Linear/RelatedWork.md index 3d7bdc0e659..56cac2a34c6 100644 --- a/Docs/Linear/RelatedWork.md +++ b/Docs/Linear/RelatedWork.md @@ -295,7 +295,7 @@ In some cases, this is more restrictive than necessary. In the following example, the call `F(x, y)` is not allowed to assign the return value to a shared variable `y'`: -``` +```dafny function method F(shared x: int, shared y: int): (shared y': int) { y } @@ -316,7 +316,7 @@ of different borrowed variables. If linear Dafny had Rust's lifetime parameters, then the code above could be written as: -``` +```dafny function method F(shared x: int, shared y: int): (shared y': int) { y } @@ -339,7 +339,7 @@ Linear Dafny's type system tracks borrowing of variables. In some cases, it would be useful to separately borrow different components of the data stored in a single variable: -``` +```dafny method M1(shared x: int, shared y: int) method M2(linear inout x: int, shared y: int) method M3(linear inout x: int, linear inout y: int) @@ -362,7 +362,7 @@ then `x` remains unavailable until `s` is out of scope. The following code fails to satisfy this criterion, and is rejected by linear Dafny's type checker: -``` +```dafny function method Borrow(shared s: int): (shared s': int) function method Consume(i: int, linear x: int): () function method F(shared s1: int, shared s2: int): (i: int) @@ -376,7 +376,7 @@ function method G(linear x: int): () { Thus, the code must be rewritten to reduce the scope of `s`: -``` +```dafny function method G(linear x: int): () { var i := ( shared var s := Borrow(x); From 1e5f9b029d2da5e13c8d4eaab2ea41bc60ed13ab Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 18 Dec 2020 11:25:02 -0800 Subject: [PATCH 345/573] Minor bug fixes in Resolver/Linear --- Source/Dafny/Linear.cs | 2 +- Source/Dafny/Resolver.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index a9e742f58f3..af4503d3167 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -170,8 +170,8 @@ public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTemp } void PreRewriteMethod(Method m, TopLevelDecl enclosingDecl) { - Util.OxideDebug(m.tok, "Rewriting method {0}", m.Name); Contract.Requires(m != null); + Util.OxideDebug(m.tok, "Rewriting method {0}", m.Name); // TODO(andrea) m.CompileOuts = m.Outs.ToList(); // TODO(andrea) m.CompileIns = m.Ins.ToList(); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 9631b621c11..7f88ac0fffd 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -15333,7 +15333,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } } if (!ok) { - if (usageContext.available.ContainsKey(e.Var) && usageContext.available[e.Var] == Available.MutablyBorrowed) { + if (usageContext != null && usageContext.available.ContainsKey(e.Var) && usageContext.available[e.Var] == Available.MutablyBorrowed) { reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here (it's already mutably borrowed)"); } else { reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here"); From dab22ed867d000341588add7a1f2e1ba4b1a49b3 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 18 Dec 2020 12:46:36 -0800 Subject: [PATCH 346/573] Allow "linear var D() := ...;" to deconstruct empty linear datatype cases --- Source/Dafny/Resolver.cs | 8 +- Test/linear/LinearDatatype.dfy | 25 +++ Test/linear/LinearDatatype.dfy.expect | 250 +++++++++++++------------- 3 files changed, 154 insertions(+), 129 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 7f88ac0fffd..81332c37ffc 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7359,7 +7359,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable local.MakeGhost(); } } - s.IsGhost = s.LocalVars.All(v => v.IsGhost); + s.IsGhost = s.LocalVars.All(v => v.IsGhost) && s.Usage != Usage.Linear; if (!s.IsGhost) { resolver.CheckIsCompilable(s.RHS, usageContext, s.Usage); } @@ -9773,7 +9773,7 @@ public void ResolveStatement(Statement stmt, ICodeContext codeContext) { ScopePushAndReport(scope, bv, "local_variable"); c++; } - if (c == 0) { + if (c == 0 && s.Usage != Usage.Linear) { // Every identifier-looking thing in the pattern resolved to a constructor; that is, this LHS is a constant literal reporter.Error(MessageSource.Resolver, s.LHS.tok, "LHS is a constant literal; to be legal, it must introduce at least one bound variable"); } @@ -13469,7 +13469,7 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { ScopePushAndReport(scope, v, "let-variable"); c++; } - if (c == 0) { + if (c == 0 && e.Usage != Usage.Linear) { // Every identifier-looking thing in the pattern resolved to a constructor; that is, this LHS is a constant literal reporter.Error(MessageSource.Resolver, lhs.tok, "LHS is a constant literal; to be legal, it must introduce at least one bound variable"); } @@ -15477,7 +15477,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs var uc0 = UsageContext.Copy(usageContext); foreach (var ee in e.RHSs) { var xs = e.LHSs[i].Vars.ToList(); - if (!xs.All(bv => bv.IsGhost)) { + if (!xs.All(bv => bv.IsGhost) || e.Usage == Usage.Linear) { CheckIsCompilable(ee, usageContext, e.Usage); } i++; diff --git a/Test/linear/LinearDatatype.dfy b/Test/linear/LinearDatatype.dfy index 75fbe0855aa..6a1170440c2 100644 --- a/Test/linear/LinearDatatype.dfy +++ b/Test/linear/LinearDatatype.dfy @@ -148,6 +148,31 @@ linear datatype fd = FD(i:int) linear method m3() returns(linear r:fd) {var i := f2(); r := m1();} } +linear datatype D0 = D0 +linear datatype Dg = Dg(ghost g:int) + +method TestD0(linear x:D0) +{ + linear var D0() := x; // note:it's important to allow the "()"; this is *not* the same as "linear var D0 := x;" +} + +method TestDg(linear x:Dg) +{ + linear var Dg(g) := x; +} + +function method FunD0(linear x:D0):() +{ + linear var D0() := x; + () +} + +function method FunDg(linear x:Dg):() +{ + linear var Dg(g) := x; + () +} + // // // diff --git a/Test/linear/LinearDatatype.dfy.expect b/Test/linear/LinearDatatype.dfy.expect index f12f14a51f0..dcdf05722b6 100644 --- a/Test/linear/LinearDatatype.dfy.expect +++ b/Test/linear/LinearDatatype.dfy.expect @@ -1,138 +1,138 @@ -LinearDatatype.dfy(578,25): Error: linear 'this' must be unavailable at function exit -LinearDatatype.dfy(579,35): Error: expected linear expression, found shared expression -LinearDatatype.dfy(579,40): Error: cannot select from linear expression -LinearDatatype.dfy(580,28): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(581,16): Error: linear 'this' must be unavailable at method exit -LinearDatatype.dfy(582,42): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(183,20): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(190,4): Error: cannot borrow o when assigning to shared variable -LinearDatatype.dfy(197,11): Error: cannot borrow o when assigning to shared variable -LinearDatatype.dfy(206,6): Error: expected linear expression, found shared expression -LinearDatatype.dfy(203,39): Error: linear variable must be unavailable at function exit -LinearDatatype.dfy(211,14): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(211,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(216,11): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(216,14): Error: expected linear expression, found shared expression -LinearDatatype.dfy(216,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(221,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(221,14): Error: linear variable is unavailable here -LinearDatatype.dfy(221,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(226,14): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(226,10): Error: expected shared expression, found linear expression -LinearDatatype.dfy(231,11): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(231,14): Error: expected linear expression, found shared expression -LinearDatatype.dfy(231,10): Error: expected shared expression, found linear expression -LinearDatatype.dfy(236,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(236,14): Error: linear variable is unavailable here -LinearDatatype.dfy(236,10): Error: expected shared expression, found linear expression -LinearDatatype.dfy(241,14): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(246,11): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(246,14): Error: expected linear expression, found shared expression -LinearDatatype.dfy(251,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(251,14): Error: linear variable is unavailable here -LinearDatatype.dfy(256,31): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(261,31): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(261,4): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(266,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(271,31): Error: expected linear expression, found shared expression -LinearDatatype.dfy(271,4): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(276,24): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(281,4): Error: cannot borrow p when assigning to shared variable -LinearDatatype.dfy(286,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(603,25): Error: linear 'this' must be unavailable at function exit +LinearDatatype.dfy(604,35): Error: expected linear expression, found shared expression +LinearDatatype.dfy(604,40): Error: cannot select from linear expression +LinearDatatype.dfy(605,28): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(606,16): Error: linear 'this' must be unavailable at method exit +LinearDatatype.dfy(607,42): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(208,20): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(215,4): Error: cannot borrow o when assigning to shared variable +LinearDatatype.dfy(222,11): Error: cannot borrow o when assigning to shared variable +LinearDatatype.dfy(231,6): Error: expected linear expression, found shared expression +LinearDatatype.dfy(228,39): Error: linear variable must be unavailable at function exit +LinearDatatype.dfy(236,14): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(236,10): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(241,11): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(241,14): Error: expected linear expression, found shared expression +LinearDatatype.dfy(241,10): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(246,11): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(246,14): Error: linear variable is unavailable here +LinearDatatype.dfy(246,10): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(251,14): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(251,10): Error: expected shared expression, found linear expression +LinearDatatype.dfy(256,11): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(256,14): Error: expected linear expression, found shared expression +LinearDatatype.dfy(256,10): Error: expected shared expression, found linear expression +LinearDatatype.dfy(261,11): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(261,14): Error: linear variable is unavailable here +LinearDatatype.dfy(261,10): Error: expected shared expression, found linear expression +LinearDatatype.dfy(266,14): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(271,11): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(271,14): Error: expected linear expression, found shared expression +LinearDatatype.dfy(276,11): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(276,14): Error: linear variable is unavailable here +LinearDatatype.dfy(281,31): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(286,31): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(286,4): Error: linear variable b must be unavailable at end of block LinearDatatype.dfy(291,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(291,4): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(296,24): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(301,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(301,4): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(306,17): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(311,17): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(311,35): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(316,10): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(316,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(316,28): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(321,17): Error: expected linear expression, found shared expression -LinearDatatype.dfy(321,35): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(326,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(326,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(326,28): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(331,11): Error: cannot borrow p when assigning to shared variable -LinearDatatype.dfy(336,10): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(336,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(336,4): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(296,31): Error: expected linear expression, found shared expression +LinearDatatype.dfy(296,4): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(301,24): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(306,4): Error: cannot borrow p when assigning to shared variable +LinearDatatype.dfy(311,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(316,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(316,4): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(321,24): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(326,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(326,4): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(331,17): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(336,17): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(336,35): Error: linear variable b must be unavailable at end of block LinearDatatype.dfy(341,10): Error: expected ordinary expression, found shared expression LinearDatatype.dfy(341,28): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(341,28): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(341,4): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(346,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(346,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(346,4): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(351,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(346,17): Error: expected linear expression, found shared expression +LinearDatatype.dfy(346,35): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(351,10): Error: expected ordinary expression, found linear expression LinearDatatype.dfy(351,28): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(351,28): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(351,4): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(356,31): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(361,31): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(362,0): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(366,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(371,31): Error: expected linear expression, found shared expression -LinearDatatype.dfy(372,0): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(376,24): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(381,31): Error: cannot borrow variable because expression returns a shared result -LinearDatatype.dfy(386,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(356,11): Error: cannot borrow p when assigning to shared variable +LinearDatatype.dfy(361,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(361,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(361,4): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(366,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(366,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(366,28): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(366,4): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(371,10): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(371,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(371,4): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(376,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(376,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(376,28): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(376,4): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(381,31): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(386,31): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(387,0): Error: linear variable b must be unavailable at end of block LinearDatatype.dfy(391,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(391,32): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(396,24): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(401,24): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(401,32): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(406,17): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(411,17): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(411,20): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(416,10): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(416,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(416,13): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(421,17): Error: expected linear expression, found shared expression -LinearDatatype.dfy(421,20): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(426,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(426,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(426,13): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(431,17): Error: cannot borrow variable because expression returns a shared result -LinearDatatype.dfy(436,10): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(436,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(436,39): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(396,31): Error: expected linear expression, found shared expression +LinearDatatype.dfy(397,0): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(401,24): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(406,31): Error: cannot borrow variable because expression returns a shared result +LinearDatatype.dfy(411,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(416,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(416,32): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(421,24): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(426,24): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(426,32): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(431,17): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(436,17): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(436,20): Error: linear variable b must be unavailable at end of block LinearDatatype.dfy(441,10): Error: expected ordinary expression, found shared expression LinearDatatype.dfy(441,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(441,39): Error: expected shared expression, found ordinary expression LinearDatatype.dfy(441,13): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(446,10): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(446,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(446,39): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(451,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(446,17): Error: expected linear expression, found shared expression +LinearDatatype.dfy(446,20): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(451,10): Error: expected ordinary expression, found linear expression LinearDatatype.dfy(451,28): Error: expected linear expression, found ordinary expression -LinearDatatype.dfy(451,39): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(451,13): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(456,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(465,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(474,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(472,44): Error: linear variable must be unavailable at method exit -LinearDatatype.dfy(483,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(481,44): Error: linear variable must be unavailable at method exit -LinearDatatype.dfy(492,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches -LinearDatatype.dfy(501,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches -LinearDatatype.dfy(511,33): Error: cannot borrow variable because expression returns a shared result -LinearDatatype.dfy(517,22): Error: expected linear expression, found shared expression -LinearDatatype.dfy(518,0): Error: linear variable ltl must be unavailable at end of block -LinearDatatype.dfy(523,22): Error: cannot borrow variable because expression returns a shared result -LinearDatatype.dfy(528,4): Error: linear variable l must be unavailable at end of block -LinearDatatype.dfy(533,4): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(538,51): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(544,0): Error: linear variable l must be unavailable at end of block -LinearDatatype.dfy(549,0): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(553,36): Error: linear variable b must be unavailable at end of block -LinearDatatype.dfy(561,25): Error: cannot borrow variable because expression returns a shared result -LinearDatatype.dfy(562,25): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(563,18): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(564,16): Error: expected shared expression, found linear expression -LinearDatatype.dfy(569,22): Error: expected shared expression, found ordinary expression -LinearDatatype.dfy(570,15): Error: expected ordinary expression, found shared expression -LinearDatatype.dfy(571,39): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(456,17): Error: cannot borrow variable because expression returns a shared result +LinearDatatype.dfy(461,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(461,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(461,39): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(466,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(466,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(466,39): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(466,13): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(471,10): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(471,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(471,39): Error: expected ordinary expression, found linear expression +LinearDatatype.dfy(476,10): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(476,28): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(476,39): Error: expected linear expression, found ordinary expression +LinearDatatype.dfy(476,13): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(481,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches +LinearDatatype.dfy(490,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches +LinearDatatype.dfy(499,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches +LinearDatatype.dfy(497,44): Error: linear variable must be unavailable at method exit +LinearDatatype.dfy(508,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches +LinearDatatype.dfy(506,44): Error: linear variable must be unavailable at method exit +LinearDatatype.dfy(517,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches +LinearDatatype.dfy(526,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches +LinearDatatype.dfy(536,33): Error: cannot borrow variable because expression returns a shared result +LinearDatatype.dfy(542,22): Error: expected linear expression, found shared expression +LinearDatatype.dfy(543,0): Error: linear variable ltl must be unavailable at end of block +LinearDatatype.dfy(548,22): Error: cannot borrow variable because expression returns a shared result +LinearDatatype.dfy(553,4): Error: linear variable l must be unavailable at end of block +LinearDatatype.dfy(558,4): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(563,51): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(569,0): Error: linear variable l must be unavailable at end of block +LinearDatatype.dfy(574,0): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(578,36): Error: linear variable b must be unavailable at end of block +LinearDatatype.dfy(586,25): Error: cannot borrow variable because expression returns a shared result +LinearDatatype.dfy(587,25): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(588,18): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(589,16): Error: expected shared expression, found linear expression +LinearDatatype.dfy(594,22): Error: expected shared expression, found ordinary expression +LinearDatatype.dfy(595,15): Error: expected ordinary expression, found shared expression +LinearDatatype.dfy(596,39): Error: expected ordinary expression, found shared expression 137 resolution/type errors detected in LinearDatatype.dfy From 0b97e538e034ccfaf4917e2c62df83385ca205c4 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 18 Dec 2020 17:48:59 -0800 Subject: [PATCH 347/573] Add Docs/Linear/Library.md --- Docs/Linear/Library.md | 500 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 500 insertions(+) create mode 100644 Docs/Linear/Library.md diff --git a/Docs/Linear/Library.md b/Docs/Linear/Library.md new file mode 100644 index 00000000000..a60d808963e --- /dev/null +++ b/Docs/Linear/Library.md @@ -0,0 +1,500 @@ +# Library for linear types + +This document presents a small library of types for linear sequences and for boxing linear values +inside ordinary values. +In the future, some of these features could be integrated directly into the linear Dafny language +rather than being in an external library. + +## Language features supporting libraries + +Linear Dafny includes several language features to support user-defined libraries. + +### Operator overloading and inline attribute + +Linear Dafny allows user programs to overload the "`| |`", "`[]`", and "`in`" operators +by declaring functions named `operator(| |)`, `operator([])`, and `operator(in)`: + +```dafny +function{:inline true} operator([])(s: lseq, i: nat): A + requires i < |s| +{ + LSeqs(s)[i] +} +``` + +If the type checker detects that expression `e` in `|e|` or `e[...]` or `... in e` +is a user-defined type rather than a built-in type, +it looks for an `operator(...)` function for `e`'s type and replaces +the `|e|` or `e[...]` or `... in e` with a call to the operator function. + +The `{:inline true}` attribute on a function `F` indicates that uses of `F` +are inlined in SMT queries. This can help avoid issues with Dafny or Z3 choosing bad triggers. +(Caveat: the current implementation of this attribute is limited, +supporting only simple function bodies made of function calls and operators, +not arbitrary boolean expressions or arithmetic, +but this could be fixed with more implementation work.) + +### rank_is_less_than + +Dafny `decreases` work for sequences and inductive datatypes as well as integers. +Linear Dafny also allows user-declared abstract types to appear in decreases clause +via a predicate `rank_is_less_than`: + +```dafny +predicate rank_is_less_than(a: A, b: B) +``` + +If `rank_is_less_than(a, b)` is true, then `a` is strictly smaller than `b`, +which can be exploited by `decreases` clauses. +User-declared abstract types can provide axioms about `rank_is_less_than`: + +```dafny +type{:extern ...} lseq // externally provided abstract type +function{:axiom} LSeqs(l: lseq): (s: seq) + ensures rank_is_less_than(s, l) // the sequence s is smaller in rank than the lseq containing it +``` + +The Boogie prelude file `DafnyPrelude.bpl` takes `rank_is_less_than` into account +when ranking sequences and boxed data values. + +### caller_must_be_pure + +```dafny +function method{:caller_must_be_pure} F(...): (shared a: A) +``` + +The attribute `{:caller_must_be_pure}` on a function method `F` indicates that +the function method can only be called in limited situations: + +- `F` can be called from ghost code +- `F` can be called from a function method `G` that does not return a `shared` result +- `F` can be called from a function method `G` that is also marked `{:caller_must_be_pure}` +(even if `G` returns a `shared` result) +- `F` can be called from an argument to a call to a method `M` that has no modifies clause and no shared return values + +The result of these restrictions is that `F`'s shared return value cannot escape +into any code that performs heap modifications. +This feature is used to allow borrowing from boxed linear values (see below), +which is only safe if the heap-allocated box isn't modified during the borrowing. + +The design of this feature depends closely on the semantics of standard Dafny's modifies clauses. +In particular, it exploits the fact that a method with no modifies cannot perform any +heap modifications +(even if the method reverts all of its modifications to leave the heap in its original state). +If methods without modifies clauses could modify the heap, +`caller_must_be_pure` would have to be changed to disallow calls to methods. + +## The seq type + +Linear Dafny uses standard Dafny's `seq` type for both ordinary operations +(as in standard Dafny) and linear/shared operations. +The read-only operations `SeqLength` and `SeqGet` +use shared `seq` while read-write operations use linear `seq`. +`SeqUnleash` converts a linear `seq` into an ordinary `seq`, +but otherwise linear/shared `seq` values do not interact with ordinary `seq` values: + +```dafny +function method SeqLength(shared s: seq): (n: nat) + ensures n == |s| + +function method SeqGet(shared s: seq, i: nat): (a: A) + requires i < |s| + ensures a == s[i] + +function method SeqUpdate(linear s: seq, i: nat, a: A): (linear s': seq) + requires i < |s| + ensures s' == s[i := a] + +method SeqSet(linear inout s: seq, i: nat, a: A) + requires i < |old_s| + ensures s == old_s[i := a] +{ + s := SeqUpdate(s, i, a); +} + +function method SeqAlloc(length: nat, a: A): (linear s: seq) + ensures |s| == length + ensures forall i :: 0 <= i < |s| ==> s[i] == a + +function method SeqFree(linear s: seq): () + +function method SeqUnleash(linear s1: seq): (s2: seq) + ensures s1 == s2 +``` + +Note that linear `seq` values contain ordinary elements, not linear elements, +which allows `SeqUpdate` and `SeqGet` to safely copy elements in and out of the sequence +(see `lseq` below for sequences of linear elements). + +The following example uses immutable borrowing in `i < SeqLength(s)` +mutable borrowing in `SeqSet(inout s, i, i)`, +and ghost code (e.g. `s[j] == j`): + +```dafny +method Example() returns(x: seq) + ensures forall i :: 0 <= i < |x| ==> x[i] == i +{ + linear var s := SeqAlloc(10, 0); + var i := 0; + while i < SeqLength(s) + invariant 0 <= i <= |s| + invariant forall j :: 0 <= j < i ==> s[j] == j + { + SeqSet(inout s, i, i); + i := i + 1; + } + x := SeqUnleash(s); +} +``` + +## The lseq type + +Elements of linear/shared `seq` are ordinary values, not linear values, +so that `seq` can support copying of values into and out of the sequence elements. +Sequences with linear elements do not allow such copying, +but instead use different operations, such as swap, that are safe for linear values. + +The type `lseq` describes sequences of linear elements. +While all elements of a `seq` are available for reading, +`lseq` elements may be present or absent. +The ghost operation `LSeqHas` reports which elements are present, +and `LSeqs` returns the present elements (or arbitrary values for absent elements). +An axiom `LSeqsExtensional` says that `lseq`s with identical elements +are identical. + +```dafny +type lseq + +function LSeqs(l: lseq): (s: seq) // contents of an lseq, as ghost seq + ensures rank_is_less_than(s, l) + +function LSeqHas(l: lseq): (s: seq) + ensures |s| == |LSeqs(l)| + +lemma LSeqsExtensional(l1: lseq, l2: lseq) + requires LSeqs(l1) == LSeqs(l2) + requires LSeqHas(l1) == LSeqHas(l2) + ensures l1 == l2 +``` + +For convenience, the following function declarations overload +the `| |` operator, the `[]` operator, and the `in` operator for `lseq` +(all are defined with `inline true` to make sure that their usage doesn't +interfere with Dafny's trigger selection for quantifiers): + +```dafny +function{:inline true} operator(| |)(s: lseq): nat +{ + |LSeqs(s)| +} + +function{:inline true} operator([])(s: lseq, i: nat): A + requires i < |s| +{ + LSeqs(s)[i] +} + +// Note: it might make more sense to define this as i < |s| && LSeqHas(s)[i], +// but {:inline true} can't yet handle this. +function{:inline true} operator(in)(s: lseq, i: nat): bool + requires i < |s| +{ + LSeqHas(s)[i] +} +``` + +All elements of newly allocated `lseq` values are absent. +To free an `lseq`, all elements must be absent so that no linear element values are discarded: + +```dafny +method LSeqAlloc(length: nat) returns(linear s: lseq) + ensures |s| == length + ensures forall i: nat | i < length :: i !in s + +method LSeqFree(linear s: lseq) + requires forall i: nat | i < |LSeqs(s)| :: i !in s +``` + +The following readonly functions can get the length, as an ordinary integer, +or borrow an element, as a shared value: + +```dafny +function method LSeqLength(shared s: lseq): (n: nat) + ensures n == |s| + +function method LSeqGet(shared s: lseq, i: nat): (shared a: A) + requires i < |s| && i in s + ensures a == s[i] +``` + +Mutations on `lseq` elements are either take, give, or swap operations. +Giving an element to the `lseq` sets the corresponding `LSeqHas` to true, +making the element present, while taking sets it to `false`, making the element absent: + +```dafny +method LSeqGive(inout linear s: lseq, i: nat, linear a: A) + requires i < |old_s| && i !in old_s + ensures LSeqHas(s) == LSeqHas(old_s)[i := true] + ensures LSeqs(s) == LSeqs(old_s)[i := a] + +method LSeqTake(linear inout s: lseq, i: nat) returns(linear a: A) + requires i < |old_s| && i in old_s + ensures LSeqHas(s) == LSeqHas(old_s)[i := false] + ensures LSeqs(s) == LSeqs(old_s) + ensures a == old_s[i] + +method LSeqSwap(inout linear s: lseq, i: nat, linear a1: A) returns(linear a2: A) + requires i < |old_s| && i in old_s + ensures a2 == LSeqs(old_s)[i] + ensures LSeqs(s) == LSeqs(old_s)[i := a1] +``` + +The following example shows both mutation and readonly operations on `lseq` values: + +```dafny +method LSeqExample(linear inout s: lseq>) returns(linear lens: seq) + requires forall i: nat | i < |old_s| :: i in old_s + ensures s == old_s + ensures |lens| == |s| + ensures forall i: nat | i < |lens| :: lens[i] == Length(s[i]) +{ + // Compute length of every list in s + var len := LSeqLength(s); + lens := SeqAlloc(len, 0); + var i: nat := 0; + while (i < len) + invariant i <= len + invariant s == old_s + invariant |lens| == len + invariant forall j: nat | j < i :: lens[j] == Length(s[j]) + { + if (*) + { + // The hard way to do it: + linear var l: LList; + l := LSeqTake(inout s, i); + SeqSet(inout lens, i, Length(l)); + LSeqGive(inout s, i, l); + LSeqsExtensional(old_s, s); + } + else + { + // The easy way to do it: + SeqSet(inout lens, i, Length(LSeqGet(s, i))); + } + i := i + 1; + } +} +``` + +## Boxed linear values + +Linear datatypes can contain ordinary fields. +The opposite is not allowed: you can't put a linear field in an ordinary datatype, +because ordinary datatypes can be duplicated and discarded, +which duplicates and discards the datatype's fields. +However, we can define a special linear-to-ordinary adapter object that holds linear data. +The adapter object lives in the heap. +Since the heap can't be duplicated, the object can't be duplicated and its linear data can't be duplicated. +The linear data in the object is only usable via a Swap method that swaps +one linear value for another: + +```dafny +class SwapLinear +{ + function Read(): A + reads this + + constructor(linear a: A) + ensures Read() == a + + method Swap(linear a1: A) returns(linear a2: A) + modifies this + ensures a2 == old(Read()) + ensures Read() == a1 +} +``` + +However, this simply definition of `SwapLinear` has two deficiencies. +First, it can leak linear values. +If a program creates a `SwapLinear` object `x` to hold a linear value `a`, +then `x` can simply be discarded, since it is an ordinary heap object. +Discarding `x`, unfortunately, also discards `a`. +To prevent this, it's a good idea to extend `SwapLinear` +to call a destructor that deallocates the `a` value. +There are various ways to arrange this, +but the simplest is to pass a destructor function method of type `(linear A) --> ()` +to the `SwapLinear` constructor: + +```dafny + constructor(linear a: A, destructor: (linear A) --> ()) +``` + +The second deficiency is that accessing the `A` value inside +the `SwapLinear` requires a call to `Swap`, +which always modifies the `SwapLinear` object. +This is inconvenient for methods or function methods that use the `A` value read-only: + +```dafny +linear datatype LOption = LNone | LSome(linear a: A) + +method BorrowInt(shared s: int) + +method ReadInt(swap: SwapLinear>) + requires swap.Read().LSome? + modifies swap; // annoying, since we're only reading from "swap" + ensures swap.Read() == old(swap.Read()) +{ + linear var x := swap.Swap(LNone); + BorrowInt(x.a); + linear var empty := swap.Swap(x); + linear var LNone() := empty; +} +``` + +The following definition adds a `Borrow` function method +that returns a shared `A`: + +```dafny +class SwapLinear +{ + function Inv(): (A) -> bool + reads this + + function Read(): (a: A) + reads this + ensures Inv()(a) + + constructor(linear a: A, destructor: (linear A) --> ()) + requires destructor.requires(a) + ensures Inv() == destructor.requires + ensures Read() == a + + method Swap(linear a1: A) returns(linear a2: A) + requires Inv()(a1) + modifies this + ensures Inv() == old(Inv()) + ensures a2 == old(Read()) + ensures Read() == a1 + + function method{:caller_must_be_pure} Borrow(): (shared a: A) + reads this + ensures a == Read() +} + +method ReadInt(swap: SwapLinear>) + requires swap.Read().LSome? +{ + BorrowInt(swap.Borrow().a); +} +``` + +`Borrow` relies on the `{:caller_must_be_pure}` attribute (see above) +to prevent the shared `A` from leaking into code that +could modify the `SwapLinear` object, +since such a modification would allow the `shared A` to coexist with a `linear A`, +which would be unsafe: + +```dafny +method ReadInt''(swap: SwapLinear>) + requires swap.Read().LSome? + modifies swap +{ + shared var x := swap.Borrow(); // FAILS ("Error: cannot call caller_must_be_pure function method + // from method except as an argument to a method with no modifies + // or shared returns") + linear var y := swap.Swap(LNone); + // x would coexist with y here + ... +} +``` + +The following example wraps `SwapLinear` in a class `BoxedLinear` that +hides the `Swap` operation in favor of `Take` and `Give` methods: + +```dafny +linear datatype LOption = LNone | LSome(linear a: A) + +class BoxedLinear +{ + var data: SwapLinear>; + + function Has(): bool + reads this, data + { + data.Read().LSome? + } + + function Read(): A + reads this, data + { + var a: A :| true; + match data.Read() case LNone => a case LSome(a) => a + } + + constructor (destructor: (linear LOption) --> ()) + requires destructor.requires(LNone) + ensures !Has() + ensures fresh(this.data) + ensures data.Inv() == destructor.requires + { + data := new SwapLinear(LNone, destructor); + } + + method Take() returns(linear a: A) + modifies this, data + requires Has() + requires data.Inv()(LNone) + ensures !Has() + ensures a == old(Read()) + ensures data == old(data) + ensures data.Inv() == old(data.Inv()) + ensures data.Inv()(LSome(a)) + { + linear var x := data.Swap(LNone); + linear var LSome(y) := x; + a := y; + } + + method Give(linear a: A) + modifies this, data + requires !Has() + requires data.Inv()(LSome(a)) + ensures Has() + ensures a == Read() + ensures data == old(data) + ensures data.Inv() == old(data.Inv()) + { + linear var x := data.Swap(LSome(a)); + linear var LNone() := x; + } + + function method{:caller_must_be_pure} Borrow(): (shared a: A) + reads this, data + requires Has() + ensures a == Read() + ensures data.Inv()(LSome(a)) + { + data.Borrow().a + } +} + +linear datatype D = D(i: int, j: int) + +function method D_Destructor(linear d: LOption): () { + linear match d case LNone => () case LSome(D(i, j)) => () +} + +method BoxedLinearExample(linear inout d: D) +{ + var box1 := new BoxedLinear(D_Destructor); + box1.Give(d); + var box2 := new BoxedLinear(D_Destructor); + var box3 := box1; // box1 is not linear, so we can duplicate it + d := box1.Take(); + + // This following would fail, because box3 == box1 and we already took the D out of box1: + // linear var d' := box3.Take(); + // box3.Give(d'); +} +``` From 87c291b31ed7ff9e1cffe0b17ded2169aee0bef0 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Sun, 20 Dec 2020 10:04:43 -0800 Subject: [PATCH 348/573] Add Docs/Linear/Implementation.md --- Docs/Linear/Implementation.md | 223 ++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 Docs/Linear/Implementation.md diff --git a/Docs/Linear/Implementation.md b/Docs/Linear/Implementation.md new file mode 100644 index 00000000000..ad8a5a840a3 --- /dev/null +++ b/Docs/Linear/Implementation.md @@ -0,0 +1,223 @@ +# Implementation of linear Dafny + +The implementation of linear Dafny is an extension to the implementation of standard Dafny, +with most changes in the following files: + +- Syntax: + - [DafnyAst.cs](../../Source/Dafny/DafnyAst.cs) + - [Dafny.atg](../../Source/Dafny/Dafny.atg) +- Type checking: + - [Resolver.cs](../../Source/Dafny/Resolver.cs) + - [Linear.cs](../../Source/Dafny/Linear.cs) +- Compilation: + - [Compiler.cs](../../Source/Dafny/Compiler.cs) + +The central definition underlying the syntax, type checking, and compilation changes is the `Usage` type: + +```csharp +public enum Usage { + Ordinary, + Shared, + Linear, + Ghost, +} +``` + +The `Usage` type generalizes the `IsGhost` property in the standard Dafny syntax, +so that variables can have "usage" of ordinary, `shared`, `linear`, or `ghost`. +For example, linear Dafny extends the standard Dafny `NonglobalVariable` class with a `Usage` +property, and redefines `IsGhost` as a wrapper around `Usage`: + +```csharp + public abstract class NonglobalVariable : IVariable { + ... + Usage usage; // readonly after resolution + public Usage Usage { + get { + return usage; + } + set { + usage = value; + } + } + public bool IsGhost { + get { + return Usage == Usage.Ghost; + } + } + public bool IsLinear { + get { + return Usage == Usage.Linear; + } + } + public bool IsShared { + get { + return Usage == Usage.Shared; + } + } + ... + } +``` + +## Type checking + +To check linearity, linear Dafny extends the type checker in Resolver.cs +to track each local variable's availability, +described by the enum `Available`: + +```csharp + enum Available { + Available, // if x is available, it can be borrowed or consumed (A --> B, A --> C, A --> M) + Borrowed, // if x is borrowed, it can be borrowed again (but not consumed) (B --> B) + Consumed, // if x is consumed, it cannot be consumed or borrowed + MutablyBorrowed, // if x is mutably borrowed, it cannot be consumed or borrowed + // Borrowed is used to implement Wadler's "let!(x) y = e1 in e2" expression, + // in which linear x is borrowed (appears as "shared") inside e1 before being + // consumed by e2. (See Wadler, "Linear types can change the world!") + // We infer "!(x)" rather than asking the user to write it explicitly. + // If an Available linear variable x is used as "shared" in e1, we change x to Borrowed in e1. + // If we find that e1 has borrowed x (changed x Available to x Borrowed), + // then we can introduce "!(x)" if all these conditions hold: + // - y is not shared (this isn't let!, but simple copying of shared e1 into shared y) + // - e1 is not shared (for soundness: can't leak shared x into non-shared y) + // - e2 consumes x (for soundness: this enforces that sharing strictly precedes consumption, + // assuming call-by-value evaluation, even if expression evaluation is otherwise unordered) + // If e2 does not consume x, x stays Borrowed. + // Borrowed is only meaningful in expressions; it does not propagate across statements. + // If statement s contains expressions that (mutably) borrow x, x is reset to Available after s is checked. + // (In other words, if s does not consume x, s can borrow x temporarily, releasing x after s finishes.) + } +``` + +The class `UsageContext` holds a mapping of local variables to their current availability: + +```csharp + class UsageContext { + internal Dictionary available = new Dictionary(); + ... + } +``` + +The linearity checking is not done in the central Dafny type checking functions (`ResolveExpression` and `ResolveStatement`), +but instead is done in the ghost/compilable checkers (`CheckIsCompilable` and `ComputeGhostInterest`). +The ghost/compilable checkers are convenient for linearity checking for two reasons. +First, unlike `ResolveExpression` and `ResolveStatement`, +these checkers are aware of which variables are ghost, and this knowledge is necessary for linearity checking +(linear variables can be assigned to ghost variables, but not to ordinary variables). +Second, these checkers traverse only compilable code, skipping over all ghost code, +which is ideal for linearity checking, since linearity only affects compilable code. + +The checkers keep a `UsageContext` object that gets updated as variables are used and borrowed: + +```csharp + Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUsage = false) { + ... + } + + ... + + UsageContext ComputeGhostInterest(Statement stmt, bool mustBeErasable, ICodeContext codeContext, UsageContext usageContext) { + ... + } + class GhostInterest_Visitor + { + readonly ICodeContext codeContext; + readonly Resolver resolver; + internal UsageContext usageContext; + ... + public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable = false) { + ... + } + ... + } +``` + +The `UsageContext` object is updated in-place as variable availability changes. +This makes checking `if/else` and `while` slightly tricky, requiring saving copies of `UsageContext`. +(In retrospect, this design led to several bugs, so a more functional programming style with an immutable `UsageContext` +might have been a safer design.) + +## Relevant git commits + +### Linear and shared + +Basics of `linear`: +- [Some initial support for linear variables, with basic linearity checking for some expressions and statements](https://github.com/secure-foundations/dafny/commit/d63cc8ccb7dcdc1aadf15d5cb94d330b4d68f91a) +- [Support function types with linear/shared parameters/returns](https://github.com/secure-foundations/dafny/commit/61d00e0dd417a2f00a6776615f9aac8f62989eef) + +Borrowing and `shared`: +- [Add support for shared variables and for borrowing in method calls](https://github.com/secure-foundations/dafny/commit/d8ae52be72022b3d5595a5e17de2dc5c00f3f500) +- [Generalize rules for borrowing and infer let!(x) for borrowing in expressions](https://github.com/secure-foundations/dafny/commit/c0937814ff81c3cfc03afefd0088c63604c8ea01) + +Linear datatypes and tuples: +- [Add linear datatypes](https://github.com/secure-foundations/dafny/commit/bfaa4bd27b3d2338ba22e73c0313af182961b3bf) +- [Support ghost/linear/shared arguments to constructors](https://github.com/secure-foundations/dafny/commit/22cbe251b6664cb6f1b8b9f36e14c5c132b959fe) +- [Allow selection from shared expressions](https://github.com/secure-foundations/dafny/commit/915fb69c0ba2ca53f15b19efbb2dd9475cdc08f6) +- [Support tuples with linear and ghost components](https://github.com/secure-foundations/dafny/commit/c51154653ec55b2a08cd3610228f00968250e989) +- [Allow linear/shared "this"](https://github.com/secure-foundations/dafny/commit/afda6a4d2b2a7acbfcd6190b3ed90c736bf104b9) +- [Allow "linear var D() := ...;" to deconstruct empty linear datatype cases](https://github.com/secure-foundations/dafny/commit/dab22ed867d000341588add7a1f2e1ba4b1a49b3) + +### Features for libraries of linear abstract types + +Inline functions: +- [Add {:inline} attribute to functions, clean up overloading](https://github.com/secure-foundations/dafny/commit/f402331aec0a1a10ae37ade6f6e534eaa333e444) +- [Fix {:inline} bug and support linear/shared in StmtExpr](https://github.com/secure-foundations/dafny/commit/e67adb3e301d0592d2a0cdfc4f954f01190f7dc3) + +Operator overloading: +- [Add operator overloading for ghost [], | |, and in](https://github.com/secure-foundations/dafny/commit/3a42ad3b04b177f275e788a3a861705c0251fb1e) +- [Call PartiallyResolveTypeForMemberSelection for overloads. Seems to break b8.dfy, git-issue196.dfy; not clear why.](https://github.com/secure-foundations/dafny/commit/f4e44c85c20f8dd60ce6a607e3278ab9e835d45f) +- [Use PartiallyResolveTypeForMemberSelection more gently for overloads, so that b8.dfy and git-issue196.dfy work again](https://github.com/secure-foundations/dafny/commit/34867aa1959d5deaa762fef59dc9e77b410ac14d) + +Decreases clauses and rank_is_less_than: +- [Add rank_is_less_than function for user-axiomatized collection types](https://github.com/secure-foundations/dafny/commit/a92fdab9963b0a3eb9fd8806433b97db539e001a) +- [Weaken Contract.Assert for rank_is_less_than](https://github.com/secure-foundations/dafny/commit/e96cdfdc9eec87d781d75ef4b0eefe5abe74dbbd) + +caller_must_be_pure: +- [Add caller_must_be_pure attribute for BoxedLinear.Borrow](https://github.com/secure-foundations/dafny/commit/02f16ad6fd33d9c0f1396b790a38ebb1b2412ab2) +- [Allow borrowing of caller_must_be_pure results in some method calls](https://github.com/secure-foundations/dafny/commit/aa60a3bac2e3aed375af867c49affcf0519e7840) + +### Mutable borrowing and inout + +- [Add inout formals and arguments to the parser](https://github.com/secure-foundations/dafny/commit/101050b2951f39f63f227e78bd724da997e8e7a1) +- [Adapt linearity checks to inout formals](https://github.com/secure-foundations/dafny/commit/25c1455d332995ec98370f234d8ebce25dbbdc7c) +- [Disallow borrowing (shared) a linear variable that was already mutably borrowed and viceversa](https://github.com/secure-foundations/dafny/commit/178c0cb31ad79a5f6da15b0ee5637e760b31ccd0) +- [Only permit linear member select expressions as inout arguments](https://github.com/secure-foundations/dafny/commit/9f46834bcceb7443a2f56e8eb6149ec4e2a7cb7c) +- [Transform inout signatures and callsites to vanilla dafny for resolution](https://github.com/secure-foundations/dafny/commit/ff8f0cd7bc18fdbf4215b479c648d8e8d819195e) +- [Fix linearity check for inout arguments](https://github.com/secure-foundations/dafny/commit/903bde822a0c2ca9af9d3caad3e7d08696da2a54) +- [Support inout `this` (`self`) for datatype members](https://github.com/secure-foundations/dafny/commit/0c4268e1f997f73b9f165d6f85d620efd83fd7a9) +- [Support blocks, ifs, match statements](https://github.com/secure-foundations/dafny/commit/6012f6db3e5c563b1a098241bbcf62e54b742041) +- [Fix linearity check for nested MemberSelectExprs, support while statements](https://github.com/secure-foundations/dafny/commit/fe2481dc89ad05332c270a3ef2b67ac40f78bf37) +- [Overhaul inout assign: support inout update stmt, disallow unsound inout ghost argument](https://github.com/secure-foundations/dafny/commit/673ae820146d92289beb986008c321078f03216c) +- [Fix linearity check allowing multiple mutable borrows in the same call](https://github.com/secure-foundations/dafny/commit/cae85db87380ca4614dc572d367fe8dbf89ae983) +- [Undo inout rewriting before compilation](https://github.com/secure-foundations/dafny/commit/25a2fc15842ee0c3f43a9ae8ee1a0af1a4b1ca1e) +- [Undo inout rewriting of methods before compilation](https://github.com/secure-foundations/dafny/commit/e759fe5af504d1b4189af4d0d3f658489918d433) +- [Undo inout rewriting later, to fix resolution errors](https://github.com/secure-foundations/dafny/commit/947536697dbcc3d2ad93f6c8d20ad707240d8b12) +- [Undo inout this rewriting](https://github.com/secure-foundations/dafny/commit/55f164e4702ab2fdc3d592b445b45c21b02bd7ef) +- [New fix for compilation of datatype member functions](https://github.com/secure-foundations/dafny/commit/2928a9004d680af661d2d8279b25c41b3a1003df) +- [Fix for matching on datatypes](https://github.com/secure-foundations/dafny/commit/dae4154594baaad7a819e54f8fca920cc7918f8e) +- [Treat inout parameters as formal parameters](https://github.com/secure-foundations/dafny/commit/b2dbdc86499d2260c898f196bd0812ad48dbf921) +- [attempt to fix compilation for inout arguments/assign](https://github.com/secure-foundations/dafny/commit/fc36b3e0b52d7758b6125206b749591426e894bd) +- [linear inout compilation support for datatype methods](https://github.com/secure-foundations/dafny/commit/01cbe7ddf83a275bad79ad57ae5b13334e0fad9c) +- [attempt to implement missing case in compilation rewriter](https://github.com/secure-foundations/dafny/commit/59e7982975155cee2c8fadc2958ed782cf5c1cf8) +- [attempt to partly fix rewriting for compilation of resolved statements](https://github.com/secure-foundations/dafny/commit/ba9b19d71e78010f64cb249b9b0b01c345c0e76f) +- [rewrite resolved bodies of match statements](https://github.com/secure-foundations/dafny/commit/5c04a6e3d4055192e891245b978cedbc6c7f37cf) +- [inout ghost assignment are ghost](https://github.com/secure-foundations/dafny/commit/d2bbff441fd624cec1f4da298f5eb88483ccc176) + +### Compilation + +Linear Dafny has support for compiling programs to C++. + +- [Start working on some linear compilation tests](https://github.com/secure-foundations/dafny/commit/ea1b9fa78fc05b644c89e8f97f1a7478ce7eebe0) +- [More progress on compiling linear sequence examples](https://github.com/secure-foundations/dafny/commit/c164ae463e1c853bc1a0d7914d913b86fa875f32) +- [Pass along linearity info when declaring a local variable, and in the C++ backend, pass that info along to TypeName](https://github.com/secure-foundations/dafny/commit/31c821b12bad79f8d07aafd538c3e790f20424b4) +- [Basic linear tests compile and run (except for Dafny complaints about missing extern declarations)](https://github.com/secure-foundations/dafny/commit/6d03cc75f90d5f0502eb3e3cffbc6c70837e4342) +- [Linear test compiles cleanly and runs correctly](https://github.com/secure-foundations/dafny/commit/01d2d856d172ae9c62540128f2b696892853c3c6) +- [Grab linearity data from datatype](https://github.com/secure-foundations/dafny/commit/f705a21c061c7d2d25b7bfa7f227511a73f40459) +- [Remove some REVIEW comments, as in each case, the type passed in is already null, so we won't be emitting type information. Instead, at least in C++, we use 'auto'](https://github.com/secure-foundations/dafny/commit/ac80ae6def605150b1e406e37af94616cc7bb532) +- [Pass Usage instead of a isLinear:bool, so that we can also differentiate shared variables](https://github.com/secure-foundations/dafny/commit/31b16bd2ce8324d36e61108dcf4a78f66c6d8fe4) +- [DeclareFormal also needs to take a Usage. In C++ land, we also pass usage along when declaring return types](https://github.com/secure-foundations/dafny/commit/81c2c294cdc41ad2631cd3b20c5d1cfee55de09d) +- [Default values need to know Usage as well](https://github.com/secure-foundations/dafny/commit/5402824020fe47fbc1a02b806c90fc561a755e9d) +- [Split the declaration and implementation of equality checks for datatypes between the .h and .cpp files](https://github.com/secure-foundations/dafny/commit/b1b646007915cd97611afd8cbd1754aadbbc63ee) +- [Pass additional usage info to various calls to TypeName within the C++ backend](https://github.com/secure-foundations/dafny/commit/900698ba5fad9a1c8dce2299a23a1974409d0e05) +- [Pass in the usage of function result types](https://github.com/secure-foundations/dafny/commit/f9be75b52ad7cacc7c00b075d49042ac0964482d) + From 7e7b8b0ca5610b4ce2ae00c96166fd35195e0319 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 21 Dec 2020 19:35:29 -0800 Subject: [PATCH 349/573] Add Docs/Linear/PossibleChanges.md and Docs/Linear/README.md --- Docs/Linear/Implementation.md | 42 +++++ Docs/Linear/Library.md | 40 +++++ Docs/Linear/PossibleChanges.md | 293 +++++++++++++++++++++++++++++++++ Docs/Linear/README.md | 8 + 4 files changed, 383 insertions(+) create mode 100644 Docs/Linear/PossibleChanges.md create mode 100644 Docs/Linear/README.md diff --git a/Docs/Linear/Implementation.md b/Docs/Linear/Implementation.md index ad8a5a840a3..36f750032b6 100644 --- a/Docs/Linear/Implementation.md +++ b/Docs/Linear/Implementation.md @@ -137,6 +137,48 @@ This makes checking `if/else` and `while` slightly tricky, requiring saving copi (In retrospect, this design led to several bugs, so a more functional programming style with an immutable `UsageContext` might have been a safer design.) +To check borrowing in an expression like "`var x := e1; e2`", +given a `UsageContext` `uc0`, +the type checker performs the following steps: +- Check `e1` in `uc0` to produce a revised `UsageContext` `uc1`. +- Let `borrow` be the list of all variables newly borrowed by `e1` +(i.e. marked Borrowed in `uc1` but not in `uc0`). +Let `uc2` be `uc1` with all variables in `borrow` set to Available +(see `RemoveInnerBorrowed` in Resolver.cs, shown below) +- Check `e2` in `uc2` to produce `uc3`. +- For each `x` in `borrow` (see `MaybeIntroduceLetBang` in Resolver.cs, shown below): + - if `e2` consumed `x`, then we discharge the borrowing, leaving `x` Available + - if `e2` did not consume `x`, we broaden the scope of the borrowing, leaving `x` Borrowed + +```csharp + static List RemoveInnerBorrowed(UsageContext outer, UsageContext inner) { + List borrow = new List(); + if (inner == null) inner = new UsageContext(null, null); + if (outer == null) outer = new UsageContext(null, null); + foreach (var k in new List(inner.available.Keys)) { + if (outer.available[k] == Available.Available && inner.available[k] == Available.Borrowed) { + inner.available[k] = Available.Available; + borrow.Add(k); + } + } + return borrow; + } + + void MaybeIntroduceLetBang(IToken tok, Usage usage, UsageContext usageContext, List borrow) { + foreach (var x in borrow) { + if (usageContext.available[x] == Available.Consumed) { + // If Body consumed x, try to introduce let!(x) here + if (usage == Usage.Shared) { + reporter.Error(MessageSource.Resolver, tok, "cannot borrow {0} when assigning to shared variable", x.Name); + } + } else { + // Otherwise, we don't introduce let!(x) here; just propagate the fact that x was Borrowed + usageContext.available[x] = Available.Borrowed; + } + } + } +``` + ## Relevant git commits ### Linear and shared diff --git a/Docs/Linear/Library.md b/Docs/Linear/Library.md index a60d808963e..7237e7091d0 100644 --- a/Docs/Linear/Library.md +++ b/Docs/Linear/Library.md @@ -84,6 +84,46 @@ heap modifications If methods without modifies clauses could modify the heap, `caller_must_be_pure` would have to be changed to disallow calls to methods. +## Swapping and assignment via inout + +The following methods are convenient for updating linear fields of datatypes: + +```dafny +method Replace(linear inout v: V, linear newV: V) returns (linear replaced: V) + ensures replaced == old_v + ensures v == newV +{ + replaced := v; + v := newV; +} + +method Swap(linear inout a: V, linear inout b: V) + ensures b == old_a + ensures a == old_b +{ + b := Replace(inout a, b); +} +``` + +For example: + +``` +linear datatype LList = LNil | LCons(hd: A, linear tl: LList) + +method M(linear inout l: LList) { + if (l.LCons?) { + inout l.hd := 10; + inout l.hd := l.hd + 20; + + linear var tmp := Replace(inout l.tl, LNil); + Swap(inout l.tl, inout tmp); + linear var LNil() := tmp; + + assert l == old_l.(hd := 30); + } +} +``` + ## The seq type Linear Dafny uses standard Dafny's `seq` type for both ordinary operations diff --git a/Docs/Linear/PossibleChanges.md b/Docs/Linear/PossibleChanges.md new file mode 100644 index 00000000000..5f566402f65 --- /dev/null +++ b/Docs/Linear/PossibleChanges.md @@ -0,0 +1,293 @@ +# Alternatives and possible future extensions + +This document discusses possible changes to the current design and implementation of linear Dafny. +The discussion is meant to be speculative and open ended. + +Also see the ideas posted as [GitHub issues](https://github.com/secure-foundations/dafny/issues). + +## Syntax + +The keyword `unique` could be friendlier than `linear`. + +## More built-in operations on linear abstract data types + +The document [Library.md](Library.md) discusses functions on linear/shared sequences +as well as types `lseq` and `SwapLinear`. +Some of these functions or types could be built into the language. +For example, `|s|`, `s[i]`, and `s[i := v]` could easily apply to linear/shared `seq`, +meaning `SeqLength`, `SeqGet`, and `SeqUpdate`. +It might also be possible for the statement `s[i] := v` or `inout s[i] := v` to mean `SeqSet` for linear `seq`. + +It should be possible to update ordinary fields of linear datatypes +with the `d.(x := v)` syntax; this is not yet supported, +although `inout d.x := y;` is supported. + +Open questions: +- Is it better to add features directly to the language, or to use libraries (possibly with operator overloading)? + - and should all functions be added to the language (`SeqAlloc`? `SeqFree`? `SeqUnleash?`) + or just the functions that already have obvious language analogues, like `|s|` for `SeqLength`? +- Should `lseq` and `SwapLinear` be in the language, even though they are quite different from +existing built-in Dafny types? +- Should `seq` and `lseq` elements be usable as `inout` or `linear inout` arguments? +This would allow `Swap` to replace `LSeqSwap`, for example. + +## Features from Rust + +The [RelatedWork.md](RelatedWork.md) document mentions four features of Rust that could be useful for linear Dafny: +- Linear/shared treatment of Dafny's mutable types, like `array` and classes +- Lifetime parameters, which would generalize `shared` +- Separately borrowing different components of a data structure (paths) +- Non-lexical lifetimes + +Each of these would be a substantial amount of work, but it's good to learn from Rust's experience. + +## Borrowing for statements, not just expressions and calls + +As discussed in [TypingRules.md](TypingRules.md), +linear Dafny supports borrowing within statements but not across statements. +The following is a simple proposal for supporting borrowing across statements +(simple, compared with Rust, for example). + +The key observation is as follows: +in all the `O; L |- s : L'` rules from [TypingRules.md](TypingRules.md), +the L' variables flow to statements that execute strictly after s. +Therefore, s can safely borrow x from L before sending x back into L'. + +There are two ways to express the ability to borrow variables from subsequent statements. +First, in `s1; s2`, the `s1` statements could borrow `Bs` from `s2`: + +``` +s1 does not assign to shared variables outside s1 +G ; O ; S, Bs ; L0 |- s1 : L1 +G ; O ; S ; L1, Bs |- s2 : L2 +------------------------------------- +G ; O ; S ; L0, Bs |- s1; s2 : L2 +``` + +Alternatively, there could be a simpler rule that applies to all statements: + +``` +s does not assign to shared variables outside s +G ; O ; S, Bs ; L |- s : L' +----------------------------------- +G ; O ; S ; L, Bs |- s : L', Bs +``` + +To infer `Bs` in either rule, +the type checker would track borrowing by changing each borrowed variable's +state from Available to Borrowed (as is currently done for expressions). +The checker would then try to revert Borrowed back to Available +at the soonest possible opportunity as it traverses the program's abstract syntax tree; +this corresponds to finding the smallest possible scope for borrowing. +The key constraint is the side condition +"s does not assign to shared variables outside s"; +if this is not satisfied in a small scope, +the type checker must expand the scope until it finds a scope in which it is satisfied. +If no scope satisfies this, then the checker reports a type error. + +For example, in the following code, +the checker would first consider the scope of the single statement `shared var s := M1(l);`. +This does not satisfy the side condition, +because `s` escapes the scope of the statement. +However, the next larger scope, `{shared var s := M1(l); M2(s);}`, does satisfy the side condition, +allowing type checking to succeed. + +```dafny +method M1(linear l: LList) returns(shared s: int) +method M2(shared s: int) +method M3(linear l: LList) + +method M(linear l: LList) { + { + shared var s := M1(l); + M2(s); + } + M3(l); +} +``` + +Note that the program has to put `shared var s := M1(l); M2(s);` inside a block for this to work, +as shown above. +(In the syntax of [TypingRules.md](TypingRules.md), +this corresponds a structure of `(s := M1(l); M2(s)); M3(l)`, with borrowing across `(s := M1(l); M2(s))`.) +The following (corresponding to `s := M1(l); (M2(s); M3(l))`) would not be allowed by the typing rules above: + +```dafny +method M(linear l: LList) { + shared var s := M1(l); + M2(s); + M3(l); // not allowed: both s and l are available simultaneously here +} +``` + +Allowing this would require something like non-lexical lifetimes, +as supported by recent versions of Rust, +which would be nice but is beyond this proposal. + +## More borrowing within expressions + +### Borrowing in complex arguments + +In some places, the current type checking implementation only allows borrowing +for variables that are direct arguments to functions. +This appears to be an unnecessary restriction, +and code like the following should be allowed according to [TypingRules.md](TypingRules.md): + +```dafny +function method S1(shared i:int, shared j:int) : int + +method S1_test(linear inout i:int) +{ + var _ := S1(i, (if true then i else i)); // borrowing in second argument is currently rejected +} +``` + +### Borrowing from neighboring arguments + +Currently, for a linear `x` and an `F(ordinary, linear)`, +the expression `F(SeqLength(x), x)` is not allowed, +since `SeqLength(x)` can't borrow `x` when `x` is consumed as a neighboring argument to `F`. +Therefore, a programmer has to write this as: + +``` +var len := SeqLength(x); // borrowing x allowed here +F(len, x) // x consumed here +``` + +In `F(G(x), x)`, the variable `x` isn't truly consumed until it's inside `F`, +so in some sense `G(x)` temporally precedes `x`'s consumption, +and we could exploit this in the borrowing rules +to allow `F(SeqLength(x), x)`. +The rule wouldn't necessarily look pretty, +but it might be in the spirit of something like: + +``` +f : (u1 io1, u2 io2) -> uf +e1 is a function call +G ; O ; S, {x2} ; M1 ; L1 |- e1 : u1 io1 +G ; O ; S ; {} ; {x2} |- x2 : u2 io2 +--------------------------------------------------------- +G ; O ; S ; M1 ; L1, {x2} |- f(e1, x2) : uf +``` + +This is essentially like checking "`var x1 := e1; f(x1, x2)`". +An implementation could run three phases when checking `f(...)`: + +1. check all arguments to `f` that are neither variables nor function calls (e.g. `if b then x else f(x)`) +2. check all arguments to `f` that are function calls, making a list of any newly borrowed variables from these arguments +3. check all arguments to `f` that are variables, potentially discharging any borrowed variables from step 2 + +## Function methods + +Function methods currently lack some abilities of methods. + +### Returning mixtures of shared and linear from function methods + +Methods can return mixtures of linear and shared results: + +```dafny +method M(...) returns(linear x:X, shared y:Y) +``` + +Currently, function methods can return a linear result or a shared result, but not both. +To return both, a function method would have to return a tuple with both a linear and a shared field, +and this is not currently allowed: +- a shared tuple cannot contain linear fields, because shared tuples can be duplicated and linear fields cannot be duplicated +- a linear tuple cannot contain shared fields, +because hiding a shared value in a linear tuple could cause the shared value to escape its restricted scope + +In principle, it should be possible to have shared fields in linear datatypes, +as long as these are restricted in the same way as shared variables. +Just as a shared value can't escape the scope of a borrowing, +a linear tuple of type `(linear X, shared Y)` would also be disallowed from escaping a borrowing. +However, the type system would have to be careful with polymorphism: +if a type variable `A` could be instantiated with `(linear X, shared Y)`, +then the type system might need special kinds to track which type variables have shared fields, +as in Cogent (see [RelatedWork.md](RelatedWork.md)). +An alternative to kinds would be a `shared linear` annotation, +which would be like `linear` but with the additional restrictions of `shared`: + +```dafny +function method F(...): (shared linear pair: (linear X, shared Y)) +``` + +### Function methods with inout + +Function methods can perform operations like `SeqUpdate` that semantically appear functional +but are implemented with in-place update. +However, in-place updates like `Replace` and `Swap` (see [Library.md](Library.md)) +are currently unavailable to function methods because `inout` arguments +only work for methods, not function methods. +It's not obvious how to combine `inout` with purely functional code in a clean way. + +## Linear ghost + +`linear ghost` variables could be useful for two reasons: + +1. Code can use `linear` to represent separation-logic/alias-type style permissions/capabilities, +such as permission to access an area of memory. +A linear variable representing a permission/capability should be ghost, with no run-time overhead. +2. For code that uses separation-logic style permissions, +linear-logic or separation-logic styles of proof can be used to reason about and rearrange permissions. + +`linear ghost` variables should be assignable to `ghost` variables, but not vice-versa. +It's not clear whether `linear` variables should be assignable to `linear ghost` variables; +it would seem strange for a physical object in a `linear` variable to simply disappear into the ghost world +as part of an assignment to `linear ghost`. + +For supporting 1., it's not necessary for ghost code to manipulate `linear ghost` variables at all. +For supporting 2., linear Dafny would have to track linearity in ghost code, which it currently does not do. + +## Linearity polymorphism + +Languages like Linear Haskell emphasize code reuse between nonlinear and linear code +(see [RelatedWork.md](RelatedWork.md)). +Part of this is based on multiplicity variables that provide polymorphism over linearity. +Such a feature in linear Dafny might look like: + +```dafny +'L datatype XList = Nil | Cons(hd: A, 'L tl: LList) +type List = XList +type LList = XList + +// Length works for 'L = shared or 'L = ordinary +function method Length('L s: XList): nat { + shared match s { + case Nil => 0 + case Cons(_, tl) => 1 + Length(tl) + } +} +``` + +The compiler would need to deal with multiplicity polymorphism. +For example, the compiler could require that linear and ordinary values be compiled the same way. +(This is currently not required -- for example, the compiler can currently arrange for ordinary values to be reference counted, +but for linear values to be explicitly freed.) + +## Destructors + +"Affine" type systems allow discarding but not duplicating values. +Rust, for example, allows a variable to simply go out of scope without being consumed, +and the Rust compiler automatically inserts a call to the variable's destructor. + +Linear Dafny does not have destructors and it does not allow linear variables to be discarded. +There are tradeoffs with this design. +On the positive side, linear Dafny can track availability of array elements precisely with no run-time overhead. +Linear Dafny programs can `Take` values from an array, leaving the array element unavailable. +Freeing the array requires that all elements are unavailable, +so there's no need for the array deallocation (`SeqFree`) to try to figure out at run-time which elements are available and call their destructors. +On the negative side, explicitly deallocating all linear values requires extra work from programmers. +Furthermore, methods that are generic over type `A` can't easily deallocate values of type `A` +(for example, see `SwapLinear` in [Library.md](Library.md)). + +## Linear in lambdas + +Linear Dafny lambdas (`x => expression`) do not yet support linearity: +the parameter `x` cannot be linear or shared, and no linear variables or shared variables can +be captured by the lambda. +Allowing `x` to be linear or shared should be straightforward and would be useful. +Allowing linear/shared variable capture requires some care to make sure linear variables aren't duplicated +and shared variables don't escape. +For example, linear variable capture could be allowed as long as the lambda itself is linear +(as is common in linear lambda calculi). + diff --git a/Docs/Linear/README.md b/Docs/Linear/README.md new file mode 100644 index 00000000000..a72e69974b2 --- /dev/null +++ b/Docs/Linear/README.md @@ -0,0 +1,8 @@ +# Linear Dafny documentation + +- [Introduction.md: A linear type system for Dafny](Introduction.md) +- [Library.md: Library for linear types](Library.md) +- [TypingRules.md: The essence of linear Dafny](TypingRules.md) +- [RelatedWork.md: Linear type systems: related work and alternative designs](RelatedWork.md) +- [Implementation.md: Implementation of linear Dafny](Implementation.md) +- [PossibleChanges.md: Alternatives and possible future extensions](PossibleChanges.md) From c03692e2e52de249769d60f2355ca3ff7da25f67 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 5 Jan 2021 11:56:30 -0500 Subject: [PATCH 350/573] Closes #15 --- Source/Dafny/Resolver.cs | 18 +++++++++--------- Test/linear/Borrow.dfy.expect | 18 +++++++++--------- Test/linear/Linear0.dfy.expect | 26 +++++++++++++------------- Test/linear/LinearDatatype.dfy.expect | 12 ++++++------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 81332c37ffc..dfb1ea9bd1e 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -3093,13 +3093,13 @@ private void ResolveClassMembers_Pass1(TopLevelDeclWithMembers cl) { if (x.Inout) { Contract.Assert(false); } - reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at method exit"); + reporter.Error(MessageSource.Resolver, x, "linear variable <<{0}>> must be unavailable at method exit", x.Name); } } } foreach (Formal x in m.Outs) { if (x.IsLinear && usageContext.available[x] != Available.Available) { - reporter.Error(MessageSource.Resolver, x, "linear variable must be assigned at method exit"); + reporter.Error(MessageSource.Resolver, x, "linear variable <<{0}>> must be assigned at method exit", x.Name); } } DetermineTailRecursion(m); @@ -3120,7 +3120,7 @@ private void ResolveClassMembers_Pass1(TopLevelDeclWithMembers cl) { } foreach (Formal x in f.Formals) { if (x.IsLinear && usageContext.available[x] != Available.Consumed) { - reporter.Error(MessageSource.Resolver, x, "linear variable must be unavailable at function exit"); + reporter.Error(MessageSource.Resolver, x, "linear variable <<{0}>> must be unavailable at function exit", x.Name); } } } @@ -7176,7 +7176,7 @@ bool CheckValidInoutArg(String contextDesc, UsageContext usageContext, Expressio IdentifierExpr x = ExprAsIdentifier(usageContext, expr); if (expr is NameSegment && x != null) { if (!x.Var.IsLinear) { - Error(expr, String.Format("only linear member selection is allowed in inout {0}", contextDesc)); + Error(expr, String.Format("only linear member selection (e.g., <<{0}>>) is allowed in inout {1}", x.Var.Name, contextDesc)); return false; } else { return true; @@ -15334,17 +15334,17 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } if (!ok) { if (usageContext != null && usageContext.available.ContainsKey(e.Var) && usageContext.available[e.Var] == Available.MutablyBorrowed) { - reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here (it's already mutably borrowed)"); + reporter.Error(MessageSource.Resolver, expr, "linear variable <<{0}>> is unavailable here (it's already mutably borrowed)", e.Var.Name); } else { - reporter.Error(MessageSource.Resolver, expr, "linear variable is unavailable here"); + reporter.Error(MessageSource.Resolver, expr, "linear variable <<{0}>> is unavailable here", e.Var.Name); } } } if (e.Var != null && e.Var.IsShared && usageContext == null) { - reporter.Error(MessageSource.Resolver, expr, "shared variable is out of scope here"); + reporter.Error(MessageSource.Resolver, expr, "shared variable <<{0}>> is out of scope here", e.Var.Name); } if (e.Var != null && e.Var.IsGhost) { - reporter.Error(MessageSource.Resolver, expr, "ghost variables are allowed only in specification contexts"); + reporter.Error(MessageSource.Resolver, expr, "ghost variables (e.g., <<{0}>>) are allowed only in specification contexts", e.Var.Name); return Usage.Ordinary; } return e.Var.Usage; @@ -15355,7 +15355,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } else if (expr is MemberSelectExpr) { var e = (MemberSelectExpr)expr; if (e.Member != null && e.Member.IsGhost) { - reporter.Error(MessageSource.Resolver, expr, "ghost fields are allowed only in specification contexts"); + reporter.Error(MessageSource.Resolver, expr, "ghost fields (e.g., <<{0}>>) are allowed only in specification contexts", e.Member.Name); return Usage.Ordinary; } var d = e.Member as DatatypeDestructor; diff --git a/Test/linear/Borrow.dfy.expect b/Test/linear/Borrow.dfy.expect index 2c9d3d852a8..4751ec3e716 100644 --- a/Test/linear/Borrow.dfy.expect +++ b/Test/linear/Borrow.dfy.expect @@ -1,14 +1,14 @@ -Borrow.dfy(43,37): Error: linear variable is unavailable here -Borrow.dfy(41,28): Error: linear variable must be unavailable at function exit -Borrow.dfy(47,28): Error: linear variable must be unavailable at function exit +Borrow.dfy(43,37): Error: linear variable <> is unavailable here +Borrow.dfy(41,28): Error: linear variable <> must be unavailable at function exit +Borrow.dfy(47,28): Error: linear variable <> must be unavailable at function exit Borrow.dfy(55,4): Error: linear variable l must be unavailable at end of block -Borrow.dfy(63,14): Error: linear variable is unavailable here -Borrow.dfy(59,28): Error: linear variable must be unavailable at function exit +Borrow.dfy(63,14): Error: linear variable <> is unavailable here +Borrow.dfy(59,28): Error: linear variable <> must be unavailable at function exit Borrow.dfy(72,13): Error: tried to borrow variable, but it was already unavailable -Borrow.dfy(68,29): Error: linear variable must be unavailable at function exit -Borrow.dfy(81,14): Error: linear variable is unavailable here -Borrow.dfy(77,28): Error: linear variable must be unavailable at function exit +Borrow.dfy(68,29): Error: linear variable <> must be unavailable at function exit +Borrow.dfy(81,14): Error: linear variable <> is unavailable here +Borrow.dfy(77,28): Error: linear variable <> must be unavailable at function exit Borrow.dfy(90,27): Error: tried to borrow variable, but it was already unavailable -Borrow.dfy(86,29): Error: linear variable must be unavailable at function exit +Borrow.dfy(86,29): Error: linear variable <> must be unavailable at function exit Borrow.dfy(97,4): Error: cannot borrow x when assigning to shared variable 13 resolution/type errors detected in Borrow.dfy diff --git a/Test/linear/Linear0.dfy.expect b/Test/linear/Linear0.dfy.expect index dd37f4b6213..1d149019684 100644 --- a/Test/linear/Linear0.dfy.expect +++ b/Test/linear/Linear0.dfy.expect @@ -1,12 +1,12 @@ Linear0.dfy(133,4): Error: expected linear expression, found ordinary expression Linear0.dfy(138,4): Error: expected ordinary expression, found linear expression -Linear0.dfy(141,45): Error: linear variable must be unavailable at function exit +Linear0.dfy(141,45): Error: linear variable <> must be unavailable at function exit Linear0.dfy(148,4): Error: expected ordinary expression, found linear expression Linear0.dfy(148,11): Error: expected ordinary expression, found linear expression Linear0.dfy(148,9): Error: expected linear expression, found ordinary expression Linear0.dfy(153,4): Error: expected linear expression, found ordinary expression -Linear0.dfy(158,15): Error: linear variable is unavailable here -Linear0.dfy(161,28): Error: linear variable must be unavailable at function exit +Linear0.dfy(158,15): Error: linear variable <> is unavailable here +Linear0.dfy(161,28): Error: linear variable <> must be unavailable at function exit Linear0.dfy(168,4): Error: expected shared expression, found ordinary expression Linear0.dfy(173,4): Error: expected ordinary expression, found shared expression Linear0.dfy(178,4): Error: expected shared expression, found ordinary expression @@ -14,22 +14,22 @@ Linear0.dfy(184,9): Error: expected linear expression, found ordinary expression Linear0.dfy(191,9): Error: expected ordinary expression, found linear expression Linear0.dfy(192,12): Error: expected linear expression, found ordinary expression Linear0.dfy(192,11): Error: expected ordinary expression, found linear expression -Linear0.dfy(195,36): Error: linear variable must be unavailable at method exit -Linear0.dfy(202,58): Error: linear variable must be assigned at method exit -Linear0.dfy(209,29): Error: linear variable must be assigned at method exit -Linear0.dfy(216,20): Error: linear variable is unavailable here -Linear0.dfy(219,19): Error: linear variable must be unavailable at method exit +Linear0.dfy(195,36): Error: linear variable <> must be unavailable at method exit +Linear0.dfy(202,58): Error: linear variable <> must be assigned at method exit +Linear0.dfy(209,29): Error: linear variable <> must be assigned at method exit +Linear0.dfy(216,20): Error: linear variable <> is unavailable here +Linear0.dfy(219,19): Error: linear variable <> must be unavailable at method exit Linear0.dfy(227,8): Error: cannot borrow variable because expression returns a shared result -Linear0.dfy(225,19): Error: linear variable must be unavailable at method exit +Linear0.dfy(225,19): Error: linear variable <> must be unavailable at method exit Linear0.dfy(233,7): Error: expected linear expression, found shared expression Linear0.dfy(240,17): Error: cannot borrow variable because method returns a shared result Linear0.dfy(247,25): Error: linear variable l0 must be unavailable at end of block Linear0.dfy(256,0): Error: linear variable l0 must be unavailable at end of block -Linear0.dfy(263,7): Error: linear variable is unavailable here -Linear0.dfy(268,22): Error: linear variable is unavailable here +Linear0.dfy(263,7): Error: linear variable <> is unavailable here +Linear0.dfy(268,22): Error: linear variable <> is unavailable here Linear0.dfy(268,22): Error: expected ordinary expression, found linear expression -Linear0.dfy(266,22): Error: linear variable must be unavailable at method exit -Linear0.dfy(273,22): Error: shared variable is out of scope here +Linear0.dfy(266,22): Error: linear variable <> must be unavailable at method exit +Linear0.dfy(273,22): Error: shared variable <> is out of scope here Linear0.dfy(273,22): Error: expected ordinary expression, found shared expression Linear0.dfy(287,11): Error: linear variable x must be unavailable at end of block Linear0.dfy(307,6): Error: in while, linear variable y must be have same availability before and after the loop body diff --git a/Test/linear/LinearDatatype.dfy.expect b/Test/linear/LinearDatatype.dfy.expect index dcdf05722b6..24e191fcd99 100644 --- a/Test/linear/LinearDatatype.dfy.expect +++ b/Test/linear/LinearDatatype.dfy.expect @@ -8,14 +8,14 @@ LinearDatatype.dfy(208,20): Error: expected ordinary expression, found linear ex LinearDatatype.dfy(215,4): Error: cannot borrow o when assigning to shared variable LinearDatatype.dfy(222,11): Error: cannot borrow o when assigning to shared variable LinearDatatype.dfy(231,6): Error: expected linear expression, found shared expression -LinearDatatype.dfy(228,39): Error: linear variable must be unavailable at function exit +LinearDatatype.dfy(228,39): Error: linear variable <> must be unavailable at function exit LinearDatatype.dfy(236,14): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(236,10): Error: expected ordinary expression, found linear expression LinearDatatype.dfy(241,11): Error: expected ordinary expression, found shared expression LinearDatatype.dfy(241,14): Error: expected linear expression, found shared expression LinearDatatype.dfy(241,10): Error: expected ordinary expression, found linear expression LinearDatatype.dfy(246,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(246,14): Error: linear variable is unavailable here +LinearDatatype.dfy(246,14): Error: linear variable <> is unavailable here LinearDatatype.dfy(246,10): Error: expected ordinary expression, found linear expression LinearDatatype.dfy(251,14): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(251,10): Error: expected shared expression, found linear expression @@ -23,13 +23,13 @@ LinearDatatype.dfy(256,11): Error: expected ordinary expression, found shared ex LinearDatatype.dfy(256,14): Error: expected linear expression, found shared expression LinearDatatype.dfy(256,10): Error: expected shared expression, found linear expression LinearDatatype.dfy(261,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(261,14): Error: linear variable is unavailable here +LinearDatatype.dfy(261,14): Error: linear variable <> is unavailable here LinearDatatype.dfy(261,10): Error: expected shared expression, found linear expression LinearDatatype.dfy(266,14): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(271,11): Error: expected ordinary expression, found shared expression LinearDatatype.dfy(271,14): Error: expected linear expression, found shared expression LinearDatatype.dfy(276,11): Error: expected ordinary expression, found linear expression -LinearDatatype.dfy(276,14): Error: linear variable is unavailable here +LinearDatatype.dfy(276,14): Error: linear variable <> is unavailable here LinearDatatype.dfy(281,31): Error: expected shared expression, found ordinary expression LinearDatatype.dfy(286,31): Error: expected linear expression, found ordinary expression LinearDatatype.dfy(286,4): Error: linear variable b must be unavailable at end of block @@ -113,9 +113,9 @@ LinearDatatype.dfy(476,13): Error: linear variable b must be unavailable at end LinearDatatype.dfy(481,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches LinearDatatype.dfy(490,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches LinearDatatype.dfy(499,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(497,44): Error: linear variable must be unavailable at method exit +LinearDatatype.dfy(497,44): Error: linear variable <> must be unavailable at method exit LinearDatatype.dfy(508,11): Error: in conditional, linear variable r must be available after both branches or unavailable after both branches -LinearDatatype.dfy(506,44): Error: linear variable must be unavailable at method exit +LinearDatatype.dfy(506,44): Error: linear variable <> must be unavailable at method exit LinearDatatype.dfy(517,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches LinearDatatype.dfy(526,11): Error: in conditional, linear variable x must be available after both branches or unavailable after both branches LinearDatatype.dfy(536,33): Error: cannot borrow variable because expression returns a shared result From 12992dc67e316a7f8be6d1a264e65fc1c4f93677 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 5 Jan 2021 16:57:34 -0500 Subject: [PATCH 351/573] Remove some outdated notes to simplify comparisons between branches --- linear-notes/LruImpl.i.dfy | 388 ---------------------------- linear-notes/LruModel.i.dfy | 197 -------------- linear-notes/LruUsageExample.i.dfy | 36 --- linear-notes/cogent.txt | 74 ------ linear-notes/notes.txt | 222 ---------------- linear-notes/yi-examples-linear.txt | 60 ----- linear-notes/yi-examples.txt | 191 -------------- 7 files changed, 1168 deletions(-) delete mode 100644 linear-notes/LruImpl.i.dfy delete mode 100644 linear-notes/LruModel.i.dfy delete mode 100644 linear-notes/LruUsageExample.i.dfy delete mode 100644 linear-notes/cogent.txt delete mode 100644 linear-notes/notes.txt delete mode 100644 linear-notes/yi-examples-linear.txt delete mode 100644 linear-notes/yi-examples.txt diff --git a/linear-notes/LruImpl.i.dfy b/linear-notes/LruImpl.i.dfy deleted file mode 100644 index 69a408ab634..00000000000 --- a/linear-notes/LruImpl.i.dfy +++ /dev/null @@ -1,388 +0,0 @@ -include "LruModel.i.dfy" -// -// An LRU-queue. -// - -module LruImpl { - import opened NativeTypes - import opened Sequences - import opened LruModel`Internal - import MutableMap - import opened Options - - lemma lemmaRemoveNonPresentKeyFromQueue(q: LruQueue, x: uint64) - requires x !in q - requires WF(q) - ensures LruModel.Remove(q, x) == q - { - if |q| == 0 { - } else { - lemmaRemoveNonPresentKeyFromQueue(q[..|q|-1], x); - } - } - - lemma LemmaQueueCountEqInterpCount(q: LruQueue) - requires WF(q) - ensures |I(q)| == |q| - { - reveal_distinct(); - if |q| == 0 { - } else { - LemmaQueueCountEqInterpCount(q[..|q| - 1]); - assert I(q) == I(q[..|q|-1]) + {q[|q|-1]}; - assert |I(q)| - == |I(q[..|q|-1]) + {q[|q|-1]}| - == |I(q[..|q|-1])| + |{q[|q|-1]}| - == |q[..|q|-1]| + 1 - == |q|; - } - } - - lemma lemmaGetRemoveQueueIndex(q: LruQueue, x: uint64) - returns (j: int) - requires x in q - requires WF(q) - ensures 0 <= j < |q| - ensures q[j] == x - ensures LruModel.Remove(q, x) == q[..j] + q[j+1..] - { - assert |q| > 0; - if q[|q| - 1] == x { - j := |q| - 1; - reveal_distinct(); - lemmaRemoveNonPresentKeyFromQueue(q[..|q|-1], x); - } else { - j := lemmaGetRemoveQueueIndex(q[..|q|-1], x); - } - } - - class Node { - var prev: Node?; - var next: Node?; - var value: uint64; - - constructor (p: Node?, n: Node?, v: uint64) - ensures prev == p - ensures next == n - ensures value == v - { - prev := p; - next := n; - value := v; - } - } - - class LruImplQueue { - ghost var Queue: LruQueue; - ghost var Repr: set; - - var nodemap: MutableMap.ResizingHashMap; - var head_node: Node?; - var tail_node: Node?; - - protected predicate Inv() - reads this, Repr - ensures Inv() ==> this in Repr - ensures Inv() ==> WF(Queue) - { - && nodemap in Repr - && nodemap.Repr <= Repr - && nodemap.Inv() - && Repr == {this} + nodemap.Repr + nodemap.I().contents.Values - && this !in nodemap.Repr - && nodemap.I().contents.Values !! nodemap.Repr - && (|Queue| == 0 ==> ( - && head_node == null - && tail_node == null - && nodemap.I().contents == map[] - )) - && (forall i | 0 <= i < |Queue| :: Queue[i] in nodemap.I().contents) - && (forall ref | ref in nodemap.I().contents :: ref in Queue) - && (forall ref | ref in nodemap.I().contents :: nodemap.I().contents[ref].value == ref) - && (|Queue| > 0 ==> - && head_node == nodemap.I().contents[Queue[0]] - && tail_node == nodemap.I().contents[Queue[|Queue| - 1]] - && nodemap.I().contents[Queue[0]].prev == null - && nodemap.I().contents[Queue[|Queue| - 1]].next == null - ) - && (forall i | 0 <= i < |Queue| - 1 :: - nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]) - && (forall i | 0 <= i < |Queue| - 1 :: - nodemap.I().contents[Queue[i]] == nodemap.I().contents[Queue[i+1]].prev) - && nodemap.Repr !! nodemap.I().contents.Values - && WF(Queue) - } - - constructor () - ensures Inv() - ensures Queue == Empty() - ensures fresh(Repr) - { - var m := new MutableMap.ResizingHashMap(128); - - nodemap := m; - head_node := null; - tail_node := null; - - Queue := []; - Repr := {this} + m.Repr + m.Contents.Values; - } - - method Remove(x: uint64) - requires Inv() - ensures Inv() - ensures Queue == LruModel.Remove(old(Queue), x) - ensures Repr <= old(Repr) - modifies this, this.Repr - { - ghost var oldContents := nodemap.I().contents; - ghost var oldQueue := Queue; - - var node := nodemap.RemoveAndGet(x); - if node.Some? { - var prev := node.value.prev; - var next := node.value.next; - - ghost var j := lemmaGetRemoveQueueIndex(Queue, x); - if (j > 0) { - assert oldContents[x].prev == oldContents[Queue[j-1]]; - } - if (j < |Queue| - 1) { - assert oldContents[x].next == oldContents[Queue[j+1]]; - } - - if (prev == null) { - head_node := next; - } else { - prev.next := next; - } - - if (next == null) { - tail_node := prev; - } else { - next.prev := prev; - } - - Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; - Queue := LruModel.Remove(Queue, x); - - forall k | 0 <= k < |Queue| ensures Queue[k] in nodemap.I().contents - { - reveal_distinct(); - if k < j { - assert oldQueue[k] == Queue[k]; - assert oldQueue[k] in oldContents; - assert oldQueue[k] != x; - assert oldQueue[k] in nodemap.I().contents; - } else { - assert oldQueue[k+1] == Queue[k]; - assert oldQueue[k+1] in oldContents; - assert oldQueue[k+1] != x; - assert oldQueue[k+1] in nodemap.I().contents; - } - } - - forall ref | ref in nodemap.I().contents ensures ref in Queue - { - assert ref in oldContents; - var k :| 0 <= k < |oldQueue| && oldQueue[k] == ref; - assert k != j; - if k < j { - assert Queue[k] == ref; - } else { - assert Queue[k-1] == ref; - } - } - - forall k | 0 <= k < |Queue| - 1 - ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev - { - if k < j-1 { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } else if k == j-1 { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } else { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } - } - - forall i | 0 <= i < |Queue| - 1 - ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] - { - if i < j - 1 { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } else if i == j-1 { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } else { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } - } - } else { - assert nodemap.I().contents == oldContents; - lemmaRemoveNonPresentKeyFromQueue(Queue, x); - - forall k | 0 <= k < |Queue| - 1 - ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev - { - } - - forall i | 0 <= i < |Queue| - 1 - ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] - { - } - } - - LruRemove(oldQueue, x); - } - - lemma LemmaMapCountEqInterpCount() - requires Inv() - ensures |I(Queue)| == nodemap.Count as int - { - assert I(Queue) == nodemap.I().contents.Keys; - assert |I(Queue)| - == |nodemap.I().contents.Keys| - ==|nodemap.I().contents| - == nodemap.Count as int; - } - - method Use(x: uint64) - requires Inv() - requires |I(Queue)| <= 0x1_0000_0000 - ensures Inv() - ensures Queue == LruModel.Use(old(Queue), x) - ensures forall x | x in Repr :: x in old(Repr) || fresh(x) - modifies this, this.Repr - { - ghost var oldContents := nodemap.I().contents; - ghost var oldQueue := Queue; - LemmaMapCountEqInterpCount(); - - var node := nodemap.Get(x); - if node.Some? { - var prev := node.value.prev; - var next := node.value.next; - - ghost var j := lemmaGetRemoveQueueIndex(Queue, x); - if (j > 0) { - assert oldContents[x].prev == oldContents[Queue[j-1]]; - } - if (j < |Queue| - 1) { - assert oldContents[x].next == oldContents[Queue[j+1]]; - } - - if (next != null) { - if (prev == null) { - head_node := next; - } else { - prev.next := next; - } - - next.prev := prev; - - node.value.prev := tail_node; - node.value.next := null; - if (tail_node != null) { - tail_node.next := node.value; - } else { - head_node := node.value; - } - tail_node := node.value; - - Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; - Queue := LruModel.Remove(Queue, x) + [x]; - - forall i | 0 <= i < |Queue| - 1 - ensures nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]] - { - if i == |Queue| - 2 { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } else if i == j-1 { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } else if i < j-1 { - assert nodemap.I().contents[Queue[i]].next == nodemap.I().contents[Queue[i+1]]; - } else { - assert nodemap.I().contents[Queue[i]].next - == old(nodemap.I()).contents[old(Queue)[i+1]].next - == old(nodemap.I()).contents[old(Queue)[i+2]] - == nodemap.I().contents[Queue[i+1]]; - } - } - - forall k | 0 <= k < |Queue| - 1 - ensures nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev - { - if k < j-1 { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } else if k == j-1 { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } else { - assert nodemap.I().contents[Queue[k]] == nodemap.I().contents[Queue[k+1]].prev; - } - } - } else { - Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; - Queue := LruModel.Remove(Queue, x) + [x]; - } - } else { - lemmaRemoveNonPresentKeyFromQueue(Queue, x); - - var newnode := new Node(tail_node, null, x); - assert newnode.next == null; - if (tail_node != null) { - tail_node.next := newnode; - } else { - head_node := newnode; - } - tail_node := newnode; - - nodemap.Insert(x, newnode); - - Repr := {this} + nodemap.Repr + nodemap.I().contents.Values; - Queue := oldQueue + [x]; - - assert Queue[|Queue| - 1] == x; - assert nodemap.I().contents[x] == newnode; - assert newnode.next == null; - assert nodemap.I().contents[Queue[|Queue| - 1]].next == null; - forall ref | ref in nodemap.I().contents ensures nodemap.I().contents[ref].value == ref - { - } - forall i | 0 <= i < |Queue| ensures Queue[i] in nodemap.I().contents - { - if (i == |Queue| - 1) { - } else { - } - } - } - - LruUse(oldQueue, x); - } - - method Next() - returns (x: uint64) - requires |I(Queue)| > 0 - requires Inv() - ensures x == LruModel.Next(Queue) - { - LemmaQueueCountEqInterpCount(Queue); - assert head_node != null; - x := head_node.value; - } - - method NextOpt() - returns (x: Option) - requires Inv() - ensures x == LruModel.NextOpt(Queue) - { - LruModel.reveal_NextOpt(); - LemmaQueueCountEqInterpCount(Queue); - if head_node != null { - x := Some(head_node.value); - } else { - x := None; - } - } - - } -} diff --git a/linear-notes/LruModel.i.dfy b/linear-notes/LruModel.i.dfy deleted file mode 100644 index 1228c3381a0..00000000000 --- a/linear-notes/LruModel.i.dfy +++ /dev/null @@ -1,197 +0,0 @@ -include "../Base/NativeTypes.s.dfy" -include "../Base/sequences.i.dfy" -include "../Base/Option.s.dfy" -include "MutableMapImpl.i.dfy" -// -// An LRU-queue. -// - -module LruModel { - export S provides LruQueue, WF, I, Empty, Remove, Use, Pop, Next, LruUse, NextOpt, LruRemove, NativeTypes, Options - - export Internal reveals * - export extends S - - import opened NativeTypes - import opened Sequences - import opened Options - - // Index-0: Least recently used - // Index-1: Most recently used - type LruQueue = seq - - predicate {:opaque} distinct(q: seq) - { - forall i, j | 0 <= i < |q| && 0 <= j < |q| && i != j :: q[i] != q[j] - } - - predicate WF(q: LruQueue) - { - distinct(q) - } - - function I(q: LruQueue) : set - { - set x | x in q - } - - function Empty() : (q : LruQueue) - ensures I(q) == {} - ensures WF(q) - { - reveal_distinct(); - [] - } - - function Remove(q: LruQueue, x: uint64) : LruQueue - { - if |q| == 0 then [] else ( - if Last(q) == x then Remove(DropLast(q), x) else Remove(DropLast(q), x) + [Last(q)] - ) - } - - function Use(q: LruQueue, x: uint64) : LruQueue - { - Remove(q, x) + [x] - } - - function Next(q: LruQueue) : (x : uint64) - requires |I(q)| > 0 - ensures x in I(q) - { - q[0] - } - - function {:opaque} NextOpt(q: LruQueue) : (x : Option) - ensures x.Some? ==> x.value in I(q) - ensures x.None? ==> I(q) == {} - { - if q == [] then None else Some(q[0]) - } - - function Pop(q: LruQueue) : (LruQueue, uint64) - requires |I(q)| > 0 - { - (q[1..], q[0]) - } - - lemma LruRemoveGetIndex(q: LruQueue, x: uint64, j: int) - returns (i: int) - requires WF(q) - requires 0 <= j < |Remove(q, x)| - ensures 0 <= i < |q| - ensures q[i] == Remove(q, x)[j]; - { - if j + 1 == |Remove(q, x)| && q[|q| - 1] != x { - i := |q| - 1; - } else { - i := LruRemoveGetIndex(DropLast(q), x, j); - } - } - - lemma LruRemoveGetIndex2(q: LruQueue, x: uint64, j1: int, j2: int) - returns (i1: int, i2: int) - requires WF(q) - requires 0 <= j1 < |Remove(q, x)| - requires 0 <= j2 < |Remove(q, x)| - requires j1 != j2 - ensures 0 <= i1 < |q| - ensures 0 <= i2 < |q| - ensures i1 != i2 - ensures q[i1] == Remove(q, x)[j1]; - ensures q[i2] == Remove(q, x)[j2]; - { - if j2 + 1 == |Remove(q, x)| && q[|q| - 1] != x { - i1 := LruRemoveGetIndex(DropLast(q), x, j1); - i2 := |q| - 1; - } else if j1 + 1 == |Remove(q, x)| && q[|q| - 1] != x { - i2 := LruRemoveGetIndex(DropLast(q), x, j2); - i1 := |q| - 1; - } else { - i1, i2 := LruRemoveGetIndex2(DropLast(q), x, j1, j2); - } - } - - lemma LruRemoveGetIndexRev(q: LruQueue, x: uint64, i: int) - returns (j: int) - requires WF(q) - requires 0 <= i < |q| - requires q[i] != x - ensures 0 <= j < |Remove(q, x)| - ensures q[i] == Remove(q, x)[j]; - { - if i + 1 == |q| { - j := |Remove(q,x)| - 1; - } else { - j := LruRemoveGetIndexRev(DropLast(q), x, i); - } - } - - lemma LruRemove(q: LruQueue, x: uint64) - requires WF(q) - ensures WF(Remove(q, x)) - ensures I(Remove(q, x)) == I(q) - {x} - { - if |q| == 0 { - } else { - LruRemove(DropLast(q), x); - if q[|q| - 1] != x { - reveal_distinct(); - forall i, j | 0 <= i < |Remove(q,x)| && 0 <= j < |Remove(q,x)| && i != j - ensures Remove(q,x)[i] != Remove(q,x)[j] - { - var i1, j1 := LruRemoveGetIndex2(q, x, i, j); - } - } - } - - var a := I(Remove(q, x)); - var b := I(q) - {x}; - forall r | r in a - ensures r in b - { - var j :| 0 <= j < |Remove(q, x)| && Remove(q, x)[j] == r; - var j1 := LruRemoveGetIndex(q, x, j); - } - forall r | r in b - ensures r in a - { - var i :| 0 <= i < |q| && q[i] == r; - var j := LruRemoveGetIndexRev(q, x, i); - } - } - - lemma notInRemove(q: LruQueue, x: uint64, i: int) - requires 0 <= i < |Remove(q,x)| - ensures Remove(q,x)[i] != x - { - if i + 1 == |Remove(q, x)| && q[|q| - 1] != x { - } else { - notInRemove(DropLast(q), x, i); - } - } - - lemma LruUse(q: LruQueue, x: uint64) - requires WF(q) - ensures WF(Use(q, x)) - ensures I(Use(q, x)) == I(q) + {x} - { - LruRemove(q, x); - reveal_distinct(); - forall i, j | 0 <= i < |Use(q,x)| && 0 <= j < |Use(q,x)| && i != j - ensures Use(q,x)[i] != Use(q,x)[j] - { - if (i == |Use(q,x)| - 1) { - notInRemove(q, x, j); - } else if (j == |Use(q,x)| - 1) { - notInRemove(q, x, i); - } else { - } - } - assert I(Use(q, x)) - == I(Remove(q,x) + [x]) - == I(Remove(q,x)) + {x} - == (I(q) - {x}) + {x} - == I(q) + {x}; - } -} diff --git a/linear-notes/LruUsageExample.i.dfy b/linear-notes/LruUsageExample.i.dfy deleted file mode 100644 index 804a07ea45a..00000000000 --- a/linear-notes/LruUsageExample.i.dfy +++ /dev/null @@ -1,36 +0,0 @@ -include "LruModel.i.dfy" -include "LruImpl.i.dfy" - -module LruUsageExample { - import LruModel - import LruImpl - - // Some special syntax or something - implement - !LruModel.LruQueue - with - class LruImpl.LruImplQueue - - function remove2(queue: !LruModel.LruQueue, x: uint64, y: uint64) : - (queue': !LruModel.LruQueue) - requires LruModel.WF(queue) - { - var queue0 := queue; - var queue1 := LruModel.Remove(queue0, x); - var queue2 := LruModel.Remove(queue1, x); - queue2 - } - - // This would be translated into the following: - // - // method remove2Impl(queue: LruImpl.LruImplQueue, x: uint64, y: uint64) - // requires queue.Inv() - // modifies queue.Repr - // ensures fresh(queue.Repr - old(queue.Repr)) - // ensures queue.Inv() - // ensures queue.I() == remove2(old(queue.I()), x, y) - // { - // queue.Remove(x); - // queue.Remove(y); - // } -} diff --git a/linear-notes/cogent.txt b/linear-notes/cogent.txt deleted file mode 100644 index 61391ed9f93..00000000000 --- a/linear-notes/cogent.txt +++ /dev/null @@ -1,74 +0,0 @@ - linear datatype Foo = Foo(x: int) - - function Set5(foo: Foo) : Foo { - foo.(x := 5) - } - -This should be okay, because x is a base type and hence sharable - - function Inc5(foo: Foo) : Foo { - foo.(x := foo.x + 5) - } - - -Desugar: foo.(x := foo.x + 5) -Into: - take tmp_foo {x = tmp_x} = foo in - put tmp_foo.x := tmp_x + 5 - -Though maybe this isn't needed because x isn't linear? -Better example: - - - linear datatype Bar = Bar(s:linear seq, t:linear seq) - - function NewSeq(b:Bar, m:seq) : Bar { - b.(s := m) - } - - Should be disallowed because we drop b.s - - function NewSeq(b:Bar, m:seq) : Bar { - free(b.s); - b.(s := m) - } - - Should be okay - - function NewSeq(b:Bar) : Bar { - free(b.s); - b.(s := b.t) - } - - Should be okay because it becomes: - - take tmp_b {t = tmp_t} = b in - put tmp_b.s := tmp_t - - and the result is a tmp_b where the t field is inaccessible - -For sequences, maybe we can use the same take/put approach and rely on -extra proof obligations to handle aliasing: - - function Add1ToElement5(s: linear seq ) - requires |s| > 5 - { - s[5].x := s[5].x + 1 - } - -desugars to: - - take tmp_s {s[5] = foo} = s in // Where this makes 5 inaccessible in tmp_s - take tmp_foo {x = tmp_x} = foo in - put tmp_foo.x := tmp_x + 5 - put tmp_s[5] := tmp_foo - -How do we track accessiblility? For any given variable, it's a static property, -since additional take operations will produce new values. But a sequence might -have more than one index inaccessible, since you could do several takes in a row. -So we maintain a set (variable or function return value?) for each value that -returns all (in)accessible locations, and each index operation proves -that the attempted index is (not)in the (in)accessible set? Doing a put -operation on a sequence would have a similar requirement. - - diff --git a/linear-notes/notes.txt b/linear-notes/notes.txt deleted file mode 100644 index d08a9061160..00000000000 --- a/linear-notes/notes.txt +++ /dev/null @@ -1,222 +0,0 @@ -I want to be able to write our stateful computations -in a functional manner, since it's easier to work -with expressions for verification. We'd then want -the expressions compiled to actual, performant stateful code. - -To illustrate, a common pattern we use is to define a function -and then a method which implements the function. - - datatype Foo = Foo(x: int) - - function Set5(foo: Foo) : Foo { - foo.(x := 5) - } - - class FooImpl { - x: int; - - Repr: set; - - function I() : Foo { - Foo(this.x) - } - } - - method Set5Impl(foo: FooImpl) - modifies foo.Repr - ensures fresh(foo.Repr - old(foo.Repr)) - ensures foo.I() == Set5(old(foo.I())) - { - foo.x := 5; - } - -We'd like to automatically generate the `FooImpl` class and -`Set5Impl` method from `Foo` and `Set5`. - -For this to be possible, a function like `Set5` needs to use -its arguments linearly - or at least, those arguments which -are going to replaced by a stateful class implementation. - - datatype Foo = Foo(x: int) - - function Invalid(foo: Foo) : (Foo, Foo) { - (foo.(x := 5), foo.(x := 6)) - } - -This obviously wouldn't be translatable into a method -implementation without somehow cloning `foo`. -(Cloning would need to be made explicit.) - -=== More examples === - -We want an expression that will compile as: - - method Add1ToElement5(s: array) - { - s[5].x := s[5].x + 1 - } - -We could try (`!` denotes a linear type): - - function Add1ToElement5(s: !seq) - requires |s| >= 6 - { - // We want to write - // s[5 := s[5].(x := s[5].x + 1)] - // but that's not linear. - // (our dafny code frequently uses idioms like this). - - // Instead we could write something like: - - s.update(5, lambda foo: !Foo . - foo.update_x(lambda y: int . y + 1)) - - // This is a little annoying because Dafny's support - // for higher order functions is not great. - } - -In general it's actually kind of annoying to only be able -to use something linearly and it would be good to have -mechanisms that allow for borrowing a linear type into a -non-linear type which would only be used immutably, a la -Rust's borrowing semantics. Wadler's paper also has some limited -support for this, I think. - -=== Mutation vs returning new === - -Returning to the Set5 example, there are actually two ways -to translate this: - - function Set5(foo: !Foo) : !Foo { - foo.(x := 5) - } - - method Set5Impl1(foo: FooImpl) - modifies foo.Repr - ensures fresh(foo.Repr - old(foo.Repr)) - ensures foo.I() == Set5(old(foo.I())) - { - foo.x := 5; - } - - method Set5Impl2(foo: FooImpl) returns (foo': FooImpl) - modifies foo.Repr - ensures fresh(foo'.Repr - old(foo.Repr)) - ensures foo'.I() == Set5(old(foo.I())) - { - var foo' := foo; - foo.x := 5; - } - -Of course, some functions would only work with the second style: - - function Set5'(foo: !Foo) : !Foo { - Foo(5) // datatype constructor - } - - method Set5'Impl2(foo: FooImpl) returns (foo': FooImpl) - modifies foo.Repr - ensures fresh(foo'.Repr - old(foo.Repr)) - ensures foo'.I() == Set5(old(foo.I())) - { - foo' := new Foo(5); // constructor is translated to `new` - } - -We need some kind of syntax to specify which style any particular -argument is. - -=== Sequences === - -Sequences are kind of tricky to use right. We'd need some special -constructs. Consider some code we might want to write: - -Suppose we're given a function/method with this signature: - - function Transform(bucket: !Bucket) : (bucket': !Bucket) - - method TransformImpl(bucket: BucketImpl) returns (bucket': BucketImpl) - modifies bucket.Repr - ensures bucket'.I() == Transform(old(bucket)) - -We want to write code which translates into this: - - method ModifySeqImpl(s: seq, i: int) - returns (s': seq) - modifies SequenceRepr(s) - ensures ISeq(s') == modifySeq(old(ISeq(s))) - { - var left := s[0..i]; - var mid := s[i]; - var mid' := TransformImpl(mid); - s' := left + [mid']; - } - -It's not obvious how to do this since s is used more than once, -even though no particular element is used more than once. - -We need some kind of sequence destructuring construct: - - function ModifySeq(s: !seq, i: int) - { - var left, mid := splice(s, [0..i], [i]); - var mid' := Transform(mid); - left + [mid'] - } - -The `splice` call would have preconditions that the provided ranges -don't intersect. - -Some open questions: when does a sequence translate to a sequence -vs an array? Any reason to not always be an array? - -=== Immutatable datatypes === - -The motivation is to auto-translate linear types into mutable class -types. Why stop there? We could auto-translate immutable types -into immutable types. What's the point? Maybe we have an immutable map -implementation, but for the verification reasoning, it's easier to -just think of it as an ordinary Dafny map for dafny proofs, without -having to write interpretation function calls everywhere. - -(TODO is there a good example of where we'd use this in Veribetrfs -codebase?) - -=== Garbage collection === - -In a linear type system, every linear value has to be -used exactly once. In an affine type system, every -affine value must be used *at most* once. - -We could either have a linear type system, with explicit -`free` statements to free up memory for objects we don't need anymore, -or use an affine type system with the free statements inserted -automatically. - -Compare to C++'s std::unique_ptr. This is used affinely and -the destructor is implicity called via RAII when the std::unique_ptr -goes out of scope. - -NOTE: While this helps somewhat with refcounting, it -doesn't help with refcounting for immutable objects which are shared -freely. - -=== Control-flow === - -If the point is to implement everything functionally, how do we -implement, e.g., while-loops, which only exist in imperative dafny -code? - -What I tend to do right now is just implement everything -recursively, but if this is done right (e.g., with tail calls) -then it can easily be transformed into a CFG. Dafny already does -this for single methods, at the very least. - -=== Non-linear implementations encapsulated as types === - -Sometimes we might want to implement the mutable version of a -custom linear type with our own custom implementation that is proven -correct using dafny's usual set-based dynamic frames. -Such a class would need to adhere to the Repr idioms. - -See the example in this directory, where an LRU queue is implemented -with a doubly-linked list and abstracted as a simple sequence. diff --git a/linear-notes/yi-examples-linear.txt b/linear-notes/yi-examples-linear.txt deleted file mode 100644 index a032b3c3928..00000000000 --- a/linear-notes/yi-examples-linear.txt +++ /dev/null @@ -1,60 +0,0 @@ -datatype table = table(legs: int) - -function method TableSetLegs(linear t:table, num:int) : linear table - ensures TableSetLegs(t).legs == num - -function method set_leg_const(linear t: table) : linear table -{ - TableSetLegs(t, 4) - // Sugar: t.(legs := 4) -} - -function method add_leg(linear t: table) : linear table -{ - TableSetLegs(t, t.legs + 1) // Is the double use of t allowed here? - // Sugar: t.(legs := t.legs + 1) -} - -datatype room = room(linear big_table: table, linear small_table: table) - -function method RoomGetBigTable(linear r:room) : (linear r':room, linear t:table) - requires r.has_big_table - ensures t == r.big_table - ensures r' == r.(has_big_table := false) - -function method RoomGetSmallTable(linear r:room) : (linear r':room, linear t:table) - requires r.has_small_table - ensures t == r.small_table - ensures r' == r.(has_small_table := false) - -function method RoomSetBigTable(linear r:room, linear t:table) : (linear r':room) - requires !r.has_big_table - ensures r' == r.(has_big_table := true).(big_table := t); - -function method add_leg_big_table(linear r: room) : linear room -{ - var r', big := RoomGetBigTable(r); - var big' := add_leg(big); - RoomSetBigTable(r', big') - // Sugar: r.(big_table := add_leg(r.big_table)) -} - -// This should fail: -function method add_leg_big_table_bad(linear r: room) : linear room -{ - var r', small := RoomGetSmallTable(r); - var small' := add_leg(small); - RoomSetBigTable(r', small') // Failed precondition: !r'.has_big_table - // Sugar: r.(big_table := add_leg(r.small_table)) -} - -function method add_leg_first_table_okay(linear ts: lseq
UOs!gJ? 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 z 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

E^} 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�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

    &lL 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%0DybafyQ37PBoA_?)4yY6>1giE{Zp(`ijL8 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 z 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%0Ah)Y#EPbVt5)@b=*i@&(al$&iCsJmIg3 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

    rNiz4{o29jPQ&n?dhNe~ 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 z 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

    C`qA^yhR4N(4Y6Ln-_4G7qt1Y!!u~*t+ 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

    3SUFJ8ryhzgxz8+fVS-MEXHLF;oU^ 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

    o;TI!|?#? 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

    {&VkxbUIMkB{0r26@)4-^ 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

    W1hKy>e=S?Tn!~}xvuS! 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 z'vuE~}kpXXKc%ev3%AC}|of8jf6Y;&p42 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

    c6@IGSVrf2^(akfZO1=r@#m>*>wmGLGmsm1I5h ze%)jB@R!b}J|TBad$h4%h5YguFLh@ujqcDeq!`aG;3v85whQZ<<51v_*vCr!pddmS@`#%T>XhA_f{rdUM7iI))q%X<#_^3e$(Qe z2<0w;I`?y^@_50|kJ-08?92Rq@NE0;BmAT}G;qxSQ14%HF*%;MwQg_fcuQvilw0cZ zH7>7mxi|a65mu)Gdpo^;9))r{6zo%bVf;;|o5NQ)8oteSA!t`)2!T$}H`?&qpo}Y<@{Aj-=_AMPTtH+KSt!4+4*s2TfF0;!rOg;?n%l+y0bYf>Fsl-x6h-X@;o2r zy`Bf8OyAD1gmZ^Ng_#32E?(vSzlKr1)dt$iL;DY#!{r=>=RQ5;sO|8q{#RV;q7R~_bvQIP~{ufyMnL@?ST1#~yOj*GohD!shTGhh1A}8BIO? zdTW0<>{eddz5Olm_P5O2-;Gdh>u#uP?GrHL?dv5d_g`;!RmWI+90V0-8>l!tKwXzl za{vE>O4IJYSX1NoD~0u96-U~*leosh9S!BuumrZde>5ND-nx=`vz~V)f7u*na7>=W zw|2GMKhib_@jN2>c9%J~&V9hKsgIRmPZ>*fpN_5`dPpxWm%LONUc%lQe(S^gLRNbZ zM&s?ufuU7uI6c^PiYQUa1_#r%W<2RdwWg$IC8F!E6ZKBe#iQz1>L`ane}qY z(VyhrgesHGP-A*E*G0)Aq59ASpG)&^$aw$BLAmM2T6umKD(*t4{&x>l+)C_F|4X?& zHb>+8)t@zoEXSmqZwX^KAD2t?j%;3E)={yRihGbj3#!svnDb>!Uqwi^(WW`(m0P*S z<#>5*^76`gy>9k;{?502T#fd%+lS}&6MKEf&~TJJW6sR6@aG?4<#0XoTa{S`stwwB zT598|`W0ho=KALFAxB+5Y?L2kvgF3)&0(zkh~HDDM0<;;e%#d@Iyj2g%*byoM>^6+ zeCB37{dj)YBMf5zvizjW=7EEFzA-RVUTV)bmL6mMs)2sh_*={0QBZD!%keVK5WcHx zN>mPU{|)$e{?YtzhH|e#mD`8zUoxPN_MK>quJ72c{?_=ylrWW}wSqDlQXYnA>|t!x zvjF+e;+UgzYH^&?`_rEOT%Th);x;9Yweddr2eWGyl)KpF|8w~vm!o=H&wcKyDPiWL zQ$oX0exDnYd%M<6@^o6SvUJXXazBU4|DBN93WI+2>2gaExBYkKzYNON{odq>P;R=* z1^aUMPYFvN=(aB|_h#Q>w=eMv)4LaxI~>ZsGokEz%FoBkuuE~Tw|FC=+)|fsc6pV{ z1^Zebn-Vs26v{6y_h#Q(x39s==Kv^o0+f9hL)rJTpO4!Yj$@sycRCE zaF;^4bE>HhCDE9%BeIu5ceW$=;`#Oo6@$_GGd*<9= z;TAx-#V*@(7+t32KCgoST}a>u(|zehE{QCc6ion6Ns1H;3R_deOxH~MZgPy90p z-}$7)zw^&#Zyw6dJ)bgtr^8~q>*g}vc)f0EAI>CUBKNk%Z-sIfxLlIpTE#s^qN!i> z?MqbtbLszgObM$va@96&$K~F>@tNo8blh&~tblUQx?HH&{KHeivPZh>H7@s7uN|(p z-RtcJDEBZ_z5WySf&2Nm6K{7bR6bsBcY8ff@^NOCk2CXJ?k!I_rM<%PGXcuYb~&C- z#qm66@p>q}&uQeG?w{JdJ?ut3%YD!5JAR)thp=hab2gN_#O3JOGtXa#^s--7JMq*u zl84)TXC_qH%yAap$BGIky_&PgDO~Y+$^G3wd9&qzK9su?D$WD24_tSP$*;kF$R9&y zfuZhJ3%?`Oe5nO$zI2rPm)$lcN}~Z*;(wUS^Py~vm+x}&m-p*aAFjJ{b$npI`uWp5{I6WL-+|%xR9MHNXKhup`bB$YZt^m1^fGO{*6jKnlw0X? z)UJ8Pm{~m~{F9^bjyEpXj4ltO`A%c->S))~=owAJ307yRuXWGmmGAj3FN7+$^PPpd z>p+gX_P?85IVkrwRQ>F@&ip@ueUSUVV*cZy(kWeU^)d;nUJik36DLE(zZfdqBT(-= zpLYM6SIxis8FsYKX!M?FI(f?c#m>J9<#wS=q;E2mJ{v!~zb{XFIblri6hdlLPl#>C%+lKP~mN(q5;FV*R6# zw#vMaHvfjyou+p&l)DPbzK**r{fD6Be?YnSpmZeewsM^YC8uCyAN$VLmkjyT8dlv8 zX57B4+xMcEiKx78fYP-Qs?Gv!L3LIQRY!GBohtP2C>*l-n4IFv@diC|(ksX6y2we7 z@~`+}A^u=H{Ym^$a+7tGG6|MMI$yfGz=0tnQvG^iA1!?;E_0H2OF&8LItFhbpJpPL*lAA4x8>ae{r~QZHFPZijLY zLB)F#O5c%xvvPk0s@#WRv&wB(sB)hURqn^ZsC|#E4r5t++`!u7k*qt2@2{vfp7@rH zd-)xgMd69sgR)aDnKylBLb>DKGds?PQ9AlfXr6x$TM+G0n`Nz4x_`=k!)p?0wBBdo z&Vh3Ga=)N_t%6Z}-scaQ729>6-K}L`%I!;YFDTaz6>o{lqT1mysPecGsyyz7Dvzh2 z%3~eWb?{$M*V2l^Y%klboZCb7!M))Cco0+{Ou<3$dr{2VGDS3%|D7N~sO z2{o3ihgI-@Q2D6toD${ZaHxDd36+llzqWq20xBOHq4H6B&6Fq~wNUwJh04cLsC+yJ zm54sB-*@@9 zE@xc+7gYIG_hOA41{H6)Q)v~P?9=}`UugeZ>aQ8U zj%oo62BmO=8SPvDCTh@o?6uj?#ZA$pjKc?7w5czQrA^8rDhI+e)D3*J~(ONUDZDTIg zfvwMTMEkm7dk@)l=eXVvW{#1&>(=*YXLJWn!|rN5_5S6AH}PV)`| zTL{DPNtn3oVUoA827#jxriZLBE2k)qM#g6ej^B=={64syPqu;WL>9Rd|>qDZK z>)cxUk6gnG_B`$)sB!9YsBtR&VskW3ErA-xehbyUKYqCxiTQ5Mo>yKB)h}*=3il*b zu$nPd?EkxM7|J&p#otn?|Au*%e(O%wZ_b=x{p|^;e)>L?-a~h`arD+*d|uKxC9>~b zsQx$jOLqRUi8gM&0X1%Z1T}6RxSNfeUx$%hTCY4;-}&1*v%-6u@orE4TNdudd1lYc zQ1*NTEnnK#cxaF7Zei}wDjol^{GS3fE-c&J9F6O@!|rk!L%9s=wOkgu9Yl>>_ApEL zv9Fmu+s!e1WvpWfR@C$==K zG`lZ?QTu>V`*_IP2aMVWl)jHwdHZsSjn z|2VVfYAAc|gqE)@w~x9Lxqo}z^1tgpt$iHzhP98=VRyM~xqT$j5qH_WE!}04&7OZl z*)wV%E1wRi{QnB7J?_4*$sg@!<#AZj%4056dE5q79xGvYetK^o^ROko&g^~;s{CJt zY9E&X3q@RU7o#xrsB-ugR5`4GYHyD~vqR%+@9k|9HgrB^_V&+Odm9SX-ttiQUDbcF_BIZFk$g3r z)U!XOy*@g(vi$uAs+_kOY5DsBRQ}eCvijeCYpeh7Hdy^HfvW$Tpu#n6WBL9ORK9-! zmG3v8^8FF~toons_O*IFSD#>Z?FVJo*I^WY3-zD&_^J1-JRXCp|M%Xv`X8|Ii8|I?uAzu{@C|H)A49}cDO4{Mu|*p~sSy!L+1u1Ci~g*zKsx}QB?+2Hwa z*w*ZvG1l_G3`*~VQ28ITo#prZan?Sb-`>ZE@zyTZL8Uu)M=OuJpvvPhsPfo~`LfDm zM;O_)g>fM<-`Z`b*Z)!9GJ7t8vgdcu^0npp$|Q6&eqi~(8me79@o#Gv|A5`)vgPYh z%IzSkxkD`7k6O*1!wxlj7D1KI8mRogILq3{jIWyf)@&<}X@^;P%!VqD>!8ZxRw#Sy z{;53VK9~~T=IGej)`!I9l7p(lK}}U*IO{`(&#n%`C;G3!jQ9%I>CY2$|FL+Tn@vynugN9leY7X6tw-VgO6Gr4!ebm2 zJ8(}ttRf6!UBV#l_bPdhQZ~DPbZ#~06FOhkC)yWC@}Q5Wgt79YOnS)kcH{zKg zE?b$7qD)6prdv^_wVx`}cG9_&JampSdwww5>|Fw>*{}@C&R3z_PFuU((eKvz`#0K+ zzq^ax!7WE;{@WHVd6JhajPg6IoZl#8zlT}fbA_z(dV-z50Lne$a{ZThUd%iA(OjDc zzxTn7sq9lTt_NQ*y#e8`>T`S~L4s^NRx?JDK@o6%t9a1@l?*Fm{gUEWf? zO-GkpyXQCK`Csj_eJehWZ^e86U8*$kR}(+=T}$`E1(xpA@0mSE!l)d#uH=0gdr>qE z4ufv)E*CumS&9yYNgiR(l4nAV&2yZExo3P%+Hi{LZH01kpyH&U+ChKp=?h0e&40fH zb^S}ao%UW)dmL7Ovd3Y@?Z`4l$(|Qseu$-WXRYbqd8o-JLAlFZt{Gbu#x^xXdvA1) z1DajhJHZXEJMZJ)W+;0r=Ggm`S}1!PoXV^6Au3#NWq|i5uFLJ%W0=`>15~`K;Z`1J zLFxYsRC)Xtsyv3*wM6s5JzziNSy1s#g1XLK1ob@rI;b+~zVGX~KV+iK+EH#d3-_hn z&5r$G6z_B1*GwY5!euYGn$*lmF66uYOQz=;D7SH<<*VG&D~YcEd~3yZ%zu+IZF?aN z;T_Rn-VxRGcvcm?gYh&wDD&1mO#j?Trhfrc`qoambt>Ls;&q;A=hs2Gw_J|C!(3qd zuXhnH>HcSVxC>pj@vtH!_h|`BIoc=s^=o#&NM4CwepkDG>3m#{$N9Ydp4MW6Txu_~ z_dY218dN=>FxkrS4A>X>r%?Hh*6D84ckWz+2e*U|IOaXf8a-Vbx%NullfKc>Xf_th z@i@_U?tC{rsHva6cTYz;xW0CLtA+Vj%O~sTd&v6sp6hg3Q{Rx7*AgaiEGxG)f^pf# zr|q^lK7~_ld`cf|`FaG(O>MRO9|gPXx#zQt@x)E=j$h}$4&{E}a#YWkT0OTCuHkSC z_Z=vAh0FD$na`}Y{qq+R?pV%AU!FE6mp;tm{RPVX$7StL%zjGIzWbdXPv^Tl{ox+I z*~4$?+v!!rReHh4*2Fh0z12|eLzhdmW}0;=l@rU;(LOG`kEzsqlG){%w-zFwoO}y;XF70WISao zjrOM?Pd8(S^400(cq5ct7%$ROET8+gSU$&0wfa5~%6$Mez7Cvb;l4<^b*EXnil02n z;tfCA%Mq$SZTk(AABWQa3Y1+XqpQPc=B--)Gn)CwX!_OYi6ioLxnbF852iN#_B89^ z5-s6R9FuqnGs2Rhb~ru1Zr%KZtKBcoz}($h`vf1%u<1FXEZhte|v z%6%28+)i-$yHMqN5mdO6(vnbmF5e68+@F0yM#T3oiQXT{z7^Q_0C5yPLAw`6I@LZT zkN5sSu*fy0O#jcJ++8j|0+s%=F24w6-_T<${DH79^0`p{SG#}xF#DcD@3WHl*KDu# znRU$1hciDP7UJtObxp~6z2v-JI(%HZewNwu2$bD6-Y2-G4dR-{{u~QF=^fG9sEX6A zejC`IRN*H;xvXEmzglnlj)6M=Bvk%haM^x`l;1In_q*sRnf1L!^cVVG%59zREcCsF zMY7UQc)LnNxhzz=2kd0!HV4WLo8aZSv&~a}0p*@)G<*LJPL!_p;0SzMytiB4;c8s-iU|S;9+4#^JxG$q}`__qz~c!d1;?e+QzeJHKij;s!Pjqwx5#5g2Wluhgl6)|7q{@i=fJ2vCAr_^jVhg z7oglLP+@LaWc57dY^&$Pp~~m;=9ZI4SK-=sT^8wE;_R)hDO?oD|NMWE3vIT*f}X}R z%+9|-xeZYHS$1Yi^qlB6*cbT;sPz5})t=vU|Gr)xHC_(Gp`J7C3>B}raK5238jH4S z8ldk@@~lkB6uvua_cG}8a=tNE-bzz8cbsGCuZD6zZ8tj)|AE*7>cd42-=kdY^|%?`5d_ z{a^gr?)U!>>VE%WsQdh5i6g1&4i~OnzdrJ-gb0 z=Xc|Iez!f(LK?cuDsBB?4rTQodX=ZVj|ZD!A&;rcExqf0Zuxrj3d`4eC^v4Y(S!jFlwwV8|*}c>CmY+pXac+YuuieORUpNJ-{T&L`{^oi)^tMmNCbuKw?IH`M zGY3-_T6#Z*a%-W^y#kfqPCgD5@Bh%S$e(}scy_*zZ+An*f6C<#{e1j8nd!t$7WD4G z{?dF~!EfP3-&3VIr}4PU$J65&m*sxr<8xfkQo=U6{(U^XLkj5)ir#lb^S2D)vYy^L zDEDC@{aCmSgiE{sxgPFHm!szrJa16FPCA?M`X(#4o&V4D9RXF>Cqm`_beF9km4*)F z=Q!f~55)aSMsxq##{Dbf@My;2(eyp;V{;|ZzGYR6wUuGyMDA)cwdpa@KEU?vY32_t z;YE(j6lIev|4$7Z?qF0*qPlzYJCX#c7s2k>-l)!^Hu*x3vbWFxTZba5;k)b_W6j*pZAU5oO5FD7w$B@``=~uT?l1Y^qffV z`j|WQpB2rNqdfxJiL3LCM|O`{D)-JuEZ(G5re`TsySW}l`l9blw*Ay|0=2*8t~2Z7 z%8NdpY=G*s8)081LYkt=RsN#V5akN2CY)TIb8O7k#Jy(EqfqXl`^?Tapmc7PvGM32 zsPU)+YCO6gYCXigP}jp}p{|GTK)GS}+jVg)luJKg*T-|9+|M7h>*Q~t+}5LTlAL)q8h5x^Zf1%t&g)hj`(fFv@ zcM_Dl5UR`{d)(wdLtX!0f|~cg3H5&Y11MebK0A+mG-l0z3Y0s-<#@Ob!lm4Qfrq=O z5H2t3*{dAtA{HZuPc6F<8|xb?0nysEqn`%@)JwH zk+2<}{#Bm-A6&NgAD`auWDaqpC+l^Xdd>8v{$c5y0;6fYe~ zX1a}=J>+Ol4SOEk_zLfEIqFWmleq`IX+1q>c6sROPaBJci}pgFqTLg_*LLUMZVC18 zFmF+MT9?mWIU3jHcPhu5Zbz})BcA4^JeTNri)YFlbDm)S7u~N_MDjoIn{D&*M&S%*-ow%82EZiy2TD%{?C|-2G{HZk4N;6Ho#q zIg7U~RJ@Xb>lsjP2~?bSpyK=oD$d7H*QfsUSNRX}ej6W0Go;`C z7t{ALl&kV_u-?bP@46h{7j^^j@*6DPu-7f#WT?DEWihv3NKy_*s4V8P|59|%S02gp z@oS%H<*f5@IUdK#t3S_XxKH=;N}NaAe$vuugmUv-E`H9j^oKT1r~6Ee?Ao^P)F}LM zPD7UrC@$%Y0xa_|y+&U=tq08O%%O1rAdly^%=Dhyigqim({_9Zg zU8wroW25=^_MO-y^fY)nlRe!uRJ`+C{xwuR-wKt#&l@LF=#=Z)-pXU&@m4;qQ1MG9 zmWPSV$*Y*3S555aZME?%{~`!cjk?J?J@${GR4m z05%qL?#&yMqTQ^Vx?sjOpE`sBFSZ(Kzf7k$ISwTbcKQ|F`KDdGCC zrZVKVof=k*ood$&^%iu6Vt@T^2m9;}q|a;bn`z^whLbra9b)+}mg73@8DsBb=3+1Z z^d_sX|3bMzAA0>o>x_E;ow+V=R~fY@4}aN57XP;}s{hZ3zgB5)wr~$axwS5Tmd)WJ z#`%9+ynCSBQ!e{;ITh8FuJJ3mhvNP&@o`HS!?CcH@>2Vtj3v+FIA4Czd_a48S44it z;=fG(=vJ7x+#??6SLVC_Q&U^~Wsi3*T`6aRaAD<8l&4&(Wan z8*YHI$KFHjxW(VpXvOZrbFZY^KGPYuwXxFl<)GYkRc6<}pzKOux9l44_FLWXTMvV# zh9w+z_ud-SL0pc;6n@`l+qT-U^;}v1b@H{A;-RrZue}lHu?QA&O-)+M5 z))syP6v1EqUo!t`WnOwU_T<XES@j|R{~)W4_M@D{g1@M|iG^=H5F=UX$Uo`%t{rOm7zY(+7bx9d zgG%!^uoT|u@;y-f;}NKE^M_kMISs0QM{*s|{q>$u&zld0vf+3bt#^0%VyOGhYoP8s z?}W0gq?S1)-!0b8w)JPVmnQtTmn)fbbkEU}l$*i_%0R9f%KoigZuRT-8BlHs)cIvl zc5n3a@p;5NbT<0@;s-w8xYgzRU4GW(;{BUCh%1-$c6lV~**`K)KZ}f01>!bI@^a6pQCTCzzhEf6MyC zd?@>FgL40JIbJU9#LpG%i`FZ$#)kXd_&!3*-OjEutG_&y>$8RW%MxDom-YHO?>I~U zK^T=+?77A!!ghLn-Q@LmU!ner%B$fLE3f=srl+5W-`>MV`v-E}j^k^sbS5S%4f!j6flqjRoy%=7d#-ui z>?!}JwaY0`?k1=-o`M>;H^Wjm@(uGp0&3j;A=I_vdiSq-)5h(cpxi{L@p~4OEr+~i z<9G^6E}32$rZW!n4TrD4-SS$cLJkNDD9M|-S7>ci$J-?{Vd&ml4i#tPFS!HHO}1yfAbxyS>$zzdA zVWV@hQ|IMBy-1!NlNG<9Cxw4O#=A$ml`PkIlI81cC^vY%occ~H? z`$4d#aKNR}I-acBPWY*}!|z%6yP(`7Q1-m;{8lIpUO)- z-yPRlIxj%E#C4WV%Wo}TzkpG`q4N7ElPfb z*|6_fruP?6dT)Rl4+ku=@*4?NZr_1wSBqejuAZ;<^1YABZlUM9-SfKyD$S)(X*qt-vB!zh2BQLdfdHi#BFudwj%K)HWI+4C`!J^#DX?D_gH%$^gW^7DNFxN zsPgy^RQiWyE&aJr>E8iW9;@INNk8xDCvUd!KY?;fq0+wwD*ffRSo+nsTKZc-rGF}n z`X^NS&q1ZX0e+G6>n^>X(9B2ISonLP+$yN_S3{-0_GwFh@-vqHfl%pR2bKP0OkEc`d1 z+&rlC7eJ-I@K2Whi%{vm0hRu=+b#XsQ0d7NRt{sfi&b1>>p@Qb8h z@w4lRgwaj={I`%Sr0$@ z5=(zPRQeO4(x22}=`Vvy|MyVom;KbzuZ2qgL>RSa7^VLiPw^N zsL}J9<+1d;uCeeRLb<-bvGlKmN`Es{zpP@Oqx6r5O1}+$UOuy=)9Tm9tD)TWQ2F}< zl>Yy_%Jf(M%JkPm=|3B)e3wAw?j`PD;Ux=y3Y0q?D*bby(*OR;mj3fl>Awz@ z{y{lQ|0t;RZ-PqyZuoiWPmiUaeAdEW0_CoNO8;u8^ndl7rT-CB`u(4`^uGg@|3y&g zKM9roi%{v8RI(r5lya@ih`wiv*1K&i<-HeoD;G02}wr<@Y~O_8fMj*)tb@o;@3|r`^Ln z3g!L^rT@g6O#c&5`d@(3zx)50{;4q1|2gyK#O2+6iRhv6hZgVqP;N0)dY3|#@6yGV z-e#!usxGqhj)!W`ZBXs`QKe_x3g^W<$#Dz5&YJ0+s&Jf3WoLhRW~bQ0Z^i zW$8D;&r2soI;|e=N+|amDE$Zh(e&R4rT;D{{X?0ztNo0Hk$!!@_ZjPV7JFV=eV%g( zlqGkk?XwM?05spy$_}1@_Q`5k3gky#l4o_*tiEd1_YF}tQh#V;A$FAP35+E*jX7X&HoJ27TRX&AzD z_X@`OJlB`h3sd=hNxMeG<>=c3|9x7;jJ`7-|kq8A{0dR^u9(#~^Exh4L*bE!Z7yw+v0l=CVlu?tyw zz8lJ>RZg9ke}QZ8SKf0lTBGdT?5v=EbiTksyh1u+alI&S@>hEjwHLUU_I|d?``w=V zTYa4gRbMYd)lbQE8xQt}vh`7@Je+)h)z@06{{InF`45|6;m&}vwH+!i&q3ASf1#d3 z4?NK7=^Ci|xfQB@o`kBOccAL0l6Iv$91pd>c^gz79))#qEmYp@I{^0m;@wF6JAk~` zS>tit-vKE6WMsMACU3VNTD!dx>iplJ%3b+4LZEmpfg)(dFA+e$eGVyZpS%ue$uM%bQ)U zc--tA0%h;kF7N2_9xgY#e2~j?T%POlDK4Mo@`Wy6>he`C-{A7CE@xbR+~sFoUgz@L zE`R89*%M}O0?OWzE^qJhZZ7ZZ@(h;`bNLvT=exYn zbEK2@`yV~zXdNeEHct&(b42U&O#Bz>wH}95l4Hv#J;mlzcw{o$FX*? zey5XBjdNi(qgoStx%4Df@xxsr|R<*&nJre*`st+yqr_HCvUlR)BX}3;O5u8?PFJR=D0I>!Rdl zLd8AG<@r$ag>#_l;!>!(xDIMeUja3yKMr*b{u|Vo{w~y*Udr_+G0Dt#|1XLPVK&A03s5GvFx?VgDmCxeu&2r>Xu5q%RKN-q3 z?PKy3D0jZgKXv&Ymy6dgRV+1q`FAY-=)A@MGF18{6@5d+1FZQ?G4Is9(njV5tiK(# zhVS&-1~YG{v3clvu3N884Vg229vYXm_d^r!aQjUQw{t}ML11G~nbIo?qrGaz&|i!9 z_t(0-M(qAJI%H#)_u0FlWcAU8BhCIlA7%L&bhOpeR#5JTQ1x{KRGcWEQ%ZADKC4SZ zHERgUSnrTNVrsaGWBFO+D_ZYT8p&Pw-6}tH=zLuMbew)6KZklIT>ItzTN3m!$s;+! zBGXeW$Kw>Q@0vsYwJxUhc(cFn36`%GsQkp&ceSgIzij>kpxo9j+qyfh<>a?^qK%8u zI*K;i4U4m1Ges__xtHA`a2pe{tHm<6{!Ar!IwFD0>z{+4FhplN+v#txx_+cO9T2%tV%pU(-6?HNCGvxy1Ws_YqKb zE`X)*Vi=XjHWhsP#4``pyT!i^nNGTL9TO~E2Fktca&dcZyvo{hX0)x3``*^mqVTuC zD4((QZgU8mt~UR(q1+`dZ)qK3J8`6^b*|;Pb-cxI-NE926GrL8)*&t@PU8UcKM2ZQ z=yI|BS+_su_WrEF!v7T(+rNphoo??{EGDr?!Vc?ZR6?J>{!L#6{Fd^ zVibE<3=4kuov!e;LDPw=bQ7Lm*)Dk`vRLSUiCVXBnAzI^b$&OfemKSDgP`jFe3x~9 zxMNdI7`?#uI;+hLPS>Oo(fwhXv=hTk&!JFm`?_gSKiC6Gf6cc2!-#8o++DU-`CM(O z+uj(nwbkPdsW*L-N0`1=80m}lq1^JCw2bQvULL6$i??8~={p}rdZIlQ#)byI8y}h< zlB>xM$_z+Xr>eYMH@KcI*K@a1c~pE+{e2bw>L+rN*C2~3cQJ>oek~{Y&DeSQ#rve> zg6rDb>>TrDFITAeyYDkC($@?n9|AQ_+~e{psCh-$*UtX{%DyEoUja4l+~@LRP~%UZ z{ia3ttu;{htqm|Lr{QJXV-96soWY?qZFB6z)z;?nAKKnX1dqaQMphit)uBE(&MEm?{uDaOEs)KqjIF->d zse!aB;ttZJ>oO!rHbw?^}a zjRQm3$^jv}-L$a(xM?AGzRhvsa`Y|gM1I#P7kyQh9-}>(`Btow?}f^mDnpvSJz}eA zVdMoCw}-5`7;~r$?Q!=)dm#Tk?nh zcc=!kj(>pG@qc2o>axr0G8wD8l(&y8lxyAA`rTik>aVx&6W6+)R=+Pg3aT&9hpOvy zpz8QisJ?rR%Qr*y-G`w1>{_U?biN6t z^L;3tA3@DSj_l=n6*}1mV4$UUGnCtYkjYI@F6HvcEVD=l5gag^FwPl#d17O@x5%Tr`tN#()m7=yUb;q8}ojaHrlbvv@l^; z?q{lPPtUkqv;Al9+pc!AkhIhmQbl9H{8&5E`Gv9b?LJT0Wk<7XAE+<~K-K4&E?)>$ zuaCN%gR0;6T<&gv-QU)9Vo!U8>AM@sZFIS}?|)YjKH=w+9)6a~#p7b$%QcZO{kuWA zuefabdw%N^uC?+B$6v)ap%yQ3fW_MzD&M`u8&ABnhwp@PkGUMbFKQ)R>kQL#G?Yub zTs*&9NLXD5I=*h`C|9GsCfOf#;Oc1XOqZofqq$<;b!J!2?Rv8) z{o;90cDC6w@G#SRB9tBHL#6*PRJ+eX+3^vK$|ZWw)cf}vNw=ZXZMe~GSka3uN@FGd z%3Ic1C_7OuZgW?wrT-3;+x<|p^R!uJ_jyqE{v1m8O;C0}2Ic|KleiUKM7SX8(jW6 z<*9tmh05PKQ1jbgLg}xGe&2y-jtgwpMvb=}p1*K{<*(Wqudl@67JqjrcOaB~OTK1y zTn}a6pP9yC>T&vsp}tqZ)PKEOvDaz)#cviHiK{fkdQX@X;-3Q3_+Rn+_JTWESE@q1 zHpho_J)!9?iTeDgcfuZ}U$iUO+&;-aE7)90UP}GJA$?w)mpaFJX&0E<)79SzZvM9X zq?j(juO9yfR8EX~Q8%vn9iHxAOZ80+@r_p)$3kUXZ?22$&$w)zNXses!l#R4IW_V4 zU2$F66MOAP2SeqAXn*c|JQ_&bcwDeAAAc#u(Qn~8&nT|7mA3eM;!UJIivk)B4C${K z8`77s?pf|P;`*1C7r$eW+>I}%hWMpW858x~c!P;o8N+L0ysNW#J@eD|ujKyLv6A?; z@%T$I{>M>ozD};bC#MkM#~+5u@1nkWU$gnWAA^Z+ zUX{adNg7WJ>Drzi(tRI#EbLdp@7rwuO42ALXN2R&LuEeHpNpgZ8|eJBCh8wS^UEt{ zFEgcmQq0`ob+O{%U7NZz@|$MI3Ez-u>D%lxqMh||UV5&D`KhEP1 z z=Yi?Lo?k^x+#X| z_NPYT*IyLk{}n3#ih5CcU7Gt;T&KvrE?sb69M`9Ybd#WRTGX5SyXJuqzvh=A{wq*f z54Ee)!y!EPy6s}pRNo)MuZPMDQE#c<4Y3U4mE0TBjfTpJ&~na;`YllZFOB-E(02F$ zrhd)2e!Yo&>wgx)Uxdm#Q7`h3IG&^OjV%U=&I_dn3` zx||x0mt7a~KNBizpz*iAKG=B*H2x1@y03-WnODfWeW&x@FxF_V9i`)iYj$&bl_wkd zE51IA+g!cpD6e@R$TjZ+_=d$dHh&|6e(gQM3T%Ip!p%SVVX$u)R4;?tKOyRqBC|az zhf=Bje0&4?8EN zy(^Mi_*?Kj-p9r9T)pQY*AAZJ<{j6?Tw5!i8`h5On-k5?t*fbb_0NM}uY}6|P`g(| z{jGTX{iwIj`peE+zW;Usd3l~&_{-pjr=YU!!$Hq0(4L%hK8^qS%p;dsmNEy5@$N6#Ho_1LA<-xm8bRQ?k6+_>wA zJ16$@+hV`}Rn(jNuJFN-Z`0zCZ=1VAzJsCu8x{4#q5Y`&{$(WT)9V8D!9NE+5&U&2 zG=5R9e9n72WP8i>oVSWJ9xG)GHOBF9)Phj%mC$49cdz*U?hgDWWe0wfvcr;IVT|z1 zL+u$A$rJpIyfKWCTs^Prwn^6~3#&SNe$c*E(w=+tt$0qf;feBOEq~Rf@g0C0*&nTK zpR`)lAr1eCV>3PG`>9uKm#AOxWO*_#ma(Nyo08sZ#pd}%T1UW_!q}4%Co4Psp4t?? ztvInK=NH9EXWm^MeyI@FrdiQ9H8aBaogG>C!{E=|YJz{i1#O=zqJ9n3Z_V4cF1D|I zMX9+j`1g9Kd;-m!`m8&38l8 z+ujrGNaq9gFbVCs8-K-zh3|Rh>Uo{FO*;Dwuw%|W#6*6pR9~L##oyS4v|0L2w0z#L z=I=(@r{Vi?tkPqSKlVcj$Be%@9BaN5MqI*@=J{iHZh2qVhRG7n_bv+U@gJz{K>O*B zqoHy_Y|o zKxNE7iTQVk`S*_bCo$c=P&qK>_g!fIQ=&c%ntyobg!|C^q;BcBtT0 zCBK8_KjgCV^g7ijnAT^9wn?|!w)lPj7uPIT#yZu;wz)U9)pBUr&q2#x11)?9eVr$s7;SRuVZaDKZN&#+I9x?x#4r6wml7fZukY5`Y#8nDg_`!@P1o zRDKopv|ekuSG`k3ashwEzlq-y$1cbf7cgwr z{)dCp(YJsb?K=OX7MlJgy%HMLiuq)4A4AQjrYdFMCJb7J7PJEjM?H6aOCIJrX0-cTu^vZc^=NkfJ(#$j zPc|(L`QHAEknf*i^Y*PIZvE|{os!sZx@7ZFvwUa7d>bAL`CLl=%2TnNTzhMYTNB&= zC$T@=8ui>ZT1mV)v47ng``3$6Z+@QK6w9w$63RajJCxg_J-OuJ3iT&zx4Su(&g&uI{;3|Z_2(S7t(Z0N(YxG=knL#9>zqM{GAtXu zcj=dwygVUk$ zmqP9M6|~%K?<`N>_cj`;-wCz#^^mm~nqP`EbKOGYFyP*DC2KDRj zpuZFC*mHc+6Yd0i!7*@qI0>5XLa2Y2z&`LPxC2}R`@#>P@jit1<6gbSr~P^ls7&5| ze9|BO0P6p+e`xu=`K9#PIV(f|Zh}ge--K~91g7cJ_v!L`Q=Yfm;(k79m8QIKJ~M3F zic}vBO_!dttZl`0>DFAA=C?dtW2;(Go}A2I-LPLVm(toC-!hDGof~IBellP>&p?pY z-^>>dsz`?MH?rti($o4JOT2d1>{!wE1|b)8Q;7bnyFB>$ z4XA94dbV$B{8@Q&#clX(-|)M{T>a~Q|IV`r)dm_q;re-yNal-VBX@7oXn6Ww8?MWzzd>yFecVm4o#(J78aJ!ULiEao!Qb^zx%!sS z-*17&eFSRHny828<~n-+pees`^RrAPkA(hT+CQZGB~%)sUevc8_q4lUUy;`do4CVQ zpY_8E(l(ZabY1&}bcaFPB}=qJ$UZO?>n&1 zZ)(-BO=!0!+E?Lp@yTlRzcXj|3l@EzZ2k8&mb>9Y8R=&pOcBeQU6Inr`74kn)K?g;3*TNdeY z^$E@NNzL>r&Gc&Y{-m23ndKubCo5O#2SvXq`bp7mxne(2|NmNiZL%KPCo?_$PyDAQ z_NQKJLw_uX*6&GZeg6Zk|LDJj`Taa-`+Nv(uf6{o_A{?R_x~S4_x;=bErcHn-PfK4 z-M7t);kQHgZ!4kuw?D`5q3?wK+kw#i+ey%Vw#&O=zcdE=UXOF3`?opJecRp8ct3~k z+kOw-x4jRwcfosM|Mn`h-<-8R?BA|}?%#e64gUzbe{1*muzwo@4Ic&F$5lc1aTmn! zr{5o+l%T&3`@w%h<3I92*vGv92cYLQjZX%`UT{aa2Q=QEa3^>a90X@T?d`uI_qsYaC5!)6;ko_U_?cea zJIvdi`jn?xo&e2f=ni4sxwCJ1dVa7J8omtL&t8DaOVIggJv85<5$%#8dEJtdrX3o4 zH}tA6uI^FQy|i2U9Ky)xi~52oDF{nqj| z+;rVZ?^x*{nT5BMpYgKeS-#TpWX+4A{~Y>Km@iI%mT@Pv-~9^O4_}PoGgpOq;s$8E z+o0q0(Wu|~$1pz}_(~Y}he6{V1s&&8qJAgTwz}0}yw83$jNe7j@LxdZfwr%O@!t;` zJ_tI#_k`xV4|IG_f_>mw(7F|+-|H<(ws^9iC;sg7Rk58be-irqWN2Q~qCNw%oRhU3-nwbqD)yu4 z?>@S<_)2F87I=r=uE>^F7MKPBe|{|t$=Ubby+{j^nGk(qy*hijw9vvBJ^l6ajcxH$BDCVP>k77Q`*76y^ zvD|#N7H@E~c;=~;92LgzB~ZBnYU>S9A3q4~4-HZO8`S3H=rB+9h3b1j``RdI`nRCA z{0mx#ietilWfHWG)1Y;(f%==}AcsCPd$*j)m(a}3n(a<~&b1rCB&LVZ{ZcZQEg{bgvr zO>h_3d2-Nqg8HKr>W{sleXkNaKF*B#70~px(DCwk)L(|Ce;wMFKZ0#wm+u69XK1?p zq2sSA>gPh!T><+Mekbe?pMmz3MmP}uC+gk58}ccII}(0q)K7-ylfKW5Z~GPVo}I2d z^HcC*c!$#JI5ry?3(6X3eEVXqG))cp+;M8?U(Z7O)mzZ`e~sb$ofiC52|a!q^!V4k z*F9Mt_ESyKj?bX}E{NB6x<+c3;hBBX{4Kt74*m+YrD{_cmuEub@AYw* zN6Mk|NELJ*IS)FITmzj)9)z~jOVD68$eU5ItEZ-2D zb^Op!uT!8>R2k}b5ww1{K;>bm9UTt~?J)#u$3&=~Plw7P=zR5iXuGVB;S&xI?Q<%0 z-mHPjqtLbMb*O!=@BR4BR^i+ZP3;;B8uIHmUqhS`eU`+zqXR6N7}7lgmFJ>%Rn zCc-q|^gSsfX^+wt+oLw-U3gaTe{X1e4u-b(h)ByYJXg$L-FV8@j_c1d^0A*zh%~<8 z%Gaego$~)weA{Ibc9p;>upg|3{o%|=`;XzWB+_*1au)Fh!+FqkuNJz_dE9XIAyGHJ z`mm_Wdvo+G-~Va7O}C7Evh;FAjy^h;_rJ-vfqcf2eof3z+ViZRT!&r}b-5A!n^Bj^ z**7N>KnM6OSR843!(|pf%O}e}tB-aY&we27H!?30q`Ljm@LZ|t6UM_mPu*5J)r$!EF1tQ!+~%nbYHL#?gW>^L2wN;pHHCupj}DW z7mb0tqJJ9>g=fRv;7_6b;dxjJyYw5M><)KMG+`j1aWp^t*L z_w{gJcqcU7)6jP8J79cL4!;5Q$W!njxCZL~;RDAf2g8G*?J^tMPPf2s!6onzxc83Z zlSAQ=uo8YB9tN+5hr^%4Bj8iea$bfL;oqV5d=8IVCtuI&$I)3 zCf@zs)U~loLt%ZV>W)<%Xe_TeG-c~C&u=Kp<8vGDh=;ZD}L;*G)`sQ zb4-TXIyEwzi!$F$C)_r#f!aJf(&L6_TtIj`^hJ?bc$SY;q&DX2>4BVo8V(BMru8=+ zh4d$=jeQRe^WQY6pDu@KKZWjlx=#r4i=p9tp!>(YWBAcA{8*^%+kY$UkA_3r;oGnP zo(uK!HPCpw91`|R`$PNl$bIU{h?}pZY6}0{z zLhIkYBE)+G+P0gZ_3uObSpRQ8>pu}%|5Kp#zZhEo>!J0(DeCt{J=~`|fctbKTioYO zjeWH02VtB~gVtvTbUa-Kt^b@z{+otNF=QM5x^55@knko4ALF|-~_q4lVb77<_JK{%`zekM`5Af%EMQFagIyy% zu3myZ5Dtmqawl|;%aJ*{@eMD5iuo&+t7wO!U5f3f=nqBzDF0JGj10-X@Pq5Wl50;^ zU#UG(d!+VA?UC9ewMS}?v|Xg_BDXgGyFc)_?II^c9eg46qe8!JH#&@`t}u_IeW3a7 z2rXwQwA?>K?f4vOSI>RJc(@H}_o)5Cb*pbd>vcS|p37ig_y=fv`~{Z4O;G;~7!&qu zHEsTj4!_S2M;S+EGd?kjz0ry4! z1nvjBA22={19yXE@L;${A@p`P0S%VCED!#-^=JP3Upv>on% z?%S3^+o2uv+_zxQIRAa!JTWKE6V=miCKdZymULM%usCOVOPtM#pez zfAP4i$kB~&cnMVg|9Rre^F;0NFh9Htm5neD{u|owTJI6&hmO$s;VEeUc>~&iK8E(6 zOGbqGVf#J9{4f;S&ig~#c>#2Oco5nSPs0+p8rn|V?iJ>TD(L+1Luh-p**nY+mqX`= zo1o#f(D`8*H2q^SeAvh^Ka7WlPlWy9ozVGVc?^FFIzPM#ogY4h&JSJp3G+iK+#h`c zbbgo$ogdDH&JWi^=ZA-(o_hs4KYRo$V8?HS`C%96{4fhTKU@!;AN~%VA3lT5-$lFf zo8`RyTf7gqEY1z3oVzQdVIHi2w$ViB+)xE=qiK=+Hw~A@Q%sjD*&ae047Y6+_f#{; z$F{u;I`_|k?u8aY_hO5o*D{wv?}^ky?}a=Ey%(|?dM{)xbZ%&Z*)uqXt9viRF=~8u z`;5B$4Bfs`z+7S9Fdp&M_rS+HkL+T%?zhv_@U;i3zdr8|*+D_7Tl8Ur%O4~{9ANA5fq5n*S$~n-q zmqGKI4b6KVw5)~DvbzrsFfC&As|6|fX8hT8Wq+#S9Mz3#IS z?g6{*Hr~%KBqQLS@CdjUJPYm(=R)^~OW;26Md6v# zEQ70{Z98Q5Fz<|lwt3M|zRi-i`P8O+MQacsxR;-6&y>dn0 zsM`n2$fpEOfc@Yk*dI=b)IP&ARugWYni-jeXPiZNZv1)Z_NCg$ES@Zh`D%x{yq9>H zp84m0I_|BX`DIdfM7S<8W}>SN??Zrj@DZqwx*i#>y9|W-a5S{cu}~XMfo8^bWMGKZnjA!@gaf z&L8E_`Qrp=yp?b#_y%+yDLl43oi}!c&Ld-?@$x2@r}IcR=sdDJH2iL8A9xTBg_FKp zp3Wy{LFbd%(D~$U=sfZi)ZP!E^GW~X%G3E|KWO;1(0S!H=)AH5I zQ_Lqefpt(t4%(pM$@TfXa8FaeoN)$&Jvw`mYV+>wc)d6t;zb zjC%5yFm5_SZQAXxVZ2-l9VZV%$H|K^{O{0la^&B_IH`vEt^r!diR;2RSp)S|6Vz8H zzEhsA$1|bp@vTrFeFRawUy=cp{6`sk?3Iq2?v7DgIReKGp} zF`itCeqhvPJ^DEKT%_r;<5@cMF+3|Tv)B3vx`zB~ve}b0X{W}$@Ems`JZ|Kl(hps2fp*B7b zQ=6f6cpqA)ZL2EMHaZHrZk!3N^JUPsSpaRD_n_-VtK%!u{bwJjj}C?U?9>w~(tYSp zU>W)%Xn2nkE7J4dQmBvT!Ljf@sP9)o+vH6+9uApOkvKC}Ks_)89t1Ci--I_o^IZWC zhA+Vh@B`@iaQl-g()*i(;GyUT!b*4?)DKhOVem3|IJ^_uM%_=YNbhg%2#-V`2le+P zcoaMr9u0pAC&7E5Z5Q6v(V1t*Hov=I67y2!j^X%)Q27(I?Kj2nt$s%-o6|18HO=3& zmXk5-GwMoXuTaj)?L#^LfZGz@xp%a$UpwCA*saCqPZ!6sYU8tI_r_<-mPJ}t)?YJP zW^)@dT{fN=&Nl{6u{D|Bp=obCDV$Gkg4$PfatQAZ_49n_e)IkqUJnbODFdrTVl~bVW<2f*Gm-Jhd-IA_zw|tt(d#4St-gBs@akabV_>gY56QbQvySv8v zoCeh|k9tx1UFM!i_YGfu?q^fXzwxIb|Mk$cpGCdk>aY*$3a#^`$SKe|O^2CX`at_K z7VZ<;^&O~u1kJnCH$s0chUz6yKVJ_m;}=lBJq|77W!MHbMtvPL{zuTVibjR!!3RS1 z1EBl*BVp#>K6yngUT-RSJnR?eP+w(XAFd+SsflOx zmCvAd6kw~=_Dn2au^ef+xuQRn?6`i-70;8D?6`YP#d5k*ULh=jMQ}*eEkD-|b?3Xx zr_z0$%$3IYeE)7kqraf}oCNjf52D^{SVdayUeI#aK-akSQU51&Ju2KStVg>*^O*p( z<9_I#x*lpruTtI-1$Tzlv#3Acz2qA}efS1YG4K6pcNV{QZ4B?Eua3U2VP9q3tWI~L zmrV-kpMlEzQU51Q{dG(@{sU-zZjAb^(BqFqJ$y&LM>1ea_oOe+^X0rhJpGNwf@ni2 zWh$d1Gg}PPHmOW)c0BWY(~-fR^NtGk-UhYfH&K5cYUle=UvYHkzb`}k(FUk|0`0%O zVtv!^Ovc~vf9X4uQ~1u*F6`%b<(%S!@Sc+`b$YD7wQm+LuUG5M-;iSw?bn6h`>!ZS zTJwAVn!U=C1NSaZCYxVjE8aESHvLYiVK4GGEta#TUckc5Us@Kup69K%$cOsm>Ulj| zCp~ZL*0^1RU%rd)=G@3T#ttq|9_DY2W%w=8>EzWs+;?=X2sVwMz&q3U=il3w>(BqYHky6ViAs9e1s%CcXTsc&1m(KUcD` z_Eq`M%*o$!l&!@NN4f44=cD;hxdB@C9niG*LGx<2dst@%K-ZVi(D8XFbX=YQweb{a z{OOREOnwU8r`!dd_aA}A|2;JRi_rL+px4a`hF7H5$@)Xrfl<)&{cl3k9Rp4GU1+*_ z(DQ-&q4Vyu(0TU{(D<)I<2OR%AGAl9k1vGI$5%qHiTn(D9sUv68~z5Gel;|GPoCT9 znK$4|`%2#vzK(vAy_cez_kb%ip?;hN_2WEf`L)pXGV25C`cYlpo1<^7?X-ueU)i?H z$j5bS1$5nNh_oETr6RNZGF`4Aeowd#>Yt5~#y9-y(kJ|mwIA_1!2Yl}(sYJ@UHXB< z-zSSSv zp4Y-1;QdhfB`kq2M*YZ6;riAM(Du9!4uEgMf$$T!Bka~W#G3;hLa!TFL&I-@UN^o6dfoWx7`_R5zTd4VyxUL%M|4l0u`;dBWU&@X*6@>X=aN96{ zmO{t&h42#BqyHv8lH`b zYz*pK!?i=%TA%W`@wV27zAk;uw!u#$T7~{q4$bRWXxcNOHZ6hLS`V$$KU;_X^qu_B zzs`pCtCynwI<#MX2=zr_o6xTYLVa-{^#112(EN^tu6Gwg*Sk4TpR9-WpHHDanZW#M z|2h_G*BLPFN6>zB8+8481iF5`2-AMhry%LW`#3thxaE7SX2m|xcx~td>mzF>hIFkt zA5|`d`sGJapBK+lL;o7oV*jek^5%M#vL2eprbydOk=mHGcdI#JZax6o28Td>J3HzN zpgw&$>Tg4RT5?T@KLqN_)1rP3)R#-6UJv!<=TUDrH{5@zfX(|+b6tBT5>Fq`h3dCJ z_XumEzAmz*erf!T9PbYkd_4dZ!hvwNsE>l~1rCOT;Av4m2b%s0xC@*c^~`Ty#pd-O zc`CL0hju>sfY8q0gJ~N<%W72~`gvFASnmT3KN8v|Cqeu9_hR^3XxlVF=h2U2`0f>< z-|q|U_v4}Ytc14JDrmp|Qw;BPQ0V`?p#6UUG=9&6!#EfU9S8HGegpLQZ=w6YSE2Lo z*a;#0&~JtL_uJ6xOJ_sJ-E3&zyB0d0ZikNZCbRS_(2SBdw50KrzS!B)G2T4=K7Zyf{OU(SyD z0_gtoF6jR9Dd@iPO}HEU1eU_?%p2O(2ks7s!r^c{)c)h3_J7s;QdY-#qbAN9vm@=_ zrX`!L(qjvVZ(m&$X*wl0y?PzToi~<88kR{`j>or_ekJLY+H+9@dI~z8-h_^$kD*dJCXAmE(DC!!DB?6ZPEpK35Vi zxjn=ygUaDi&uh0$(r!54s_&Vf^yGS9(UgM3cYM~IUXlEWzXjVqp7#4(y=eQ^NtfHg zuiV8ZddGAXx zzwz$DyRo__g?U|)woPpsTi1uWtc>|K@|=lj%tu*|o=Fz&7~4d+V@gqP^`o#pWOZ)t z1LMtkFW56^eX#Q^XxbN{dA$+!P0%q^@b~!K7qovK5%mk9{d6|8pWXzut*C$dr2mK= zl5Tl?Yr2W=lrD3ml*5V#P2PY&m#SQRyX}tFe~gi4Oj1qF2Aa7#;tlO z*l{;h?t`XlzbZVh)(fid1wB6)AN9kb^}Rmoeg7EhI}BRSePLR^-uX#y-nrR>_jCZN)FE33q)`%zrJq z+?rqJGz7b9{}Ak21dTuV#o&)Up!#^IKaPxg71STMMZFh(wEcI6`eP(a{n00%YXy8~ z6@PF~CiTbESeM%4Hjj_0=)bF>vIbgiQ|4Fa0rsaIH-z4zU+2VpO5#1WA(5uHY-t`N z3D5P(Saic%@=5)GF#o*=mHdHWKE42&$E>K&gZks?sQ&@#k3#Ox>xaHjKMc$6*QdY7 zE#W#v@s`iX#eTmm)}@qps41f({lDW+$?BBVC4_FiKbRf2e8oCekdMq2*DNKA@BT_@ z9?yN1lErgBr8u4^lCRW<&C|L6QL=RIa}?uOkp=rl-h!qd@Ot>2=K*WN^Xg|o z&+mT>wWsf&!gJ}*!9M7pLC@#Ay%ECy3f*5dLF4}mx?k$?X2^dq)UJ!+9`IVIUGKs@ z;m1&Wdk$@zbfM2}ezWYhmD{j3dY!$IKDUIp#w&^I;`p5PkwZ!S10kO#s8rU4^7m&S zV81*TDtWy-r1M^H?jiPOtoI&X+|<31`&{*WQ#n1i?3#2~vgNsD!Bb&QYuL)OD(0(g zTcd3;XZv8^j=h5&gZqTv-|h!Zn|D;Zh(!x-8lQmA^pC-S+aZE)Rh2TlR(KIR+}H#_&sHc=#Sw zLHa!y=hhnRQ0k8hetZKeE$y)u6W6@G?km%X{F7b()$U9@u3l0V@;weJU3h-R{H(n6@m7mjxtM3ox+zOTb z>BstK8nnDCW4{jfqjqfZe$*!N&)TH+{7}Zdk)E1>o_L>fEyW-GHODJ*j+@`a9KEIds&bAS ze_D>-Qv4ZTbNsTeIX>rWjxYS0uP7eM6> zXn%YJ+8_TI!~Y5$EAK_U&n@BkwjH5;6H| z^TR1I{Cw#8avk(~%ze;um&D^!Ys2rfYM|F&Zi1HoAS{F{p!X^iO2s5-CuONJ^b!# zXK1=H(0#_?(Dn6<7=9~soqZJcg)c($dnF#d9Hg|`8Lw{(zeW3C7 zi~1*UB;f`3gx{A9fW{jIjaL@+pTW_DKLGcIzm4H*q4C~{`r$thzc;%UI*x9Fj-y@f z4Zm}(g6c=y7k=-01{{Ze2`qziq2+gCUUwwz1YOz2#Q8paKfMFz=Y01%_xtH9!dg}R z$}PlBlKQD(zrP+Td7b%=B563MuMW@HcH};12cFMupX8qvo+qn_c_hru)~N$*oFD4< z%j?3pUI{(+26TKkMg6P3w^B{MwdaL&?_Ut|=`b_sMg4e|>5}l&kl&7Wjb0G#XqdM7 zdO%tx$C9VRb(P(r(*N1;-O$~kal*H#zQK19O27171owvZezm`!dGj#ne0dr) zd?xhz-DA-C^5q!*P~*6C-h2)^PyPjZy*cl#aq0Zn7dk(Vg4#VD+D3On+wyss5B~yP zXFiYNo!$=L%PsnI_&)AX=sI#RbR9VnI?w(PI?pbEC2$Gs2VaExbQM(c*9JXY_wDhe zeVF}yUF`3L)uBK3hPKmSsP9KW>rfVHdwpGdHhmn*z5kP7$E(mhKZd3)`ZW0EBdA|? z{w(upzULP!__TcT~0!`UDV|ibo*H~v|rAI_RCq3##5h{qZ`j~(`EU{ ztQ^Z#*FKr~95vOgzv0T9-vxhc`}^SM9iTD{nr;jd4=TTa z=JPLT`aKH6`PU)P@GGG0@H1#TJOVARs5n0IuV*f}X!65e?{E7qamg@wfATqn}D zH;t^1>(A#<8M89fV+OSRYoYCbKTOL>-|y9@#rLn(#qw(DtIEAlo0mcJ%KG98^sJA{ z26V^F8fc$d7ioO;jX8Sm*vj&gmLnCJ)vxfSVD}`bOohh15n8W@ptk)R>dzjlLO&k| zEo&0ghFhTh`*~=8Ul+qK`eW$lPeSL}HPHCqd^z;{lcD|ohtPh11GL{Sf%f~~LD#;& z!PLL$b;*HTm+aNzb;;FFhj}Ssja9NbcR;ru#n5^Ug!;A=TCdTO#?O3jJoT(?P`B`% zdh$xJ>wKu+u7%3&&~y($^H~GUw+UL_!K;J+WW@L~lR?~v8Nhv*z9V`h+i?#jy=oQrT*))RA7#9Q!1yFhWdgePO@i7t1!`Y) zr1k!9>fdxgd7AJ32bQP#E`;WLFEssfXuf}e*01~6a9w^kXuT_-@y>yM%Kbr~Mw?GLr@J5c-1 zg37s2`>uzned+h5J0=Bl!yHo??U}PjIQ|q={toRgokwh$E`M&=v(Jd>O5*V|pt2I0 z?$s>a4h6{$Q?fmOyD#?qwK09=#?VhTL8V=sm$!%JGc@Yq+~LdLMO+#4srqS{M|)g7 zKFwzjX!=8;^$z>ze7y(G}yH zpUk8t+Vhua=ZDeGTjzxJqV}4wUOWjcYu?)NkiN>9{QKi9>+uDhu=@|P06X_lg0cM|9WY< z@66Tp@xT#-7~{QL^l=&azlaUy*BH;SGT*F6x8HAy%)&ErD9CSuJrkkwYiK=RkKv6m zeAsWp{Pq**IC=^?j^2pjW$c?w_no+Z3ik_#alde<7Vj5M#dhs3#6G1rH2vUc?+9o) zWzcdaL~6g`87C3$IGqA*muhIc%#1Xi`m7w?c!rx!y6$B9JmR^}s)g>a?uG8JmO-xv zt%x+f;j;O;Tb6HTr|n=o>n9ay{WCocKZM4+5o*r{XuUsy`eV%FVSTw9y1qOG4Ifq?*5}iq>+|K%@ZFvW>-0fT ze_anQP6$qpr^vVbR2YFdK`3LdI5A_IuE)pT>{N_ z$ck_tI05!SKM8u?b|Lh}V(A;c?y z9^dby&|Zf^^%J1=JsUcXu7#$12wLBVq4j+whW{&ue+*5(Yg~7G?#aEyJl_4&)V{H8 zL-=OuwtPp+HL+mjT}gk8GQUc$0VtE9>8C>NogS|Z)Ij^wY^Yrepmr^S+EEv&uhf?} z(^sN9u2)4GPrVV{{r378F0*S*aud4ax7GKZWC z&!50FzwHYc+gskncYc~gULH?4&yZPrc0f0uVrV`CBRy_-*4}l)!hX5WZsmls9zg9V zhvqj48h;)%p9W~VPv<VGn{yl|at7xumVzqBVa{bJG^uPV+})8gDUBQmR3=7+4lmvKC+w|3^nGkgxm z?UxH9J+8hO-Sg?Cky&__uWX(l(Z7(UxGufDE{vy5(D-}36UI|D)UR`)eq93f>r2pj zu7=uI@@^PkJ>LuCXcRPj@4ts}b_{f!od->SBQ*W3(0Fe`>vPWgVPEnXbX>g&4gUyQ z&o&=~eaRuvd8`_`ADIJ<_d0akeF`0ieOMoyzxIWe``x%+Z0-D~A+~?*RiS^q4wZjG z{Zja&5FWmVzWJWZrkJkqC*k=1P&pBr?xGkT&YOm`*neCjN`7-!vJDCJO(V}|D(mBS z12^S-KhSX7)_7T4x4LX|A8HeiTeioQES_|3lUqBkZ(BNEd10vE!%%q+n#XErJ8pvZ zm%@v}_}c|)<8IL7`$EU#Z=p60`C&NE9tG_mM?l-@OlZ34(D)a@^m-DsU%UtH58Kv+ z_^87l+?no(}C7mqPo+&!FWz22B^*vvZQaB;G@#9Sm>y#Z4*og;Fy+ z#D57YZ$s<hC#c)A8e>bG2f=EnE`N|xUL z=lZ*FTBz5dP&p2o*YY#MI`cBrzuTP|`rRI|4f>(bco#wY>-Et7`XIEdFb@o+t^>bR zSLcDk-)?@Ur;^`5E0dvlPKCDhbZA@GK!AI&UDpu4XSd+z1EJ@MCqd(1 z4b%H6(DDE07(S?b_&xO)=sxx!=)UU|=sxT!n6^v$yZ@mr?%zk!CWm9J@oHk&p zL1b3J?%K>PbdXn#Kw+8)Xn4sM?`Y` z(!DzDvrC}ucQv$M{~T)TZr=~*&uV$Bcot+p*AgJ0Duk-=ID@YY+XwaZWf7IuM%fyU=t~p;C5k&<}vhWl`^0+Aisy*CR=vuxw~s-=;dhs&!?n zQv1#<`p!MXHJ=*xLdxvO+_uZw+~ae868dA+Ps>%4+o5gu3e^4$F?{mXVI18HZI4Hx zSNJu&q`?fOpcriZO`e@@mCYWXG6!` z0%-d!is5yU%c1#Mt|HBMWjwwL+Ls%l?X*79cv&AezIyX~2>wE9Uk-j*2bCRO3I04C z>dzlQ<$P#6%z^r6ehhyQ>fg_y^Hag<5Wgcd{s3tF!7=c``ue!Lhu4qB}VdMD`dVyHjP{Zp9NegV}tK+i`? z-w68A&~b7ybevoat;a%WJ$?pF*Xzyj{*NJ0eKgeXr$F0d8g$$|(HP!e+W?(g-hr-P z+q@Ot`_Tb<{a_HZoCBccjD^ZMQBS`MJh3z9za9M@P@}t4`|E1@t5W@G7=OQo%G#(G zmGB(~?yL7EZL#~ix#5|4(>Yo5HW=!+5s@C(?krvz;cd_-K>OJw=y;q0?O)Z<{xvhwbn3HmbmJLrI%z)AeB~DM zeyHa|P+1xEKS1ZHzefGNs3#wU_!UsQCqe6TI&@q;03BB=q2uN)Xg;4n{cuK8=zoi# zcD)X@v&)BJ{2T&o&jyo zE1>b8gtq5v(DwWY+Mew{4(+)k)Q(O-^d%oerzhVy)K4^ zUk7cskDz_5!%ZRlYG`{bhPK}mF?=<&9{Vf|`?v~d`%Qti+Xc{eyAIlJb8|trLLhHX0TL0Ie`4{cl zKG}6dNwPh^b=q=I7tZ;cV*8ge#+1>}{3@XNO@!uG6?K`liS z#ox+Ki)`MfX2jpjUIs0D4%C)~(6PN3YQxe<(;F_0Co`Wk@7o;yqA&aZlHUfq&xOi+ zP=B2NyWo!-p;G=_@XJ(aJB{(StTF-Wmq}62Z8PIdA>4XaL+zXyISX1(#qfDCJZr03 z^sKFnQ+9W-_pp0{y{AFTy#m_5uZ#Mxq4j$i>gV^NcI^7|;P2g`<(&`p-$PN~0QLW_ z_lDy)L+x7>^#`Es@JiI*hPFfB`-0zxLCf10T3))ZV{f=U`!Rmk(8QgU`fP7G^|`y! zIF<2vp2;md*Hb+^%sa_X#*-`U2d(e!(E5&p*7F!>d3ou3unUsycxUT&6Wb=+4Nqs0 z>dkg^_>vuSq8+8N{LwAgQT3yc|I{A`JI;XGF&}Ej-B3FogK53f=fDb*{KLcb<7Kgo z!kBmO7Rn%b(r{HszY!`QL(3UR`Ia*hTF!)MPtkz($$*Kc@$BEJ{O0e3oZroc`LZ#V z+r+gF%78pjgUhRM(}&xF?b5@_F= z4;>SWVLp5m+Gn4K_SLtbbH+w!Uu|<**r)Y^_VuCAIid_YM;rm28%~C;eOqZp}u?%>dVeIh5K}+P+#r`9q+TCzPuUg%X^@{{1;5;*@fXgTnDHxi=n<8 z3iaV=s1FxFefK)lcW=U;@Exe{uDm%s|1%$Y|NC~R?;eEu?s2H^o`EH>$1UOa8aqOL zcL3CP$3T6z80xzRpuXGY)^Vxt+QPx;U2B8?dZy1+w&%B0?daoezZl1pVqeY1&;MJ* zv{V}J5B3#55Zd=V=vcWr>WiUc=@(INg0_2pU5I}uwEa(t`j4Rfpf>7HL;J()QBNKW z{h~WmMnU_>VNpK?THf@i*GB!3sJ{#CN6C_qen;ro92NCzq5bOasQ(Sxzy1x)x7|Y_ z-9Tu6+db<0LHpgo(0Iqh@SCFkLe&2f^>BaR>jIsV_H%RY@5lBmyz~}w)9}D`}>70=i3JIYd9m!-_yPq=G$LF`cy*_S`-tyCe|?)p|C!@zsdGp7t5~W zepyzQWm}egB$pmvPQ3c=A>U7Xg!0RaL%%v4n&x<@Jr_dlxgj3E4VuUEur=Y`dWLjE zpy556`ML0g;OEjfzm-GfU)g-ObE~8mzrSg_VVi2NosT5G{iE)Q&@LxF8QSG`nC5T0 zA0FDhinxXMg?1SNm6M|0bF}AkM{_=R$d|5%r`PC7djb_T&$@VRemT@{E1^DE1@%EA z)CcP$bKBBz#dwO`L_Ft~oi7jRM?vS1^2j5gYu0g5&uG5JQ_Sadj?3Kk)2?#~mxgEU zjGF4!$8gs$`Gs5?+UHcL%!8&~3(adIw5${6h4%hFw0%E>`LOf+us%(=LA4BsQv>?R$CQOe<{Z{Dl524oshTRaZLsvrA z?-QYR*WDPdN52JK&p&~wk8TRrrLTdm>kmSG(t2UIF5MOCtMI&hTh`jmd*(X&Mnjwj z3VHrY*)2YY)$<#?e{9P3$v~d1C}BMMyO+(+2r#eFhgXySk~CG4lsp>x?Ow~nym%zE z+?%1YChEEKP13-7;TDH}of|%w@XC8ac={Z}hr zQIE62{QG^VTo?7+dQ}jw=Ijvfmr!{p>RxBO|>dbp-IwftFg!gDyldj>% zAzjDWA>9$semxzg?Ym=#WXI{-CH9{04A8fEL3&_KGg&)+W%*IS@ zO#io-?_)m+`Mv?ue6@>bpbM95Zhh|_n`b?F7G4|T&4B@bL?UL+0v*|n^Z7sbatmC62wb`_?YJSM)HJHkEq1-}fxw}H;6_}1M zn3lV1$7I*(dnALV4Cj9M?n#floZsJ8hI6{YH-fKfW4ZT2>$D7-_X=p94bXXUO{8`i zo^c)F1?U^0d$Q!lK#v=q#mm@%+p$Tne>)C3OBf;^y$Y(uuGQ`sL7gE1-dSNWY^gm1)5 zX_M;12wQwqm@7S=tLLUk-#;;>N78p`6IMHHpTEUb3(s72D&bv3+)WqU&?LIuG{l)u0XGHrNc>YjX11)1+d>(P*fAL&mnvj1=XN2<3 zfy&_Xg1y6`_MQy2^E#-V561Avp!U83_3wvJX@7q3^NujB$B_2PkP-d4rrz>*%xYs@ z%5DmEnGk7SrkB=j65*CV1zK)(q`p_5*-W2>?mROOy6>um&NKH$n$B=(yeuDSInr{a zBDE*e(?I^I{&}e9Q&4#pn(oAVgTKB9weKRRpRR%S!+T=*Bd`Gd570UO-5CB)s9hi4 z7vF0Qwf~I!!#sIDbbh=RIzQeAogbftUe9TS&X1o#=f_?Tg!ypoNR2X!~um zIJDpP(D;L(_33hVXuk`f?KdA9{s7eehoSX(99qw#?+NWV1=@}mLfi3rXgfX#UFUue zZO6YtpEJp$-?^{v3%yP^3c8;^9NJFVd|yqw|A@b;DNlVd->W~%--5|uzHhF7ISu=1 z)`WNYD_OKMy%w6Qr`H_fxn~poM=6{i?AQw`6;Ur5=x=6wH#jISy+_j}O!Y6G+%wOtg#-@YUC zqjvOL$N%8ikB@@(pK7Sx>F*~dcHi&DYn;qJNX?L%lmd`+sp{R^N;RW4x{T zqbbh&dtDIxaR4;GBcS!T1nQTYp?+Bgm1m%S`NquPmm{HmITLDsc>a1Y&tJFv`}L{R z<89&_x1PB|c@A3k>PT%?UyE+pO_7GHe}-RbI_@XHKn+^eAey8-IIr7`?TsO{^a{`=;V;J+!*@cB^N zZid$3erW%C3OWz{DTcoVt=okUh5mIFbbh)WIzKIg&QC8x``LTY{5L`C*mY@`r^Z0% zsbiqwCqd_{A42D=o1yd7!_fKaC1~A?y8C{a_DR9v;pt-cVRK^NY+Ml9^D|iT(-8k? zs7!%u|9|%TcTGe^X-YCu85KfS2>l!*A%sC_ zZ82zVcEccqFzd$(A-}V-W@*WfW!S9NW(`71)*ys1OK5HQJRa9Mr=E>zcVD;n_mA(n z-MDwob*^)r>-@T|=k_mkqhq5A zU3>n7DHNB7dYz4i`DlMsVb+f5F<(cIxf(rItJA}IwL`~aXY^Q?pvQV0J=O|z95y~9 z#M`0m(6uYy-|aJ-!7bOn_tWy7dw8G`wqJ>cXJY)t82@*Scg(&&sdKK7*Dc+AKJoH~ z=M#>-V#@M36>(h5j?RhRiH4dB;_)sF$6Ji7f)bCcbevhG{ z{kdVhY=zE;UC=NBZMX4g{ZEVOkD=pgDYnFqV|x9+f0`f9r83s(;k>%BTdv@|(0)6k zVLaM?6*1niZ<}1-N!@dOxM$glzk6EWQt^JJCYIkej*lF=|1RkH?Gv@HjE^Pmyf^|q z&l96=H$CN3%TYtJpd!?FKQtVM=9_|9f1~Yn^!ah!LDMfs%fALa?oDX>?ag?${U)IE z@^o}wUWU%cJJ3-7`<>Tv-iFH9e!q|H)u?sTTx&k-!Fz1+xoRsu`!^ytmH!G(4)>e+ zalc=@Gwqu9m&yD!et2G7`0hQq8##var-Ey$;qGW^j|Yi+zE4I|db0Ad&|ZH=!}P~P zdp(7=%Q7^4ik5TO6QSK+LEGz7w7pvVF}6cdTb^@w-lzlXKA)HAzbe+L?# zit*52?Q(qnJ9{>>{QZ!>c+tqLepjR8=C^1&EJZ`ltp8f({H>JQ2S?_<;=eBU|0TQU z&yRQP-kfL8t$CKxD(h>{J@-L4_qzK-U#-KsOT+QHUKYy#6?)u1pzW01=S|v;*95yV z4hC!(2XPD(QReaNVBV@%Lb?Ay<8^4=*Tr<}U;F9kY+J==qmAZnL67$$ns?ymqqBY< zg~s=+3;7R0=ijTX9QlXEfX!j;dr&rh2s@03CA0Z_Kn*OS780)S$_C?-VN9CE+2;WE&F}g z|2#C@6XQM4Y@R!F8o#N{Z-F#p%$0pUD))2#>oP5@Df#h^-J9}Tbj+P`ZL+aHjIzr= z8zcMm6=BlOHxX+L0x6@?Gt-3MP_Zc+2 z9pm}^R~gUE?WzBUPT9Ess$>7ni~aRN?7vkp?smfq4fLPo=htgd1IJrX?|AcK{|$@% zRUZ5A+8B4c;r<5t&+_Z{Uu`^QZS1cfV*hQ=`r&w}-+!fRM&(ZAztn&E@%sJOauuI< z_%ifgB^v$^W&&jmq(j|r-m@E?R~YyDqYFs)y0R#mu1i@Z z_+QOE;k>S%AI@vwy`!>qXf(QiDH=|U@k{R;m6dlLdOy^8!KmyyH4t6DMxy(L`?~_} z?>hYG_YNwkw|T1KI$e#GmxS|Qg@)#{!aCgpv+}a_KK>35*LK&9`LUcD_8%7WU4n+& z(|+0K$G74023t1x`SF@qM(J~5ycPdF)cBF}b$kM^&*ION+q_TSHAf99`4){a~e3_;L|rgUhTu-I+FWyI9@Rt#>cqZ4WFX*&A)D0enYPdt4S}I9mY-m`LAlA zK8x$sCl~8e_NRFMXqX@4Za1`RpgxwLfBpp@hdwobYVW~k)I0x0@%)#@^GCz@7_Vi! z;Zv-C{+8d+`41tz;L3RZ4ZLnHV|!s7R|lYBRvKpw+}F(_zvHZyaaJAY^`6|<8OqcB z-8SKKXMWD3iu_^r@?7Ata9(etVO@;p_seqfr;yrd;+Y$_Q^g#P4a;KO?S`oh^o!*;YS$#!ZeKr7!98`o zdzXsVqjT5sU%K|?$LnAFiegH!#I8k4J**GQWw*+zbohWCA*Ao!yIazYk5ZaTalW$ z|F9F{_{@9#xi)UIyfp6CP2YIjRm5>u8^>8YUbh&E(DQb?;fe;vo#p4ZU*Tsz9_Lfe z-uQTBaoknJaaM(fWijq{!_)@Go#oem{W2mRvo^l|{vo~|-=5bo)_+suv^?%t@o^Y; zh4J;}p!oW-{(3$q=CAxH~wRpc+{wX5}g01eN? zcz*j9d``YN9xsUF^VS&8&o_j86}N}-u0g{?G5+7y_cHc1RBjR0?><|G_52`o3>_ci zSE2QNEXLnP@4LT<@gAN3`}#jC9xFTE=rI0w9TUd?Ftq%i#`v`{zAnalj1BW+AR3NE z^WPcce?sf?T8uX-3EQ)Eg4b5OR`i>&vhUFHT2vM5QgL2rw`b9?D#pXO+wi?~%gOKY z=5YIJg$iI_^vdMv(J-nC?{7J+Ph#%n7>D&;g>O<->*gF9Tu-+bdOm`Nzr=X{b#gj+i+TNGzP->;8squ-=8>=9mXNPI8n%t`{OjJ5 zcx<<)^=HO88?Oh|@&0gLydQi44Xa|@?S>Z`xIeV~{PwA9;CQR+9dBN|KOFYgQ2%l? zTpQzVH{9RA{h{TD^~8IlHtF6dyUuj^XXwY$PN5&`I>-BlE+JljJsB4Bmu()lSEAt$ zF&>@+Z+J#KIp(jZ3H81S4Zn-=(EsW0tTsHKtBm{QUJLu}jfQbCzNz`JDDGES5%xO~ z4YOjr{(Pv7`77hNeIt(JZyOlLEx%wLi{ti!IF7H6@o*m-o@1AB-+B)JrRUiB@%(XC zOnE7!aklcjjmKG8e0^B4IGoS@Xjl^CZZ}MA;Ps*9=Z~`q4IFQL#m2`Q_GozBQyA}8 zO5^>?v>120VJuqb{MW~p-_YyB3eqdD3iJ5Ct>g1!9n0f7+_+0v$4k)peO8Pwjq(3< zpI$>*bq9s@bI!qGy ze|*eo;CR#O9j_v;L$&dBX+d0v2FG>C?S?BFScfcsQ};F1@z~`Z!n#rr*Oj8QuGG8# zUKR6Kv=8~K(C})E=ik>9tl|0-*PC&1{W&GAKMma13?Y97uWjw`r_k_vjOVvk8Tl&X z>)6}l>)NMcJii}jkuQbRk4rDyxF0LxJg<%Oy4|yJ+@bYwyWxrk=DFqP*Q=_5;|-m; z@$t&yJg1|Wijq{!_)@mx#ictpIsi0Sr(tapNEEfVtiBmp8G1a&9GjfA8WS@ z{kRrA@A}uDqL{z5XV_kWhPz_Cp}!+4WuNNTLp%O}hR(}FJipzhldpJQNZ%I?$HsVm zzIo)UyFKJ<67M&*jrSY>ZGBr3>z@_Q{|dW?b?s3!yp4{LZ(_XnR$==XG@ORsA6^pU z3*+|xv<}wg9kX~`Sf5@)Lv4(=IwZsgqwRi0j4z7u?_#_M&poW)ZfKYkpMz{_J?-*! z=-;xqe%=+=(#;?AZc_icJ~)L^6I3mWw-=}rwefw^_Z@)F4Kh6IR z+wggVTFSVZeLT-<-jC3w@qLN%Jwv?@9va?HJ{sNrdo+9<}tAnKad zhUZ-^zlm$k{h@wmqv5g`uYaFbOn%ERT@&X0uouI)n}vpJVm$vkHi3QS#rbi6oG(wM z`I7hdBo*WK{(rCddSJiwdZ6Cl&#on}q2>=^-nV-=t|Mr> zZ5`v=#d!Vam4$1={#9}Nr!oIGG5+ruZ}vziuVeN-CYx{cc@MugIeQ<5vgUOU{d4X% zp?~g1&-2R|->pa3egqmO#d!8PFrLSB=Xp#Q+B|>ElvD1oBg6b}dQ_O-?a}kwEXKRV z_%ShlQH(zr8!}`S-7upI@(44IFP~z2jBK>-M~Oovw-3?KLs( zcEbw|T(>R1q5I{6e{o-Nd6>67H*cQXd|K;V`|+)^XLp4i$L5aYzp6=#v-y!9&#(Is z$}rT#`;m9!{mD1!{v>aHmXWtCK0lm_hD&06Q|sTXSbpiNp`Mj!xF^Q5&-F|Tb*|WK zZ0`5`S6=c+R_Bf5K6`A%A7Hf1<)?S;-6YqFHM24Ag=g>aa6H$_%2UHS_zW6eM*DGf zOwXU+%dKNv$J?P{^BAxH_i?#z`kURR;#bq9K0e?rge zJ@mYqv>KJ2*S6?+?T4OEL+i&d&Zjz#hZS*r92@Uf8~PmGWb&6^7~1D)G<=TMvpel< zJx8O*%bs&g3-8y}GS|Q3zl!U^wR)p?mzKQW*p%<#;=MSoHO;uzly5#ZcNhQ7xFD=u z8^!%SfHkZE2l9D_QDfHs{#|~&q0gpQQg=h$xuJf$#OI#}#^;~;^L7z=3*-FnAJ>CH zG2XFHOWr^1!25^o!~2Ir5K+ZI2H}bl&(u-KIen`Y1^pf z8Bd`uu4g^p4fWp*t^Yx2T@H`wb7Fc`OkawQ!*^r)w=uo(dm()cTFxZ2oV6>%=V*RF z>(u@I@Hv^155{Ec!I9X8^q-@3eF@uPE&BH;YtZsKei++zP^;W_gLlbwYSb_Mokw~2 z8#1p=6}0WR*tWH_g<&q8HuS5RAt3$cN(Q?P5<#g@a zGPgBt-pNI0g4r`a&Y1)3d9VhLZ+kWsq{0++<8@`t(t_cO--;;ZW%35A^EbpIa z{hP#VT}O2McSpzl4l%Cj8sxfVNTzh%g?z5>`(Rrf8{_KwZX4~8T5W&1=?S0 z(c@&#+Xi>Zb^Idxd|7$3vZmQHnOX6?bMJ+9pI!drdAB8>^)gs5Lo%gn7xGy@gY`2c zQ@Zw!`D_RGOYKp=eQKTzpC;WHO-Yx z^}WZbB%fp2;FvZfQ@YM2pM5<)YI~cmma~v_|Hj(j-&h-xDP60{=l9+&jk>?_<;1ta zmFRc3)5Lfu`yY{?2NX_jcETojP}pp(D}Uz zJ(qu>=eGOfVSN7z9p4MkzbpS+O#cS``|{172>bU(_umbz<23Z#9!9^X_5E&d*hdo zeHw!WcoMokU4U8pWcTlVnRkUhns?qC7sd9;y%FYITXep6LDvC;*F!@xrE72UxegSg zQ@ReN9P2*sD1?0aK+q2B|!FIwNZ=)AcPoi~3$=gWuad}(}Am@nONLqGSTpSv{J&!w@S z%ian7JOw?k>6rR6^=~qzCv8tdGNtQG%5j_;9H)k4N>4gY4atuI#V-b9aE z^t;es1JV8(i}u%K{9pQGdhCw^)_OxXv|dG++BNkW1|1h{qa!jkAo<-051+?B19uEC6{E^TfGtvI2MEm2nXn#D5_Q%_3 zfAr%z==|9g?T>@e{+JT4kKy}l_F#S#|7d>rnrd;=y-1WW_TT2fSyM;O!xa~JSS7S7Lm{T z4#qT|({&`7(sda5ye=5LP8gCYUB{5m@ihS*Uz5=BRgR9Y8R+<$g^sUl(eX78U7r`A z>+>RXeO`=(XrCL`bT4Oq6N zP7m{T2zp+Jq33x4dfp4rc6bhLmk-c(YH~)n?j3-(QT20LIM;``(FcpMht4BP>)$G-R=?uaj7KU{_VvH7$yxdGT4cf!5Vb{&s9<1si8 zXW$^b9tY!txC_>x;UBmwevh_ycy2J5^(gQAZ1d((U7SZXj3dJebY8DQ`)>`}AGsC5 z{C+i`ac#?X*PJfsyzd=#d;PV@{D$-zD4Ei=nEjnUL(%)35mC!CJsmeWp6&Lx!TvTR zQ@WOs&;Fi*&XehAf6v51tc-EBzvrU;Js<7wg}5CW>~BLdrE4|$>~HI*OY`DxH{J5o z{#K8p9#`wnW9x6a?UP(ixw{cJ3<<0^rRz%a4aGX#3)kUKu;p7f=k~@x^NOU zC4L4r!%B2r_$|7QFGlzK936MPribg$RP;J@HoA^ok8Sby=z9KFbiZk5hx_a6(Q#Lc z-j}RK?+;r3GORPburu+Wp!=PT_Ro&L3hT+?X#Y({$Jc3Ci07mI`zG4og)_oB(ia^U zW#@$T;cRr=JdUmt&!OwYJLo#`Z*<(8a&A~B&PLaXYteP$0ra?!qU*&g=z8%Px?Z$8 zFRT;Wq4hro?WfHv#$^4rFWQfXpyOg9I!;c-eefl;-#0&hOg0X7MaRc4aeurL55W0& zATGuc_%4pb?=c&H7mUfCi}%9Oqz^?$z~ML+&%_e^H6DZyV79LPm-~Y*x%pYXVYN52 z7uQ|%JSU*z$;BkzG~2MwE|twR-xCiHRyHB;C0N9OzD}tzA0pz^H19n?}c5^@z*=X)$v!1 zu4hAWdmIsUf78``sXX;Kn(iwcpT@1Prgh8nF<$@v!uB!U_EOtVZBMm*)%I4~U+qs# z>kQE>p1-b`W+=NUjGNcyI=X24o5Q%@1}(4Otzli*13lh}=<(;H^?3`eU$1%L`Nzp< ze|5SotOuu{=XW1^zIEvN?|OTL$=m!bC)ccJS;HSUOSqUF4g{qP6uk6Ygr){9}d6Y+!4`-)R=XS@hqFYZ9si9e$2 z#By|<_!_;R=yZ2j9|qzO;$v}loQ!+mCAcTvh4#mv(e>k1be?~St{)xl$)CSNxxXLy zqt{73FB%r-Z|U1%{!T>udotQz)6n@_fnE=0V>6tCUJvfXG;h5Q7?LSntH@`6KY{kQ z!TvTRQ@So8Uz)dG9}LNquFJ^hc&J6k!|E7U=gC@hJT#5-S-TT=JZk}Q*Y9pvh(%Gi zo1XG%ns*-8xb;-eOFd7uUDR=-wwKy|YI~~ft7(1_&EomiT@&Wh z&(ZxKL(7|bZMa_Fj2`cgXg&Ul*6ZEt!hGxfn=s$5LC<5CIq~|6wqGfFo~NMg_B?uh zeIISFuh4ec`GzpB_Q9USkHTI!4V_ zb|O08rlIrfYV40yH~{~K&a;ovdDfD3$9dKV2jcL!4u#)O?%3dOV^5A_zlyatwYfe) z+_qhUw(YWLexI4ImUP>8H9F?kqW9!YdA6eFH(k@%sEp5(9(*A5=aXpvzk!yyO;zaE zn}9(0;uS?bqkf{oY6S+vWG6pGzMM_hYx9b$AO~<45Sa-sGV$4!Wb`cTcpO z!_jiW@02(EyC9XZy~^Ickv+J#NB5l`^*jw~Sy~p?p_%i;`PQKOe2KR459oPzy*Hfa zAoM)PqGg2NR~pCq#rG%rm%%m7tMflcwum|nq#*N_a?fm-h#q5d)OvUfO>@wE`So=F zY2;7+r4{w!<~Myd>9*Y*bnUt`>h`oIa(0kk^=soT-^cr1@&W+XR99)ZD z)0+MxtYHP{T(tbO2D#n1b5q?J zfX>B9=v*vE=i-d0<+@$XuW1dmJmZ$H9#8Y@F^h7BkbW(C&6|gN-~#lTw+Pcch;jEf zpSoZD@)nbSU(#!EKU{&saTV^5Yw!Tfag8_-+D0wM^kf&(N5{DK&WopfmTP{GqaIiD z&###M#*;oYn!laoEYw^O#{FL}4D;n3bSw{<8Rp9v87$Nr1x{o0%8{pA|; zeyz|KkF#f9kDd;uM+@1tY4`K)jqDniHjuIQL=due!%v^_c(2BFuZ zQRo~v4ZSX%i-mYS_Qc;|FZ>H`i|=A@{2sT%EiVh#qXB3=PejM&Iaq{GqGR`UbS!^@ zj_o#=hwIW#=v>$foeQ(j>(aI8b?N@NeGz(nT83Vq>TnRYm>uo|3(@<)J<6i{=VuCY)t%5F}?Alp`P6^s}G<1=skEh-k=5Oh5p zkFJN)(Dm?Iv@YTOmO~o6pYiqB1lrGhW&aHQIR&lXbhLgm(fU=QZ8jGjNAuBjejz%Z zs?qVZ6s`YqwEip6`q!cLUx%*eEg3h~zY|*jLbU$<(E1O-&CuXFZb+u|r0cjLnbLJQ z<+y&A#`4s4+&IZnU0-Syj$OzBD2Z9_7p zCtbG<$&{XSy*4CMdUCI@IeQ)NKT~>gpSV4l(vz;AhGa_DX`H9)v%&S*kWA@XK|W{1 z?3iC&kL?$?tL3Tfm-##b0^oXeA%DCf99e3I`>bNxSIMr5B$FXt8wK~q# zaj(t;{lBgS?3OFOHLPnFqTyL|zO6*(TjP0SvvPZ)$JrY_?%`-XPDAT;30luv(R!~z z&ts3<#%A+vDtex?(eu6!ZHHITc4>3_*sQ%eqwUxeZP(x3F*choub}ripP}=l^POX} ze)#oWW3ztQ`rffwKkf6|u~|Q!hzFCe0`14n_l?c2r#qw9)3NAv^k?XG^kVcndOO;G zi*W)jNBi&JcqF!7FgAA-7U4uZ0FTB=cnn^E$KpIJ!zb}LT!F{qw|D|}xqobK67Gs8 z;&?m>e~u^PwKy3c#Gm2|cnW@khHvm^*ztFv|2pp6F1Pcv_Zsz|^lqaa2EWs2t441$ zTK{^H25@byh-+)zcQdT%`RwaLbPV@H`+7)> zt9?B@YWc=XiQCr`qbXg}9I$-jX^dO1$>i5**p=-S=smLe{*$xG=iHrxg?MMw{nDH^ zJwI-FRrSh$f_Pd}cVN3AnbLI$`TC>f=`!LwVQpTz`SR;MC@;R6d}&Sfp4gB~>AIGD zd!XfL(;qg(-JW0m-g)r?^0}sV!+o(RYJTH`iSLhw0|M(!={k&jqtN|y4Dm5IA*O3d z-u9GlQruo1P3bf0#b*)sIH_Lh+*IqYsozt*OgETr&}%8jxoLi#S1)e5c!1xyQuA?wp-f2 zzEjx$YPL_uYhu29XOjLK(kr9x@AkRGZ@~F@BQC_7uo~y0`E)69@5EDF&6mnikFTEJ za&q4pc!oEQ|;rr*0RwpoD1tJ{s9Z|VeE&G;1FDd!|_ox zJQi4QN>4r+w11Px2xOpzcj}qa_1c&(?WZ1B zt;amJYl<%*{t59#xEdEn-EMlym#ks?KS^JKmZM+R%jbEUKegL8G48l9-EpER)Q$g+v3gWHGAa2;q~32 z=>6?!X!;`Th&PQZ$?n@8z|Dz2i=A*8THZUj1?CPZ$)0-^qV@O{cE-!l`aF$Yh#xRM z#D9)mi8ntqKla31u{S=8+uBr+_FrNz z;`4A@{4=_}`w=DC`!zFgd*YX)>Ca;k?s8N~_S|bcdX2vqy~clp#rR!}x0zUyy?*M8 z14$o_gK!cK#$TZ2UXHuq_eYmx&$YTAQ<7cN55l3OABDbN`Z@jtuR^cs_u(*n5-sN? zv|avzw(s|7do?*WZ0~|zBm1D&`gyn?*5GjbJf?q#UQ=HxE6JW?)!``OqmL`euJIS( zLBwxEN7nu5{q}QczP87gWcT5PXnYoq!|U-7d?=P&2GxNlf>>l8EcpUMk@pybargu6i z@PLy`vitL^aSHK8XnOO>CAq0M4o}7DX!?Sm zmSpz=U*Z|Wr<_ufUF$DH<2S|lb9ff<2|p|0ddc%fbo+H^daEfVxnJN;X!>kC8-KuG z;s;YpvTOfyr}&cw@zUyPUI+?f7%G~Wk!1vWpkBzGnD!K?59v>#4F z`{8G3{>IZvvTOKAyoUG__#15f^OD^4corJJ5Zyi}rayplh`$=sdz@90-BZlL8%eMD zMM-wA@bL7KoUfW*MeivZon4Z<6$|ke+zIF5NW2YCK=&`l8}J;w9q&Moe=pvFFQWBd z`OA{*o}>M*N^*A-?}_)|Zg?k7L-U=Fj>g-w`jz z2k_#U{v4Wb75*Muo?DW85R3339FDg0B(&TE&MV2THDl3h&p3P-KgCC|xS}MxCpj7) zCI003CD}c}C-@xk{VpiU?is$qrNpz+hvDDxQmn}&Y?$jdJlfQo~Xw)y4|9(z5Eam$z=wVsu+ypjDw zJ<5>XbH7CE*RD7mw<~&%Bhh*ti{_h#=4;fF@7dtH@|*DPOZJ-^liKFWP9K$9cgCpP zs@MGuGLBp?t!w}0ye8N$m;aklYpH)@vRY>4>*2Y`T=ZD;(fV6&H;ZvyN8EeCmdnHY|DAA4;)PN7+al&S zpKiaO{PpxGheMy1(g@iTA;2QPYj*Yq=F{-;wm$ z*e`B3ZoYzE;r*@BZNvM`r=e}W5bgJ6=y+U>meslU7-GDCjmDow+x#8054vm@KDROm z-ES z2cC)^{~YxA-=cljwtslvdMMg=mt$|d0k^}4;`aB^K5H@{yl>qRi-`9_(+|KM@VFSC zjQ0JR=yA?PkAFRS{6;&4_qW@jeSJC(z)R75_n`U0_b~0odQ!a6dQ#YU{`$YWs$9JB z=c?uscWlg$I({r`A#uyDj;8db#9NZSJety15>KJxm*IQDHviSAENKsPu8%{@{v18# zpc&zN$PPF+d=FU}n(tIJU)%G-_mY*OzH# zG+(<5LcX`raeCc_A^i??|L}Jr+wpfITm9($Q=d_fp#98O^ZbT$v|K|n#KQkqkk7VT zh1PowI*)RH{qdUS_O_&}ZK+-A#d{NX{uE%C7Jowe)HXuJLb&G!)6p3kE5{Qa0d=Cy?L4?w zZaeyKtGX_=Th?@{-mJW1SwU%dkD)yFU+GsH#y-2}CK7iXPDZbb)6n&?B5J#(_D$C! z+r#vv`x&>K)Xr)-v-8UNPxqKV5TD|0Oq74!f-ng>QuSUk*pZLbQHcycym% z>x$Oza?Hl*Tj71Pf`5ef&9*_$uRl7UMxySpK^ZXv|->p{idqKD>x_xi7eU3rPIsX0de%+Ip z%?ETmeTt5+f1~57*$1H>MQA;CM)$uNy-qAZuM>}<*N4BL^LjO!{|hv<`Y@J*rgzN7 zT_48XHVuxuIdR-o(ZA+Tvb4fuM^Sn za6UR7ZjRgUM$hBVXgT+M7W(mFv>z9v{rEoGk89BW*!=U*?pvW@XEePurgt6EI@hhy zZ9n>4arPZl^u-sPl>IQ|rLc|{qWky5G=GiTeg@rCy7>%x9Q%9TQ!&3k&L-}8UxcoM z52NR|B&NTHp5MDsk7xeR;`S8(mbml6;Jh#-Q@Z<^KmYj6Uk;z+*bKeD*$=(HIW(r9 zfIW$yhP}|RZD74A-F%kc9e)+~uYbHtNZ*m|*P!<))z}}GqW3GyaVK=Y;^@xxbh{zB zONg$2k8#%+cl*k`^7bHZxqH^re06#GjISd;3|sP>+WTN9+!qURKkSFYaY)p1O-~Mw z`HZ`tj*42I@nKPqXIx9!FF&5rlM~r~2>B*QO*cM`_+eOqhvV$1+l|l3i<>X)m&(;+ zV!Hic+&)ZPd44e( zu0*$2q3g+0==J8kxcw9Kc>hA{(X=MqXADBe`3iJC{R=zbUN43Fh(pl%bQ@-`#n9`_ zx9EPqd^y}t%tEgxH=*e((RsA^mC@Py|1O%|a@pwY@5(x(?Xw*^{%51}>0Wd`eTs$H zK`O-lIPZ4u@Z#eS38FT)!_`pTqGWoP^x+<<5)gGh_NacrfYD z#PsK4djHzd*>nF9XgPh}8J*3y{c$|;!goh!&;55o=ix=@{Q5OI?_S3Vc*J|7v*-P1 zpy?HOB>oML!VhD5^Od8s&*$_+=i_~NEIx*1_zE6}U*hrD{{1i>c0}jpMK}qsMd#&L zcoH`KV08BRoI`Ok@iP1=&O}4k?fqTv?KgTxvx@6sFD9AS!|KOw&hjmdx*nLWhUKJl z>CEQ4t|XrBi&MJ!QvN!&J8##aDM9cdQ4c$Kr-_Lh4wk2MH zp2x%Jx=<6h_x?P5Pv5oJf%H4ja(;`3-^X}(ec5x9-y2lWB)q;X=2?_sD0;pl(DNOS zO|T3-pDE~iIvqWqnbFk#)m_5#fXc0$H9VI^%Xx(wX!s@C9^w0@2lIW?12%dtF@*CzK90d* zABJ-ugVuFIG@Vl#D_YSk+y|b~+|_{bfbR1&T90LDz1E=hY~Lc>XAVH?)2Ku9T!%?5 za~=5o-wp%YlxN>BK0f?TXyTNh{mYW|uN8@g{9Ji}M-Jas6 zm9n~;_CmJGGT+gCYSA*@M~^wEaqM?=9IQac#rNoV*|JH z;wLfwi_OFHsT2y%BQgF2y3V{7;|Fvam9_6NX#1Xp*0Jk=R=LiN`sM#U#rp5Y zuF7lEirAL38)#FHKj*)+&7E;OS=WcuMy{__Y}eG*>of6>{CrRRkNHwLYRK;c>zkjR zWr+W)Z5P_*C=yQjw%nceEA)Ej(I~GaWt74D|WKwK4s7F+KbpF5fLazJT95X`gF* zb<4Wuwc)p=b4};x3bzRRSE1o~^n6yw^p1U7b6x11+p?}x?PfIv)$PmMm9;HylYN(O z5&L`Ws;5IgK7sDL1ntLVXq(ldZMHgU`KkN+P;&}{;NRuTZ7hd%Q2xpc0>DZ zKeXSDMf>e+wBN2n`|AO;e_llA;pb?bdwN};);8CAQuytUssl#l-r>L8{*ULf_cQs; zapU7gjLOYlCX#jB@&BkAyF% zpX*ote(qn&ab342VmCB&53Dz(Cws>2$&{{>V>uqja`TTDcgxz-f2aEEH1_L<71-a6 z1Ya*3k|{mu>t#bSrR!|U*%jwRt%vFAaq8F0xb3Hgs-wbq>^?Efm;2FreuIwtrbmbQ zawyu~bI^XPJT_cU9z@e0L(?}a3-jYA*pB#7Xn&uK&WoAoyto^k7faB7?sHtY9_@nO zAB;rnaWHnqGtqv11HCSNgkF!nL-P$hK3tcsMEmF8xE;1WVN~`$<_@?$@x8GKk3;wS zDej1u$M{`nyS<0DW9g((S^HjvyAi($hu|XI9bZJB=Y4?g_Yv-itxg=3J+IgS_aeRz z+V0_gd`Irb3md#2pUzzTmi*=|jB~MHoQp%yJ{gYAl~T0rC!%d{NOLfm($ieg$>ewK zGT1kUWJ=G^KaKqMQAIqS+DDF|l+XGYte?TQHP~nQ!Sga+f3BO~@_bg6#-^G-#oe!9 zY-q<*&~Pfc?~UlOm!V~ESrW$O1hftAJt&OJzo2#QQX1CpDF=sfI2%nLa7Y-BN2BlG zoQ0n21?Y3Q8_;}rq2ug1bRAiR)_v&sQQ330(O5|Q80?9sqvsO(e+T-1n+E%T9{v9= z`ORBNJ1fyF%q8wQ&PUI2AzGJeO#PhtJ(<#zuEmCAO4p^7;~ZTc%Twp5?eBK=c$)g# zHZr7s53x{x|DB)T{hYIEel@7)namR7|K`PZ>u_l3@1LUkPDSf59X-Ypw2pTj9@d9v z(exM4^am$|_2(^gEPsujTjL|by3-Zy=iSl$Mxu4S4PDLdt-I9qoHzm$p0=Hwm%@0I|HrP``i^K8*KXwVHC+*UjT{^`zv;v%JI&TpV?uwb`vAN?wN-~1_>{%^DmjvErj z$?52ROVM$?$L`_2dmP$!PoU%auV}tk(Q&r(9^trWq2uc+wC!F%$JyV}*SBAy^SZ;H zA%7=y+zmv>-8eLyj*M&XM?R%r^ z!%=8>8g1jwKMB``K4{yA@ww^O&BGX<>2-4{{b-noj)%!;+fPH+j0&_*>`$Fd+%}&R zP3dZWP2KTbgF za8gWv2kqx?(K>ClZx}a6pyT62^mW;V=(xHW9Vd^Xx zSD~Rf>xbuXI66*Fit9?(z5QP6^I12}YH;0{OuyVtW7!V5r$WE9jpnzH+q;nNx%5WQ ztr+c>q3Ah{h`OKYYCd&8P5otgK^m7(W21)T%a(Q}&_b-%RMr~Y%yn{K?4e6AaF z(Xl=s9qS9D<}+Q*m-f?ipJqAL-e#J4M~!bTyy4pXQfWNdCd3_rqOq2=0o*(R=#RsQa0&=2P$GQ+y)%_98wR ze}dDZZZ|#U(|z;e733REd^YZnbE4)mJ%7KEF>ZZLA018SQ@&+bH;(EY#_z@GxPAd0 z_aCBp8+8f!26YYdXuwusUhRdBv2)R}SG9GRPfwxq=^tqN8f=a2yM=kx4_&uMq2(_? zuk(+iWAa6`PhUsJ#DU$zyeruz%(qj}d3GK;&u)q752EYwE9lrfxJOt&%g}N@LC0QA z&#)f9gO1T%dxiCQIC^a>L)YW;ushz0?so?|R=3?YtiJ=%a`(eREZQ#IpYM*nh>yZ; z@u%1uFTz5+6dk+m`h?e$-OzH5MaS^3(ASlhq3v@w?tp(l+h@S`qjHYT$I-F+JZ59M zD7?<>x5KFH_5Yr@6WfnO$NE$(##y*C-i-rsF?yW0aS(on9;aE~QQ25;hmPTy=$PJp z$ME{~P#i-16xkwS$NXD36j!6=oY^nDjy-C?sBG*{!M#a82Z!NY+y@t- zbKwbe4(zqlsOK9r4T1a<&{e zDw`X-;27e=(e^0Av3MHV9vydVmD~2+9(CPox31}0-MM_rvMowG(V*UwSF(nir}Ehi zpLugGIq#fHT6|Y1=a*>M{+=+;4n~i6R*c_`?z<4P;|^$^>(gkTTz16bPT6zQMe%qA zynkk%ZqcIX;OMaEnCOJ)BrN`C`25O+U$`=Ge~p&a^~>-%ls(Y+UFbO+|5b>8hSvAh zuS0z5+VFXoTmBv5H?IqydpYO35U>0`e6DrD4M!){XrQ#Im04n&#R~ zYnf}t@9q_EKQ=d$|0cJp&aMOb@s5LA^Y_3PaXJIZk5ACbJqV4;B zO#d8h_f{{3e7mFVd@y?MGtgt)f!^P}iC&Msz}DFM<&fS7+Yldy=HDMJ=V-K?<74_g zG5x8SzBr~YN6)p%E8*`x_D8Q$150_PBisdVQ%y@8P~hUw>@&YAB~KT952^ zXZdVEv+?|{b#uOBkpCvvJ(|tG{CIdiu{F<~Hv7^2tZQL0*a`LEG(zeD@KZS(kddD(scIo$W3@uPO~ zdBFtQ=>irK+p2PHXsfwsS@Y2`z7Sn&s?l>dSXV_>Vb@gdQap2|rMXZv>K zE5$xI5x2+5QS+Iu=1cpj?WpNGpwrlIC#*p4jSSu!8ImbI={cTZ<*w^xF;J z2V{E6r?!jcw^srA4<)@@wEp%Y(vM*K;As8r!$?1x?PH?#w@)DbIJQrU=5Kdi7&oZ% zCdEyw+A_?$qRyTfV*=gh_%7jlH|C*Z;4yS;e$h3|-)38dd3zZ;)@#u9dIh>(e~mte zDcCyX+ZA1}_eIz1iP#lq;8r*XE&uQ682y3Mb@44uPrtgdUUiJb zI2`Xm$Mk#XnEeJF%l)@4$?n^Kh2FPcha>U#XucM`!}m}OLGM_{;TW8PmbVlg!(F!v z-+wU<4kJ>6|nqQ@T#4oL)FHYCTL>kMn=2-~UqoN{-{0o*VtYl<)b^ zXTKr1F#3PpzncAqvHwzZPA|uOaV74Db?97P7qxuT)qLuHIxK3vj5kKZruxrv&G)~S zXSpr84>=4wp>wnloumEm2podW&EZkYH(kxA?x&Wc|7(3M*Zlu$d6rvBJ*MEqDF4ik zr<-b@scf4}e)V|nZ?HVW|21wo(N~ zXx`0R#PtVOOCDM zqu0N;(Cgn?^t#unLpa{H==FIoJP;?M*XQZz_4!&Hg%6WCALNLXiN}q;lOpk^BR2GJ0=34ZS{BMBU$XHJ`!#3?4r}q;kzaoBemkIp|!!Gio`e*Du$2 zetnInkjmZE@vTP{XV_G^ z=5M+#T%QZ@DB|6smgAaGzg*+_^);SCYKKi7-+B~LzH7>0bWItCr{EZLO__kM36sz{ zU5=;XjHt&m-C#b0`xz|9V7d7r)yr~b{U6FnW#sRFZQlNtH;?!QxFBl%Okb3j@4wZz zq2nz6f84)@{ja0o6;bPDd{tiDdan6@JWh`9&9FKWN2{i61Z8Z^H>+p_;}N$-O9 zVQ*Xz^BFh4+tqf|O_lF)irIf54#hv<2z(gF<0DuWwH(vc^!)fD;#0`?N1TpN;!J!B zE3q2qM%~YJHJ`elT8`E)-+Ikw|G(fud>*Uuuedboex@gv$9yTiGB0j9rdzJs4r)-_ zJH<__-8o$M#tbYmnp=flqdE)<_jASQwd`2*e(qHCe(oY{j&rdE{sCL!3ux#xI6SZ2 zAKMWB7q&Bfm+;*7SZq)HRP2BkVFAuXuVvq&_k*o=4don*UVBbOuQ9*Ju2_d&vkG<# z&u_Y+&v^!6cN~S=;AHH97h@sbiLLQo+!mih?<3zw?<1QG3EQ_o*SHhVwfZU?i8tXW zd=N+DU(kFXqibH%-NSv}aCB`hNAL4yp!a##p!a#dMc3X}&^2}~y7q3pN4Ssbi$@dR z7mvXs@K`LzGQ1Lx!v%OeK98Q)N9Z+bmp#LM@S#{l{5aeJr(<8d3e8uA1Mqp=30n^h z_se~8XX3l!KpczSFHb`AU4gsfgXp#MRrEf2B@V@PxEF4|SNML`zPLB>5jYG_!hLWi zTJLAkYeFsl6ubT;+-D9%=W_qO!}l#tMCa^T=$yJ5onwpeQG5*_!!_t!Xgn-zFT%%( zAAnEbBy{^3ar=$voc$v@hd)K7&Z{^9#pcfqqs zAA{!q6;|Nocs|}6(;r8#jcf5jYZ>hWq)W@k-LC zq4_Vz>+lcw8+;b8$M<4-;fU~krp0&z=_P3X8_@l~!yB>f$nd?U+hSHO-cI_BcnAI- z@5C4JF8mbl#ulT(_mXadj@Ke|{0>CN^Ki7hG5A~Kqf4@D+evso@$=DZTqXVv=i>wT z6uRGEunIrK-(#~e;d@DY;6ucBMUOiSJ?<#>1uqz7rc0UyOz=hlao3-4B}*KLHH~?iK#t_hiiKThu03G`QivxA1+>wXweQmfxK1 zzW^KYuSJ+051V9LSflHi(vvOY_GC)e8p>&lE70qjp?zSzDP32^e72kWspY8k(k-Lb zH$QmZ#!WY$K~sBgD!=)PcMk1#6B-^x^M8dNcl&{%-75x#_ph%(>)U>C`1|RdadYCM zu@n9bx4=u#`o4-@m)}Oq`w+Lr7Q2M^$#=l+#7E-)(tm|5!g$O5eZyyX*ge;lxaD_2 z+pRa+f5q4g4b21VP3cMJg&~>Jb!aTdb~QetUVMCB+~b-r^`GrwJoO{d_5D;H&-)%U z+>f^Z(wP2IOy6wR(0={Va*sxja~xWq>fOTU8afXNpCi}}O@9Fku=noado72f>F1&M zPgkP-_fSlK4DH8dXuY>%UfPd4q5XIedVh5qTF)yn>$jcS<#w99b#BMO`|>?kLvrow z+SazNX<6O8yjfY(((w7K5wY*eSB1GZ11)0~+BVms=Qa;Lw*_cj7omN(7`>OQiQ1;d zSJaEIBA(`ut|9K+Gk-P*KiW9nHZPv`vt09gT(usW`qnlup89yJym%MN^B%J|I<||^ zd(5Fx_cLA1mtT(MjUZod9FN;!8TP>`xIIpf&Wu)KU(zi{=MwK1<2t`yd|_TZ?Ps~} z?{Vwbr<(k`lD-so!{s;xSK{tihu+(*L+|a}-?+M6&9CmSme=y*P;QEMBEBE#g*Y7h z;r=)T55VDgAe!H}x?Rn$?yr_#N`6i8iNp^gJ{cL3S-SDGeH!V95U;@TF z7j8t?g@rMFDY`CvfUXO<-NN@FZiB81L(w^LEOy0H(K&Gyy58S{p683`m>)SL{4Uuk z=-hY^d*IVph;L#~{0e(v$KA(fufuji%Q+4mt25C#awR%P9zw@*)gEKB*E8Rv@%#21 zo4v027aHGg=-BLi_Mf10;3Vvi=b>}vUpN4p?KL)g9n%v{KNO4c0`zsy+?c))ef{${ z9E7XT`h1Dj?|U4KU4Jq*`%KDi=y@E3j?p`CAAAw_#gAipr@hB!b7n9)hmJt!)c?oa zyT^Gwr~m)2Nr!0;^`4qC(?Rd)q*9E8QZW*y^GFd}b}&oMBZJmD%sOo-Mh+X2K?q^k zkR^?T5QYu0tkJe)Wes9mTYT@2*LA(>HE(Y|`}^;A-EPyp>-l;fujlo=p3m3&@Or-q zwZ`^5ctUs|bvV@8yA6(nkHZ6D13Ubxe2A%?C*D81{yb=BiE`!tI zIyeJvfm)-5quU4j%pT0%wGVsOIqY3Cf3kP!b6}P1T^*=cWon5BlBG~$*4sU29jmSel|wiRn=} z)vNr9A)@*fv7G!`tEWS)(b-V@)a6d)i}ow!i^@f;Azv@j7ecMgB~D$JzAQzrNAFMi zS~vi%hkL+{P;0FTYE5o~T8o*Rn?Iv4A6;uu^^3`vzL%$~oUW^$fn1OFAL&Y0JEGbZ z)elkq64h@}b{a}~t)ey18eMB=E*uLNK&_p{ zP-~|SYK=YvwMHeA3_BR5i)+Xi?N8Fxj_MIruc&rJwJVmyxQ_B#D@qp|(Y01KJEQb? zIoU(H>?5A&)H;yf!l`v4T_S27iODgx4j&w=k+No>^8OpDY=?2So(Dm-@fpXhpkX^_Vy7LcRz!Q!|f+qdKFasp9A~Bhdq5g)SP!e()NRcpnReN%15q( z@|hRlp0L*x+XqUZeC>Fs_BJ)3$v7dtercqggNNV711x}8Ugq0SowQ{b~uYu)zQ{n=-Svd><`K07PzKD&T@ z_5^~5$^>87KAQs-6AEAp*c*~1D2AHL5l+Pu>80qJ^C?h1P!8p@r$hPRY?uu%cdDGy zBi4|v{c<6cuP%Y|wPjGgS`RzIwNSpe9?EAoLiubHluvGRU6fC%{?MnLng6o@Fi z>J`hFi1g#F<_H~WNrJ ze#N-yP_b>MQ`e;<)o_~QT2*y zSJe2|kxy%|5o#@OhNW;T90OZ^Y5QyfYAtqyT8sUl*4Pjj?VHk7uda(@ovKH=>J`N7wRY3`ki;OEW&z*%KIKv*)33YwV!Em^$Do``Bm5& ze(vd=PO&(=J5=AUJJa^dSE1%`6VyJr4QhYvd6uQ$4fjKT67CN_^z>sYZNL0Ilus;% z@|EnfEnW|WqtK6rO1}`wr+Ut^ee+-_pSvCEKIwj_v&?Ewe*>1Fe-2gtTX+b}JICUG zf2g>B5Y(C&12wKIU_baH)LQCUW#@@gq1N1ua3HLOgWxls{u0!=VguB9Vk^{rX8UvP zJh3}e{rkbTa28YyxDG0o-3@c#lQ0*42(|C-a-QYe4i!5(oNxQ@WT@Cu1r=)+!jAB7 zP_Zauw(Y|spkmfMsF?N$>;hkhh46jY75*D4-!8wk^F{}#dxyQDVq-bfx#L2pbH{v` zg!jWD_#EsBKZ3nrs|)PB)(iGQKLqxLC&Jy~EGT>Y9?Iumfm(~7!%~>@JKKK;L9N|M zP-}h;)S7-A%A@zc(C$l*f?E4m!7{iM9s$=tm3t3PhCjd~VYiEHza9>?Pagx1g6Bi^ z=Mkti-R)xAZ%d)}+moTv=R&RhWl*u;^h<32y#^kO{vp)WJKS8aJl~C*BJx~7*Oy`>*Nbh-{lYH=iQ<54})3{r$Mco`(Xk62h_Ux3Tho? z&$09(sC6_Pc7s!)*3Vf`>*fzo>*fylzu0+`+gW*Q*)JqZq58HQwt%ah@%XRn4W2LB z4@k1}7}WI-xUSf<3Cgxxpllm7?R?!`=_;>$srBcOPqr*@re5z&x@=brWxEkjwkvfi zztTnJi6Hjk< zjrmsz)L1WuvcaFB{Od(1|7!H~@1XoEG1vTS0F-}?hH7U%lucfT@~`)y{A-J+XU#MJ z>J62@1ZwQFplneGWuwhd{HVPmYZR1!O^5QY^Pv3eS}6az7s_^phvfzP z&M6LxXYb8#91Z3@)w4OXpOp5@p2+0)OK>QaD`$=*r$hB~Hk7Yj4rS*Wr{+fK5f_p! z`!0cs>&u|_xq2uclE}`Ih*5e(*;f)VN{=YJN+L$-;#%5?d`i0drS?VjM^yhr*)P)9 zQ!YvuH=-wD6D)$;U{9F&mAy8W4|}6aw694bM(Gjz+vV^aq5nqdVv>3W!GUm3T}1XW z>|m50aUZ`PF-jMQQqTTS=Dc_eqB}FesZ%6v+P_b?{Ou)-My#{J8SqK&DmU#LysIz!I)ZVey)7L}o z9UGzcjwUEy-Uj8%nJ?M<0r^nAoP=641D!)*By|tj^D}xptl1BO5-6KYg|f-1P&T;) zYJJv1+2nC3o4f*LlYcY8PA!1GL&u4hRVMQ%BEjK z*>oEW_mNemZ-U`38?nEL(TO7sQ&B^Wygb|>^%<3{?nl5;{+JSPpJ9& zE!6y71~s4apyv0FP_h_mO@z<1<~bGBHGKY(zv4fwCEigYCCz^SrAH9`x`N(ot7C0# zpf1(Zw7Pj*Xt>PkKXHz=ckWfz{yeDs78g43JV~B~K7`+Kn7`xmYL)u@*Lsf&WmjAN zYoR3T8ms3xsBxVERbSz-ww!$q;x`NS3wA~>)-3%D+VV^|2CsZ2|FAW1Hk3UsgG#?1 z%3ilS?}u@z`_eu?)1zs8m^=)s{5eqlxDu-Ty-@c5uj}2vvd{560d;+^udSZKeX}^H z4Nn`h`qAH2-rwN$=5~$t*@!t@S9{XM0`xFuIivJ+Bzss+EGEC!rShfY2(D{AmO6hf zUz9#2rM_}>`Sn%KC||_KNY}cM9x>_%$vgTP<$sp^@$^uM{nN0>_N6{|*uHc$)O=M! z&G&3if4SCvr|YV_?03H&f{Gg}pyJBgp8g?JeE1fsUxjzu?}rY6TBoC+(vOF-(=4cX zbhW2{vv^!M{-S%vg>mE%D0@tTTK^|Ql|LOSE?n;V?NIhub+7$C*n6-D{VS;PS#!bJ!E^vc#_UfEsUKsOyKqUhqiQ&xO6w=RwtXKUDrlp(Oi$dmhz5D8Cv86?eu$ z#i1E~J@J73e(UZ~^^`!>lh-FJ=$_Fh$ZKlfnA?zD-?lQdyiIZI@JvyLpDR!8*EW|+ zp~^0YT2rf?nsez5FsVw zvMIMQyP<7;o66SZt%_TgDK^c<20f`zWhnj=iPFWIwYJt5LdE(eP;;`(by0n(hw95( z*G1int#`^!$|tHGF^VBkdyy_~q@3156O>PHgIWujui5z|A8Id6I#r+afhqb>bousZ zD4#BKD!=sUFh)^U`*VG+Gk#tDmM$*f`krtx)IC`pEQZfG zl~4K_^nKtuI0QDreW9+4o6&XFk91M_M3obVJ5`@V?Mq}&No03jSAO+J9OYC$rH^*1 zymXZpH9umhGnzl`no3vw;{Vk?*+Z$BYwLH!JX`-WpnT@OQ6m#E1}N7@4y7y3f0H$Q1P}$jp>7+#xfjgY*V1ddK1*#Z-DZxyz4FQ z?hX}44~I&h26axG;rc8nU%Cy-$KHTCr+ol*PTS_`N6feQdKBzQ`Yfn8Sp$2+I;i$v zg7UqOVPE(O><3%kVAuOV`QFDj+V3(J-ekYOcOV={`cyawo&`0okD%tZ_K)`aflHv~ z=m)qr+-rgTE@LTF`t49Y^=Bv_`xfpCH{Ciee6KCzwsD~^9t?+(ej?O;=fzMy*kPgl zUSkndJqN*q;n7gO_AxvJHbMDX_3ifii`T)!(C>qX!zZA8trh$17}y@l*M0-FbDRY= zzq6rEOgBLJVBua_L19M!wCA2$V&PzdwDOe^V**b?Hoxx=wLcyT)t|9Y>)<3$ zzsS=shpO)jNcazafEw2>*O=Xkpw`?XYweCgPAxcj^Yx8v_ zl=NC@cJ2pN-yu-;KM~6BW_kMDdYgy)pz^hS&gP>VRD3LkN*@W;&#_SbJ_E{szH3^Zp zvtF|JbMG4e-C8L7Uh}fW(X}vqtpO^&ZiBM#v9H*9^%N-kz5o?h*FnYAO;Gj?UbT4I z0ZQ)!i(mcZS#y#`J>n+?nk=jWE7N7Omr%r^kY-> zlh8Hyvz$@Bh!>~izdA*~IYp1k-R0>IJOAu_5o&JVaz^<@i5QND>%Cl$(xv~C^hgi? zwXt|4MiuobTz2Uuc6 z;%rZU8!FChhKe&e|F!%Rp?s|Z>b~}OQ0KMVpw4N}K>6s0Q1N98R2<3QX6cVZots{T zI-h;!>20@<3FAu=D!!CJ)id@7-jjyYq4e{i;>@+K*FnXbRj$7Z<(uC^#hL6M#{@|@ z04m-b2sQq3Q1+Mxd&2XeYTJ2B2@l!pnUsMH~`kbJ>X&}`4GwnPHJJ#7rz$z)Oxwlby4eNj#Fz_x~Tl3%8RN`RQ;mXgQ#{z?X#l#BdY(R#v@81h6?{Q`R_vS z+axP;uM3s`E~xU$q3ZhwY`b_@;hm>%9VMd@n$)^L0??h_9j6c?aT~*7snjb$z7A zyTZP$_^sz;(6W+upjZ&v$7eF{Uz11v(a38-B5Ej`(Iv7|lpbe1UHKAc*}gv>O75t% zbJ{W}yRCzgS!dh%ZZ1@Ph5g$E?K1L%ohJ~kRdK&^+dP-70C&p)|!rM>Tx85DmyF1Vb( z%v1c?{4qVFb5_uq-`ncU?`?IS)uAcT*seaOGP^vZAS)=SXde_zX~%EK<^%<^@|!v| zChRxJtJ-jmZXF~)8y8&0U-eCohx=e$FWjds@1^b=)R~ zm#t8K+Gen=lO9mMGYo2;j({3x1=M_<=lVr{{g1BS;rdgqzX3I$AG^NEueaF8>T3g4 zf066<`%ERQi~Z8Bi_Gku@A=fdY<~9))EL&dE{1CzY7C7~ZES|>`&QTGr_uUQ{>X15 zwtQu$UvoJ~pzAEv4a$f5L7kz7K>1b)l<$m(@~vr3)u(h(`9zhg;JRXHB~%Q(5Gsbw zab5YMJw*AVayN2aXQEn|giB!&T<*H^>3Wo3RDVVFUzCWN(@0lZ+0iyHZ$U}LH1m&( zp={Lu81sv1P&U08%BI7QwRxTZrB8-hw-r$9^>Sb`u;qW4O&dM`{IdEHZ6y;^(?4$dL`6;buZNVd=ct=x(TZMB{S^)cO{g~w?oK%GaoL)EkQukHS~3MSDXgPMcs<@P$`nNa#Uuot`n_J#{# zANVKO7ybq6eEALR2eXg2*BJ*v&5f;x5v+&7Y1czB>*3N2+b5FvwPYY9DHsa1rbk1~ zT^W?WPluYjnNH1r>N-%lDz0nJs-fm=F4SBta9!o1Gm!F27Z-Cq($$a1zr<93YdFHj zId-zm`vXvAK832I&ynVLXG8Vzav1s@l%G8a6<=P3^0&{S{4IBim45|l&8>&>moGiN zXsY?+Z=l9@57gMk9%X(w9ZIi&^276>{BR!B{4a*`yVX#B_X(8W{Qxz_oiV;$vlw4E zDmU1>>hNGt#bH7JA%_NCGGd?8EweMnH0Jc5KBu*>+MF(hvdeNPyR3$q(*`KJd;n#a zO;C2(0%ezg*GFX+iR>bY7^O$l`jbSA(j&@_l88}yM2%k(F-ni9^(KiJrAO2{lSGWt zBNo}^a9!!YQF=tJD@nvCJz{^m9Nxd_zfroF<93pdN-sd)3-*S^P_nmS2cvYcn0))f z5l+>kbW!z0^@^GoQS&5f-o$ikQ0ba?Q6ffb=#W@?c#(e+=bQgs0ww#*w)Hd-%5T;} z`OOQzwe{2p)qchWww?}$>fgywb~yeLdtc)LxF`DaQ0ZHs#&uY=y?^ll)c8Mw`@tE% zxA!Y9heOe8;V}3zJOKU!>V1n{F7@{<;7IflQ1`7zL*2K|g6i))SOV{Z2g8@(DEKLq zjJwR<-&h7mqdyO2CySrIA$}g4HhxyK)>dH{YmA1a{cs1nL%7dn+M zK6hN&A&QR@)h{aF9Li~pshoIYOpn(SwJ$2xh^j|af8wG&P7<|a8t-qNZFbmqmf2}0 zls~P5@`ufyKK&fGGgKd5ff{3GmH9;_lwVv6HUIZQ<=gLEi;qV@jb#y3oO}}|;Ab$5 z7w1|2;ZSk-7^pEl02M!vkRfdH3w>3H#%i2>9y$5 zIunNpi z+dTDn%I0Y=sChaZYJ3Zz&RKO(E z&3M}UryG=AFM#r&tDyX5F_fL}hiY%kGj^Uk0m_cGQ1;sdb&lH#^?F2Ng`MYihuU8b zggVbnggPsq0+aA1SOnjJYVRwk_RJp-N&C801OC_o<0@Z+e}3r$C_mW*W%n>(iux z?4ASF{{kp`OXP2oh*7%O+w;Z!LG?&iy>b6gd&T6B_Gyhn5-~~_N03kRR|;jnDNfZV zy*#EXpVCz>-d?mGqI(W5hu39C<&#}RN#z4(&ljNNBdGG9L-o7+gXW)yL5;6?sm=3g zPhtz%75;Gia*am`OkY$^_D(te)Rbx=C70M%wJA~y2q-8@|&kT zeKVB*41Lu6XA;!?z)4X4b1{_v+zd7DPhk>%1vTz*tiPV{SlA1m=j*a?P;2hb4-Vq* z-)_Z!zQzc$6Ip*EQF=t#MG`Se7i+fId2b<%&Uw)u6fsJVD7#4_M(GhFzlj*7N0eVk zB1Y+o1M&G+|CZ1%*>M?^9qXa&D3Ki{5u@~ovZEwolpb++yByw6>Az9B+EG8$Zq%Q( zv^xlWy)#PRh+a&36WkkagM(q_xAq=XJ{*FcggWmGbgI14BMv2fSWH*?KCX{&s$Qk5 z9Z~IyaVcrA*O%UX(_RPr3d+7+*4g(R_J)dY6QJz-Fw{8LK#ltoC_A)z$G-pC9S%ev z0#&XIs@wxm_IM5M3H!Wj--A66D&Nsi`Q}3P^B$;vKMFOD6;R_VSa07W9tCBeD!3nf z0PYW0L!AdVK-sI?d-nZ_{h{o22pkTNg|gEna3s7I9tiJ+2f=4y349l-f8Rj$&(3?t zbKW~D?RhVm!|O)`1m$gde&=U!6@wz%r*a$l6st2=TddB9iqT0ZA0Ozt$|*hKP){#~ zicwRXx~^Czs$Nkd#`~eP>Qn4}lMPUkd#Zg-`Xs2hb}rOdE`XAwPxIeNg_1*0xA(Cs zpyU#$Hm`;1!!uBQKKV@h{P}Ds|GL8U>tGi8lTiEiM^O3qJzlZWpal-WIU zDf1Y;K3>1>c2yOub;^z^8*x49ij^Co#@+-q_H9so%zWGCF&}E|NvJUobgCYui&0Ed zIq9kMsCJ@uhf-c+84Y#DErU8cO^1q=Gokj_DyTiE8WzI2PSvAyQTarb6IG9>dPTJ( zYTOGbuf1n6RIIFnz2P%Xh%V!?$_v0x4? zfj7c~VJ#d5m%>BfayS~UhKIrico_V^seUM3R6bGVMAajzUa`cfcBQL7VieQWZ|NF` zsBwvr)VHzk3CzkIA0{n^TJw*>7Vu@b3;Y<$HY3~G_YNjO`R+_8pZh(O58edjllMdU z=rd5h+W^D$3Uko6L#?x}S@xXLVNmOI3e@_X1$C~gfm)wSp!!h{)sJr3_MFl^p?vOe zC?70`^2zg|d~^*%a1^vqn?F|(;qt=8 zA9q0Y<8#;(JtKE~=)(n2zC953fx}^6cnsVfo)7!M`B3#d09DThC?EV6lur(9H$L>y zL!o?jI+PEe0p-)xP`-X6)c&^wYX5r?YX92^wg3GHwXbz=KR(?5hC}Ut$3X3WXG8Vl zDyV+E3FRY=P(HH-%7@w~#)rON1m#S z{tC*+Tjz}reZMO_9DN`xg=66uI1`SAm%(xHPAE@Z2`9i0;Y9c?oCG^|u>K?=p*c7Z z9s#FAt=&`LWcUYoB)kJof%Q;!XoRvuM#s#cBi~Q#I4k_VP-UC))@2!;Tk{@Sj$S{l z%qvfn+1@_#XI~4iWKX!7#iaU@-`q~^j1Q6&iq@ATVw5fpC7;&SXsC5n2DPrHL#-=` z)|Dh;lrGLBpZ32hsC8BC)Y@0NsC=U8P32tjYaK0sT1Sha)=`~P`BV3Rs2=rK*LBVl zH4ahZ5+xCzp}t;W3ip&LjMBw5o-ZmV%C2G*%T>JLSvz;_zf#`8?|0VQ``*8S>c=Li z{+;=ponP;Svcq;Ly9`}r@5lZcDh@4xibKnw;?Rdsd)t4Y;!W4*t)6S4;!vIIpFr8K z`)d1Ma0!(CYM|oK?ND)Og{QBAibo$q#iQ*|@u=_xtG^qRJ`MDR>3;k!Oeo1x}^D~$Yom+%U&xjLhCvE>%?`vjC< zb%UCxelYTP?I)6mQMx#UeDeDer~E|eVyfRq{;GC$J=IS&Z%WsA#JJSEeR{ua_FDy2 z{_jxrmA+#BHXCXjw?ei5Jyd@Vc-8!^3d-NEg7UYeQ2w?C%HKYP@~@1w=6Bto{A+)x zb$BFHKktF^uScNdaVS4~8>;_#1NAwNzI-RJTaajK*O=3gRi7C~H+v>`z0cdU?`+-@ zP~+(aHJ*M@^ECvvge6etfbmfN_e8`HX2$^&j-3t&cxLwSNG+gzT?hnU(#Ihf1%4num=r^rH;>y_rIo zOL{-3xKIMs-l0%_b(8CNL-l7Bl;rJ}8FZc;egmsM{vEVUZr8-aX4h^|<@SQAcNEk( zrb5|eCe%272W8i5q569#)Hs$wjpHS#{=W~^|1Y4G7L=b|0p({4pyJzuP=59-l%Kr`Uho!J441;a;Yv6dz6JMz|A0f_R=6+Be$1X3z8l;heQ!7vj)ueF(NO23 zQ=!fm7eSqmYT!tCw{sQL`RHxu7I-jvn?KpTK^J%k`T*AtfQO<_fQP|ycsM)I{SRz@lgBb5-7iW9Ln#uLHXU-8vDHN(J+a=2+HsN1?6|! zp!{y)^*tF6;+yfbzTdq5N*Z{4t^5T>#~Gw?p~eCs2O3#|>jb zzdH}g@1BG5yVs%o?ypdO*Z0OTq2HYW<#$iO{b0sTV?w{ngz~#SP<~eh<#(4t`Q1xU zephnyn9%QL!UNH-bNwM0`X4MIeVglD{x~M|!!zJ0(l3GX!^_}kI1kDXpMdhij0Iyt zKWqo(hettq*6mP!_z9FB?tROc@SJ`C)V@=g%;G!v?SigDa)aE-ZJYR9W5X_$Ey{IP zNaWgCL3@DY|4*!4Z2dp<9$P=hL#>~4T;K0rTSui(ast$ND_wug^_8xd+-K{p97?{2 zT6c*hruT;`Kh^a=K&{7HTu#_t&s-f0rt?TbVt?ALdgfN=jFHLx9Hj`Z}@zOa`(-0e$Pd6 zA=LcOalOWWXXtq-SqF9fQ>gg*o$DC~+VxgY<1Wf+8RS&hXDF*lTg+d1#q(ioitBkj zGJ_r!or11Y@;QHZ46?s&8TM-q{gPCFVs;$xsoC*3sP<<=wUgJoZP0C1r>2gLc@6FB zb1QSovx~FJ?5tPkV=M8`%Z_(W`-RWX7WcIC*vU}xU~fB*Er*i7L5=(CzIHCl*xk-$ z2^jXLC@Uz^b2ujNd=3Ynybiyozux;3e6#a)aFtQLVveUvkEHA=tG5A4`u^GavoBPc z16&{D`mIk}zq+old;_5J4R-xt*B5XfseN&&-%r}-q|V@TQm6AdsnhtJRK?Ew9_$%D z|D)Z`-vm%!RIjM{kc9f0=3~o2*ZMAi+HZS9t>_FqJrT;@7eJ+7 zHBQ0MHYq0T$+LY;TMg37<=XnVi-0I0Zm6jb_gQ1f#k)H(bbsPoYM zQ0JkSpw8j{fa-tUq4qxUdr;@1jKi$|1EBhU3{<{zq2}*usQJ4a_JB{h{*7PncDUs~ z6ehWTCM<$~gz|@lQ01S3s&4~S{X;eZ$tUZM^N=2HObn$1giZdQ1=sW!aneOsCjHzW_HMj zD)%sye=dhAw+hN1)N0^{e3qdtdV4 zo5qrZ=lnojI}NJrAvfFmvPVFrp8=Kr1JoF&{L$Wzy%TD_RzRg+wZPtwT>$03%b@0| z0qT0ITkL(=zEJx8P_|nR6%W@z#lt4Q-se_(U-dAk{0nZg{yYw4+vlNd`W95&`xjKa z%vxyIJ3{q;0960iLD}%HP&V#yyFHifRH%4*B~-f7QKI|eHKguARCzk|yEPpG*Wa<@H??e{Q=emhk9MyP%Vi^qoX zvImsDA5{4!*R$_2J#Y7{VD}-Nf?ek~e|1jh)>`-f%I|FrUkFu~{6T9_lx^cg4Ry7p z^qN8TJD#hdWZ9nf`c=U1I;)O$P<3>NiVwq}{9>wKKMtzR+o0CcLs0(l3{)Ey&oXzM zpVxRiYizRhJ>)A}_fw(r7w+9Q=rN@~_l5oVzFW`0zVBw|sV2&{pfTm!)?yK@;7?HP z_uOSs*xx;!8e3!w@c`1*zr&pI>m-LZ5o@ote!mMPpF)*C@;b9e1(ZE1q3m%rlsz7R z%C{D(okl1-Y=&AVIXvS|=ZC&f`G!EPk8w~^n41x_Ji*T41?`svb&Kr0z5+_tyI$BK zBWUaSO2`+9>eSzsMfE{Rln6_nu-B)OtF68XP%_hXU6)LNDqon@BFGwS&&g8#g|Yjj znQ7XqxTAS{$)~Kn`nA?x6O`n?X1cCR2Eo+!RDWS%>!7frE%#hIeWr%=#C5hF;^SYQ zraxO!`V%~E{VA`v_UA##64!NIk_%J&qx$3HZ%or(MQ!u(H$G|Y1ut8B#ZWTEbzPTy z0aM#k{Tbo?W}6^?aH2AuEiw}}=QZuIrNAH1<&a>1|7Nuzp<*B{#UPJd%gftP8af_rr!XZC;qtW{LY@@;Pg7 z0+h^jUDqWO()gk3kK27~n)WuQw3l4&^Xz`tQqNzvi(PMol2%?m zFJ=BJJ%8C7*3Z+RWS;AKKV`Ry?4WQ;R$(ydn?N?9UhTAOP1}OQ_ z^}=46L9eQ8+TeLnj3aw;n@0K7Ca+(4qqSAOxVc}|FSXa=m8bYptA9C^yyv>|NM47b z-LrQIvPZQkYh7%yU+oko`5rB=i*}gI`*D2lR_!M`{4~}#rnFz}u~+psy>IRJ`m43S zKh*pvk7Qn&_^USJemyizn^W#-KITUE>)?5-e-MW|M$d7AcCr?gk^ zeqH;jwbuY8TU^(5$!lr+TJ>kNYZUSR%Q10|2Up3%NF?}_98Q!<10gR}kn)~)%>*O*`xf0bT;bG-!zf|NXZ2GI~+ zv-~aZC-9ee!1@)}<8xJ)#&*Gd&F3l^%@zHv_xK zlr{sOuX2w=H6DkSxvuMy+%)s0`istK9h_6ulIJwpJk|X;Hh6)*f~u9_`8lqq&Qs8F zNl^cT?GsH<(uuNK2jT0+JpZZbFT7q&j2M5NoeOWGno;_&+>vg}-PX;(EG0yVm=d@N-L1E_1r2WzdQ^Ub22n za5aBh-+d)0+9NaAV_mDDtG9a*q+!9uFS!bIKambzO2sn)sml<6|mG)836K?Ui_Z zNcy>?3`(k8*LBH+H1R?8r>^;#-e#?zM;iQm@~!Lf{?(8-vC!5-PbfLa^|;-Zry0le zr73pv^<3@e=!c+WjqByUp3g|Lo>hOmUyW(nTbt5eiLdA6OVYcH;fAjTT26pyXTEcf{2rq_Y_)znCNc!2n-p?Oj_<1DL?{{@wGAPZtUiHWOR-LB3DGxVqFYq&0 zx!>>B`2FrO*L7Wzo94Ww`qRbAC8XC}>-RT%wc-7-AweQz&mjK&f(G)OfDsf2D*tY6 zEP}F29aQ?WP_I?I;@8!W+Ew;`<8~-1eBR!lJQ@WW&TnY91My=~vytk@4^9ovV zztx{-B=w~~7LT^lm)dvi`e#tm>Rqe%FsOP@fvWck7}gWs=kC16Pj)sxs9o=V1tl9? zFWfID*uA2V-_G zlCsrzn*S9J;{IYv=b#I(xwZS+UVT#i3&=Bz@?}G<{9&{sxx(8k+_O#4t)eTo>4I%K zhqh6DgA{eZ{V}m(=sRn54}2jSGAqnG@|JDfe|l zyWRNDrM3%G z`cv-xsreuJQ}9^x{w$33r_9^G-1~F0>&hd!KTUtscHVBSgWb4S=6&qS?DDMe{p&fT z2j`n#6+_9{uIF`c9dzd&Gyd8|9r>%zv;1{X@`mf_@~>C@e!bZ9Px^)YK>_uj>-EF1 ze%JGQW(GYuOLd>pmOf?fcs->bWh6D;?=?P-_oH!ypMlQ`GACPfl24UUrlHc>>2$WW zvpWpeefT>+IY0TGpV^er^%}oFUh1qr$I7*;vU)~9`N`2RtS_JEu5ynaJ$F^@*HTyI zEW7?Vl&p6>FHQb6-gfcwMM0zYvyYc6{e^N(lq>W6H~Bc1{~zNlC^UNpKCZD)GS~In zU0>{aUK;zBP)C{D_bMo7I2x6a2{ zy&saU{NehWY_AKezCyhYQW>|Z}p=4zAx`}#w}0N=C+hJ%e>9HvG+%2|+DSy?`IWWv4wQ6H(~jyZ9Kbo^ z((X-N8w=}qt?XRh$>V=dIt-Zu6*4{uU8RojKOU{6)?Wz8ZT%K9Y+U7Hpjru*0!rm=|u9Iy> z75f^}^da-9=3}m9j;4jJ@IF?9_2YFY*~RBqc_ekweCD7HhxZ4Qqc-Z~sK^kMc;$f1!P~6}Nw~>yogH{)yI2%Re_Cd)Xak|2m)Fw|u@o zc3sycGhnLyRexc4Zp{f=&$rL2mZoWQc50jV#Nu79`SBnqDQ<82F;FstygSIi~*y zN(QAFr`kyMr}{MQu1{?jABoPB#qLknLdo;4C*7Y0MgA0fpHpq5w!0}!yJgQbA8(Vd zWwlfDy7}?Hprn_#t2~nJY1Xsa$k6LaQ?j+!m4~m1Rq1*3ZG*bw#{@6&S4*2kl#lD_ zVrin=PkldF(Y(J6OLqEU-Ef#J8Yv&v&S&^n4 z)mK=!OOQB$v$O9@<)mp}2@CO0ajo6cM!NbM-Ct}(+H-e;%}h2i^Cxk1+a*5UgwbJC1`=CjT1TypPDJ0}Zm{0BoxSy$743ndfCn`(Ep zk!p{+6niw>`SbSJn$n-m@qI&cW$y0m#LrOxxEALXXXX@vClB6&$H9mYFSF3YVNbORK17UsSZlE4l=!HPt$KFpZXWS zPf`7;ep8!br?Ox0o03({?Q?p}Z%W*6&T_xG$o*!Crz@}Iw`u%FeMt42HEC>7pVEFZ z<~PAUK7J@Ec0W4C{b*1czfl{79mD&oV%fhbO`AiWZ$9RPkGb{*^M@Cqq|tRtjhuoAo~Ds<(vsmH*E0c`h$D{VFJVEzP{EjrcfA(zMxab@Oo+ z`#76?T%CPhi+w(IT{1GwI8}e@IA^A5vnHj@rr0=ZeOxPiT=j!(oS#9-_B7*E8}V`0 zq-nF|3(d#b;OD}oRW_fUpSSrehO)D+OFm3!)g<6NGm&Dkk!R>#hTm44ox=jYwp zJR9fBP%`=G=8ouAdn?D10{pZj9-J{0@h*Z1*xhLUspnZ5{0My8o})t_pQ zV$$OFsQCqZ6ui{DFH2+gsP}O(wB0#OP$+cv)f^q$Nv*O{-2S?E~-Di9;(x{m%pa@*em_4Sn21% zoBf>li0is8xd_TH;`6WiQ{(uOG;PjFZ8LU0tnu^UqkbN&@9zEp!*7Sl}EB79tZq>RBfb=duy6@ zt5e!d#Kv9M*~a-Mlr$EY-qz2_-P4R)ZT#H0lgXd1x!{%N<4!P#(YR|o-mUfcx6yUw zk#vvGw~t$Gq@E{ANsF($#4oJ7nw0(wjITRCZ+;0S+oAlepRY&dl?+R>?$n3ae1vPQ zlC(%vkNy&`Hn#^qs<^`*jXll&8NF;ivOO;C=W!`F&3aQC@%6SKO`Dgev{{2c>5N(I zes+}m-C3^dy5#n_-}!k$^{4JX^=aDNn$l)tZ2u|Cw{e~UC6(@nx40jEk!Jr<8>#cY ziM056cbv2Ryzy&4SDgV>_GV94Udex8>i(lX#OB>TCs_2; zdCz>UdHW5qby%4+dt47CweANmL&=9})?tD+QtdI6wD|aIe!(6KQu?zrW{-N0yI*=7 z-VSAtzHSfYl{}Tk9_mA?J<8MAqu}-C_Na~7BiPOCQ3NH$Zl7b^J`bg_huVm*gE?v1 zoSV{Sldppkk2@!M9IAF**CpH2tOM1bx(@2nv>Ck7e4KT$b$+rQn%CD=f4se*=TCimV@i7oZ?D?x zzsuXJb6wXZ-P5$E`s3~OOVi$zhUPY{^m%OZ*Ht@sJS*~ert6Z6(#)gkw|V5fI{$uo z8ENr#l;plTuE*m_V@h8}kT;4eb$(uZA4)bsmHp1sl~*zbrp6WZA#R7+Y3wll&E|Hf z_O?s>eT)~^noyU+L6x9@aa*Civ<*j@G8 z=e%?IoOceN^Ue;kXSE66zg&~1?b5eW#(MwGeY0+q#fuN2WFFUcjL**vs?$Cf)rJS; zlm(50{@=%)h$y8tJ_e=|V+1e`EV(auQ zD7oJC!tnD7{N@w3;=CE2F-p9Q@@dTatNKfGTUC0$nx1NxuK(P;)THT8 z)w<^6FNx-5iq8v_Oh_|+)tBz|_T_2X`5>j8z}u-g!rJ*0l;oyqNA;y^r!h@Cqu*{m zo}{!##w*&hLRh{+vio5Ldiws+YxU) zKB(Q)^;k`sr1&!%$FHGemg{z(-GTe;yr5uy^ZV>2URL>|b(!;S^ZwR)f0GlezmuWl zp)~76^~LSmfL``j>(>QPGSBsNabm0YCvLxmDgCMQm|8a4`g1;%Tzjb5?@lOLLB3S` zss21Z*Ufj1!q+vEefXSHmDO`Ql>FQE_&7?*SG(TE@d}hQx}I(vmE@Pi$5FAqxn0YA z9K{D)`$t2`nd}cLce(EqGt!Jh^~cAtK<%At^>l}l^IebPR_)(QgO&V6aVxI>T->Vn zaj3q?KL)ke2ABi#6ehHLJNaG)>FWoxdl%|~(n?R*0zBS}}^;;-kc zzG&PHjitet{6*uA>pwT{L|>af)gO(!_xsJqo$zs29&Y`)9ZI^V8Mo>yOzaZ0Ie{lv z`TLebNsGsfI?kDKUF}9Oq&B7PwSIP0d$slEmoGxeI;gVWdb;vT-h(^VgWo5s50RaM zzj5B+FS1iy|2aFAr?J!czc#m1V>EB9OO0>4ug@>i%$w>&hef45s>r+D`3Hu)Fzf+5hnQ*=Zj( zx5f0>=VzO|{oc=7fA)j&59N`ZlIHWXYCE+*{k%Vk|DivdQu@;^)}I>h&uX{NJFY8_ zq<@%K`<(0c`osSRdu^hQ z$X>OdTf2YSZ1#EqYCP?}uzpO0;rM!G?fhQzlpW7k2=93l#e5IS=Why>TngnUH@g0? zU$^<}&U|)bKD#oX`9GP@q0~2@vTC=n)uND_ozZt4>OQf4UH_@Ivk)pyy$n^Z1AZWx z=Khe^GmFos=kWRT9doE!bfF?*JtSLG}NC@%#1E8O>w0&(q?6S$%Io)zkG$ ztM^w>dfqS0W3V^#m}BEAhmsoC3;Va^J1rf9wqLiX)SBx@-dVct^&Zk>?OX=cPDWm4 zkT)eK$Qzv7l-=02L7z1Z&lKGMC%&B+9L3+zzx#KRV|qrr)ltlZ25kqoYTSiq|Jmo@^nKr~pgdzza07o!yi8orI3qVWV`IzU z1pMMy>hHKNSKp;?YE^INv5XF_gAV*Ib(X%*Ft~Mj>KZS@1{!NUaiPZJzvz|| z9h>qR+c)Ia`|}C-9#Y9aCI(;dm-(r!>E=2$rR2$&ni)*RpA&rNIWdLj6b#O3jP5zA zvnB=W`J3i-#r2HBwn1U@=Z}_Uaqkp9mvlq==aSa={8jqAT?jQNb6giSCz?k|G@oMS zyJnZB_slN6{%Z628>o4^0;+7+56u4tL;2qbsCmgNVlT+Z`^oPr%CDAtziPc7OTAyq zook%w`b86=lzTfjLdgQCv32~L&EJ_&{Tup`^>-X>g?=1VKhK6yKZ}NR2om=DBn_?W zcYYtM(fe7~+Sa@JQ}6r2_qn!DeA{kP*lx@Awtr;sJ*j-=T>EDJ(4P1l{`SM3tUYYhrKzB?b3=Z8_-iP|?ZdT~xsR>Aa%`b~Mz$zkXZ_yuZ5#I< z%#+4_fX`R_JX%a0wH}Wjf|7dI^9ouA1r@wjJfvNa`ItQmcN+O?JRWxV!Sa_u)jtb{ z_DWN(nsOyS+Vxe?#O%_OUy}*Th3AQOw3n;z0EB0QC2G&>{lweLq`cbe<@MRQg6~VQ z2IJq&YM`v7#OwcE_^UPS2~g#KjM`=WcjSAU{!O=H#dG=KR?4eiN#<5E&?!4BJ+gOr zk$)Q5tCimUI~(6f354Aq1K_DEm{YaoSzo)SNGqi!}mwxdg>Xbls0vSkyQJA z!G4^FCFlCNIPOQ4l1UqJo* zC2n{v%oEo$I<^ctPT^cNxqW4LCfle!vFk3L7--o|ar7_M_Jzgen zP*yOAd%>c&nnjE-UMyga zoipmpFSkLZXFqD`=R)~u=3|z=D^&gyq5O5Lr?>f&rJn#5m%oLor{ywBKM*QTzX_Gz z=;^&5xAV;ksPwf^_2(sdE`CLapxYE)*XOy|Ige#FwQjVyR`0f{^|8t}^-HYWIQ&ym z0af2@7}nP(C+Jhvk!N{z;NB^Z_c{|n?qlKe_UjctHc_V}xx(__2PJLsS=G}WhV|@~ z73{^?qu2Z%P2C&2Hu$#)!#PXr>*uRjzZ&obl{@MltM4d$SoQq|D!r&%X3!14*B+C@ zy_WncdH2L%EPq?i;yEznjq4e$G6KasixVw^$~z_o3;0{}rTJSkJ@m=UpybYp!A$;Y zPGL=HZEWFtbMoQUZNv1lxV9xMPh=upd3UDqY_=3VUSD_~pYP9)XZ+=>Y+ScN$-_|N zUFGTFeUUv!P2XEBF3RKc`&I2(r#V65sfodE{LN{K)>FGsKbEuwN~0cKkL%6KDCRJ> zJdKUBSozZvgH!lhl3?7vKBeEm-$t)5Rc}^Cb3+{5mHOIM+1yk=I5D`Hzd3VW4g1qf zR~xjOe0);S^NC5pn#Z2p(XRB}`K$QK#*wPW%fxLO40WHn<<`(&qJ6CCPqq(_T4v{# zsZe%4AIh)n^_H9{G z@eou$UW4k#7f^K#px>(NK&be4HB`KN04m=rQ2Fc}-8JnwdQD`Xj&2{QHq|e2W{O^g zuC}V3QNDlRQ<9YNjoI5#_U-KCC9#O^K%W<{5<0Np0AkwyS!@ia{yG^Z$Q~@ z1Jpe2xpq=`pFI(>vj=Cwu#ZqSZ2Q`z@Hw@eU^e=`Fb7VB%J(wNg`HlX6tvTIsPxfL zHa!|9;N36}J`X#9o4x0nCtd_(~j3)!}!pI|Cf|l{nMeO-t|{q-{!i# zp4q&7!LTJk;{{ee`8z9r5LAEvm)C1cD6iLRCB=)Z+w5hCiJ6qI z9clT}^{+<#`>kD1(oe}j-rxV_b<*XOzcefr1huzXJ-@%r`gb2x|Gt2dK?_Zf_pg!i zN$+3kJw)aKb`O!f*~+~SC53bgx+*<$vD#aR`)DxPA(h|6k*JkzNC3FVEtc zd95nw*S=-JzxZ2z$%{eQXUjvsI3Ot z()H?0+dFEY>Z^r{hjmc)c_U$8lmD}6V&UBLEA-P{7XQ^y(G+n#jck?#l149 zcy}UHygLuJhgU(xxrI=1?h&Xsw+hCka)6EJZYa4As=p7yFn&Yz_fJs$eG;m_&qDQg z6;yv;go@X%K=t=SsQzw*iqrk~usFRRRDVZ8^>;K>f5$=fcQRCekAdp%sZe{}?_g;6 z9{k=ApD}7b-|j=AIo|4XT=$UW>-?~dr`01io<30J`$LWEc-MaeHNHDte->(-Pt;kt zcVO7=|8d`v9B%Vo!?{fPwO2}tM_c)|Q1VwO`)>F2@cZ`MYv_5=zw};8DfNfaxh$+d z*p+pGBw^UUZk&-T`2Gz(nU7CK=gmqlS6OWN-h`4FdzXd%xCDmf!}oDI@>@R(!-mq}T*i>d9daai~aIn>T7S#BzgUa(Vl)eAs>4p2m``e!W+G|%)f9t)i z;uJe3N0}Wjfs(hN+S%gidEHtC`Ky}$e$*zfE3t5AzZ-oYdi6r9=i*DOo<&gowK$TW zHjX4l=s8lB@1nD<{1fN6pTMwuc)!eZfu=AvUIWZ=KUHiPO8NSuEMJ?W-5;R*Z#xXj zcWKT0Vw9U@zj~^2<&@L4`W#!kYoW&e0hDbwL)EbjR_|@~+yy1~Lgjq`D(_mTynli6 z^Mb*a-W95i_+Bta{XNjq--40@4)T2Y`W>>J??cs*SCSlJ*N=dbjQxIE?|Rki^}Gco z|BmV%l>T{l!ARd1@3Q(j-)-fl!m!`5eX$>TYlm6-Lr}8P_0;{g%7O zsrAk#Z;9740ZM-Dy8Yg8ci!iUf1bczkJKF2QdUyd)BL|%FIz81K+VrA*Dr*crv*^$ z=kzWM=j&jo`8vV%)1mUsfnh)Ul!bA*6e=#C?Ru}iWnp~YZFly5(vO3Za@Vhiir=?E z#qFn|;`f@I zq5AVaR6pK_>e=jlDA{Taw$hl26FXz6^bzQ)vlPmQr$E`H9I8*JyDn->ioxP+bdBwD zs4>(ybzSLEK2i0Fs$W!lVkG4!nP0pMCEq~JU#F8T{ZptiEoa&~OG4E-7^;t>q2{3i zs&B1MvHfy4sJ;z`+Ap7hvhUxZ?D_-LewjSg_RA8OKre^dFRP*YaTk=W3iodt^sN{c z^c*rY=)`N|;p_BFf!=Fx!oHU(Gg5tz<=+Y=`S)5qlcC0O5|k}2hZ@JDuD=X5p1-?3 z`93=jltbk|5vm{I`wTb%lpX&GB@F|uA3X-y_)dmury8oA`B3$5f~r5*)5g&Ws{U?J_4k6R z|5B*>uY#JVFJWl!@O_x(_dz9$F*v}k4}_8{tqA$0<&&6{SaOM$~+XY9~r3DU|vrto^5#TfbI9l|TF`o1d?t{OOuM z+dMr8HBYZX)!PI$Pwk&Jy)V>!9R|a3h5OXb&)PIvij?w z>UajKjx|s=SO?{+jZWE8=@C28FO9v(8KsM=M@*fYrXS4?-2&_XaHu?!p~_T1wQ(*~ z+gCx^{|+eouY|JyM^O2CXV^ZoFVuP|g<3B&q1MYBsJONSDz2@8iffyoByacZVE3wS zK`%a|*Mn!*>OIErr0=$x=C*2bKimd27h*IiiI)|U40$uR9_|O z`rLGtwUfNs`kQf$_47WcerM0M{_X))XBAYxFN2afQ2qWRls)X+(uZ{)`#ebH&UL@U z`&`-HeDgvm|Cr;tsCLy?@kVsDSL^Ab>=Rv&k1Z<4<+RsTZmE}F?)AmXr<>2@F*dFv zpyVs4{+@NL+2uN@cJG1eXP;kLyg2m#arQ3obxrC2|4#LiHfeLxrft&eNn34c5p7WS zxYzw84T|EZ4n=Xap+$|TTTw(YiXyI4)J)uqBIuYJ#Tm+!>6r7SW9lBAqC;o=-k<$E zM|MtA=Ko)>*Umf7+G{;)t!G{LUi<6~mELnu?e=d_?e;%VuEQidAA@Sg6)?R1hH^E2 z{wSz+Jrk;3-|Xif_47-Pv-x{1RC+^>_v>CLc?#5geks)T@4ZmhzfVDx_gR8GLk{Z}q``^Mt+gbLpus{QQ>6}|>)E;-xfc~IrO5h{H7x7JT~fa)jH zq58#qsDAM%RJf0z`op;ItUpYI^4|c9;9(oA{htZte;-u){{vJ$GEn{CN0 z`}h0G>ZuBH3md`t27(cvj8_0DVb2HCb_l-Vh?PJXXw`JpCd$xZuR9Tlmm35g@wvm6< zMq<`>$(W57k3zZHVjE{BLFt$RWv|6_%7>a26tJLfqUIPZm7*L;B0$8+PYo?eHt<=0U5DL&BJ)Amql9Sqg3j)k(*c~Ew` z1b>!^WuE>f7Ja~!6N*>b^ktxSojJU!~aMqJ?FarZBXMxv-@Y<|9hzMqU=x$zcW<2 zM?%e`=ehqa?*ACnKHod;|Bd_GK1VFbf6Mmm*V0zx8ZI?`??Soa%S>)>pDDH%&tY6( z=NqBi3oidJ`(WdUKR=AcdZW?wYMPFxzP0Nb-U&BP^f&)fXe67Q0_;UqxoE=eC%%Fa_`dxd)xiLs+;Zn z_fT%<1s*Mp7U3IxAL|P! zw;k6DDpw^`KRnXq+x)M6r@W-&_8U))J963aNB_q&mfxqK++!bG{k#R`{s~o%F8{P}J)qoYQ2qt1$CSqA z_P>^U9x}eq)B+VR=w{bAF{pkVhZ>hEpvI*tsBtL)H4Y`A#-S9{yjBl2?lidE2sQ3B zL9H)dh8kDig+=fasBvQ>)HqSZ{UD7CL;SuF|Aww{l$GagDEAkr{QecH-ToaazaK&6 z_n%Pt{Sqp_>!9-cEmVHLhstmF(Kb$&K#h|}L*@5msQjJ*mESt3{9XW+-#JkEy%H+F zw?d6u55dsxo7w+r!R~TRk65_UN3A@=p~|yARQ!XW$~DL3%c08mlFR=GRnD)V;uSsS z=?*L8dk1~l^X$Vn4|)f&w_5jE)i+A_v9{OfbLirn{hRcDrssnFEniJg`k!<8WvG1p z1BT`Nnco#vkyg_8y{44fI^j|n#tZMm*&bMSk9sQMt9;+-NhtRvRQj<>kM}eCUkzTi zRB7vdAEh-LIqvb_hjIn%SxfIIs4%BOmFpJwf7<^ePSjP3o{QiT+g{F%v{GIit_k%g6_rFm2 z|GE9J{CyV%Exzy7SZDEnJlEn6p6T)9dVaM1{jdt+$0u62Q=r^RsP_1+`xm#fA2yMA z%3D(pTW2nXvc(E08?1)X@j0v*WBO~L+>uaWkAVt18!GH2Q0;!X`@aU2Ms&WYC*3OF zr>cQ+&$yiXyR1com5c3YdiH{HU+=W3-n7D2nSW0xx0B18`~K4g;!G!8{XG`%+ho~ zum!}Gz9#NN$SsAEvvbvQWYx<`_s>9$yPrEZK#jW{>4WlDJTZo>d18S3CnM+a4wAkf zHF|67uO~vahdD0KgK8Ixpz2h_Y)+%F7mo*WS>lNvvsllxFm zUta~K<9;ZePebMLHK=*|3#h#P0F{T5Gi<&d31#m`q3pX7%C6r+&DVX-wE22R7(+f1 zYQ8=fDjy4=^6_)~Z)>ry_TLn)9$U!$4k~`LkIipD<^O%>$If*y>KcD*>6I=rdsIT{ znGR*U%c1n#3uT8tyZi~1J+^qj&QFJGxAiVx0+qkb?cc@rxBeUO%z<1XRJsG8(jDot zsC36crFSq?I>$rV|7@uGxD=`$ZiZ?b4??-vc9xG5pxmiY>0Abt&dpHzzkt%;slv+9 z4@!SIl>U)W`Y(afe-%_cw?LJ%z2_juQO1T{?fgiT<+}G zGtvFKBzlvddpsz&z~wgkPriRQm+nrK|CextoILr4qXDwo^X&-d?w1F&}|8wcNl za-Truvv+43CwGFO9Y=I!Y#hnhIGlaDAwhJXZX|jXW|7}ZPeSRK2Gtg4L6!AVs5aRE zRn~=0*-rkV!e#kq&Z|xS&6)KVrB}?Y6THoBVfo$$${h+7b_!J7nNVq60hRWRPWLiyhdWshZ0_E-a@zj#EqUBPYN+~aEBKF)#4=QmL8xc7-xkJmu8=ZB%%@#|3TEkB=uYS+PJoA2XLZU|I5c^{?EyQ1)2p{3Uw^g*IMX0Oc-r`4uQVc|0esw%Z5F zt~)}xy`kFSWT<>kg|hctmw#?Quf_A6Vy{GTmB-kpR{ocu+``YSUY~~w)877G!>q%D z+c~29dy?01j2vP2&T{2woc8wjO2^xno@Ad*Zkkhh%;xofZRfJzEaI!ZUFwt``DfXH ze^g!=kqNd*KWhHB*`w@xv(s3p_;*3s|3#?$WuV4^A6@SEgT)&H6@DwI_IV&w_#{+6 zxya>Pp~`zVRQUZiTE96Os^9zus-HXwHU7T~6|T#FtbZh-`bRyK|A_xuzqk;pKim%G zzY?lHtcS`+>__Vt+d;_(LFJ?ePjfe-BhUe97euRQTe-UAdO&8MNKuvp!Sh zb=>TGbt|BBuX3txHcNE|oI&=6eRMJ9t*NOT2EIe2;9YGg>#&vmAffd!;jbK7*|E zK6hsQHz3Qt9hv{ctbYty`UW^hIxC%3&O@9Nol~G({4lfUpu^41+d{RE8YufrhqBLn zsB{)X<$EcVo!*DC)Avx}`Xwyffl%c*8mgWA8mgV#0Tu3fD1ED-%Ci=#y>zLz_A&x0 z+yPMG&Vicue&ha6x_=s~pa0AKd(~L@onaCFM?vYC>HgP4_5Y{b|1a*p5o#PLpJ3tl zf=c&TsCn{y_rKNspMsh<-*^A--M^&P_V0FtO7}=8J-PdL8QO_lh40s$3*{ck?%(ly z@)3Exg8nUKnZD`X&An1Rlf@OWaGyB;K$|04{9P6sq3SHZi!oH>f0VZV)p@lUxoq1J z)4eQzg(a4L2~^k{q3ZwczE;04LDlDk*m2+IV*{2FB&H+$5?t{|V0+r^0L#0yUV+7Y5n3h7+&W<^@G1crB^ZB+W8Yu^1dUieK$kN5012U{Tfs|{sOAq{s6Vl z+-WQOJ!u^3_oREed=ylj6^HGxxZQR*(c59Ox5E|Q4p%u*_mh(@37fNbHeja6(j5>p zdk=$(a~G7oQ?yr&Hw{qsx)aLI4|qGa_BfXIxOKbjv7S8djY8!o?(K23x5shb9{2V3 zn1Hh3B&e}&s>@<~?NIGS{&kV_iZA~t>s`+>`2V#%)|Z-n{sQIx4rQN@q3p9;nYG7D zq0)S8Q0tUVqMRkjD9#_25vT6-J{)gJeO zigzt6f*l8$d>hnw+jp?ZUFc65XSafCj|W4w$0MNH;|WlGuO6yB-s$qAP<6J+z6SLv zS3lOy-w5TFxSSh4?cvjYevOCEuWVoc1`nUw!_Hp{U75F!1_2#t8iJVirjHONA%TR8MKbxG_wL{Q# zdZ*^{jva!IJog$Ts)Ozv<94JC3@;3Z^Ipk*yeF#HN`CjvyPgVa3xbaP?ptBD;iytL z^ySJ?J$b$IgI+vK+pCiICyfbL+9`W4Req3qG7&t>vC#EIsl}4h!t=XqRwawYi1yJ+BBB-%+3Dmr^9BR&6 z1vLh*b#@$ZN6>t}<-5ZLR*rs9X$*qWJqD`1AK>!AP-)x@mBwvQX?zKl#^Bj@y)zbS zzBt(B!=dJjyP@>A*ZccK z-v;zGkFO5XYk_jz4>Y+r-ZdzlT-;KW>7EXspiFkD;FfuKPbywxb`A#Hdb7}}_{zJe zJeA@v8w_(s*MmA=fxm39n=|+Pc>J{{t93@t;~mcXN>Bb-7kk^vI|0fa1(nuyP6HQ&#G z;q^HzLcR_v{6-jqMSn?z^YtL8vgD1;5605Bx8~iJ-RKW`Z)_QB#FD(BZQos!=un~c z|9I-60}2(lYKYaxAx_yv{$i}g>h*Of_u+)EJoXg&0VjoB@bDrde>39+lyge zpZeV!;i=4^JAQhfe*AgM-)&ItA(s_KF8bbd>CT<+V-w8IO|P1slm29S?tvR36aPR<`uo#3M{pj;=wHDm$*;=lA(Ozdzt|-r=2t z!+9388}C@?HlKGjwDVljTy)5$K|iaT7*zenp~m2`PL!vKb?OMb8uYDe0<@!^;j(W@2RUf%rJg95XyY2iyFS7X|s5QH!XtTqF%lFb^ngAYSys^EF3`vAYX zoA*M&OQG%qEQX3-a8Dw%=`OGgc@mUuPJy!JQmFToWuR>NC6p~U!a=a?-b4_GU*Bi( zI?@Nq6Q2YxpdbEsMkFkbChQGVdg z8?$2#Ys9GS8&+HVet$E&Cq6K{9}h#lL%Xu)TFRblU#?^N&>u@$_gr0PGwXl36;O4y z%BlL5ye1+moSbyqf9Qo)B%TI)A|L4K596J;QLu*Iy zOv&(|XWpR5z8`B!#?I0s76l&?USTUdf4f1+%4cJN>Dd6~5{0(@Jp;<^)!p)QEL5E0 zaQ}?8T}|tA@3NZOToq|4OatRb>T$F4*H2jeb$`-id+%xIpaFgFaoqd5eQz@=7xTX7 zfqA{#9h;|m8ZF)iH+oykXKYmaP?=;;QLeqZkbm>dmY*>TEPp#g#eeS>YhPm-pQPt9 zsCIQDRDIk7b$#>*R9Wr50Q2QjiQqnt4ZGU=nxnGbu~|-EivCt0YqJI~PZKtiTMDID z`Bpo~mLtBz(wp|Q<@fw&Ex!w)+y_wMcUWrq-WN(w>+g43-;2J))68twnpTV7Uzzll z>H8GQ9^b=IkA82#`-=PXUaatW{kQBllNof$)z7nV%b?r`Q1P$2#_abXl>Pn$TlMjd zttrLmivigyuOYr~X$wQLepujh=7ubSkg4{2T_ApLJ06+4DNf&lsq9 zd42M^r&8SJeoA-`a#@VEOHokOt2$WC(JyP4B>qyw_nox`ZVWk=UngmV%V;s z>ZQ@y1U0@ag&H?kxc_RX@S^6~wNBN8{B!H0rH_^Of>JB*8!)s#R6E_G%*MOnQ0dQx z>Q{|W>HiKY{iRUj_Iof~bM&hY=l55j=FPuDrN0hp?bM}zbvV!WfvVTs>&``99}PE} zeIJ8zZ@OGuQ4myA?j8)z8xypC!;uT%GM>#Q2E&irLX8@TThikt*0uW%3D09AQ)4*Cw8lB*KQl!Zq57-L2iX} zwR0_$9#QG6hst;0_K88|djM3vN4x)SP~k=8bG&nNb|XmWGRIlI4?5oLcL!AaTn1&o zccJut0+o+FPcZwP1eK4oq4IGNl>HV$rC*#h`#p7{*)I*{Ur0Sk-(aYAx;>Qrs-Vhk z-)|Vf_Z#9to9{OqwJ2CeIE6_@)^ZhoU#xPK<$u zWuy2;Oy0mCeDi#&V{!|>f0iOn_L?hG-a1btcd&l77|K1nqxI{zVVExa^27MfQLntn z`^-|U>#7Cl&EA&_B6>3eEdKrjP4Df4P45#h)Ehqk-1?rqX7tFVZ?f|K3(6J!#^mz; z`9XiKM|;+F=e-#AovRGGwu)B=k8kw%ud^>8xq%~jn2qbXax_lvSh7}j_4H1Hau>Or z8#Xr4@*DSc$39T*1ebHekMrK@R~Q$en0Dy*G&J*FtLpIivl#}~P*bfarXP6e3@Exn>&TRzI5#*5RSbe;(n=bunIzlPG;;UXJ1#zVU zH_ke-4<-Lnj;d<4ZE}f!TR%NN(i-2M6>5D)*eue|9BTbdeu~5U z)$EZ}+Php;AImvkajKOg3FU5b*~-y5NF#4?S|WJ7`i1cNI4W=Mw|_0@RhyS<@pk_4 z3e&&k>z1CqOSU)Hvn5>5_6myLvbSg{U!})*yPMe<>R91a{i}>()-`pua&Ohe?En>K zI#fGoaQ}r+?O~~(e+jC7KXloi4{rZ=pjDoq^ktjg<7)WU%5&j&R=)itktjV9Z5Qhty;p*nboqviMP zywKm_=irnw`=~{}sHtlEiQoX;`(+^Pf)8_#5 zFNJc$p#1lA|L}W=>Nl0Fl3Ef$LdS7WkUqT`e|;mctv`_?;q1D&N4wX>OT1oVzW+1^ zR_tl{Sq$ZtK;`E>mp}0H#e?;pXP)=8_YkMDWzBfKq^nHNlD$mNxs+deu5&x&b?{)NZ2oH_t3KASy4kfl7|OBcajUbaTs*j2 zFqq%M_vg1EMQ?>q9jCKxC;wRMU-i1SeazaySSVNJ_Xlje`03lB;rk^jJYJmfSgry# z&$jsALAi4ok5$eUJ}!sti~Ye^Ln7FnBUQC5Y&%goI<`(E4Y>**U-yP`i(IyS;esH) zrgdMqo;YdW2ONEb*?T-xd(UGnQCYVI&kgWSi&~yPsN@?>e9bTKpu*rFo+W7S8-L-q z|5%%}`|UsaXT`SMf9L3Ul+{feS#`rcXvM+RK`lqvR>Nmw^j(-Pq2G=8SA}sk_IJ(k zUDkWC2I|`| z{+{Y=KT8o$^;>c0ZDII|FD(8IQ0_yQi}mcul%k-Vd3OMN9sZrwa2G`5=mOUh^EI#H zN^f?Ki4C=ObRv|SHq7Rc3!uW~&*_-%(9E97pu%7f<9Hd*xs=rDITyaAN?Xt# zOH+O|@6fLfDvq``(?<3-lQ^h4NO9!08TmcVQ5VLwHq+LR=OEjJp`MZDCtaJHr<*Ce z+Js!f=jHw1F#BBwRlaC@TTA$6Uk|+n<%)d&adT6VC?}^DQ`gexN95;+pLTjffXkJfcxl5%F9##kMX zqes`di+pdsiM9GT?37`oh4!7aHEPU*+XbvKKEm4NCuPs4~uj z(z_5Ue~Y2=^8(cUq_?21XZ`{6;RYyM6!2_{o(mcT<*?TlYts#v+4-lST>mRf zE*_H4Zxsvp7GK+ImysT?X{v==3+29dIj?uep!d4)`MZkp0p0jM8}s>^?m^FGJ-F{s z6y(?PuAqk#!8DHL$6LFM%Hj9Z>C1e}wWUX=LFF$x&Mzk~O+K!_KJOffbW?)PIOj){bb8mk}wntF4Pa-&lBfKXO&*!_Xd@3uBhOa#wyWWU?mM%H&*^*yD!Le~F@U=ByBkZZW`z6jr1 zqJQffQ1ZWzqjs{TpDVYC8?Kpp1j&69!4({vE0fMOax8M4xpJHMIc2IkIuRVlku6gj zIZ~$NUWs5jM|)+G|4ketPqH%Q%5CC$nd5eF9j+6W_;^E<&^3Cz zA+?tNZcyXI-=Wg~5la8yBTRoe)cLKT#@_>>&Y$Y%i?{0@Y*$wvjG8i-_e>08+$?RK zCrCnTwT#=X!S{?7Lg`%Ol)WTB9+43@*_&+7u4&Il&5>4~X;8YBK$T|&RDM5q|NNt@ z90Q={k=>xeKMb`ldL3%L@&%NAzw-0nLakr=Fox;;j!@@w*DGtM*!Uj1ant!J_A7pu z;r@2LyXkX^;|L?YsbRKvGY^LDS<_bq<&Jatd8qvNTx#dTF_U>G`whAT{*yV<2XRkM z_Zb+|JMr#L`Q66Rc#4fXxpFjKal8xfz}ugBY+s%$+B?WkS-mDbuZum8jWGV4<>Npo zHwP+zFSxAdcZOAtWS?nJyYtyxbbd&9*`TqK-GH+ zs@|`H(q;4d>9o&eyXiKO?m8kWY}HV+z0#ID1X(&KLg}0W)fZAuSoKw{ZMYf0;`9kZn5%AgK{@Q z^{;oJ%JmhLt^;nh@|*-!9(!M7-=No9n?9!$oNRrg5xdJRhGAcKS$?VqIq4E*yJehL z+G(h?S36Y>$x$kNwtS+VRS>05tbfq*`3#hM8!8XMLsn12q0%}PO7|5|<@__$b)EmTd;K= z-(qd&_uwPljxBDtjZixC>Ay;&1j>$ar^+pVxv;EIX-HPtw<=$_dMcTTz*7%g2KN7uiH@W^|*1MzgwhH1cgE9ls{hCWteUp7E zdWUm*qt{=P_s^wJc~}l*!?zRkz}_H-c| zUeD&r$tD@{rRSVKhx+#L2B>FpJJSC2jBd;+n@b)LkriJ4iZ4o^n9YYclJHqs<IaFR(Lp@hq+E^Vv zSG+xx|L>umFJ1@rd~v~D=D!zI{Da{jcnlm2Pla(f7pjcUz;gIDRDQbLT^&AuJQxl| z9tY*W4^;T^Fb1c%|08f1avI78qnM9|!(E_ka19&@7y3L^wzIx(w;k)rZCOulv&s84 z)o+&5{<6>5)?;(Ic~03jYh(GReV&RhGW%``W#7S!o67gLQ2E{;Dqik-s)e+&PVsci zP1$|Bi9fs%o~oeF>Yk=t%af+3j(#O~h4(Lok&E8flU#q#s-)2$pm(H*vz zaQ(CS`y=^N?fyvmL<>J{vgtV%y-MO7*Pqw5Q_yvC_+^zuhYIf5>slMz$FHsC+0*J^ z)pV_sv0Sd7hikcx-_|v>4HxyZ{qMd(?9olvH5KGhWeE$M^C#;s)^}PM&MEVp(Y_W9 zCl&Q)S$RK!nuorDnn%+qTUUGzwLa;5wuLJ$=bljIP`Nr#W#1`ox9qr+{zrB29mmvLUJd7)sQkZt zLu2G=_N|YqcdeY|fAM@m<#RWv@?Qq!UUS)=^C{prf!q)0Ua5bRH>3Lo33R4DwRp`? z?k$(w+vlG}_{3TZ{|=Pv`-$f#ymyu#)PKxx7dUeFQ02FVW68PR&)IWq>&H7b+k~Mn zAj>b*bztYfktzV=Y@2B;ChHku{LHA^75xzI!wYRUjZKST$9-4n`*Z7&2teytGZ1q+Jbw12nEzckQlizA{ z=M%5yuE?qc@+d>^$!?XdK8Ylj(MAGSd0LG1?5sNn%+mD+>=o8pMlCxSK77W_lAmJ1{HrcR6bvaVZL&nlO9jLrMaaP224~ zrZ^K_*EJKr;@_rscPMwb%X#`eJ$<^*8206xdnE0B13a@>r{|b>HoZ?xFq|WQwvACy zIj<}~C?nl6(p8_~H_j=0hP7MJdAfb`cdeJd@m$OQN+|b{%emLnv1xWaT{Ygq{|m~E zJ<#nHd9HpOVH4k2xsHQ!XSp1;Ym#s=x9eyqSL1SS`g1+~iiD;25tJKR?dj({_ub^- zoA?ycKCg&(a#VH=ipCTq?A=j355;p)sbgz` zr#TY8wsJ*f{pKRhUPFwvYIK|p&S0GNd;~f92#&P$Dvz>!+&)~`S9tc z?_sF$t6gsIIn`O7=lF2TQw7wRT?I8}C!o?w!ltinocJ2beFGKt-%w%y0~I!JosI9O zLZx54Wnr*oT`_y^F`iA~`h{mjy3e=YPlW3q&qKoPGs*2!F~jn|7|K2Ca+f-@Pai1# z(Q#@yx+=c2boYjG!#9|mJ5IF_b~@)X2b-Q-53zLKgQ4EYI9YlozYp+n@e3a(f6R`P z+wdL_o*(YV^TR#X*-yaV*{hb*PL;X49;8YJEKfunv4dr_II36u$ z17Xwatz3DYpI)Ayu-`D3v^-oBjQ$*7D>o|gS`VBL+xQQQa zAsQy^Bi)0F>uZAdIr0na8N{fZH?U(c@GaiG+T1%?-m@dWUsB&L3>xOw1b^iyy@Y_3=1en_{ z^Uvb`me>0=-VW|`+13%Qzc;HOtX%Sb({nYHyTj#ZxhE1fcf4LmB z*IL5H-9Fp6z4mlD?5A8e_vE@+zvMi_NfzFrt~ zj-|H^RC*^utzS|uKL_PjxcncebxomPZyf+>iNTRB+xscn-jn5{U7_v@>a_lMmd;mD z?!PYoQaMMuj)b?5NzSR+cG6^efB%T-eIBYj4?Sw-dj?8=1FC#~b2(4nt9;boo7G&v z9If9NbG=&2Z-tn*svfHe9^qJWmGzCNoY%Kg(D$YAjp~UQb8lX8eo$Ol6cpEVZwY5) zexn!myEQyRxws~n$kFj??|1Y8$>(#F%8xwd%F#G^eL4nx))l3CB)ccd3pxe`%Zj+? zR}$3c*95=eNJ@v^p}Mk1DBp|UH2Ep)`of?i&oImHA&yHuy&Z5S=5h3Kx~5aew-a;q=xShAXac&phGn3Ke1d z$TEAKnw)3t=CSLn-Mj+Tj_mo{;oRRE5Sh26)#k2Q=zYs|rhTqo?Q_3$H+C{T>!DnJ z7i*`-LAl+j3$@c)sPybzu(6=$^l%p@)ir6~dT;dnr?@7On+-KC&U1MoRDWFz)lZi~ z-Di3e>ORxoq3(x$1(|_@AEEB+6^*dx{f9u^*V_SVpI|)HKEbh2dd`G;zT{#UgEzur z_*>W$J_GeWuGgXV{4-GR4mD(5p$<$MvUobN%EGoR}fm9q${oPD6)JN7%jjwu_| z{`(M@Q{QqaUuWOv_umG8Z}!*$s=e$D<%)hV`)mp2zbBNdae0!mr#BNzeTP~=c95oj=is~B#75?ZBxl_AR_y>TFb5n*Yw=5pM`%LhI-q155QF71b%%{;ny2`XRkLR_nRBe z<+^c+>De2~9qn@Na~(?vD_8I5@AB|}fGY1_v+*MOGsJ0r()7OtBMVXYI-I-XL@dcvRCvvU?O2#JU{>O{1th6x%E)* zdYfI(xzC&4Ct$ALMTCvJo^3qedu~Q=+Vy5!&#f<*-uGax-VKCJxSr!&?^!O}yW9r0 z`!2WmEL-O#M%kD>3Cf03ow9S*DNX&awq3`0jnVZ^&5x4jA#03Y;FQ0{=@kOO0 z%8AmSmF1WIgO#)P6)Sf=RGhg`I)?wTCQNe%)I3qXoclR&6jWaR1eKSMq2`Nc{!|m@ zrR=quaK0D`b-rRnO*n5H0yS@(1~qS70yS^k0X1(t1(iozM|BPwpJiO-h~K+B92cXq zUF&z_nu&WvHJ!uj*70uZdSCxGK$YhnsPa4sHBP(=H6N~qny3Y7kHq4Zw}WuHr->~}9z`E&bc zigL-dc)#oNw55LxRQf5GABBp)!sXaAmalD~+yPMM!+mYmq`g_I_U4*1+}DolH%uLa z(mH-$TWjx#NK+pxIl}wgnh&PrhjOpiYl6kUvAIg;qjH-#TKi5V-g;VSb4{=f$EriQ zuim9|&}Ahh=3J0_P8p4a&C{GuxFY7zBIeMdnu3&lXS9s(jPef8N}hkt>uK-PWu2*c zCU$}KxhAi-rBHTS4pmPpok~jnQ78LIRy}42C#ugVo~ZEIJ|rr9R<3y4?E4UudkiZ4 z8&L7zhthY_N~`~~q3ZuZDF5F>wS(nQefmSFb=MD2>#mY_On*3^P45uy$yQO;)PKzX z5h(Y9%X#^ELH=ack>PV++iv!`_o?W}?$xx6wzj^}87*VQCzj5QQ0}l#t$dGvX61Vg zsvI9d*`;i^f?!nTf&7kOk9MyI8c6p;45YBJZ7kgZP&OM0WwT1B^6_)FCumUdg{6B9 zlxu{F)BP*UUnx}n_W0WR=R~OfIUTBhUIo=Z?}p0L&%L8_iMO$|+i7*gUfH%H9m==H z0x|Iq)B7%z`v59`#cM5pr$Xg#7F3+qq4KvHN>})vlj-b>=shPqc~>6m7{t~T2l-t8 z#rsYO>Npa&(l5ilS`^Ap;FpvidUU>3CYQwBB;GPC@FDlyIF>!b^G(Ne4vwMU^<2+y z4tbtW{{1@fqXoOa)-JNLy3xi9w9dsBY8 zFP1;s#>4uu31Rr{`%gd{>q97eE`*`I4(Jvfux5*(Cu`fDwVi^VmE2ow;n|b$cQwNp zHzND9sn+Y%3iQ8(9_gsswsnuT`5Vh$zi&Oi-&y@#0~OZp-wx*f?I7;o4n%*SNV}(f zvgb1q-FIho)3y~)Z9^`dZ}}eC)yi{sH!IIGP~pl8c^-p%lbt9}yyt{q7mii;*}G+< za<0AWNmKStZm@jz!tQbt-2S=m#9HL`P5o%$?|^cTyPP++8{ete^mzz-mnhddwLH_X zt|qvHqy8AKb%-04^9nobxso(@wUc2x4)=QWdn^5}mG=v+uL;iLD81d*p)e$Ik&)B0GwT>urn-S4lUEB;@z?>SKJ1($8S9Dk1~rBq0yTzBf*Ql7L5;Dqp~l$jpw>WlL(PFtz}Vl-9>+tu=}@}Qh0=XKl3#)DclV5q-z8AG`$Op-0;PK^sCo5LsJw^cV}ZNJ5B+QNE6Zlg2vH_Pu2P;TG{W{+c` z%8{$5+0#w=`KzJa!yfNn?r+Z@6>#5B&tKA4|F0$}<7nEJec*8JVDAxm9LIu2>w~#+ zG>)~`&Ht`$E&0l>FB0B9r$N>2tVnyUD6n?-Cn)!+%exg?d)(}kh^ zhje3(YCnDx@#BLnTr-sGUvBYtg<<@5zRR?Vcnw4B{O3?^;m`?Tdw&XAz4KfXb7Ki@ zNZ)kQnm4$JeLdIvER>r-eD#wvU0+zYwY-OL_=Mp45fg&d75r|3^HDkPi2UG)I@Z~Y zo#C@aH3i9EoG(fHCG;q7+4&MNl(W6 zi=wi%`EZ{sEcZmxR@@k4a>Fpwvl_~6x24-F&UY|)wqyYJ&r7*ao_+t7>{d_wMo<48 zDECjO_SIuslZ&C!___BQF7kXN$cNk{Smp7~aXnW+>HVF{kNElGVf@Z_D&Gd-dS(Fc zQYqy<>IM2HLCUUY(&(0pZD;wo1zXFN=MdPO@~e#SwCp9+X;j)pQQW6Xhqm55F8aR%P*qK)Ib=ZqHsV+4Ar{`_%3hZ!MJDWe=0>y@$+)E1A2N zZ4sm=ObGtU5k3cAnje&|$>W_|Ja_Nc_d3_Pc0!Q4-^Tb{xlMfCxmizQ=m^jspg%xY zfG)i^G8)#d`(Ea{Z%JhR+q%9ky_jbYX?U_(3+0j92xZg!3R_2%K-n-3HHM9Ls{Z7k zCI4F6#$WN}FDGX2izyw+Eqj}tezT9+?LMeD&q38=8cO%o2U!1j1gd{5gIc@%&HcxY zpAfDy4uuL|bl`+=oiPGxov|NO+P6YozdrzV{r(hGUY>@E_nFH-ebdnP;!=7OyT+y} z?4TaF5&IyLMV4VlzsjV zmEOlt>3s>6Ugtf{F8!g>84IQVC@4EjbNMiXHezY@hGp)5`F_y+4_800zGo|e*PXP_m^z=oc)B6m)P9W zoHTtiPPFikLA4jVuIe7Hfi$|P&m@SWbM?HNul`gE_eUuASC`uxUuO}oagv3970PXY zoXNJXY<+iNBVj{#f}O8|a&=JUzry83Q2pjvm*0Y6zC*hd2A${I^ZUzPU;Pw2Kj2rU zuL4S64GiPyd7)*+e7h*dyPk_^2R(Q%cw3qJ}f{OM5R$%Ke_pA3~M41NEqU^@AD@cYzuYkMa7oH7xI)@qLRbFK@kGDe=La5d;VYran;X8t(`m@2m1C+nV=bu=d-MwO^dEv1g4v zU!nfBL}_|I+12~W87}ATogeH?e=lNRyr`D@^}1Ideiw+n;Q5-o~#f2tqZ zU-gt_SU~^Nc&3%>w6m<7pQWt6_B-3`T?304JsQP>XhISd;h41{t=|6+R zZ}D~XeS`eVEkE%AZGWd4pKbBpf^r|Yybda#JuY;;?R>|y!gW?{Z)4{nFmZ;3Uj*e| zfYMXwTdeEsG_%FjP{Xi-%{S>pOt01S%lYIf2lKiUj9)z~X zK*hTn<|E$%)jxj+rT+)0e%i_Hn|nWD5w??ydp+#~<&rMjb@FiT`?ml5Q*eddx2w9s z@^LeiyLYaY_j#!N*?S6#gRYOZzT0^uadoa4yNe&f_~jPK|Lu{`9TNc%c5Fd)Eo_u#R+;ete9z=h053 zFMm;KkHcS7dyo@#J}b+w#mhVPO3Qy0RGizO>iH|E@wLlU);@+o)$8t1y7Erx9Gs%} zLNn&@t>l!wD`7XTJKBFA6zK4nvyU5%7#a6y|pvw0JRQu1T4phFOPQV5B&UzQ0^ue+S27$p~}75<$u92 zzj{u^_b+FmtK~XRr@{361zNdyzLWW<>vUV&E%J0*{QRKnE&S*6J$(PpLH|15f6ShC z*ZCGFO&sY;dOMva-eBQ(gmV3EvV4z)a=XJY{hW2$22Vff=dbthi=fKA(d90`X+Qt* zE8T8>{xB#PU*O>*b{S9DD)&DX%3az{xD??U-Tze&cf>8GPv4szR@sm5hx`6`s`VOt z0r9Rvr^;FHwwdQ_^!VRFxjk;T^1TM--hr+5Y5g5)vzIS+hn>F~%029Ibl*C-ir*)> z|Gz!l_IGY-hmnL!xc_-j?z3#T@I5kZzm1$AeC8w5(`Su^-x?~v(fcp62v_w_Pj5s4 z&*7KyJV9TcC+M@u^8}5Am8F#bv? zmx0R9=TP~%y+du7k0+t>@g`LIYhhS_@y*{CZ6S^Ne_8%It+(ZbS)P!w!~i8p^GP()TG;es|c>@_XM-mfz>0{NILQzM;m+ zym7VR_}3r)FZrk<9}3qv*2etBQ0Xp#(!b29Fr;&c6b}geE=2y z3n)E%erxUE6e#=GL-{`hRi2el<@v(>>%X&c{U(@?|L>s2{pC>UhHZlW+-KdUYw4+8 z#`umtFGJ;J98{Y7I+gd$m8tP$v*%x-+&`eg?r@6L!$VN*`faH4eD3};rds{Xg9?8S zRJoQw%~Nl|F#qBA^QwZOc{{fIyRZf?L#oosFx!cWFus^|(wF^T+?=fZ%tepp%^RWC zhmBC{!NpMb<(5D_m$nS*xwJHl!PQXDrLA?!cJdb$F3a_t*YnK54#up%D7~W65tXi} ze2B`IILMi;n|MSnL~qs~@6ct-EB{i?4~N6x2w35iUdg*5Zw<%8QLxsj^V=YcIxlYL zR6NPsJEdQ8G#`?c4^b{N)av<=Vb*@8K!snuWo=l_Poc`a9?A~E@Y>KW`;Dj#?KA<( zuCHuW8`}9RDEmLZb#2fSu7kZ`@hI~@36>zwhI+32R;c*#(Y0ZHybtw!d9Y1w_cKbbLKOko->~ZRZsUry@&1vsQ1vl4^=-qY+D@l>a4A_PZO(t{p0BgOTv??Q6sDUjGWp|2?RB_#0F`{U00+o5s|J^;A5z zHrN(94pmPxAyYy;no1wzp9l>p%Zz4LBP6Pc@ zZlP2COZkZQH;unpc@g1c&&QqemmS4uxMt3)|E+N9e0E%lhFisXjdN?D`d~uF&xnG28Ki@)?`-rOAaNe8(74K=NadtUWyme4^DBjD)q5Yxka39oo{Ww&- zu6x@!Q3@4rBvg4Spvrk7RQYd!vd7b~1lI0jw}&7Rjmjq7(n+4EZ{dv-d>^c@2=?w$&z z?>s1bUJPZ=C!p+^hO*~LQ_P-sK#lJ`e`WS8hqC8hQ1-kFYFuxEvS(M;EwX2+uV2o9 z8qa4#rCYoe<4PXym22shDNYwPcTW{23o5#W{dkf0!RDQ<53Yc+#VV*axdzI1El{@G z2xYtcU91n5IMvqGHsi>$)o3VNje}}?`#Kda+Xr=CvTP(Oo|x@Z(kEHziE3-2@*!sX zpz!;jVC`oZl#Q-|YCj91Z1gQu`{`V3?dMle?WYdPM(;qa1J*#Mo4dJTTTOevkC#}wlcC)5-c~QAeXL$aK;=vKg}3JVq2Ibqe~-Pv+kIl3wfjj> zbvxA=Z713GCY@P-rCZV0(zzeXJqM-ZQ>gZFeyO#O8=(AWlvz9Z15`U%3Dr*4!!W-i zx&poZYoN;U)PdIC--Rk)?ZMXWFFnNC z`%Z^idp{hiKct}A{XD34{|QvP-vBj^meRjMyM*6w-+Z}JUanX_3x67v%j<9DITNZp z*Fw2&1FSrQp~|x-lsjjj<+}+gfAxbb-*-Zl=jy?h|J6|W{us)|lUKSGT|y}!5X z?j51ri9gtNcN0{3&fjR)*SA2GXU>1@{^}~I@_Y#8M*P?I4{Cq3=Qs)jE6*^fdfFMP zJV!y5XC@5GqyEP4EQhd9TQWWDbIslOm9pAzv)b=C3pXFijoR7jXMfn*{!3{8e6!Ym zkN;EqUrYRyhkFUiUAv3Le*pec`mt;Iec((B*L#-5KMl&Bm%%W;z6ZlTb18dKCG17z z&$nj{#}QYqepd^(1j!9lWL8$)u2dMVF7OEX|KG)j8u~75UX;AB$Ij|ROge7n( zl%1@cW7{of6Xl%aT^P2TVTHjk-jfusEot|6#H+mh#I~^TheNrWq3rQ8ls!Ih z|NA)$TYGTxV@t`qD)few&!-e-O&9Pe9qVq?g%sDwJJkLfQ2lD7&tK zvTH}5pKX6?Kpyu?^K!5Mw7)izwCA88Q)uaa+}+Z>vxk*yGWk)tWGX$6=M<=P&Vov322?t~hDv81R5~|6 zrE?clI*Xv}{5VuO+Iw!U#mksopZ)(~z3-1KgmUje<^L;}w_a=IsDg5np~^GMEv~UkV zxh;La;-}w9@vM8So_lc|_N{EJ&hMw%`ca>eFnO^KdR8S>-kbNl@|&V!=Dz~kP)FKO z^Le#Fn&a_5vu@XKnAUd=@_9!>$Cde^|60y1)j8EJ{tDabhb8a}(Ah?h!fxV6Ta2WY z7o!~W3p4)R%!=~-4!qyGXOLk$>)WX|82^@ETdeFF%H{Y?%=)d*=enadsOOj_KkSq% zOUF-fI3Lw(?;P*WJIC$4)Ftf4vUi(N9aO0f6dwDjzV^G=#+8Lo?c^~S*5lA_JhRrm zj;ZKqTwvik-D2@4LB*c|e<^+g@mp@Qa7Qe(_=}<9zYKpV{u1KHp0aS~K)DrA@jr6^ z@LjNXcS(is5*)byJk)`@4GGS}Af-Gka-`PXb`vgk=9bcF{>Ps63_JxXPzX#fd`KbNx za8{7!bQHv9TfQ%ca<@R~U3ihrM~^{`C$B^44Sy#wCC+#-nDJl`&!+UV-+ib2{waDD zF2nsvx%ww8-kwjI{v_0STW=lFu086}F<*l-F5~Uz>f0^;9Z>mu4k}2G`z(K>p~ks= zp~kmkpwbDi_xa6i#aBF^%aQ#iNmOp{nZmH+&mY@RKFs^2)2{YFFCZ=6%@PyV99i7L0K`A?KSQR`JvPSko; zR5`Q$RrgrAZ-H{7?=^c?Lh0QNDxD{x(j9-FUl&5nQ%Buz^V3;S`FtH}Uj7m)eE;9t z{Jbkv{_cWWPd7p3um2*ue%u-=f7d{*rx!x4re$eu_0V>~P94ucTFNC-)X5IV#OAq+wYBO!!wgd81b4k6_Dzu$YU zVd^C3JkRg{`#=BvJb79ByZ74b@>y%I?`6KF5HC?skGY;<`W!1_?wyDCH?@MU^zlFxd;>SXH zR-)zm488vTPlkFNjJE5`Xg$6`k8AW)Y^M&}|Gk{`RsDZT_}uMyO!_}M70s^%E!WJb zap3+c`QIe1RdG=@Pgq`$t3FQ@y%5TG>x-cto6z%iUJ>eXHk$vdFNOBl<(1GLXRZwG zaRb^vkE6#8c`b~SThMWTFM7S7&~Z}#_1GS+Ay`+oiLa~hcL2%#yynpk4(-qyEk~O@_+E*xfBn1LLca^Z=fM+a zhrj!1IzBHsZun7ooXztJ^!nFfa()lKyS7H_ZQjRA$>Vm8^|;LVns&GNT6X_!yr%7O z#z*ySenq&CfBCm?|NkDneyvZ!{r`n^;r{;-8kd{U@sj>&TxYc8bB?oWX8rn^uFT*6 zywy_5Tlq#fZ|bUWy%O|#x1;4t|AWt4Rgj0r74kl<+hp|oVzj@eN3Ey(tLm$sSC!_W zWXow4+W8uEy9GV(9yGs=Xn&uWk(boJ1l@l<+79=k^XPNvIQam*PV#rxeKJz5R`G2d z6^+XqCa;Qy?`}-HK8yhl=M8~S@4e718@>K0^g3t1725wQwEY*N*L@a~>$I=WXXjd_ znyuRMSGt`0vbavg!J$0O4hi*Zhvt74n*W8vL;dEW`yWNG^D26s&oQ}9^0}t{_*_$; zE#Fg&_kaSf<#8o34rfNmBH6E1o5xlCzy4m@^2{M0=eGrztTWJYwhWzbR-pIg)#y5- z0=+M9h}z%ouX0m7&UDrK$$U&#&6{4wbk)52d+#Y)zS_JusvcjpRn^D+O?kW{w!==? zCF=2}`;guhvvD^Z5%uxiNvn@**Qn>2?jALN)78si+Hz?1t)f=w&k?mlJWN2(d$&$r zQr|Do`hSDA$1iC64A>zrX|JJZdp=(;FKOqm(AP)P8{{RgkM4oZNgsk9_d2$~ISuoY z_qQKJ_rHt2UivlqdTE13;W}N>*G-3D8$23q|A*1{E0?41SGH-Km%Lxu1ug#&Y>%Jf z&X{Tv_BTb_rw7_@*JEdVvuR%P`)=C z=Ov$8nt=Ah6Syb7jOO=fi@fCXOD|&<=`YZ7ZpNP2u4P{GIi`VVKW*=GNhNV?6~^Zn zljC!Y;%HUhPp_8d5=l%{#ej2@$CZx=*XuAc^#6^cLb?8WXqXSq$qDnpEVR7MM~C@f zB|0B`ithgro%foL3HfB9*SG{-N6yBiUfcP6(?aLLSe{HnD-1y8y+pk;H-!74f8DYNhxYjx-I^T`;^#y(e$GPcKOe3CGidvMht@xDNQj>aXxu%9 z#?cD&ysy#vHa{@LQy(;rPC?t_RWyFqqV3W5pb$Sp(EM&f=ktYVeoN7Mm7(?h2CaYN zp&@?eqw(`T+CF23h4?uJy$@W7w$I0C{8Xatb1>@|%hC3lgT~We(e~P9uh3q7(D8OF+Fpy$_Nv=2v{x&% zz0O42YdYFapQ4}d*@)gJ^ZJMT_65R>AkW7u71{JN*2fvW?-hLWNm*snhw_qS|ML zOwZt7XZKNtt<%-diFsGX-);?gSA7oY=)BZ&{%!F&B+~EmuO#N}3`gZF1Ck%&mB<^mNjevoz{)rstA&{49)C?XSv59XD#ds`eMf`^C%XmfIza-)GSF z`WW4g*gcHnB6J*=qTBs@gz;RfYZ$lhpyT;Fv|ML&599idJ;Qh&*CUMQ)6nvkqT_lI zTE2S3t@C0AIa56tIkvBpQ`j` z9=DunJnyM$Pm=%9uI_Vd`eTTXlhLilPa!@|McemkbgREP#O2Ot`|gi!XZ#%E@&UBH zO8y<*H@^)n=as*N_s`d&?f4nG?VJkj*{?=u&-G|~)~FfwH%I5ouIT+`I4149ozGJh z(#B2Kg!-IAg^&z0vv{j&7H}AIkkYTA!QOhWb2)*5|$tLVbQl z>$Ag$;k;pJd!P7G_&vrgfHG}$8wh8qfv}1_p_tEkD z9VX`|r zimz+6VBU2*87==Mn4I6OVXE7N=BX~c_uHBG!!u@W`JGo?$iuBHuIJkv5%PHs&F4e> zqjKbsM`6ow+!A!F-zuEH3;xmh#g-xVLoT}Ai(dcvxIg`OK36tBmcJyn*Q4k*d8csx zWtd$5cg|lC&z~QUdk5W0xEFiwz(dae@ zJ?}oWo?q+}`mgnX(0{w3_3Vk(^Hj8a=b`1j3@!h4Xnp>S*7GlD{~ehf`tK~X|E@** z?_M+bu|b@y}V^OTR#b@$I`KZfrc{_XpZ zvgu>Dvd_Xi`vtlU`aI0P<1sle`CMSN&jVHaP8na*ofz}Uj<3I8h;Gx#&vv{%<{w^9 z+ViJviz7afbtQAD<uCFNDB6#AqW!o8lXyk*{G-nkE_LjXfyZW2PPcAR%j14sydmWG@IOMiPWvjf zS1-zG+>JozrITa%fA8~#6|wCq;^zi7pzXdX>b2aoYQC!~Lsi?Eu1y)OchhLqc||b} z2Con09EIkekCwCL-$OaG(EP7O+jTyg|Bq<9*84Klw+nim!D##D(hj!oRP^}Sv0b+J z`Ng!GSvSP@XGXsn%5?!+uD8%~twZaTzKzc>W^sPWYvJ(^(CuF_9e(HF_rI5*fOE|^ z=fc~P^TwmswY_v=wX_Gg-{Y&=v+3*Mx<%;r7xcV0(QnoVl4{hIX z(e`Q?-@p2!&xMpwZnx~m!u4-Lx2}(ee0!tUAArW)!{~K~J`t{WA$q-W%R+yihL+=1 zv_HQ>k8k^A=+^<5%zxr)Yr-{#^n&(QjecrMiE2(&)W zqW9xB(E1Em9_n)lTA!0Ksm~vL9-}| z&w=Q8I|{AG*=YGoF)7D?@%f2OF~&>dbG*4|85W{tSb~>*@o*P~b^{KB(Vza6Ni__0NG7 zkw;NH{vvdH1Z}&Q;{L6_%XbdvOyTj;(?fp4riAk@!zBMkHBz;Y4WHR5a)!8IKzg%W-rpNBG^a*0e_}+N0$bpH;Cvn$8XFk=i%h!x~1n?$g5a zLwN>Y5Xy5j+JC2^CtoszJw>VR&2(c=%qq`v*?rFNZgH-Eo#SE^-=`KcW$ z_zRRA{?3ihDD!$D8fO>SM9-UIH_-?XaKXE}_ zY~RAzzKdgdmPJ>h*Ig5}y-imiQzVnL*WbE7%Hs9=ofYa+g4U-T&F4$BKEK3tt+T_r zwi((^9nj-eqV;?ay-wfau)ZCF$$cA>dh&a-JJo2r&EMggQ58e6ZVl10WW>64u2x6) zSFfXan=XsvtawtW&!5m^pGV7CFges`0OQB`dN^8-Bhd06kCy*5Ov?M~_h7b2ZTT0O zpM5ZyLRi}8Y<*X~bYfAV>;K6O($q@Uv7;-B~}CQH86 zzUt$54Q0rQN>c^#S<@JxazgIl&;FwPD+K|u5HRE$~e0M3YTeSY|_kfeX zW9`DZmb3C-xBXf_>rol!%dBHV`5!$YwD$|>@kxCq)=HH;mzTPif5T1+-+x;@y{+#$ z>+)W>Ugmyb+-60KZV36_gl@N@{rhFyU!!r|RAasqvvDtef3bq!vGx1=r`Ag~ULJm{ zy6B<2)E)dQukmd1TKyL3HvG0b-`QLJx2?;c&SOo$bER$kw)K{eF=nbCoBSPdTB_)o zJU;W67rx)y_Yo%eJCi#k`&P5Rpr+-Zf7$PGzwKj=-zr@_ukiXzL*CzLz~BAx8!GWP z26AXOx5}Gh{5G%YcbH~5hZOVJ;_Jfxx6$p3m`?gBH!W3CmX}(S`gA(AHO0VpL1t;yzX7$_yf^6 ztC3ba`P;|jw`y#AzK^8nWu8;Nl9yUxnbT{h(l_!Oyz81I`*vji>ZC5bcE%IZ*rcxrX0$C*Tg5FYse|_IP-0~Jhaaubo(4F+mC43>OLRl z!x3mYAAP(K-OfVGd>dNk#ppcwT}-E52#?oCxAy4#*&VIh18AL=q4$AxF}(p@AE#an z$JIyAYZKFb(K-)C>sbG#@VZAww2s};*FDaS>5JmyGtuK)()Yd|(izQnAX=UdN2R5X z;(fux`0m^KQ|mGo(^5G%=B0A^SANLKFc#Ur%!Ko3;nK}s_%Wx zct6ZpRsEUGoMl^%h`PVx=1`88ZVB!DDcbJeqxabcb3;4sjFvaOeZ5r6+tVwXR5U7Y zP*$%ft#F4N|Hj4foW0fcO1Vzf-Qm2)?g{z7hDkpDeGg@BOPL$_`(zdTK3P%CU#WAjoIPNmxOj1{%~mjrD*%t zdnB}fCb}Jr)_D=y4^N=id^YZH|7hr!?&$vW(6Uvc{ZoHwNDoKbmM@h{NVu``|u=^^Or*+-%6@)t}#e~H$ATYuA4LTqKu3XdO* zZYQAaeFYltAH~PhJEigWk`4G90Y2Z(=Sv!l*&+G+fQ50KHYJAKDq~#txgq2?8k6g9 z<9DgcIk%)VJiZv+K8)$=>-bF^m%1?=*9_fuL(92;+#lA|eC~z&Th({iXMVsue{DD~ z8{LkN>GX^msix0{`^qqmn;-Xo6_2YG>m9x~$KL>?*RQ0n_*c~M;Zz5IACR?k^4-;} zN8R6-e_4&f9JqCQi*x;3*{RJ_MHl9!ZsA|{WbeZ~XR4O2u~QwMH}bbhMJ)?kc~&+Hj_sbl!JqDfU<(^3uS``X-7-G2f9G8>1wZk^uZ+?M<%0JFWJ&9Qhl0*86p6-=dPdR5Aa`@|T3R zs+LaQ;vU-QKklJ(sB2&xW!k;<1EVre$O{I{+{pGTfQE)KDJ}w z#o_o{(5)$blU%1o%~ZpO(vs&P6D#=rw2#Im`|n4$zr}Rb`lIaQaj6RaZT&pNeO>-G zE>+sZwq``~{AA00ssBh<&#U@4Dy1BmuZQyWLbrosdRz0uQjWJSC9JP?COYQkqI1Io z=v?zGItRan-V4{GbKy@|zA{{|&a2^iJED2@MDrSt=Jht3*RHRH`TQ(2uh-DL)}r%v zqgdW;eZN2j<;{tYPmA@t1HH~;F}+iH?4SSQb>6g(L;X{Sgt@IDnpXx|=FVuDv(Wkv zM9VxZ>iy0A)$enjXWD$!O>Gm+>6)MXf17Uk$zvVRV|Pc-ozOi$x#m@9-q)koycKPy zPtkVzH+o-dy=Q)MU&})8^#`N(v18Hu*m>yvWHwrc^gSB#T3#F0q{XP=y_Y=|e%!QcLvopWv*QagrJ>tL3WPI8)-WL{D_3J^g zU(s^RK+7>ZYW>{*yZu~0TyHVDJ&qo~9L?u7wA`OH2=z(PU)EG+vqGG0ir1_>E40;Sw2o*S&6=RJJmE${bedDGtv?a>vt*Y0Ip$Hz0{e9|q> zC;g+ws+)RTRXS&nSRQmM#-u!$ln0aYU{W6Lm$qNmc;8HK!}p-@dP)nvlcerL;Wd=? zlqEZk|6|eZL^R)f(0rdm^ZfuVPxy|RCOqE>-}Bsp*JghGo9ItiC;mOGBR)d6yf4E# z<7D*wHv2c=dzp**UaeEN`Mp~G$>UfChR2qVi1!w>OzY7yZA8nI8X4x1hG<w@Rmt3ddDF-eRkC=2q!$Tc!Jx?o7TzqUK}TO>@}a1;^v=I1%^2 zsn``uup7?A?l=ec#0A&`7h@JK!=AVTd*N#AjTP7jH(+1fgnMD_L+7RXVN>jn?Qn1G z61AM}ud)yO_a&W;`{4-O9}6%WC*U9~!ofHV55O5X1ZU%cI3EwfMK~0f;xJr}2V*%N zf@^U&uE!C$5l3PwXI^R)G{i$O16c;7I^$@}!ZA1y$Ko*b(+Ig}v=^eIb22)bim?Ev z<6&5ehvQs40vF#M+4R|(g z!eXpFW?t$XY>MY%J3J4&;56)mf5L1$A4lK?Sb!xs0WZWNya=b^#W(|}<7~VH=i{Zg z2rt8>I0KjCrtKHCpVWR+`%&#zwV%~~SK~m93pGyExKZOsjVm?I)VNdQP>oA9PSvX|zeS zakNpiVYETCezaaRExJRrZnRFccC=QsX0%2WlJ<6;W4mXK3hTRB=ynr&?0odxyV1Nl z92(YlJhK zw%u5?EssIl_B6Du&qdpQ2HF=-VFr#Jou9l8e+s()GTae&9+RKE{=PT5{|ap9{;~PV z-*xVd?jMWo@k`tp>*R+0V=$BS=hy*jCWfP9 z5b8t8wg(Gk>j>L1( zxoHL-iZ`Hh*E}4Ji*O7+j$?5J=Hews=O=5W>(EI5GmgW(3-gn?b0|8OK7`J#W$0Y{ z8anr$a7=zO7f(g!=8Mp|`u=0{Q-xUbxct;Hcp#b{JRv`s+poprNZ*7L@NPUFA4cyD z&*6#q22RAk9G{=uOP;`!eHxZ@osgg0i?Z=l(x2jK_zf0ejT7^eds!2lLi(wR z`N_TRYn)0tby9wEFKmowk!*)&1RqBzzQS;8OexK8CO1Pq58J`Kfi-A3w!$_!*vspW`jK9-qT6a2@^~ z>t39n`Vx1+4LAh=7YvE?BjV&)_{eXL7 zT^xx!;7OQj&(Fjd3tG!DFx~mS8&GhRyIPY>ppb3*3w? zvBM134|ou^#!1Lq(5X^vgZJZ(xDwmqr`QhvjXUAam&e!JdN)Y*=Cj|OYs}r|_f{72 zx{_6cCuoTm9F4n_^SRa=}UCWs+Bi#sB zVq;u`O>iAH#Y#-a&DadnP6)3lwZImnGqELh!&cZITjLPSz#MFY<8eovh;4Byw!@OB z<#B(NGvjep={cl3^7sPmgp08=F2h}L1@4NgaW|~MF1P`A$4$}NCx&#>XgloA<6WY8 z*n{*jn1!ccPdo>E;U(A`uf;xiEB3{EqL$b6!!i94?oIkj+y}qM0a$BdusiNcdT-nh z55)a(bo9Kq-+VnzJzvdF&0oE4m3MO9Fwzg=!T4m<$4$RPdIY|OBk^M#h5x`q@rP)q zlR|oA^e`OD_F+-PL|j`$g?1 zwcphKRQp|x12rzxI8oz9jUzR#)Hu_scrx~t8uQzy|#?Dh&GQpZhYKvq>d|X z5_Q~}ZWMJ~nywd3i#o2|?>JY-y*dx5^MX20sPl%pY1MPMWJml@X}|D#`D%1~A3blE z{^51?-e|sq(CZwEUiV0}9Iv3|dKWF{=V-aVMeDKq-r@bD*RUb!PtpC&_6hGJWuo<; zg0{!GX#31S+v_^C{r-%$=L2Z_K7zLQaNq>$(=bb{_ z2|ElNmpp&V#+^wYjrRMEn2DYC9hW?R+Xvl$6&fG6pz(4K8b6Ps@$@YkU$yodm&98- z8h-=OcpQy;;1w}_FLovUNlXvfe_ZlB?mYDPm(h6s0QbZe*&%%v8t>E5_@9N2hnokD zOUB3T=yiL&v4E@oqHTZrHfw`CcxX{sISMt%JuU&--@5A*B1^ zfjABi!YMcuXQSnM5r^UHcreyGWL)z6Z+9F{`e1bb3Upp6$7G&C=ba6BDApg&XLax( zG+m0Lab-+57%?t+UN{te{9+u7*J3W-hIx2D=HvR9es1Krlp|@*sBy{j#0T*((y!y; z_&FYdbq^hvJWuS1N0HtKkH)cBh*R(wyb_PayYV=D8YkcyJRZNn6R=s%xa4_ZcbrK2 zAUp|=$CGh7PQp8IGCqr^;D>lB{*0$#yV2v4=Y<3Cbkc|8R4lB77b%#&tLyYmFV3Jn!p>my#ZYmti5! zzzgtlyalhoWq2jNgU)l?dLMBHYpcrL!{g2Nu$NfpqVwI6SQF32T6it~UOtP>XV0*n zYu3ZwCm%GQ!_a)rK=Zi@e=nak%y9`qR(88 zB*vrF=lsR}!uhMv?H%+wZTg4n^hU2U5|i?_=li5{Tcvj7GmDMC=F|5@wUf`@ci~#q zx9ox8_><7>6g1!4(ef`s^R2sYcs;NKdjA-Rbuk~ke-z>NuA39#zY${hQ*m1lGSHx=zeM*G-+#`e&i_9~iYCO%K~DolDyK7ozo_ zjMl#xt^ahi{-x-;X>Qc~OfTFjy@d46>@SN}9jE4_=Br*uy{=jgwVY}_)OxA)RO_v_ zgZ|%)@60&wo{Vl&(f+*%?cY+gf9GM+zi9tX92DZa2<_iuw0|!}`*${4k5Pj|eCMO} zJPNJ%31~YMq3u$Pw$m4Ae4lwhi0^CA{eMQ|yvL9b=Le(v^A8H~eiYj7C!qasD%vl_ zXg^(u_U~8dI``b6;r));=>A&6!uuXqV0+RF(EXzh3GaL4V)3GDzTd@;9 zik)#4?t)+9u2_3SezH#93A>Qq3wOsuaSuEhyW+*z4d-Had>Hq{*RTgxViql^-)$_9}UOf z^83%v&1HNV@|%BcIIbMs)}Z-SpzTpSE40Tfv_1ZUw#N$GUjErJ|E4#GI#49H8ib=ep z@h};k&x+A_n2yFnDH;!R(Rf&h#={ac9?H;oSc%5N8uWg>4xPs;(fjpg^gfX`CETxC zpz~KII)8PGI&Mt&-zq(Xw9oT%(0OY-dcT^8nK(7-`R-SbtFna0cOg9!cf~ol8!m`? zocq<|s?JldtCmZD@BU{!ecXDh?Vz@c+D>Y_sqLt?tJ==`|Hb{WbU}EY^ai@ELF4Jj zJHzv-NoYKsgT~Wkn8f>C;q{|zG@gc`@sxwcQvn)JZ=v;Ci`KK%-Qjhk&S*PyL)&E^ zw4H{b?Us+W;{>!__gxrXHyVz{(_z>O-$(nU=RM(dqfzMnu+6>Ub)&t|{u_+m7kl3q zUO&n~_n(CJ^Vw+Jj9V05M>-xeNuPlou+IJAb)!A76Y1gD87HIXO-19U1dXQ|Xq;`t zE_mnz;q{WAJB$DsGaQ_%ZiDSAJ=ANRtQ z*bhI${#f(D@H$X?+=ui&H~`0^uLGTn`{E6_A3lWpZj zlkh;i3=hJ4a45cr&QoDd>&l#VEOT1HHs`d`IHxUUOu8*YV{ipJr>#a~umX+24QLE* z!n#=dj4-D)MPslX8iQTX80>?_U^W_qBhax|fX3hiGzN>%7@UU2;0!bdXQMGVA06w9 zqK;Y9OSeidCv6Otqid|SXzZ=WcDOO>`R-Sbt1>lpUJ`Q+u_OC4(3tBS^*Hydu~~JV zdR_hh>zq^>OR z4~O|^4>T4gps_F+jfHd3SeTB+!Yniv=A*ID;gK*Oor|{d4d{Gy^rK-uIv?GC1v)QH zTN>t>ThRSW&^~$=?ehhXg?Z^AG&ai6`KaWHFt6N+-q)VNO#B;q-j`_Ke~-q(FKCQR zS{CM|7t#6X6Ldb>jLt_bpA7R+Z*(3Si_Sw+(0S-u?2Zqj^U+FlKKdM;k7_&>=A*Xg ze6%+@A02^x@N9HGx(=O>9zf@#m(ls?Gu#_%Jsswwj_7=}FFGF;p!3mGbUwNPosX7a zGM{wv?>}1e_aCkJ`;V4e{Qbw$IFDp8PTU5fu`>*fo!qG7!~N=}=B*X+I<3n>{B=T) z9fRg^0UCc#pz-$(8h_uQb5Y}GLi}~Xq`b-Bx3%NF=4RXc`?iW$=E7L!$+67Ev8>b4 z>y<_=qvg=ws{;@Jy5+=jyo_#xpAGdn1kGn1n*Rp0KBqkw#}itgyU_9UEIOXnqT}gX zOzM|aKebDZv0J_up4A}vd%(2M;#&38&>sz>)!W-TWU$|BcShSX3%&M0^xDJFYv)Ei z-~H-w>UnBDx~;Y;n+i`q_VyQ%G{wyWCCYK)XnzHHJnaS+bI!MFeqz{OFI zH@$4D^a|3$*uNSN#tJ+HH$*+p{pxX5`KZ@XudCTnNVbycA&#%OB#e(5mxl2%0Bdr@ zkys1=gx2Mv`1p-zti6H8-n(clevHQE7ii3$by*lMH=y^QN6`H{&ItFRKInbuQ1m`@ z5_%uH1icU4f!>FnN6YakT8@#Ihx^h^Xq*2T?Sp&JK6w=Fqo>h6JLrmVKRO2O)3eY% zz7~z;MQ9A%a%H#=-Gj!+qi8HYjmFT6n2B#;2mAm#;+NP7ubCO{Kab-sq}QVR)2|Nq zp(AlO(ifonpS>pBkLs6(^>H_JfAO{9{6Na zNAFjIaX&l)yn-Z z=-Ry)9VgS#aZ-woley?PS%{94CFtB!hK`Gs=(t#ej*E5ZxTuU;zCW77%-7?*j(T0S z9BR4La;oK4>!H?5|JQpKr!gQyKU{`xccblj!rU-F%|QF>UbMX*Kp%e@ZSPOf_DlC!T&qe2<&;A_dp?bH6d8iXQ5ABc6Lxt!(bOCyAnupFqPoneCT67-z9y77U9bq2Y z1D%Hsz)pBLcE%!f9-582;uGln^Ed2*^?1Ewcg(^)a17d>Q_=QJZ&#PUYYwk%R{cF| z0WqI7IXwOpx((qqJ=^_gOwQYm)Vi=$R?B2vR1(L`eAaYs zi_mkIVoh8g*Lvk>AFf6Fa6LL^Hllr)Ix~!!hG?v1pncdG?ZYgz4+o-sI1G*5T(l1h zqsFG`$y=q1w@Ocs>HD!Y$3GtReA6$GwhvcfvYtTu@b73JeizN;@AXZ0!%Xat9dHQR zhdI%6(LTHs?Za7UAI?Mj@LseJABkEH_p8UL=c)Oq`K#B{%&6rt{d?;n>*wSDZ_feA z+{<;01Fu&j3Q5}7a(~so{<$l{Jh2)*?wXgweDMRiZt3<)m@h`5eexh0b5El&_bS?l@1uSC13GW?SsBtd zq4UREF`fHrm`9F6W8wrfMi!v+$l92G==Ct499kaclOxd>n}o*PnP@Ct@}Wi3i~V z9Ewk3GVdkdm(VErZdAX&WnrA_${C|ov8!uIyH&*V4tP7n@2zP3K8+r?3XS7~-U<7U zLHCF6-yg{5uzPL!+%qSXxEP4evBS`Dk&BLtLUdeA zM#n`lIxeQ8OQMcd(`BT+Pp(AA!59Tdjv$FSVX(z14P5H?=*h(u@BR-p6Wne}3|Kd-V8I(euwn^Scnu|4Q_F*P+*M z`#^ZVu@hRpu4s9Cqvaof*5_cfexuR))?XanZ|s7O`vI8DCvpEtXgi&Pw%_UKy6#DI z9{CKNNBG0Kx^44!zcsRVw=(ME?yovd|8K?}mrl0w zyF)wnS{UMQAlg0$q3x4{wod`tJ|Cd%^C{Xs|3KU4TeN+CM%$;(Jt6)Yq4ipZw#RBT z{=P)VY3+N%{#Iyv?1;8gdo=z|M&oZf8h`W9<1+6HaX0{t!+bRU&Oq0ewC#>T z+wK&!?aqnX*X~!3Q_oYkD*gYa4~KFLL$_NV3H@^idhTJ5hWC)kniKx@O_?KJz3-zOMGUEOl74&|AJZa1T4za1^ly=dJY zLd&yjX(&%N8ZSqn<(Z0>=PI;3cVW`r{C>bL6EgVD!q%ylU;p+i3CVXk#`Z278`^s% zdhIpnwbwRn@0rRye=O zb>TX#(d!(7*5`QiIwhD~rvu*yIki!0C%$X44c|4{lJAFPU-KOigUQR5}mFV^= zn&0PD<=oEsP1o}~OtBx^UK`FYM9)7Llk5NbeR~J#zPlFjoU(hwMF}@587WNF}Z%*v{c*N7JRpN^HhUXJ5*GCPPZ^#H|NH1 z+{Ng2C3?N<(ChW1AHCjaG`=UJ@o^b$FaH_j@8j9IA$CWg`4&X0#(ed@<>6FL{G7|h z=yoM0jM~PgyH!hjock^7@AU-_rAp&CdI#M;LeKde&EubF-lelc{T@K; z_d2?N!1bY?*WVE8c|ST2zKG6)AEWc~kLZ1~d5p*O?TowB7a_I^yUtD8tSW{$JvBeZ z!F%Y|B#ximF=<~vx4z|fekI@S)`dLX7RUAfk!!;9g&WZNF2!H_XF1=$J9S6iCv3xK z{xbN?UyCh1^OqCLSIHXOZ8Mrj8u!CLYVXXyhH|b$w;@YHd*`F=eHGfSe?jB_RkXeT zf!nKJajaj-qHtU<*5PiG&@x?x$@$&t@|Otj7Cpm{HdZZBTEwp-~3Vce}lw{9PX@wgY7S2o&zzo6rx z%}3$&r`~A)jYQk+L`=$`{C#ycF}~L}pVw#nJzZ?U7!Pl(!dJ{v~LA#y2ZS#@BP``1%0d|1DbYTFncRc4&mQ zOG~t!c0${)D>}}8Zc&hovyLqbl5w^lI?l$S&*!J0&*w|g=U0o+>nui}XT5?x&-xsF zo>ik&LGnDSJ+>#kH`=a`q0jeMV&IzSGd>u`|&2 zosG8Ze9Xi}XuB@Oj<_6c*YfDv=z83h{Tp#NOr0BSh`W=_h<3)Vq_eOa4vd}@y&?J> zX7TvzQOAYp_hb6==r`!=s=we~*x)@a3~JMvFPinN8^4t zDeCo1pG|rYUW|kB8ax1R!6A4z9*BR%gYan_im%`>dh(=`-74LW^jP*EfVp@m=HU_Oo#jMyMn40cIWEA%@Jc)!Z^R?;4jhjU;F0)5 z)a$xmJx)DO%}32wy^eZawH#`>)N-ozQ0uAITWtrmUDS3`+f8jpwO!SAR@+_e2en_+ zep35Q?N_y*)qYpwK#dDEPPAXtI5KTqsd1;qs~W#*T&wY}#=kl~)bXN@AI*$9zDzsb z)bXe7qHUvXq8U-gwa2xJI{r;N@9H1jx147@u3@x6)OpGM^`g#OrgwZY5#HxI1xF{$7Cg|3hdzlwl^mh8^&2G=A2h z@$~4|;eD)c(e#LK!uwe>(ex7=!~0szzYXteb;mC3pAyrJzYFhgb-_K@e@aX*N8@=F z8sA@FckKRsNYBANNw1CR4x7UJUMHf*e}#^Z?mvY0zYfA)q>n-OpNqY5X-vP3eMqPO z7#_a>9cSO6L@ z?q7t1@NpcB_5K~+AInDPlTqmWG9I08PDbaSVst)g|4aD1PB(PEx(tWo^*93WKvHgK8?=D zx1;m(VsySfr&d8Sf0y8qq^ILin5tcne9u7#EF?J)kHK+xES`eC_@q0WCcdT2Ge9yt&csl6PFlP=U@Tegy-VTcn98s&*NNNhqq#_ zh6Ty@-?hWrNcYA0n2UeLGw^ntg?He6xB!>qo%jLXh2P=b*rZWG^8I&x@gCAgV6v|6 zTR*i2pPSj%?>~^ z-w^9#1~$OX*buX@5e~%0I1HWpbFnEFqI3T(*bMK+=J;1^flp&gd<9$KJJ=dO!3_K- zI@kXc^59Tdjv$FSVX(z14P5+eK|B zwcXTqRNGZ;XSLnceo*^G?I*S0)PB?&QApD2ws?YuPrMm> z;8M)O)z}li!d}>@Z@5o)!9Ju9z`l4C?uFB^AKr-l@nPH>-^6|JYaD=0_6qmqJ#k;s zBXK`G8Qt3Sug`aO9Gz-Z*`T6c`3_~iZ&E9(W{$s+Tgp7~cY?wBr0JkASF}T8stXz? zeb6|`j*f`?e=qh5c-%OdfW}D?8Yk1xF)#y-liBDPnUBWFA~a5xqH(f3S{_}C#>sj# zPBx-(k{TT5iiT*MWT5@q8I6-HG)@Mh>%n1YoaCZ$Qi!exCu1fSV+Wib)7I0+)#KIk z)%?`_)$6I(*Z+1-`9C#>aM|R#)t?8r&n+kZo>=WS@{;s9Xg^ zfK}o5&CWm{-|x-vJ7)#x{4f=rAFf8XlGWk&DgTMdJb}qP@mBaf$|h+4e}?w|MzsHH zz8!vN@~U^j?@rcV6Mk{<;J0zX#F&d>ZZFi`M2P{e1;ylAeXe!^a=wCC?99eHhZi(D~yybpDuzyWsV> zD?W$Ptf_}-8b(7EEE{*Gm z`Fz)*+afe(mZCAU9F2)`G-lSK_mK7IJ!B&qBYa3YiIIlr+>n9BMrSlOvZ9U|(*sEx z8^h4p$VKOdLNpd8qxaupG$y8_u~3T64Rg_0SQuRrEsL&66g7U-c+&rMJybOp=H!L-(ASu3`C&aY294z-(O5nnjpb9&Yn_K)`y;e0|3J(3 z6I#|&$A$IK1!!H?p!d07(0Oj>g0R0Q8q<5DF+CKG={z*1`yLk7Mf;*{cp%!QW6?G~ z25s|mu{AD@=?~F)Zl}Y;<7c7s-IAEDH$JSFY91NZOPOds1JIbSeNF@-^I>X2Nav&T;>|HVF2mAxF6)a z8Qwp=6Wuzm4)3>SV{$*)rD1B9sp+W>{4K~%xlQ;D=EkW;vy$JnFE@|0FBc}~&3`W( z|0B9x{C>#iR{U@B$%^@ud>D>@58aOWDCBb;df&b_ao zpWeQHs(qilzZKs9{s^7l zen9897P0>6$?FMMZS(bnP2_J|RI(;^+l-bi?SQZjXo1e1nP}eK(7gMjbLS9r?#w~w z&hhBnIT4-rr=oLb2|9Pqj5^<&p0ibY!B*+TTcwwgcFtUZt#CCuXI7wdZXi0x z4MXR+Ty%~rMCZ84=p0v!&T-Rme=NmpoQs2SAv(t`LFc$KbdFnz2jUuZj$4OAu@Z;j zW^}Gg6E4$Y2QPSciKt%q7KwVrCd)pk(ZMQtaw-PCqe z+f{9UwLjGUQTt2nKea#A{#E;5jSn?mv}4qGGMyPU-b@>RYCNj(sXm8M<5!JmHNMq& zSL0tD59)YQ$D2C-)bXf}Pj$Si<5%lMYe#EEYes8CAvxap!t<)O()fFme?zy*_&b#U zM)Szt5T0L-La#9%z2*e83{%iDm7rz38ZGl&vqtBUxKd38diqqo4ca>4@KMbNVJV7p>2K!+6Nb+eR2)j zN4KJVb|2b@kD-0~BHG7qp?&@dX5zolm{|I+@Vv7OjhWZb7=9zuHNFL}xO>OLGn`ehu6 ze@E9>^;jhxid`@VhvH~F30+^!K-X7yqwA{|(8&H2^YP#OcO15^5q?LhFCIoZ7Z1lX z@CclRwtWIO{;!C81JK8~m1`&fiO;_29?cKH3I{&)uIe4L6?@JyVEXW^ZA zHZI3v`~=Uz&3G=htrLDfsSi#gJr@6jQ}BGe7B9fXSb{I%g}5Fs!X4^{-%r{Vr;{Fz zmtYZIinGu;D6DI)+~&F_b3<6yl#ZLn8O$YE0~caVT!PMXWmp?mVjWzAb#Wa!Csm?z z(q?o{N-GHKnilAsl!?w6-J;Hmru%P|9zr^u{W<9C8{^TrXCnGsa4I_Il%R9YOmxnf zgU&e%&^c!@I_E4y=bRPjoU(aAWJ{l(}UGaX&e zl%jLYTpW%IaRe?w=a{mn^>)8{oO+&`kD9M~9km>4ximX!Jxp6qwcctwsO_S*liF@- zJF4xfwzJyqYCov`qE-D>)xTBoP!&JMna3G-Y8v`lZIW&8v!^OtBHzCr6$;Bk?bQw0r_u~E@PlV53KZ;G+ z{|4G7Kca0^b6NNtc73!Bo1tyGBihCt(KgRQ`(Qt`Pe!19bU4~)6VX0A3+>bCXdmzQ zWcd5LVYoBt&6tU;p9+6}*9$#v2pSvnu@l~lo$;ur!{33PgS(QRjUIO|8dG)3!uKOL z!QDwehkM|M*cE?3k8AQw_@3km=$vvYx^C(CZ1|q!ebIGG0UEQXqA`5%bK(1v7o#!$ z6dLm@(J}BIIwsbmW8^z@%+y{UzAw2MI;L($$Jj!2%sq$uV!h`>dSBd+^o23K7#*We zVK%;ngRspDAw2>IlfEjZpFqd>OX!&Y8y<+ey%^Gkco6A3WBP3zN_rhSXZ#bLL%vuM zemAnmOW}7T_r($HACAsN&!Ov`kuQh!&Lnhy-IZb8vm1^keE^QZ2{;xn#az4{^Y9sT zWPF0-u;!~_-O~vVBYglKjz{AWcma;b`FJEgjYr{!cr^Zuh1l`6uxWuYrdC22CxoyvT0bxuLYSnIXc9u03Q3sX<#ZTA z96xrFBTg8{j~rnL@yRg>Il}k;cs-x*_S%ed{`+3H+q(C>Uf1=!uIqVS*YkC~uGf!u z8LWb*!sp;=@B?@{{25MxU0<_x&wlVsUa)k>#UG zq5S$(C?7Qo%16zI@==vgK599Xk6HocqgF%ts2V6AwE@aUZG`eso1uJ9J?sv5Liwna zQGWl%sro5C&RpXAAP<1M!QoCFSA3i!iI-0*g7Qg|pnTF4r_zPK$~m2QT|-qs`J#nR zrBi&IONo~cx(CV!RYUopr=fh%dMF?CCfo3s<&MN0BcqH*_pnS?YDBn>FNe(o65Ae6jkx}Y@-5w=d`o{Q-?A4>f;T||Ag`_A3^z&oJ?B}RlzpMPeH}E%d+**GMI_H8Y=!>C|~mtl&!vivfVdOw)_#w zwyoOPdZ+`G?R!J@#a>W-b0Ab-9R<~Q6QTO@45+@H3Dwt^L-qZL_O>266!t{^59|dy zWZOC@A1d9UP-Er}D4(+u_Jt>Ou=UL>n1{R=D&751W9=cRvDdq!t%nA}0mvW0fp8}r z1Uq%IbOWKr>=jTxs1j-&G&0B5K_|f>$g`o+)j^H*yJNNV|cre`Va$Z+k|C|GLd?_3W z?}D294?y{Xw%u&q(+$d3jDUy3`7YPMBalnz<(sxa z`K+L)t$!xg zPaeDw`5-tOPJkD|^Whx05MB)Lg_po}a4viwR=}O`QrM-xt$+4~mmwbu=fkP+a(E5A z0zLq*gd5-j_zk=YcHG^5H+vWi*G=K~cwcG!PMUv@x7^oFnGJEcmP}v4}@>RLRbe6f?MIiaECML zM3Xa}U7dOGFwzx3`J_T9pEMfE7nMNypfWfbmP7fVIq+z>0Llj~f$~9Ba12}p$HFyG zK4=}352}UoL7Sj_&=xojZin(g!AbT`S~`>u%7OAheV}|$zEl0A_&7&+y0|>N~d^H>EiiB)k9RhMAcJNy+yS{RJ%mAQ&hV}*+G5!H{P`c*7+s^2AR9EchhqQ;4+aU*IRi5h33#+|5fDQcXG8n>dxvACyG z<6N@Fy{LI0YF>z%C!*$!sCgx7o{5@wqUNF4%c*%PIoGLqELrnf)I1k8@5L@o`31@H z6Jn0Dle3L8!owtNHCwjZI|+Ug@)Z~h6k zMcx22;b$Hnd~EB?rLZ0Gk3iX~^(VI8Tm-X`S3$*ZfE{4TW?OeogNnZe%GUQo+5R!8 zzIYz0Z(fJ$s}G_2?klLi{0XXWTYqZn%1$sBc{kV-4uKjQ2SJUM13tI)J_`=qcqoKy=1gJ4P1!@dWgM(lN)EK`GYRoT(nge%!Y3t30 zpytTmVF66~Ka=-{Ly>2>yb@|oJpnbxUW3D7o2@2~g8Lv}(K2`b2{s17CsiiSI%A$Sl1KD-q9XgCi}g_pr4a6WttUJl=cSHK_Pm9X>A zwjMnYUWI%Dyc*7d*T7rhLiiNC7H)*s!5`rDu;VYshwrfsg*PAOoDgwMc- z;Crwd28rW>he0lESjWHD>^gp_uj4CNpC~MZ32-S)g!jM}uo~)|@w793ej+N2U;jJt zZ~jhv-S5P2{hjz7#AmClQrrK`gdLH)!cH&`>YPvjW3Ui*hNEE@SmIQ@C6_gk%aL=5 zp96cs1+W)f0(-+M*axnHyTLV3=Y(}ozP}dgoUjS@hg;z8a68-s1}ED(J{{^@kOK$7 zK2Ya^e5iB52)Gv<1qZ`osB=LnEPzvCcn*N_{qy18uoBAmFNgcU6>wj;8tw;cpnUxX zxIf$o#zCgCn7Qc@dN^p9GJ9Q{a(s zIvfovpnUm4cr;uJ<;(AZ^5xZV415~Om#>HNDo<4T zqUs~6exlAjqUtZIJ)+tts=cDxFUlUG>?6uvqUvFRDL8^^d6j64igA z`cqW@it2As{Vx_eHC`lZ{D>M)qQ;k~@g{2gi5ich#;2(9Dr)?S8qcD}x2W+hYW$0u z52EIWsQDsl{)n1S;sB@Sn`F&DQS(vM{1i1`Ma^GP^I6pV7B$~R&400{GuPS0+1VL$ z%Ks>RCuc`z2WPf3$=Sl0=uB{eP)~eaFIgeKrTO#eP+<;Kp7~HZ7DDM<235xWuqEu7 zZ0~362NgdKrodX*8h+{V$*t@?jCnAf_~lUP*T6P#NQ%9eaTHYi888ce1KYv0))t=& z)z(2!Z65(;izA?HQvzkH`=M<27?drahq7%w>yE25PMS18VFZ*v8(gI0|ZPcWi6#RrG-x`vainLIKp=7y&g`j)0mw zC2&7@8r0l62Wqa(fSP;rq2}Vxun?wY+Itn(!h?|?g@1zo^!Vqq?fr_^q2~A<9qj#z zULEbb5`&<8!f+@baU+z^*aYQ6zJ&5AJD_|_awmJwVs?(bXYns6pR@(aM|}_Fvyx)= zo<%!YjJzJo$Gr`Yhnt~B^fp)mM|2q%`p6^T1mqGp5uOI+Q^$857y8)Kp?vNIP(HYG zw{bx!%!4PxVQ@0MwEMVl{aphkC-)c^?#V339T%>{?}Mii{~|mcehR0+7Cpy>>+s#+ znaCsIS@0A%6)u2h!~5Vl@CA4-+ziWM>t5r+b$CBG4fzmwK0F0Zhx6bC@P0T0z5r*! z&2Sb>>^&}AhxdcCkw?Re;1oCqUI8zL_rpuzOK>jy7*@ca;iWLQ&$w_MUI;HkJ_*i; zm%z*6eeeqSB3uCL;8pNPcs0z~ZCtqi-Wx7N9tW?5WBf9ta;qJ`z3z z&xFaXcQ|CU#i%J(~aJJ=3hh2%!f!$yqr_xEzN6v*KU{5#-_JYMw ze!SGF^pd9{_l2{d{P=vQjw?Q%F3w7h4Ij|$d7M?^5dJ~2w3k_I>n1h7tbfkPGa1SvcF{Yhp7G$)nB6ePgH-3>R(a) zEvo-TjR#TVL)3T?HGV{mCsE@|)OZtHI5i$6CpbYUH(jeJJ~+?D|0byLB~-p0P<>o`x;{d37jfSe{1gLsXfojJLsCKP_YUgUGc2}Km>y;HycBzK4(;6td z)kE2FCzM^2r`vkvQK<3zH>h#_66^$TxWLvck3+3jYGG&iB~<_HIm6Z=XFi-C>W5Z2fW|RK9Ugpl@%|MY1as!tI%Z#}`0Y^h;1{?T9C(SXXNuqu zSbaCjX&0#?H#;cIX-{2Cqw zvo5psOg=mYc{D77r@=As3OE+t1CNDkVKMv&9tVT@ww~z$HR2C|TF;ySH9r#Crv&ZG z+6L{5+XU^WwXM&nODpf$GBIe$_w@@~vscDn^>b@OpAwa`c25g-FY6NYE$AF{PG}c| zIcr*%r%*YaKeoirA2aRzQ4KZEo`#xd>tPG{Ce%D@JX|6d}8l&RY3W_Wl;87 z17)wbq3qRWv*~RQl`rWtd%tS{RGp88@`oow`NP>Bza6S=zd+T!^mBW^Yc`Z$TngnE zABQUE-%z&6>YN;OW{jqfO(}0xYTvzBK_BQ?&BZq6YN6Uz2Wt+o?{9qx6~2c$Ht|sV zPViY!@*EiI4}a$=mGePjxyExXx)m}f+wr+j;Vzf6`la(t_O?Nwfby^3K=I`y-J|!H4Q3kgqlO!pmc`5 zYjZNsn(}?UQGD}w(uUA?MP(a1>5axtIdxa4AL;h@aWc%u$pk3-JOouvtZibDJT@_3 zeY=#rl|F7(L4`cZSGt3tLW#>^{mRmU3cj=4CWmj_{q65z{i1SK_!|MdgO5+v@0=tr zN(_H5q=s^8_c6Wc`bp5-S z9fv~MFSDzCFM0r!FF6!S-yJ=yoRv`J?4E0OI2J11+0e>O<2Ph_2OSb}g2p4m&Ig%a zn|*8ZEd9^@-7dSE-nmfreFsYKzyVgj%LiKh-Wp`}`yR^wbl%g_-IH(M=l%)G&!p~U z-{+nPRzH4+h2K-pT=ZMJ45x0Hy)4~aD8IIE$gLV(t49 z%5Iqj*1joF?Ym&8mD6#U$q(;s?MNAJ?dSyMFQ-7YVd<3kwEWvFva%el7)8 z_JzMU(3RgC=)&&}bPj)OqhSQu*v_f9J}AA+&ihlHvz+sx>RJhd>rHRlN-Jk~81~-{ z)~+L=BC`)0>?q1UhenOlS0rI!9=s4&~*tO04k zfP%rCbMk`5J!x&6;ySA76NPu7`r%WkdHW4i8-IqXU+W6%%MMWe(bFlPuYMAhPE_oG_%V@D1Eh1`j0)|#=&V&{$e)Nyj}*ij(8d>-ID44 zeSawb@g~%~`wnW}b-2LF%^H{%3@pgyckenjyI)f2_9>$M3X`DfIR&bo)1lf~0aee1 zP~|Ums=fb4yxQOQ2la1x!GqNlzqyf z>~j^=y6j#kyF3SFmv^D;vJHmgE?kGT3)(!ATHd-erAX(QHExT1`dneWQ*|!Hp2~NM z+w~bJI~_B_>U$nku-_%lVy5rs@^R&+Omb<>2pz_}3lzzz%Mr7%V+e-hhM8C>^ z%**)%D$gD>t^DJm>~$Vg{H;)SyC2GKYdwAol>J)F^7`Ua1|;m(?C&9`eB?z&#Zr2@9Wd|2p|7?ZopQPE=FMXkGHWR9U zu7>KDRUW?+YW`f)b}<41_(A4~4zpsjxSk3sugoP~~LxP34-t zL(q9q$NKELcD0!`ZOSuB)5Ce4&p6J##?n0r6<&twpHHCL_lw65T4?<=3Wj>a`O&S} z`BCEYqiUY{i&aoM*Ffo92i51bP;+q;41Ji(8ecjtD!r)uqJpS8i1k-keU@Em^}i1) z?cfDg{}E8ST3==3s}EFJWl-blDwl^|ZR6@VD8G3D)Of0d8b^PI8b2>V`OQyZXoqk; z(S`LyXVw!j))T+|{h|uDN4~Eg;`JYatoDs^D!$6?d;hi8o}Ezb>2jTwmk*U^U#NDK zLfP;lKW^8Vhc$bhxq^D^PG;4+p1CciV{_@xfs#e(?c;rs4`r_rPSsKJC}i2G7|Kqi zP92v#)sM&1i>jv>-_wvhi*%Y#^P%QZrBmq?AI%pZ6GZO{bw187xYX=*6I46yfoj(p zsC=(OmDhfr_5TwTCB zw?mcJ<#N+=6x6s`1{J>os(ovq+Wifb|LDbdmS5NpDt-#=055^sFTN3Wg4Iy%%-XGG z&~uNNl;}ig|h!9DEt55@$+sr`~M7O|MaDnFP4!IBu%#V?Vx?N zejV^WRQSud;b1O?6b8GT5n4%*FI+*$EK05;%z%Vy< zK2$wpP12`)Yv~K$wBz4Gg&}X5oX|FjZ*#W_+73=D4fjT-CkLgk@f!sE<-cwF&QUp* zlf;^^wXWa7HDNyb<3V=Q-vaU##v@_%VtWovQMIp(59_)7)$w79=b-AXGz!l^>4>E! z2C0K>Ur}Xb#rFfp+J0b(ms|Lt<-Z9k{KMscL+R=LkR6Y=EqGvjFp$3u=i9ziRF3s& z5wuR|o{-4Al&vc$<6}Bk^{cD2`c+?Q`hJ26Df3K@h4o9(o>XX;6<)vcRc7Zap~9Cg z_l%_kvCT;cV81Xvxn|Q`WREO>( z6sH9F{}>+>>FS|eYy=IbcZ zRo`p*UxW&uLyf=xczjkYneT$OWC5l4^jAWK z`=Qc5J7j@NsDw`a7s=cIUhBIln4q_1~<(eqL@@wLswZzMiH z?tdeCg72wsJU+7joJV|x$7e<2i-^y!HUCfw70z+l`YDa^z&#H48M8=Vy~@(pLxtSG znA}|YD$-ZFzFOD+{U7LGuX_H=#z75K_{`5-Yz3hUr~yE`81q%$F}re;rgv z{?g>;(if7x?p4#@?KRWC50sy1F8vhJ7gd|SYoWrUE;pCHlJxob0O>m$DlB%nx%6vD zpZmI%e*#pv%;o0N*O9*ZG1LDQRA~SB@3%K)2jgwA>CbR`?(+xs%qM-h+v6{8pZ8t1 z^KiJ28lG=TNE;8D*ZRx+U~RZIS+V!4;j;j>oLfhEqFQfP@P@T>4wRj)bNNF*54Tui z=e<}u``&}uTP{k@*B+C~iw$ZObS)dodSFP9mXIGLmHT;LFyyPQ-WOXO?8-_#yMB#z?7hx^TlfZYL8$&pz~!}YA7#wgX{YbZT+L;Q8}6?mfw=! zb?1IuLUxeMnpNwDTI#%vy2+loZodIg^&ReVmD@YxpJxBjP{&K5>@wZukNtRT-;7|u z^ga0P-Q9ye1^xLxVy}k#;9l+y%1uOx$_=i!e(MS)4|f(j%bg3Ie|Em?{KA>Sx<~o@ zL9J_tILAU=AD!pN&A9acl_ORaVJLqC4--0|V{=47aP&49AcGMEWhxcoNM_2o8~ zCstU#i=gt&_w{D1dvegWEQ>XJX3+MLv~X-|Mp!&?1#KJ04^88~cn^N7ygR>D-i`f^ zoL#?FuCbc?nwPkYpl3>AkW$tu$h~8Ha5;ZVKW5%3 z?#-M~t|V@?;z+CGQ8}6?md{#udS=j<@2C6RFOARrtd6aMjLG5m!}Uu(MOx#_kCjtr z)vw&IKdyJyzG(GcxZc{a25MZs=kiV%whNz<#eQAZBmSg7d2(2$`Xp=vzt3HL|M;NY zit$1DC*H1g*`eHxxP^)%t&T_KMtL;yo9KxZqy>G;dfBh|ksZ8*J|=2kLkqs5z4l<00R#Z>pifKV9AorK`ndHZMCu={SA9 z&C5BERebOwRQ%6Sy4ziD^Y8?y_*l=Bpj~mhpdG%NXBz6#%hPuCS?G^9rv~LGjSn{R zH|x_ELR&@U*q-?Gf}Ei3Hv9c^JrSgFT|@hI-cT8tS2y4O0mR4cLDDef`+BAB|Li=I zvDMBy-J#O%59No7JpP!k?EEzcs;q0F(yfAO|8pK6+dD1jUob4lNf^-Jx62!zU)n-_ z$C6PxDyWyjLa+Bys50+yRy);?vZ)vkH9M^y$Np^fKN+e%GhBZ67dw9Cuhxzmq0YY# zxV(s`>{aix60E`v$j9|~{M+JM7jSl)19Lck3BOBW5 zV>9zVD}r`plD^Dq{5%C!&pfBv6x~0Jk6BTETvYl3(#vlbLiy{_k^G2Zx_ElY^=+*k zpJiG*^0I6k&w*;kgB@)A9?{Y4PzF^_1=R7iE*Ew(`;39oe;U;J~m$RYt+j?Lx)&u#h2liw=koOxq z568}fQKt0uj2VTUPT5cGiP}}itI|#XmJG8`k2Y4Hnb=L~uZQZFl~Cj4DYs`hSBu#@ zN*N#A$KQ_qUJ2)FRF3s;8FVVhX06z6*IKcZI?h9n>R7eF>bMHlJZa-}-=}OG9|2{T zlU&~2*OkrbT;MuM9+die{9jPvODH|Ry8QAJR!*!_QjqdScrMG=Iir*`u}++W9!c7D zj_sL38qU2*oMY=Apuhe+J{bK4{yQl#NGi?@DUSR)9+eyAk@e8Ui$0BYskar6 zzNW{_hYZJu3~K1>h!3fz-ILWgLg@?Eu3ulYcK29s?Jk1q$BUr)@kW;)g6ac%_KDvx zVUNat!z8@E*obb0isNm3tb+K|r5@saUC3FY=AJ}Srd$q4%KjBao4 zHT5X??Y$Rk)f_D?+i_trVHC`b7! z{oKCFnfs{edkQLi38gnYYW6;U&Q6=- zwSFG`5vt!?US;Do3(DtrgX**XPW8Lwp?+Ml+AhY&O?*5T{muOKVyN&PRGQP)+Ii(F zs50(_()lUWxQIP(_YVu8;>)1M!yK2-T4(ps=0mOH?t&_FC)7Ad<9w!a21A9|;MT1B z`v+|ka_xFHavm(i4%xAhn==M*U0oeO1$i=0uL>iCtOez8->rH@06!^2j;yP-l2R6Vyt>FNB4 z*?WH|yIu}u@7tl)jZZ?QdlAasyFY6B4uhJ9e}}U7M;`x~$Dhr9rs5a){$^}gT98-J zi?v5ivulq^Z1M={)rJ~hV{Z5_YfX{|r7g_gBqo`^=>gTg#jR{!ZGp1m4^Zt(W^Ji5 zQlZlA;j*nCc4Pg}hxJ45uJywj>h%-p;z4=zH{jdG>x3%yKBf>~==&Q-9&Pm*bc~g! z;|dQ!<emqoMj> ztM99SvifI_G&>bQ=^qWHf7l^r*9xdG&*jIVj@Ll7vkofXb}0K79%|_ihLUGM9lsf> zewQ9*e*Yg(;T4w?M%nQ+D7||?D-?3v#nQ4KeF-uCREr0Res9H7C#=Uy{n<( z-}Ly{CpNF9L&YzFs?Q&lnNOKYQ$KWh$oQPz>2k`j&ZnZ1p`Gs=k#_ zI_se7`<2IMd}{Gypz3=fRQgLiz7}fSyzlWpd;CG4ncq4ZD*ZW7`fH&4*ef3YmB;V( zx%smLpwgcRl|H)V4^?Z1q(Z?k~JMMgGDYO<&8KOy7c~R?eL;toNYQpht11pbPg_+P<-? z^&HI_M>l0G1PK>DCb`dDGBpm2J2kh&Hh z<@?XO#)#o6tUx z2HC1y^_`g-%;b7;+~%wxZ+m8txh{sDPC;cZ>+GI9*CRdQy@Ph4+_l&Epw4wSN~6^! z`2+L>=m^jmG}WUkj(D0k+x>33*uYjnm$J_6ZN*r7blkP}C}*7BMV&S7%GsAxnB)7C z3!2%dR631gok!#2xv-y&+jpVD2T=3-KM;!t^?7z4Pw#K%<6NlxbD;d@HBfqE`K|E- zJYz>2+pzy;o`8K3e8E!cc{OR3uFC7V%ImiVs+@IB)l2?cR6RtM6R)o*J)+i+@p%3l zhH9_R=-sV7W1#dL4^_@IsPo48dszJ|q1Fd?x%?DlrUmao=^x7Y(RIQ|sB&X_>UzIh zv+MR6+W9ZiDqZ1q)*qvx$}fQ`zYMDU6)vy#`h&tIo6bJq)FP z1C;*frdj*eL)o#*`6l;H|GpQv9eTFJ zuZ8#eYIR>;^QVI2;a(+Up#JRf!T#r<>lfxrxPRF(ln){qav5Ym(-VuJ5)mPU6>h<-X3J<5Yjk&hdU<8i|k2+ttLYzdnZQukD^Lk@2MQ z+6L;nwzJE9q53hdmqTHwnPUAp^b8wMho5QV>0GE#0ac$WsB!zK$G1Dn#@9Yj;RvYu zoe4ExFZTEzQ*B%w09DU9P~&PbR6XBFJjCVcZIh*_0k>^`&`QTGqwSi$&z`**=MHNZ2{G`rjqND_@rc zn-gSHvti>n_DLgYY^~XuwPuX9X1m|4H5YihRlg#?rl0gbT-#Hvp!^$Km;VbYEZ=VH z_2-~ME!6n^8fyF|erNILK>5cjp~}6*<4^kDWQ~J8Snu>>t<{?~a;NBe6NBiyR!zON z)>Qtw$T$e?efBM3{7#Qg;W}F7Wkb!AT&L!v;^XtOeqZaCz9X#v4u{e|0ZQ*IsP;yGGpMdfowNUf&1E_ioYa(DgTCfIEJ{8>ClT zYa_O-9ct~mW0>hZX&=)&6DsW-sBoLh;o7nwnfK_K_xy#=B)4S^zL{(KvJ}>xt-|Znjr zWcB_CDtzMduVYN^G}hX;HoWxp@dx?I{ zQA(PgThoKB#T|mbZEhRfvb{}Ex{mej^iJG!>=@JxW3cSPQ~kzFCb4q zo`5_7x}xctdqzmUBdbd?*IDU7##o*q;rSKqpA=!cu)gzcom2?bjv}b`o&q(FXF!d= ztDxr1a;Wk95Y+fx3pIYe6;SQE5~^L-L7gveglgAvsCL~A)vgDi+VwD0yVgLp z>p7@){T-@ZuRyhH%U$+9(H?i(`$R{=9O8?i`YF~mCFok5&NWC{(0Z($8`O`pydUHK zOH_NKvf3M!qw5&OtG&_VYHw6ld*gEH3isDgp~mG_D^0!ys{A!j_Wp;*4}HMwUJPaT z)1kr~sQTOrW&Z~~{&}c+eGJtP-+6rMpRGUoL-of9s4xbqp5;*ea+${uUS;(SpWEhL z0@Dk@kF!Ks~c2{w;2EQ5VR zhicmqE+6ai1eY&{YOCt2Pyi(#=5m?K%UpiK<+og}cexGsPZVNlErPUz^>ng5*C$)Y zvRVaM2Zzt)m8X<8ITm@pC`{Yr`Q|XL$r`R6ozue7f}r#*vrGH8%`V46&BI;ix23F) zZy6s{|Mb^zeAGtd=(`p<2`fX5rT19=X;9%xDEr;v@jZ2poX+#!{@ilzt0lo0{;JE? z+4zgdQT>IkzuNVzb^Y(S{;xegnrDjg+-vn|2Nn83)#pHukG@AyN&4EjABwy$u||4a zzrDZJ@a{{U*Q@q5D<|;h^V|9J`Fg%7k3Fs5drw#EyOhM0yVm11{(jK|?^->dhU$-& z|FZfY0wqV=nNR*)_fOIGln|fq_1+&UjEmc;Q$o;YvW>9{(#3;pqrdqX&xdm}9v^U? z8;+2<+{zyS6^?UR#}zW5@<*RLk^ZdqyazYdp1CjVYv<%5e}=r&pD8~dYVKVDGv6}5 zRRR^xhSGZ}RGI})^KAUvmd@7x-C6f_YxX(PDU|sD>1DgB8?COZoJ0pz|7UvoZ?*FF zfJ!^zE0d=}m4Bnlk3${b?DFsJPghc|u9q@Dv-Aa@o4)Iy^7qtyo!%;Fi7zhtaC|V8 zzm50m`B2Ut#0S5LXYCSAr#(*6RM(9UYWd5(XFYkb&~M_nR*Iy_+Jozkbv?Q7l*=>K zJ=kyU&NJ1WcRf?B^T!(Rr+l~52xt5pISN^QPz-ghD~0m;Q=Lkucv0!%`Qn^KIt9tH zMLb?{`5&8oZifmVK-vFWsQz#NiN#+IrF$(@S#Lts;d7|-?7o}r`eOprd1E$g4VOWk zSD%7m_|*0TPJ%kG&V>rEK&^Yef~sR|Pzv|yIs{#cvpFxe57M?J+54>C&*fVz-KAex z{`X**kN2bcvYze5dbT_FFxuI3zTq>zDgA7WC|wm}UyR#imCI|K>zuXDP0lUO?alz( zN>92o$JxgjHZJl{-A1eDdGA`iuYj`meNcK5{$+M=3l+a7RQ$P6_P^NUZ}a$Xq531? zJxkvcD*ee&{d2CzU+?jsLiN|T9^ZbGr9T#GeRMKZxtDtU^HBZS{(Vb#7F54hK&7kl z_^nX={2!0+{DGyP0JV;q0+oJ&$G-yA|J|5ls&CJ($wAlcT#Itf(t9@L_?sF0h3~e8 z_ZM1+@)qJ2wBwpaahqEP7rev00RA>84t>hAD-Ci~Pi$x_o_!t0{2R;~i~CP3Y{Kh) z#>LgDoYMbf^~v99{WBWs(A7}$;Wns#_y)@E{eQOfvHVu}!@+^=lefr^>)zucKB#xSJE3%>++^p8VNi7&1r>ih)YzH~Gq+ngi=o1TAFceypxX61 zRNl7#v3B)>%DWJ19KH<|zJRKO-A`@&-fIzcEZka(7NIM zNb&{WTE4@f!dWgy-@B|LU8ToA>FK_Rr(-XFk~w`*VwIf3uKd_HGRKeaALDCs~hv*`sus`IkA)rOwsP zS{MyAy{(*js4%dP$;Uv|>k^l%pz8OU%iloNGk-TrKNe~n-r%yHm(lmsGQ;bWhPjh7 zXk~a`S#_;jZgt)2+~G{Rt)Y&YlTH6zs8H$hp{H2=mO<%y6RLiBWhR%MZuMIObv(K* zE2Iv&Ei8Uds4&)L-N)+1y0ANS*E@IN{PcN0g?x)hD}B{o*QcH9oo~WusGVfxtU1BT zNjcHvQ=#npn9EzC>ObNnJAUoSR{!^*%Cm8v%HCVUc&(&9I#zp2!?~$G$I|Z+v+_nj zl`{bRl0qa?kgr>ucTF^c6zY_slMCXDGQ> zS1%`gpKx#bV;DY^cQ_Lw&y;&Pb(C`^<)~hDv_YYbkJDTzeFL1sp~lxpmvtW2@gn4C zDC}nCFM|qCLN(=UsPrfFu=wT<)SVtFfJ{lhJ z&2~;IA^)Rp%i5dGCYzwzz6Gic+nt$9&6ZuE+MEZ~)&i(=dLh&~e6({4)VX>()Va9= z>Rh}KY7Mp&YVYYDsJ$nJIOBUa%C9~X|4d&;luEiL0rTu85>x`w)4=eNEgHWQDr6)*shrT0i|2s*FBa*3bJv`MJ3+ z-vCvoJE7|MFjSrY24%bVp~~70weIQK&g6kmZ9WOgCexs7cs-O2?}M^o4V3L(fNIxC z?M+?d%KCxrW$y*rsa z32Hxc22?w?!yLFL{v-yAU}qhN`aan*sOO3wg&NPYv%)h_eIXkw{NnPhKEK23&uRAE z6^+^Oz3<5LjbU8m8wVBfd6DSzCY%Q+Fb^g%4~l;?4_1(VF#|z$s$jjLu+Y~bOPxcG~ zPp>^#$?UlZu-m|Y1+{l z8hf?3+BtcXQ+*isVJfe_zm4ZJcej4|J5;`3q5AWpJ*sKe29%nr({^Leoi zDkO5gQ2to_yzyV^oSScTE+1+7zk~{h9%AxbD1ARc)xYRatIz2$tj~YZKPs+&l3%VaVF1% z@-w%&ybj9GeCcvliTR(sq4HNl`K@5Q$^D>w{7jdxgsR^nsQNC4vRy4y2%qyW=-c&OUj`+2yPR}PhCDO7!Gpmc44YR`{Q_0QSI z+BFQyp2bl4Vgp+8%w0#mE7mSZEVs4baOygbG&-K|bsgc1*Cl^1%YPRP!(fy1pz1LM zsvcuK-tIYdVsDLa0Yu-grL3z-r?M&-C*ndV9ZQ`mQ}JT%1S{tzsIcATt`n`?kx=DM zfNKARQ0>1NN{8k{AD%&N{9Vn4ep(P|d#1O!YozVcfx4h(py}Itkkw-m)UlhP>OOK$ ztH)%h_*gT3qMEX1OBtcU?eqmy*k_34dmc((`vTV!-t)=c^}W4~uA_2aJN_$FIAOo$ z(+7jC%nI-Suc5+Gp5MN2)1W`k)2j`Y?9)`a-nJtw-`Oy1Uz2(jdA@4*Lp_eM^cTbC z($DhrrGK*HuR(=@eqQ;#@l!=Ujh}d^bbBY~TmCYr@)knbaW&NVSPL~iK7tw_zrwIy z;j^;89jEKP9Hpu9@vsU?=Ne~poDv;|q619t-=RXE15F+cm3KN+eda;c=T4~lJO}@% zKJ{LodQW#+q3K@-m2WGQ{_KNHe=jKg2SMpS3I37(oFQh{QXhA3LxqB&mTwZ2{`pY# zUj(K9VJQ8t!9UVp==y_UmTm@Ac+=&bQ2P7e@1%b)l>RYL`p0bhs?`bIgo1ye?gVLYHx-fyc_FGm2*E-IWNHfrZ=UaL2s3>^Ew@7de4K(e=n5Yeyr!D_YnBs z^ya%>rK@M(M%?L)&plLyp{TFvdl4%1>}T?EQ02Y@Rql5lZ|`e1Z>N$-dn$e2v^v=I zo(xrw8=>@e!f#3MQ1@d^zZW)TwB4hxIMebCIm`5%52dGR`btky3@HH;@Ijj&xQ9fqHfbPqsmOzE}&sx9i0hKmt?;UF2 ze2aeuD!k@$R`}dj8`fUznZ|bT3N}V#WSF%4zm{N29zBx%V}+yT<$F@K3BAH$jzmFAVkl zPJ7DHrBL~t+o#6z=RxH=#^n=TKHKFvF8?pjgDjsNOuxrbbiU=g04gkYxnW$UGATLTrob2+*{ka-OA@N!FM z*9kdXCuBEVCvbcjc~$S)`>hYQLWSJE6T|p+{U(O;P^fe-LG{P!c_!Pu3mz(*PpM!fvUUS=NYsyzM?Pxq3` z&3&&qXg@LN$X|2cYi@ju6@!1Txp6!Vjp_*Ri*t3|VPcTWU(@e3D{cyZPw%CBX1k+c=)< zx~L9sZ$0(P?)cmGDz2EnRf8Ma+c=K(ccV1y+eLIm+dIqKTk7qb=Iy;I-rm@6zsFtJ zZenmef6eu8<6{l&Z5$s2Q8`+lDz8tukFR+?-fnR@nsz;D^Sz!2d%efI{Cm$&)ssi_ zsK)2b)d}Xd(!m23!CblLfQ(~ zbFJ&WBd#|x?ehu+~&+mlv7D4*tl$zus)|z{#1bg#bP)D9G$>5ohmT$7- zawYd$_}f^(Sjixsb6QK*4T>Ah-)6;A@5VB72tCofQM=bsexa8ijZYa%yFA|3GmXFF zoX_$4m(3o#|HJHa5R`rF`&wz7Ya6dAOUR?+HSXu*=lQBO=Ewg56%J`@{=FEQzEt){ z`JUvW#=rWfXBsM8XLUqpZieMM5-OaJUY#%Ic{y1D&5UcZCDOu4M;li#**7 zsBn$Tc3w^i3ZI@3T*==(ukx*bjz{H$gEE4HwkHQ8Hn$1(W_}FfosYE1t!i7=*#4Y< zPrufDKl_&Jl7n>Cg)LbZmgY|6wlw=)6N7j7v*#{pe?(5ud!}RUE%~0h9$}7WQ(oIQ`Aye#X+g{BsX=L13RR0zHGU!Wl;UigkTeYrTfSp_!ph~iPtwD0@BLoG)_bNBYE^q z)1Ex<*p25Mv$ok2F1qhgPTgix7mc%AU!M+un!h8U#{X!jaX$%ayq^m-&gVgm@9SI^ zHJIr>7BzlrpvLb%q3#QQ26cb?N2vSX>9^ax(;iUw0SCi&@DQl`fF)4(0ndWE z4|oaGdpS2i-T%7>>i*voQ1|~{hMnR2Q1}1pp?+Vh1=qp4kKGY=hy9_xk2M13!egMu z++^4bUI2T;1yG^d*Xuv}`n|<;^Ao+G>@)+)POG5o^g5KCzJRjN>Of1vEr zc9z{2?FeO;ZcujV17(*zpzJaj=E8lT>{1A2mx)kznGE~D8=%HftUKQaVN5nXA1(EH zP~+$8cPeZie0Qnk+h?B1mtAIl_!g)T^XuBaew{lyew`aRuh*bkWmo!nV>ztcV0vGL z3O~8r8~>JoT;P7rp0~?v^ge9p`}FP6JthX9^0z7f*|6Nk4er(RyxVbCrXc4f0MQIKQ~)D$1Jt> z&4x;Q2UOn2q00CNl+Leiv2i(JnV*-S;!nE6#_0km`Ddtnt*Y$2GyrPc4ucAXP;HEb z&uN^=a~fxGuV!+@CbsX9S-di6K}D1{cSXbXzht#TVF2-}>u{(tM>>n4=1?irvjtP3 z=F%)EUo#)#6~myqRU(VhD=v@7@pR(zp6@j%eM&F=qRJEF^^+dWM?I?`+jl+i`LOJ~ zmaif4UKKhy=P`_BJSgQtk17gYqlyLbYQnRK5{ICWe0HY$*9*DF5=Y z%U=~(IX^-9n~p=dwt`1O`J3@j^*tS`{?nks#ZZ2z3aXv5k3#r7&{%sONMj;4q&3ea z4hymq2K{EgdpO7S{aNJ?*tb$hhqC{^E{}#Px5VY5l{OyVg9=YQVDsT!sQHlfXPXa4 zK-GJd%dJ*f`YurAC1_28A8T8j8nhkDZwqOiQP4WbWMA=c{&p1F+9WE6?+)|cOE!Bh zP516gY0DzYtKDS!vp=x%&V*{uB`&`JRep?jXwx}gr@vvpzpU?5l#(tsur>RNk$37# z?c4J@pD&<{d8ASP$`K9U3?nKie9!dW0Tr&J9x8W**T>q&bM+ri2=3;urteds&x^`g z-BMUX@cXUP8d|4yd^P2&%nIMvTMi5VZRK4K6>fI<9jJ0YcR4FJm3OT>@UC?>Yovx> zVwT>GuD9H;Hx@;%JA$80|FKYErpxKSnEqFw`ujtuy4f?-X^ozt4vu4O_NyJ=A1a*e zvcCJ0ozTDWcVGC*zwDexzW8^r^ZnXlgtuKjL*t%M3sK&5Z> zrH#vuQ1#V!Y_k)3H(P!Y@)tv;f9ESZpL`E>Jk$Hv_91s?AF}VReaKnVzqc}Z(0}z; zKGL3P(>tXKRm^EU)22}IH!JV{wN}rMpvo_N-sI?WhSDDk-)lIG_Zmh-&P5H+4OEfl z4GNWx8uuL=pk&#o9KHJg_!mt7MNoD8!sX-sZuVIMmCnBZGP7}i@s@|i%X-SX3n!&? zHQrwvobmqIh%7&r>|;C!%8q@U`OXo}QBa{~o0VVjt<|#%s-CYxjjOLb{=n^)?%D6G zKi`My&-UM2f31c(&-~rx+#hURa1c~IN_P0V080J~)cNOMQ0?lOmm1`;Z_;BO@3~Cp zH!O6W$8||fw~4{a{N)X04Hdu6(;f@gfQs+ZonwcZFKsF}$}9i7nKK`G4&yK9CHo$H zRQB(yhu_p@i-B*LBnR!MXYsv*%pi&HkCop)A-I*lRbF0Hj=ry5Pk-e;WbN7yDtr!Q z*S6IbAB((4nRC4Pzc3;HRI*-^O(d%iK5_YLs31M+Yq9LG#_xA7C(Ur; z8zY;?Vl9KzkNKjvpO@n2E!$6M6XahrAy~p+{wVA7sGN|I7-URqUEZ@(O3-O@M$nEi zl)*UBII2sX7<|RwRL>Wc?Oe(4?mp6Rt_3V>qW&Y#HsW;9$$w_k7R{7Ytf^%*d~|>w?JLvZHHQe zDa5Jxc)mFQ!u5iJWX(nWX$_~k*B<_SxL(tmP3twq?I2ETM?EXQ1{PC})~t%tv+^}? zaU@RZ))N;{PBdLDQ3nzy-&}Q_jlad$+xYwj%7$r`=6||Fwfz7nn@oVR(Faie=CnoT zXEs39<2|T$WGuFHgP?4<5Ncg}E7ZF7KBzW53{~E9Q0v<|sBq8{yMCSsW!rP0Y`7T8 zChtPo_GhSdZ1RnkE(@wpdO)pT_kjwNp{}Qwz#RCL$A1PjhGa{HlcD-Rc2uZxSvFM2 zfa(v~PvK~nZ*w`iKGqm*`do4t*H6zScjvj}ZhWVxW6-d>YWu2{)e^qH6Pc)jMD z{u7|Wxh^;SmQ8-+^L>$>@0XH)8V#sD+w$LVj^)pu=Iw%^J;LX+8oyt>ri}Y@!^~cf zLxq=JPUw&lbSTRRIuxe|9SYKd4%4#gY^{?TWDcJg4C60%jPDghT;TDOcM?i%8>9;w5|ve&GA%zjIt+Or9&ykDWpzja^R zw|W7pJs(50=Le|vWbbGDUIU@ZnGO|yBUHL7sC*AXtxukSYVXk_Z2xT~lssmC+lPDc zK$G8sTBoEI+CJP6sCpd(RnG}f>y=qBT(3a2M{QOZ4`mm%S7DjUy|Al7bp4?IZMuF? zTyxLNts!2a@*pek?@%H6V3T{cOXj!5Q&^Ad9$j)!Q!+7liNA{0FNOO=QQ3UhZ@(S3 zaSHdp$D6)upu%#Och#x5;oezr2ItReOMfy{nCbHGm61mtg<99!WrF1!0AHAqRaXDPt4;5TQ1$=N<&Rv>y~d8ug{s$DDEn^qcKb^s+(u zUmC_|?oF2eLZ~qPX0zvYP-&Z<$EKi1A@g`UJ_ITp>T*+iRFYoyDE0QYKiAS93#C79 zk8*5rO~f8iIeh+^efsEglWV*lx!(RWpu%G=htDqH&qnaucm=F$^H|rW&kOgpYZGf2 zkKubq$6~Kh&DyID{eu}es$&KAQdk(VTaDW%Z>g2L*DYqZlcB;?sByOtN=H_HT9D6q zx(~l^*|9#mu3c?rO`GzJ(scSqYs-|ge2>Y;e>&8-&T;mEnuqyN=baHw&F}d6R`Cjw z6_j7cbv}vvfu^ju%<8uVD(o@e+A$ug{!c>bd+c(X=j);7_eodSd2%+?dGji$bT2`b z*ZoR6Zw`bC!=bM44}-eCKOV|13GGvY_S}bQ&mK_w!ENg^>ik|zacjQG&GVxCRZQ@` zq==l=L%;XXj_;82+s2C;p2C(b^WB!^f3|V1@>Q1FUO&sqExXX_wQ#nza~V_`TW1d7 zzHj9BvdbIhQ3<-^d-DPM71CkYS5B1^?-L!D94}vMi+CUCSh=6KYM{a~6V3j=LfQYs zNoLolq5Ah9Q1;&prEBO3X8(~etbew?=i6|Ot@wYOy$hUI)BgXzr|Z;AH8b62(q+2p zCLhcE)Bv+2+2q&!Uv&47zrW#pRfIX z?`F@K`2POy$Kx~4d9S_Jd%f3Xuf6u(YwwM}lBDmScl!SN*besBg~ZqXn)Lm1_fqrg z94PzI{#wJnnlUmqe#P|cp6RR+&tRPZ@7Cv@TE?j6sqp*>+tt2*Haf=aUI%42yH{q= zi~B_Ryzi?s@B6BMuV^c26)(|1o2qUa1ooX-HirQ^NEL?37Z{JdHhgYGbU5T}4 z{pvcXa@QY+N8qod#@n&&31+Vk4CBYvPm~h3Xq1IdfRYPbZ)n|a^1-pe4g4Bf$69wA zo@=cVV{_eb`cKS8{2X$w`Nq_y9DP zdUhw~C_^}x*82<+ey{yZFSDN~ltGP2Q~u*w*TL(=UROE1|}x)iCt=1`FR&TlS@V zikF;oOPD@**wP&XCFi)lqw8Wtp1$Y-KQC|=EH*ncprjnC+{;~G;oJZ0cs>pL(eXUr zZ4ZR1|wU5|o`gHux{U@H|I7 zU`V|%UuRp&G5zY;aXqfvbBJ~4;WhXX%CVMT0hG*eJzW3FIlsQYXLE<=kQ#xF6E zvCYr9q#ws`vcgDTUyrA;x%81As zJ?Ie1qsqtAl~8?TZESo^-C=$leW&%0{TEpOxC|=pw@~|c#$6V#CzK3#y?);)AYVzr zUo8G{P;#p4Y11=<>06owmuzSroX0l_&*XT+J@YEcUSMUncNmwS!g_dqlWwx>b8-F8 z#=J535RG{?Ue;}1_Vn1;C%>w_9K-+X`v=ti@tNyA?y>R@hpNltpk%V^^~<01@|Syg zpY!s+<+}O4igamyNLeeuI*uxt^l-SOn$Yb5Q;?v@WdRJo@uvw*4?D8SA>O zXDVPl)4(8l|H>HRkMh2f^kcyTUQbm}`K|Quiigea#7E5TbSS@`f{M2VhW+JH)6atP zGcTWK5LVkW2)bvOB+m)NuW-M>%F}FLiR<>vdfj^>h38v8O+0D&T>>Q)uIKe>8odj2`@3#u zPOE+XwDb`>USH&_YEm4QvtQHV(9STZdU?+E)0)}#ygp612bmQ#TW#N?slevx#8Vv= z4ZMXHMVmi+L&+wKX5kencEO6?j$owe)ux)vK@`ik0PLD{En=QFc2cB8e^=}>X& z_uJqCtB;D;Z2L=4vflL_Jy+M4bUL3d{KC@hxyjO<3&VV3&(#$Xw``?{hxL%Ny&k5q zP5nV>Y96dDN8tw+|6C}!#P#W}zXw&%jZ+q{DU|ee-M)*|ll2BYxHq29HQLzqLmw;4 z$$J@Tly{Q6C9|OH&V}mN3!wUSh3oZ?x6xcGI{p$hl$y8AuOVyAuO{ov-vpH1zeCw= z`Hsy`yF=-{-?jPaeo*t#kx>2=L7g{`hmxD1;y>zo3hI7OqxF_=6DaBJx_uvL7uKu} zeF~pgKu}ZZw2n#@R%=IA6xo|pybRA zmhX*F@-dV@TcPsF?wc9(hDUiUYkntTOZ%y|)$Dakm}VQ4F4i=+ z@o8$hjbHzQ@_RrF3y;62y9`_TFIzsxK*`2eJm2n(f)<-C&r0H5$TsDX#eO5{>@2Oe z_^(6B2T=WNi|bXdyS=W|(`vJq!rm!iZ2P15`fWVho@FT7o%f}pm(f;Q+Y?Hr`QIH% z_H$ivB)3A@h_ACzK6$*8qz%{U+SFf@r{mb-+Img@$321W#Fu+Lo!HXyIS;DbHr}`0 zKF$>oUuDoX5K6xHtw@(Ys(W#HX>HlGePFz7=rx>o%T^1HKaxDCbo;x0gddlbPO>+Y z?c-dJms`HY+j$In(M#42S3pU&x4V@qTYWg}t4XhiqTek3%E0{D)%}axT}a%(j{|!` z$qd))-y5nXZdg~|Z>m?A{S5bKi2G;HGYw@v9D8rGdcTkHTd^~Nijl1Xw>2E9u0}xB z$rNX_Z;OgAY77<&-?04u2PK2ww0`>>l#O?x_VY*HvT^Mts5~}6U2pgm%GOaF7c`Df z^y5SQ<8l5)c04XxW%->3B^SA#y>n);^P09?htAaW4l%Ms>U+U#gd3k^I@^|z3h`pDm4eOZrcJe42w^@x7mVK_5z0}9dSyKi=304Go1^ZRnGO!t)b!YuT6UH=(seaYTiEdGfw2mMCZmq4wP{m%9F-`R6t$3gYCbD-AEKIHoA zQ0ryed~e%#g<3CL;`${p7yW+M?YygHo#%0?yx$ejZpve%bCUCNXSs8!b1jUd+U*BF zSbOgcWos-{dtc@HBB=I$-}PXtwfC-2@sEXS@1*OuLACcouD=1*-q}A|{4{+(Xtu3g zv+p0b396qS8~n(x@A;fl={-g~ztDDh3%)bN^9Vy)hugBB85<1Ic5EqbT#u)>>twBh zmQ%P+mdjjcLuSyL`=VMKAH2x56@D|_PFzpRX%gg&;$03^E$#Xm>*>p%8XGL;SEcxR zCWG_Amj1kk!e8aL(rwk(>!ekgxF6Au`w^MkkJWcss+NuoKIgaf?3Zm_P)yg_m0m+S z1#LIiJqOcVZ6j^3`Bn9DtIxfkxAtrOg6Wq*$$Z!2_lznR@P3S3pJz4jezg?avj*7q zBcY_&_4si${Vp5xt2wq8xV>wjWWDR*^(@wBBzhDFZ}FQtaAjD|x;j0pew=pAsHdjX zlfGZmBB18Lr3YVX_-Ohd!12%e>Rb?{|myn3E0Uxv^fJNzYUHlzBeSdOkaMvvTxR;TGy(6y^yeF#7lIvbn~F(Ue|wvDt9~YUv_ka0}EiPZCkv<)6|=b0JZELHx7rI%evpW2JnVbCInDE$6-WW$3|U z^`1G{&FbNBD9IXZ^?NLo4@;oR@H$i(HbD81xqER~hJH}_?d$q@sN?D+sQBkVrGFCY z`1&4{UmKy0uZ{UmfsU*FpvpK1s&4)Qb$m}i**OEs&IM4%`8%NO+z)k}UjcP|{|d^E z$|-3BRTq<7um3!Q+OhsSND_o4_b@vTK*{&6hwC93BYYo8=-j>VUe;aiWARUgk|{8( ze-F>@mq8i((@*n%ci&PrCSgNQ@E%3 zc_oxQ2$j#8y{x@IgR19XsOgzdcK^9|ao9&+g=+7uP~mNc6^HdZ7|PDRQ0-O(Ri5~B zf@P|w;TC=(lw9t5L-kro{0gtXPrY6@d%d>zbboaJyy!lTbA_JY0hZrnD8J^oez)t} zzZo^fMtQZ#G}7lEZ1G=#l6HrfZtqjo^{igMdv?8?bU9Rp@=4JyVhvRNY;#8Yc9rLU z#DQji3{<=)pxXV^gG_$`s$D*WviE1>-U@usxL5A=w8y??znuCA?R&j6wDuu=k@dx_ zCAJUcL!~KzWnTVfhnl^SP}{~p`8x%M{xz`vz5u(45w?A&!!3ORD!yHBZeM4el8&}& zhcWI?btT8qgvGxdN}h5(KEFv4Kk$5VproJc*?st);lwsPlfw0Uo;_+krDaWes#&S> zS?Ku`dbx|d+zF_%l|r>a5~}ada$VGzH4kbWe-LUPSq96zK2}4?|Dft?*kM**`$5?( zfwFlHl&x!^Y+Vm!>j|iFY@O>HU|7$8uzsYP@|1f0ro6ttbv^G0^XFbDf2yGDz3ky9 z9cliZ2^F5!uL;ldG}p6U1<{-?7+DSf9!l1^9)CYq{{7Z(OX(+)i(p}~ zr8^l)rbCr?j_c3*_8qN%8G%hn;fZEv6_ga6WOmMgs-JA;s~L-%r<#`9vpDKcrS4C; z`?JWYeP2FQqKna3Ag0`(UgIpE+o9r2DzSd@3RFLN2kJQ7n0k~HK*ie=s;?G%_yidG zH-PterM2aJJTKL;x_wpK(wszgQC5Ncoa=tp&|ei-_GBxPZG@|jrsJ>jZU>cjzEklO zE>XO=MD}#dmPGRx#aDS1KVE*tm##U1SXgBKUkxSKj8y<{ zqpdgctDIr|J+AA%&(3_0w&&=stVij>oUudfIB#>tD(d-O@>G7+Uf1iLQ5{sXKWY23 zM_GBZk2d{*W2}7}d3`i=yxNHU8ZXZ+f3fr%pzPWD-Yl-$wF%lx@#o3tt7`wO2W-D7 zqCF+WPWhy?k#E{2U6d$1>jblZER-am`p$+i)(re*(8JGF)i@8bJa{5)qU z{uKClUH>}WOtwjCPWEz5uzXK~vcJ7vM%5n2E4+NAr_2jVJ>LDE?)f_D>b~z}t*1*q zZuK(D8P$vYP@ZwU>@@S^B`EnCsy+@m-Rk2MC|L}(53GTq-@RM%UZ3_syT!FnCr4`$ zg9ojB0`gbf9#A$1LGA0qobp5Akw2p9T8yOh6wB`eDEZm-o)gW_{h(}4fNGybQ2W=5 zzWrAyn}7MM9iJw`(Eo6~aXap9wdJ_VedEQo*DTb>`g$3P@KsXmWtil;C_9m_Nw@nw zl>7`;w(L{QuVIrcd<0ZI9uGr5>aEwVBwtC%b zaehkOaX!6*dE!*to`jMmuJ7nRb^&R0Tq~Vs=}x`C(%l8aa`a9Qdb6H2e@KR|N2M}L zGs1m!4C%DJ-0N+T*W*&>3aEBlM8a?0*I|Z}|#p-jYFm>%3sssNTc(-f_L5_FO8QgC!}S zq~I*`W6jy-M}fD;3Em!MuBUb7{j1C$I&jUVHP>}o4-V&ZiTHeQp=`Rn94P7MdOTh= z@v7awkD%m7*TducsJiXGmG}kTFD60B6sYRn)t@OX@Jd&vG=GKd+aMgLVUGY=iFNdCM{$6&Twc{;NavRkC^tkKK zLbd0+uKxhluKmxqc0CwM4ui_;MyO-`f1!M}bL-k?{6|n$NyWvs{VOOr>=LW5aWG7m zulHOrmT=t7<(U-TRT6&PL-kea^;JFNw(WgaX=JDTAC~@8D5<%~+M~JW*UIxNg{tE# zJ-q%nFxUO8y43yAJ5BAF63&^be0%kD+x{Drw7A^t=0Uap-mdQhCHum#d=1POH+s1$ zydSKF^6`BrTc11Co(lioevLgFQFbpLnozRgLpg_O>*cn?C!i>}AVi8A6A zxxKVDycd_TNAJ7~&mpF=rk#5O?HIS4`F9*DiLbgVUs^lXrk=2T20m%|90yhYi7>3^ zHfcfgW%evviu4s9SokI=`3Wk1%an!3%bWfP@!h|tpk$@%^`9p!AZ~aZy4URVywBpF z0_8{C?ik_*H&}QpDCy>UT6VJ_n{&PF!L|-NJV)gIP2#`B!4Y>C2V2W*&K%d%?oSWy z-=OyfQh!652W7|c<7j_Ov^CACv^URB4^4vF?f_5Dt|-xZ6@pHuHQf9`_y z{a#4ig!_4>`+ceFd4qUQ2WxV6V(!&uvyCyj4qff`YaTFrpFC*xdsY12{#N3axxHK6 z{)3Ty^*7ER>R(sSf7JS0%G>41xn_S0l>cG<4QUo6D~p30`GwyipuXd}-Q(iD$9${Z zo^`Q%N{RKw!KM5r&-OZx>slW^l@a_s#%q50-4+MkbuVtBJ*OUq5nk?T>+5yWh0oVm zy2AOz!6bfJW4J$qpK-l@+l`>?>T{AZ?`Mb7j*=PPo@vK44UXY{&4JWGlLI*(GG6Mw znXbF?d{1fGxy^!e*~fHkLFe3Q?RZDE-Xj@4!Nd964K0Hkwqyn8Y{(AISd$Z+vb-(p zHo2p^wm8^@-?ZzjZsL0O&Mks&AJsoYwtcV^pVclk?8B06PK~_^7d4(nV{!HC){d=L zTe)(e_SfCsvhjBxsQ9y>#@}0@?Br3VJ`;QL4vOx4L$y=w_i&2r9C9vxFf4>|%VOh6 z&CQnn;9D%ey>7Mqj)9@w*z;>u*r>X}!dFAdK>DHl+kXe+#71wkYTv)EV84(&@B2r5 ze9U@`^U#~j{@(Z{nc@CL{W^G@cHn3Inxh--TsMqFu{h!V;=#0T5$m?YXDb+6-Y*WO z^BZ$LZK*KUu}d%GH&J1jsISMHFBC)dg|lHK zHGcf*eZAFV0aV(tP-*`LmG&P{X)lAC8-4)8cCU9nl)x8BmbcGHD4F2;*{+vC<#VU& zYkj-bJ@1ddt2lUyU-Z=G#-C%XE?QuPxCarA~o>As~bA#KY!e=h1Uwh`F zSx~*8IQW=f-y6+N9X-s8cg0i{2gUprDo)t;8KFL#u!N`6_P8ETW6wdf3R-C`PlD$l z+-~Wr;$SJixLxVL@~d>a_4Rm~v`*tVb8(|^PFmqMv!1G*XDE%vq=J;i zp9m#qLv33HW$!)TZu7Ow?eFAT>ozOgKiP_G?ufFV^m)t!Q1Uob{7<3!>rYVqwe?c# zuRWm3)4g>wp6O&>GqExE{Tl^Y*AxeX_>~@`?&^t8Rrsc-2)7iB@9sm1c<6*LrPau@SCvCqif|3M`wyP{ZdAQ1_eNg3X zceCA}-`M80Ac;PiIJ!R{Nutcky#z|0g-Z7VRJ*jg*6OS8Y}>v&RGtSy<#VL#vMad& z%9m@Pd|2yx{Jy)&mc|1sjX0)+{hqokyP`N)#BU+~+IktDN8tF|l)6^<^ZY8b4V(4# z->0Pw!}T#4LD8(@;7oq=?pzwCjq9Ng3493W5!T*SGm3-v`3=0q@~WdZuzn`R`BY2d zN9$+ey7gt=XS&+=Im(^bX!Z9Ll)U76L(gnf5Wnhw7Jnm@wD{cGr!!PL*t7Zm{Wi@< zrr5LjYe}o^`Rt350%z&RmaY;?mO-`mdmbJ?js}&SXMAGusapZ5I`&k6#*C|l_@I0vg_AjXZH4mzPJqUGvxD4t#!JAOm2R6b`HkhA# zL&>2~b|*sFoeE|5B`CX}K-o>F+_KvS%5FC(yM15_I2g)byWZO>NS{)By?2F|B~fMj z=Va$J=jF~a=R6om_4j7?^&iZiw5_H$gYt7v*Y|<){|wj9geupKuHOVDRj$7eRj!|1 zw|U+G=6U^@=k@sAJg)Zn85z7gc=esw*+I$;y-Y zmHB%pR5>nneIX3n1Ip%lD8FZaZS8RfRC_!G)gG@ywZ}J5d333F!D8`+T;N0N4E7-+bF-O<#l~tN!s}FCAHb=XW+Ny_h_heC%Ik%mB)N2yAQf9 zJCb!!c{d?%)Wezd)2-@)5q<> zK5pB(k?r5j46l)=NR#jT@$pbH0jk_dsB&KK`eRV#&#U+RO8OJ`1pgqOwt?-GjXB=t z3YRT~ZM)spS?T?HeYJr&VLSNoW1t^DZgO4QC9R;+p8#bmUcd6e-oIAw`(}if`SE8x zlziiQ{5Ua&cojZQE`yS{q4N7W8b5VCZ*<-IOOmeo8>^RQ^dCtMRJsBvKM!_&B2*pO zI9zvq@<|&iS6yz zZGv&(_NHm$WHvY)Dt=me;~@P&ywTiJ-vQjh9Fl7`g^k7q34Xy{%4+&*ZiXIa>VuMo`k+praD`Tt%_{(|5GTr zI%iy1PxnKW%l1RP8>RN#D0rHFGWNUytG|@_g(sCc5% ziSk=iy@(P~>pMjGDQ3B@?U7_PwQ~FiN)|%dSqf$ML#TXygUYvcGpmp8Q2yn#wEEZp zHQ)IbYQEDrV_bN@D;w&5*C42Ms7FJsLp>GBzw4papWF}S-)B(kPnu?WzxspwT+^uE zD(`>kZO#9K+nL{|!mxdMY5jCg5UrmsC(UKp*R~4kR$K}rDe!!+fs$)oZ`;cBQBY|v zf~uz{U0>tdULE*x-Jur?d7DEy|U-5 zt`l4%89Nu4gMOyKe^X zaqPvKn2!cHZ!4o%7rR_FDM@hp!S{NPSusdMU5p<-HF%Fb?3`|Vt) z{q}ATPw!;;YisCutIFRh_&Bq{G-8T3=hK&U#}-}`O6pXNTx^#>2P{vO^#4d<+d zY?CDNEx&7^u`PLiO0mA2IDISD0YP<1!Y z8P&fSwO3?Eb$6lnG1aH;@vHteEvoJNh3E^h74Q4%^Y3~X|8AE;ug`P5e*X>SUD<=1f@UIOL2{E<8gRR;MY+35NJ%A~Ty_Y>7& z{dO+%c1gP3J3XJ5T(94bl^(y^_t#&cq@}mxP;b}a-k#xer9AiDVRlYUR;qQio;z!i zNH5aP_oMP_;DirIr@EMC!hBWvG#f= zu95Q|o)qul3HyHmapZT>eM@*bTDaYDkzKCYc1-JQ*GsCy)wbK;mof$$gK<8z^Srh9 zEU5C#h3a1mobf)d_>rD0u=1>glJ}v~e+iX-;BMAG%b@z_T~Oi254LzGL-p4Sp!(}< zDErw1GlGHK)9Xxo)Lr3cZIkr!m%dLn5=fNKEUf2^>!d~zN*c+~cO1}vz zz1}n8-%w8I4dpskEu^nU@9C(bA1mHU=UV3mD9Jj&>{K0S?X(pte#Sx8UI#$IzTzo*EKpVjy@oA|Poa39nMQ^PF%#rv53E9pP#FSmI= z(zl}XSyvFP9ci4fGH%75&Xx1~So$(3S>t+qe9T|Yyx7OLUwpjl=;LKP-U#C5d-yI; za#$2EJWt!J!Sl>g(%pg6DqDq*uj`=7@d;GF|Hi2@D?H*a9xu{cFn+4vwRcA0qD0hu zD$=_XPyKupluU%`=cTTvcDDN2rLUEzpr6(6f1v#O3aTA1>u>wxLa6XBq55U|0E=G; zwSP>4+CQdy_zh70ZiL!TMhvw5Zx`_S3vUwx1pj zbsqPm>-~1M__ofoV}t8F=h6;pgDmgcdqdUrA z1BY6@oDNlAGoZqkK#gM`LDknUP_~Nqwt6}PO0xU62zu0A`%;j_zM*+TmHS=cZMF`| z_9xEB?{Dhqzr=Lqp?IouF_M%YAKUJ3ehh)KT`|PUbIKl8p6O8GUH7!|Tn1I1J78E& zsB(P>)&4(07hfS>;Cp$;y*-t`A_aQxaw_7Ls_E8mY4N2ITlf=ez#8scD@jjunktjT> zTa{7$UYt~E*Zfo2cAsJ!X`^fYMMs$*cS6NY9Bq09RKHl^`a4kDKXzRH*4lkARJ>78@xpfIeGf%N8ZsOaGeR z%*VOr7+#}n#@eCGFs%8p)-kA??Cr+IFuh_pz@#O+htRd<@pqPJ|{r=eUA#mlgHck`B3t<>#_5~@LZ|N{V(@%VU>>)A4TKD zUV1)!$L}%NNP0cbTjBGWk%w4*kBuIyPJmb!;eeE_Q0)Q@9u%XQMfc z(koo{MA;XWpIGYS&8txI0hCYQK*c$<*!ug?P&URu*-Sv?)v?5mR~1mlt2M6o9B;?1 zzeCNZuZHsRtc1-|UWS^dtb>}LY=)Yjv^v@5Cw-viC;LPBb2yY72UUmBaj@wAalvGM z;W|FH*U_~mZgjICb^EyBv^&SyyP6foTFv}Ll!J89I>@-5oz*Dd-bz7uoP62Gk;(JI zd{t+X8tloBAq%`8LHRimDm?ATX2FrH!)(d8s`brw{@ji8=lJ(KwQ|qTpFN+lm+gEa z%4Z(B+F_wH3Xhn)$MVa)*Zdd@6@Lj-Tc3HKwcEd;+Ue@Xto&F(@?!64 z%zvf!K4R8Q=GT=_@}ld1H18NedewauZ7NymjM{WQ9eArMG()T^c-(SG{cX{0r#= zia)^_<$o5s>|N-L{83(^{MYgs2_=(UpMJObcP*5EFG1OFw$S{`h3Y5!LiLYvQ1LE? zikHoO;GNSt)_wk-Gc5U>wbJ@?!s}`>R9#GS-VEjQf1&bN?3C{c7ZpD$OGJW#f@>}R zg;4SYRNOD2{Od8>^s!L3PKU~4!u3{;JD`qJ%b>!S-eAX}H=&MK-$2=W;YK@NZGb9o zL-VDflr!JQq2W+c1(p6S*IT*2b>?$ZY(AGDeTDCLAN&6JB~<#13M)@nD7^;^>ph%D z*3JoMVj~pq?*qKQ7rNe%-xZ`OnrrsXf|6TZw|QRent-*$RlX_ONU{mapLF`0>bo73 z6gW%$cvt4f!6*GV_##yNPoUc6d)I&R?Y}}v^Si8FhC#_8Q29saKfx*Ef@}DdJ!{Y9 z#C3b;N?wq)x^^Gd^(*zs;8m-q!c)!OJy7lcC{+J0`mNig&)d_GX$!Le@% zMc<|_iu{>w@iH$rfA)v+=Ok$5(tFc+k4FHTy1FGID%nU`68JP%bLYoO|*H|5j3 za)_6+{&~!_Rn{-6o-luFprp~0rsoZ774)6BQ_yR4C$5X;vA#YhcD>b(JLTB8EKC&y zg-b16|EJ9F;ZXH314^EEJwD%ALHg8Ui`US6riSgZQTU4OYei6Xl7Om{Qm8seLiOn~ zs6Jf|HP%%?^_}Nn`9qe^Iw(0MZRhE9)vzETeGSjoWvmS$IV)A$>040~X zZtv&K3A!>T$*KK*VQ8}wn-w1KsTVBWmn+O(tC!4P8z|}Tx}6{KU75$m1^?t{-<6@J z^{ts$Sel;g;aXu!Juk+yV)i^~d**EIsH3*wJJB`QN_m~8Ubg(wy*@{J{n}XEuEB95 zz1r%whW@Cs=fvtb`Hb0n8cNo=emwQAesTp=|5)hlV9zMCt}=XMP!==`-Tw!&h;T* zr(1;`m7$FNLo(0#v{Un9ZI927Q@>cgqkpx0&w}#z3fFIh^85OrB&_#GpvKR)plpTb zsiXBi^fp@0P{SEoc!ghez7cCc{r(6ghy7&btG}*gsK-yVG5;=rk}}sDYU2cHROSM& z&*4yYH4>_h#zXbZDKO#rUIrx}LdE?SDsGdXtsjqss?YnNY&W!@&LrQIw|_I*OESUR z?QGZQK-s_7!|i;lOM~ZI6<&^N{8XNsq0;{9y6nrxmap3Upo3HWM&Y7-j_V5VK|I}q z9|Se08U~~5h|(25&O_Or)j+u7$xht9{FGkf{qE&7YpFZ-dyD3#p9Pio3@Bgkg(}0b=_TR3@b6Ii9xY13>y9Tt#aq_0 zB)tB(0ZPxzC<)891nN5E+pgb|SrV?FcnT`sd#y^sbrior>CIc0gzG7KLanDb2+GfQ zq009O)O*t#NBuOmu754QTE$my~B&{%=Fc`#I)!qqbI#d!Y7_mt4QHowd_Ks65s{wa0g^XLl$G z=aIWXNdjs;PN%>A@?>#8_th43Q!jD7o$?nm{97C-fo+1>YJvwI4Z-D;@( zvp1N3=YC@To&KqvXUv4!K4hbv-_3;DuWp3eZ#P1n-~9kXzjkoGoBO7U?X)Cex4j%If1TsQP#Wsy>=hF4adnFXxV)k1c)6#)v8(BdUFj_}KNV zk=8$tfs#|9`oqOgel7Oxwy)T=g=l}Bi|v|;mi{k)we$<1(!T&zPxc(;F3f!z{*HPT zHlpW6%U_#MO4hJI*{F1C{E~>WDXMQr;o-(&%kOVc@^>g3w?mcVaj5!T<>B9qv+*ml z#Kx`hQ0Kkp!~cul8)JUgxZm5{-}GwpKk~03zw;+pJ~N=?KT!TY3+3;dQ2u`I;RjOB z+OJQBD*J;_{=Vq-Z_n%WYj7P^*4wq~OH19?i`>_lPWh<(=frf>I(4q`J1SFRjQRg0 zlspfW{u?O&o1SR?=Rt*+LiwM4lKH^}k3|6hk{2O9%B1nn2sojGfs zI+SuLPCoT58R(4Hcg?A0XTaag&y%6@Jr~N)t2}(!B=h%uD4ThE>iMDF8?4U+`Cf(* z#jE!ET&S2W)ITnZ(tp~}_iWSa*~ zh8i!XL#2NkYP{G2WjA|3t6;#?KD_(2H}9?L#oFYqwb#4+TINiz-z+a%XYU(*p~^S} zs*e^zm2sq#f5UJwstfrR7x^GveR<6Pk95jUb)x)5t{cQT0grLYQEQ;ey{mmd#LZ>^o6-_A1EKv zhNlO^d7iKh*DuN1K1IL&>*LaT^_D<-GA&Yqy7>`ot?xiIu4EeaD!jh(dg$HX?Zf+%<%C~{4W$Fy zseE4cGAms9>6iSV_L-D$Jsff3&!iL*XLk?d-%tv@UM6_GOm;nR`>mkzQ#whZ>sLbM z8DB3af9u@0@^wfn2(KPxInd&5f|70rnLopzm21cI z<1%a{23fq*(QnrSu@{ z!jfR8f0P7^TI!xBr5;^BjD8%Cqvz2%*KNwVZg5@+@4zhyl7pYNw1n3UqY$w;f3&`L zEA{dm(bW$?D9P8Yj-q2~6t1>WJE)FEY_Rpc)$MG3?<~?p>wC*ftzOqb$+u8xp8vb) zSyQZ?`$EYsQ2Fob`fgD1hq)dfzvOTHIG6t}*WJ9mHhVkneuno;zN674ZRfhzVSSz6 z2-1aR_OfQi$}FGa$0g~xY}Xjl3u;bR;8Z;6!(AT>HK+TVGuj^6V^ffH|6YKSEl}lc zG}-E*LKBS##2pU6H0D_^7k<)e_w^F&n>QRg_3Ph z{xoF268qW~ylHii31zb{l+7VfHV@YJm(0%2P;wzu+{>Zj-U1c(L8$)tyz4JP#ajg> zX)n7!_0~nFysY^T+V&zSnc({W<$iqnd$srDQxBV+mmjhG*F%-H_oHU_uTXk?oG2iD za)yQL9l!(Ax(E3+T~nQ_J5}YDc1(0AXdm8(9YZ{&tx&xnOQFiR0;(?7IJG}ZPoZny z+2mBX^sO;n@f0pQ_1WYtvmb?L#dM;F@#T-UM^gH_m80()R^ER>+3vB%+Ur@U_Uihk zwO1jO56$1Q{X7?H%o+eSejM!K6QRbDw6|^i=m|A$>wX8Uv+M0gL51HBb>00nm;=9tD(fG8FDps=lwV=-F22&rKO4&4 z0@qhT+1b8djH-R_+CtJ-FSYH*KV|9Xz%bw88N5?mL_E(iN7t+UnyKDA{9{)$egoHl{+^oc$l`PftMgr+1*j z2bFohf-2)lP{*TxLiMM+q59FQQ2pmisB}ZGwf=JqRR1{-s^83mS#T*-yymm5-*kiO zH-|!3lh*V|ra;RB$~+mC{|@GO`IuYr==q0(=H8t-nOW8rtf zPUwrF>de-ec3_=pd)Aq1K*jQFQDv%-^JuwL;demjKGGZ%E!Hc{YH}S`%gdDk8r*IdV*5Y zhihyevV0zfl5bs)uP2yG-0I6M-g{8;wd?V5xQciQ&u@z7f1~U5*Kuu({C~jg)<8)k zuh0L>aU<)4+T%w4VzbloVe8MGq3Z9iP;!^+aes%BzR>G09-bgPh{D75WIb6=)`RtA z`K%}F6dONm?3hXXW#pm!5-saKXHfOD`7!Ys^JDBX)61du)k@d9>pLQ>&(53LG{~mC zqwn)3pDPL0^9#Q_t38Z30dWH21YCa#xE5764t+A7CVa0j&jTzf30Co2d5%915YyAz zG!EJvsCSOBu1w!^!)7P)X}_HH0p!z^e2VTb3C8mqQe*1@;(EB2jP)Mvrqq42fcBFL z)g@B+f|dKj7p)$STw%IhzwE^I%RH`M=5qZqwqB31SvJ83-3v;Ft+a9MB&c@E-Z_K!nB@jNCwAm}SslW4g7!6e%QHyXKAL=Uewcoi zGa5_hqAQ;T&L}(@bCpQ>MB$+k{uI7u`QHU4>DAs}q5K~XB_p8hp9nQhoe4Gf_&3ye zd_R=*dfmq1gQ4;Z-=)8W?@TXm85C_Q32OMIuHxB4;?~ji++p~R+?GLVK}qlp^mSIKpm6DK=zE_45(w$B~ZttYoU%w3!sj> zOQ4QLFGC%R-h(<8)j%D08*}{CF{lI7F{mHZF=#l{vF8|=y3Fdm-E?b@fl$8h3+4O4 zP`+Oc<@;=?cDxD7_j{py{~pTsU!Z(%!uTrRGoXAw9?JJ|P`*!u^8N2nzF!9Adl{7P zH$wS7AIkT;pnP8h<@>`>$IWM;`b|UYUW#a!V5V(93`!2a%E~t$N^lMp8#AY2dl~7Hm1chfl%yUvz2FJUX9NuW3!f_-#{I{Jzq4G9 zJw2bOxJ7Tx4;k%?#jeY~wu=>CncZ{0wtR2<#`0SN6{iNOTvvW;;kQABXLm{GJ+E0o z<`nx@hh~r(qgHqyPB0!QUX=G_bV<_3oi|>!{MxNDdwEd#oD}KdJoQTEsTakLGqv;7 z8uD39hf*GiHD-G?I$Ng?I#yOl_BkKErY*tO)bIu{>O6t&%d!y8om>f z!!eWBzS*Ryrp zXT5&T;<`^Es81D=RzBy`eUyZ_@pcI#@TdHLR?d}B^3mtkKApa>_8AIgV+2$^ zkB5>6q3ZW(7}ir(^B{{l${Nkwp@#3jRWmmT-<#Q#I%*PBP@muO8?n{uqmHgR<636f ze@lX=`GwEEt9R57Q#`JX7TjABoX2n8p3jEIlRCQc^lx7Tl&K59=$X&BZtLv^G`QYw zlGkH-#=Nksi=gVD5~|NGhpLNe*G2VN)vw}7kIvu3_4V|P_4FQIZ!HNnUK_oiAtTg(C9Lny*0;4iuGdMUy@q*G!1ELF@a#UBd`G8s(4FUa zIto`1E(&NvoRuWg|Y6?&GD-SsfN{a5b`0Jn~ zZ=vabgX#x&yKeW`cwTbU@1M0wMdJ*|1<63?kyoFuK*kknjk_OHFf(_d!( zSHRHE@Vu%+&|&fK-?NwXsh?}Cogcd^1Gf&M@4F1erX+QcrQ7XbvvV<2`rBaW7wg%(Pt6Xx=vf$Sw8ut^#ZAL!G7{Lx zI?UoN7-8wxK&Ag4Dt$xsIg@m$zP5cEl#J_V=}Mu}h5O$Ip6%ard@yUT@!Qw=$MuHJ z6)L=3$zEpX9w>PM%CFC%`pf>k-M{$yT+-I`vGB~DE!|8gf9`O-()EV!GX|eoJ5_W1 zEpj_oLCIRz8%o#L(`iA z_x~3!PaAKCTyKZ5uG>1Z?hUSsnue{-*iyYz&?hBJq5N6ldi>a>d4qIq-@tYqXKJ9v z>1|GJmo93%C=sLd((@0u_P7E{Zi2G=C{#VHcD>mV7Oyqb_Vc0aehQV(w?~c-&!^Hx zjt`G-U7(I{dqZtcKpo%Chf4pKqsE8lS7$@{^E}l2aSc>GWDjl`^iMmy!TCkGw{ObZ zcayj8R&U=XZ_f|gE(^+bXQ=r_Ul`RzG~bAGh{sbM#ls6@;ZfbGZz!HPlI=S7je$D$ zO>}Cz!lQVi$|mXZ#mR?ZxxhZ zd+j>FAG(K3zZ&G7>w^v+GYnvXl<+@8-<_v8| zwW(>9^7Uifw+fCPAB^Hx?&;$Cj>h>F-uJ3$bgF&!Pwx4{SZTm%fj%|OWt@Z!(cGmwpLXEqVp!)s!F!XB&>(R!zKNX!U-sGLkpWC4P zc>-FwcDx=fiH*W$7Vkl*{d9eE+fRRhwe_;&^=J$0wNJVGJ-LJV^CFZ#UqaPSqNA1n zEU5gN=9>O;p4CTh%A@gM2vmK{fU1u~1$qb@rNK*JEsX5cO_c+Va z4T7>?1jBSYH4Ap)d?WrI$Mi3(&MNM_Ewr)J8I?s$c>0^&?nbwJ3gwYZg7SYRl-~=z zoZOp>GE5Yhy`P;UN%9=h7+wmd!A(a zU!dx9j_c)6HlBj2*UwyUGS>FDOsFy+3N?>86Kb6Lw}-zBH6Q*T)cmDIvBe(%T>l`=G zha!!w`ONkB`jA56)p&TLi!EM9xTE|h5x>BUJ|yyp5AsCsRgwC%e>)yp9;w7*LW?oa2$ z-^;M` zL#6)(%D+)pSp7|g3Lk!@#rvb@vC?ZeZ@j_c{pUu@?+&PZmP6&6o!=tJpE!#7(6P*i zM*2G$?R>0&^ompUo|SbaRNA#pm96>~v(tK>*&hrQ=Kv@_N8M`vp8;hnZ=VeM@Ob(# z_jA&YudU}In}dxZ&wELzxHX>dHqS5peXHYkP8{5&1XNSNQhN z{v_VFzCDNf)-k^;)G@t3)OEr=owBcRQSqYuA|6OQ9ovs~DqQ}GY6DTnbTMkjF0O+x zT;U!gcQ1hU)f7?8$ zC)D-EgP{ET2UMNCca6=5M*PR-L#IQ9pH^n^-iDeN{Qy;mjjpwMQFkc4KU7`r0lUJ{ zu8)J=(33D9-V9a8)*pM&AM1U0-uK69`r{MCSKI{cDVYq_2GgM0;Bu%oD1$1?JlEsx z9knx?>$GpR`_Xl_wQnD&xPzc#d!Sglf+TP{)-EpxS#j zRJ$&MDud07YQMq0mGVgn@38IXK*=3Yek_6VW1WY859Lqpoo??BzDJP%4bLImWbrncT1B z`a9QH^&UXg#YXZjpK9@5hmuRrHM{?YVfuRK5m}q9+zD@wYoO$2D1RzFJiAXi_w%`S zHM#}I&U9VZ4eNiXr>{B3>=$^xXS*LeN|*3-g`O@6CC|8S@7vh%`}k*)K71d)muu>I zmVV;}UXMOcv-^>}vusH1HLBe2tj`qsF|G&}c>hj7$z@RGzbESVI&L=b4UR&$^=H?k zqIR!YWc9S${g%%YQ2G1{wSRPdz{2}Mwg2I+kAxZzCd05D!}l3?Z}5KHB=@P*%Xg7; zK2#p}LfL-IDc__=Tt>LYmQ~IuTvU27l7a>1&s->JdY6@_7nJM|l_mj|N9X@qIsOJU zuKf!teD2*gt~~*zH(hAsTU)5{ZOOehzO9BD-@br4Zne74^63b}dTHSNs*L(5c+j?= z0wrfc)%y%6|89cHx5D*DpzPJZ&s>QuNtO4D_;Y_Lw(aPAc&cBgR9fYyyeqoaJs(a{ z-_iMSp_ga8m+v&!6-V+Vl#RWxD|_+tVfj)2d^r7k_uK7kcDv2JKQ?ropnx=G-rt_{ ze)uX>z8j$O-3nE2t-aoIproVMUqf~ae=uJZue>l3*7F-s@*b4^El~E;4@iXeyF%$b zpk!wlws*K+w&fkJ{?0}JHqIpS(DwYvPfn8D@9CR*5iZ43t0b zK;{1vYz#ZKws@VP_RHZ=;l&d`KNEK%|E%n zZEsF{NDhOlzi9nRez!!hl3(}9dbkNn9)n>$L)G)H-~0X-yFM|7 zw8^a&J`YNAe>8nCl#Fmae!U_|x~gp!Z#9%`alL*!Ep-2~vaFo_pyWu`v-4YW{+JbX zX01>zYlSjr+d60+f2&EWx~cfMb}o|I%j{e_)ai!h$ZSjW;Gdov9*|{HvcDgjPb=iy4OZ8O_`IG;n`BQLyc^F51y>x`d zzaC0%fwJ?2hd<-tj~{OFUVxH8M_9b0pz>?zy2J?btMUGv>Giw|l>I{2r$Dvu4A&Px z+3Vh>NzjIOF*jwcV2U#J*e4Mrr#~F7hmGqtuGQXmDJ4%y)nVpWPxrsj%QeBvl^1@W zZ~q3@`^?40M>r`z@;|C=JL!kIKFT@GdAYL;>bz^7Q+2HJib}uGIf~to%Iw!*O$}gbow(@Z=d$){Ww;|nv-h4;0 z&ey~_e^Z~Yiu(M9`J`f8c1GP1?ls}I__2ajo z>i2u7@-{lwj|WioHv_7E?t+TKc`<*Q z^4Z{w!Xwsre5F->qUL(r2v@&Lr~DbP9n6IJPNi4481+x3lb-Dap)R{oeuW2ExtblA z(B|NFsQUX3s{Yy^l;AJx7Y?#|m<`n~A4An&vzB81+ z=Rx(at6^(+pNBsO)z8+$EchK%Ia)Ao$p0QN2Oi-17^v$Q7eHOdxCyFU*}XD?UQ;`A z4CufypgqR`zGuqy)21owe_21-n47idEu><;3sv5}&Zu6*sGh_j9=~*7%jZ`p$=J{8 zt1DD}?FrSsV_*|_A#4igLD|XTc&+}{7b^S+sBnA#>dp)?E#f; z7*x8epvLWOQ2RyKz7{?Vs=u8C6@R>kCq2B}!|(F&6&}9P!@uodKc7w`XW@m zA4A!1+~4e{Lxm533O~}ri#&YZ0NcNBhpPLfP;GJAK-;gMgxa6qg9`s;7u&B}4YK`t zSE%rbQ2X^%*dE^C;q3|%;dROuyCuTwkSD=hwx0&`;J={y)SYlAxXkr;U}yB7p#1JM z*viulD!)EZePec>9|4{m|-qun0nM+c~S-OY9T?qn;@A2REFcQWB)K~ZWxv4bE1)nCtn>aSNo z*}VzM-Xho(J_99%K5st1{(iny0#%Nw(Ro)tz7Na! zQ=Pd)fsN%A(YWYk3p0%U$@B#U6+SGW$?fDPlZh+EFC5~z80*2 zo2Z8oFbb>U|B>XWut+L?vHCycS8I>9zghivgOYQhe47DP2lJuoI~D6Wia`z-+?5hpM~Bo7yhM#jao{@`N(7&qwM@l z{VQ*e=0UF^!+HLG&%oZ~V(0K{*>*=-5R@NhcAJb&$PDk}u;WJwl>NU$)#tyV{Jqch z7ydu?-aR~v>iXNCK!A{h@C3pk5Fnf+9F&Nth^P@!5wS+3ii-LWqM}lLL{wC?DWav; zLqw{0j%UPEidLybjY<{qlqywJ)F`wfqNa+96zzL|X00KU7^Ho_{ax?(kKekkCwJDK zz1LoQ?LB+WGq4qUbLU@zf3oiU-0bcKCHp|C3w{n|_f#mm6|T>PTCbX(S1OV%B+=8B zkA{+?U2pCi?TZJTlb=kvvXG3xGH$n#@QY)^s|}!AgU;v z+}-M}f|93QxA$%I;5fX1i7Ao;W?SudFidZXJnlD*Yi-bGYN+6(RG)ZSwT?pk6g`(Yve)Gpb6hcji2{ad!qZBgV# z{@nW`yFX?e4E@{A{n*9sSIH-qZ!44x-C+KVgJJpbeFnKddY{20FQ0nT^1TByDBohW zU5Dra8{)J5`>`vU#3$u`pSI5Y`7=~}HbTW`%-^j2}!YOP+PE_|u8O@Ayp{ zLECfEgB-pwr*oQ0dxYOirDLb59xrG2)H5bu&j`-}7yjVqahab|f425q2PMzB-dp2% z6YngVnaO)?c#i|`6{uWtVz7{3;bSYqI^+7b@8+ibokx`Iv5xD>Y+u@OjaTo1NK|ug z2EU@c%;!dW_|DcgJZfY@x)*=zZG6zW1Ze?nx}nh&MosTYrRK- z_c;_lcVaM(U(F56!nnkBohKPIyj%Q!!)@o&$9g|J;A5`}YTb?Yr=u|!QT0`6v}E4*jqEyX`063{~GEsCpiCHW%ag zdQR3*s&2OZg?FK3EtI`)q3pG}#r8AiK*hHbYWsI9)N#n~p|*d^q3q}H(k3V<=h?O4 z*9BQ=3)n}ueZhtJJs$(gQ{ujty6;n=($9tUzcM=`=OnSp{xy_8DJXw#gzEn-P-VjH z_sr(+@2K%um2_`-$6D%WD|b7T96rhH9}h!&`aUA>VaVfqk##qV@dw155!UX+P-W>SKF7}NLlU6R$OH5 zd;=<9<;AAgLG{~a*E4@<%R55Vq4JXW{;7QXDc_SZ->d%v-#5GOOWpTn?z`%*xzPOS zINSWIh4QbE_Q?Mc-oA0(z9U_i4N2U8`Ipu$Gw8OiUC?c2cF>LI2)l7!rrV6p^|s&5 zH>-Y~3@Z2)-nAl}0~+f@n|UIh_EYhg7mG*5e-Mw166?!)kH;0Ucmx+%`;Ua`&xFS( z2^Ei7u3rwd{94y#LlTdN{Il`PwuNtx+W2h~lwOexe#tL|AH6BlSl2qxIFH##1eve5 zPTBw2LFW9{sh^5Xbu2aspMOFJ{g3*%xpCfae~V3FzK!z&%8rN?Eb;Mst&iu@3X4}2 zRD71Yz7i@vZ@4Zyl6ZXN<4?6=b*v4g|3Uw*_cl!O{+%4_-;!D8@3m0=m7eeZ!_a@% zSHjSL*JY!r|MG7~=Ocm^i|u^G*;dbuGn1j6f1YRdJGnnQvQy-CD$X=JBU5JQChW@3 zKe+uJJ%>_?ojDY!IN9v?({xq|*5^8Mh$j&Uc6O>v0+o5Dv?8={UZhuGZs`7T# zPBuHI9G{e#;E5?_XBGT+{8xT6j{K>2e=2J#Sv=i^F1& z+z9eVQu=_|y#z|GglX_D$jlZjg=+t+uD=c?Z$bGVKOdIFZr!bxz8OlgZZo}i$JRl| zbsS@{-`48a z-cd*%Eep#A%y%(8EwdH(ZMUxBe0umSQ+V9SJzI5)lEKLP*zX^UZJpm(*CEsoAuUg7 z8dsY#1L;TbD^eP^o9eQ$tqjY5WS6?CSns#+i`ON+?UTu%B3765Tz(6@uBLjUGSn5f zt7Cc4~< z_qRcnKkRYq&vj7g=}RsBXsGr6EvWQwJ^j8v5(D%Dp0M<(P<9@Jtw`U?=g(t&Ud_#G z9b`>t6TT%wy{BWDtC(U4>s2Us%36C>dREdNgNMZ{qsy*BsmU_jcmC z-P2jfHQ8R=)7dSsDA@6433WV+y~0>1@chcBFoX2Wfm6c!P6j~9V3-LHhGBdA zWe5E@mtDv+iv^s|PRwt(uA#YM5^a@~472=~LCJG44Zi2;A9(uyyIJ~iupyp5{r>d| zk7x4J#{D@RT@uAx81E>W1!Brl|$8gC)Buj1+t|NKJ)a+d)l~oXRj&Y^^Ywu z99JW!gxCN3Ldjs*9v%wSKD+O?`R||B6013B7N25|%P2@vFczwxCVIP*Q0w7zr`oIf z#b{koIq8ykJaoM#N>BN?o;t|gtj46*U>In+2v>}=^TK*jB2 zsQlA*wYXJ4#jOfzJ*t7KKa2674ZHdJklRP!Iq1~v`#3lI7%KMh9<^l@x_lh#RC;oM zi}TRY)}E0ESbHWy#lI4&%(GB_Ud{TTINk@DHm_nb zSky#+w2595)8%8-H!54v(foc7N*>KK|KEf1{|6}9yOXt}9BO@?3nkA%_0!{aKD861d=USUt3Pu_FPR|Z*Ko=z1y$;-0FWDO1^=z-;MoIwc||RKaC%U zCo(x7;QMb6KuOV;W@j{%Omf}k)BAsP%uzgxxaQNQIujiW-R#;BHy$}h@}D7#`@QX_3W`W{NU?``oN3{`GVsQNQT+4va; zW&c#D`YWL7pSG`!-!>(-zIKCJ-VbVC9St?FCZX(o0X4s7Fdw#qeSBWb-A(UJJ*nB} zG?T}h$DV-5ZP1eE+0s*ca0%Cz~$ z#`E2qZ5+P>W&4=#?D%XkR6LeLrFYtr4A<-3p!8+`wEOhdK*ePXRDHQy?S8$vQ2LFo zKj?bX^>QAukfeN^{o2Rf{ZRfs^}iz$IjC={yy?*$|euBadjP(+yOBcJn!lGyR_w=u|bXZ$%^gREy!9N97<-{4-50B zgg#UG@!ofnn(4!6+$*2@vMD2bihBp2+qG@cxK!T6F%8d`Ceh2OV-k!@t@lTp?~`G2 z0aV#rpvK4DQ2jjm2OA$rD8DX+S|4tP8Xu2AmHRW)yuTXCmrtSO8z_I}gXAnIziXiU z4X+!_u=^qvujbCb7LhI+h2GX7P<4)g@^vCC&a{3y8cJqB<+%we&z(^1dEWJxe0jet z%RdyVj&L64`d0n3$>8GWlH2Yhi|c7wjn7qt=bg%0*M;|S()Xc_iChESm<*o%EE&u` zR>#_S(In08*~)Kp9NCgRdL7@C(&o4nKW}lo0ct+H8>&AlUhw{aYTsi}?P&i}5{>vm z#o(q|JG#$nmitk%%JQG~*CeG`|Do)zg|fT+;K4UYdiOMRYm@+wR~HlWav8cXB@P4ZU23nE3i@V ziskzPW>CK1H5<2k!iKnP|NgG}CjFCgzfXHVDR+WDL&aw!RD8yKVC^4YXZ1Y+)epyi zWbya|R6LeL#iP?&i$_1$5Dz;ak;nOn=smX;IX-_LZR7V|DEXu7@%L;jB5&$vmhU1c zsdU};TiOM!=i7H0YRRj56Q9|7Tj11uq;yeIKiTXJJ>Kk1fN7+k1l8{Iq1rhQs$ATk z&D2qQn5Dl5C2L)8ZeORcy&ng#k07ans;e5Rt{PZ1-t6VLy+KfUc7e)sE|fo4K>1_e zt7y;rEpj-|@Z;}QjHOOV;un^Gz?tUfUN9`L`*ZajwbvWYPeki*in7(mTE1tGvvTX9 z{K@dR9RcOnc~I%sdwSYY?SrFMr3XJ--YPg`X6s-K*FyH2m=TP`$1Za^*5}r7uh4+Z zU;xK*U6wRFI~+X&ywLr|WGKZanjgue`LP(PzLikzXgkIHm5)HTf$Q=oN+&5O zEw^}eJ!y*6U;vcuhhR9Cq2m6Lr|)vI#rqzp{md0m`QL)t-hSu$=u@VI&p))AX3KM7 zXO{2g`u?y3`c&7iglfx;uq*t-X;Z@I9A1NJOV87%gwH$e4%L=Y*aM#F`n9kp`u$LC z)O)~taBZSG%Gxxzn;EVo?2gj*EoN07H+it+#yh7YlKsAQ!L`~ ztMYkkm%}Z7ePl=J!A-e@a{*14Dme@8L{h z=R)!*9c-iQtRr@jXgn#cXllcLVG(*Mc}7H;jxzhbpk$!y$|E@*%ErA=_Tu+@$d9Ja zhs^Uh)wrEc-EMlcU25j~bTws4JpT!v|9aQs+l|%atBU4t?I&=Ln}6SD+dZ2>u5T+? zM-`uF?9}-McFGIEOQ`ej8w<2stQa#nmt%Z`$pvtGSUMoIbq55wZ*M~vL zo>29r>E2ZKGusc#s&8A@rY5}ZJ(Kt5`#rd+-%be@^Q$hm>okpYU9V)DPL>lH<#G9+q(|dWl$}UV zTw?JlgOb@$^FXhzqu5h#%KLex_y3C*o4@Zs`MU*5#{bgRgX5v*^oyWm6V&{h zSMl%HU)a&cV#52bz!}A`D5k4TQM&3Y@p^8Ak{fZR9OYdD_{f)n0Y^?iN%bX*rgK4lHCT3W<{h;I!sAbnd)xXx4H{IT(uqjFU_`b-; z``T!{57BqJ25^40pxN`Q3*Dy_v60{Nq3XQ@s@^3~^VGAx{B@{yz7MspwZW-aO8+LN zhxtgC6kcWRD~FOxT)!5ozU!gty9uhkx1i$N@@k7~dno%YDs6k5fI2Q429yU9E8tVNZGS&JUa#>uS1-RU^aFGMHkCITtD@Qw=~^bKI>*}g1(X~+ z%i?nZl+1@ZAG5^uFQE1d+cT%iUTltq^_J2oXao#o}{(`Jfk7~R(^%2TP&LD z@iOsk@p>Ph^*$cIhmr(wRlVW;|6E7!K|gfmxHbA-L?X||b>Uf-uM|qoblu)tF|hF* zUYr%idIV)!(kd_CpoY4bj46(EFM$kTg7t4s?Mq9N{?bL>R7zFbR9n^UFA1= zeerVIx0YV=wzcbqcdT8vL)9_sU0V+xfYOWB*!nOTO5X%!`^@*Of8T`a$8Vt0bKke| zzZ;Z~rBLS!&UAea)Ov9TRE+M0D!2Csw%wQsrN0HW{rC>b=iIs};W1A!lzsq|ovBcE zra>KdTn-h3JD{$&KI8f-sQjCt@_z#r`^1N~eh-DxM?>W+gUV;;z_?d#$+q<=6&*h( zy`SsOwC5fu7RE@FY$RQxc*~X;%}J@R%>KJj@}BF*e{FivHx~EtP=1{PC1*j|SPA9l z+fcUizP07{oDk2xHN2O6+dk(!AJei^xYf!{g_6@@8ax+j9{d&5Jh2f3%d&7kW--(_d>)4F9Hi&4nvd^lZ)0t}t@mr7 zY^{fi=_aU{O8#4vT}c!}(;8y%->N6Fv!nX{o#pBS`727A_KDK!J>I*emq`uwhAMLq zR2@e^`SetqvT%I93;UyQh8mw8Gi-eB40qITK_@?k_=ojdHdI|*Vbq@g7Pr?=vfq#T zwC^nW-%9xz^(I<#=Kj{bD=L{ zBvE_hgXE|BZAZ(ac>UCPuc){A_|H)C3RIn|p?p{iHQrZ$Y1_$7Q1enQ+YN0Ghro{T zVBe1HXn(NOV^i#7ew2^-u|DP}Ix+b_YWx4R{J#@B)lu)`VYi$zslnb*@jC!2euqNE zZ*p!~_@6 zd3Rg~-W|s=I@|8-B@OQnt@1Y4_PLD`+u zOYIy>y|*V|{a2Z6pBK8u<^#o0^50;;CUzAM*^L<0Q~Yn_Q_LjtTa=wql*@->opHO( z<=1khi?SnDd~ET13rcdHn-k(F&HSQDJ&%O|9{M-bUev79+2(|5c#nanwu=!~e z%p-j=RQ?k@{S2t}@G4L5@u{8P-}5s&zdr@4ZKuHQ@Yk+a!CvS!Q1({9Lbw+8hQa4P z9>Vu^bqM-$e|ay)b;pMLbi?(zYiHZ`S5;PRi)j?w=BQXnDt)~5{hP(Bn7C=bywu~^ zbo`c3kEHYq^J@;2+ym3#3QuoZZkqd7@=)XB_Q;Q7Z|6x+(giz;$6k@Wf()J$|M7Ro zE8U+Y#|>)d^M3sBE|fplZ8kegpyrWRq4L>%fIod6ZfO)##-qwmd>i%u1EkC5QfJf_ zQTfGsuW#CS)~;`%%4BY_&h^iR^C2nS zzfkAxuk(5ToepJ`=6)%t_V3!!=Fuae>OBXBcEjredTzbpod+3RxL)taK`%o|FODNr zZht?%uzT}6Z1;ZgVr!iSF~O=JcTi)oLIc2Ln zeHoODc+>JtfRbshNB6(f+&?Aw*#lFy-TxBT?Hir#c{ZY5qkdXMJvA%M?(CP$?!!?2 zt%Pd-Pu=rU>un4jdf4)x3Uz#b4h+}-Y8#K!q5A(aD7zm#V)cCjRo`ikT0E|W%J(3& z`m?wfy>HNo`)hORv+FWz^^{DjWV&y=HoFhWCoO;KDYN?ul-;kO;+%Zi?A{LLU#n-# zzb#PfN!Mp>`SR!Nd`;KocD`l+)cKlOQ0G&A4b89Z->*{Gb#YMonB{vK>b&U2$L+jO zo25~CwQKwLtBl1)T&lg^+0R@1-hyi1_fYLiyd1X1-1{6mzoq%H#_iNBvi$GdXLiOeHan-m&>!Z(pL(y;dbd-# z!1Dj*cV_2k{F6WDxu3nYo#L6MJkG^t`#JIIYo`S7@Y{T*y(cKHhtELqt~8!|YINKe zzS{^JdQVVrFY6+|!qZ+1dUtCbblb$c+}E`VS}o5C)4Q;2+OIgD9A0N^8%RHZUxm`} zt*I_s+sd%Kk^Ls`@~I`x8~8=<@@b@Z&EWd0eQQ2vW;(uR236H%!E5|x&#}7Wdj4^l z!EwCLIsS~1&Oufj&v{(j$mbrPJo+$iM&tWzv|QKE)3RFy*`ve#`PvpW-2c~1{l!bl zf>ZcK^*7QLpG_G-%?V|}-;-rQ*QXv0;}h4z_bIWDm0%x>=gv}T+37*Hjw4>rNa@;N z$Jg7}x2wylX`9MO>V0q;VK``VuGJmmy!m)Lins@>1J*g4+N2!CWV`akkJ-apauy3?)x zZqv=bVkrM^hw7Inp~k@5P-Sw%=gx-n+*y-*oPB$_+I_0__AGP0>|E_!@7&}}|Eh6+ z1;4QRPJ@!xXP95RL&g0-DB1T+8%Hyta?aHm-(3$uUsl>joIMOUJRR zdISSz76g6EyR#45jr+Je+jk+oZ9zBRPT{Mh04i2RP(BTZ8V@B-#arp3@>W@=v`Lck_23RDdEVEL^`36uJ8AxWMJYCtZvR;*c?-(_w&$4teWCo^2Znz9#QBd| z*h|f_d=Eg$vrzUnop1JXE--sVFtoRW?Q4~{GwJoOgpv=S?B-&>1sn|J=YcS^yHgg| zc)M|pw`1WEqsb_0Fh|qdr$2<&V;(OR6rm`o4vdBY$arodxCB z=dN#o@~>NkK9Ul7w( z2i0!t%epC6?<-~If7(>@KM#hnfRag2?Kl&v->&xb7opnoAyj+Pd^^<^YWp|Pw_mxs zzj$VQ-k-<5Si|vF`2OE%-kzrCE-1du&yvH<&zqoRBa}Zm#8+)fc$|m1ZsVYkIQAlr zJ&EIwpF^zldJ8w%IxqyP??ynieT-9aZ8{EE9F($LbJk>M6#t0RNS8$V%qDt8OjjF} zulQHio=PZr1*-1MIo2NqQ0*QD)ejS(;y(i_{_~;a11R6Vg6fBZFR}Ub6sY}>Uqi_= zQ1*X-YI9<)+20Au{y|XoPlmF88I*huwO@16rFP!iB6h)cNDCms$E5Q0DiWbbP%+32-}l#^xjtvxyf$N<{e+>81CYe|JL3H&FGq zS!D4Y09D^qD0{a+)wd36`TjL@h zrOS?D6va^GrK`NC@}kO%5>e$NU1=rW|Cd0?l|C-6hq7@el+7oh>UayP&VNApkTu)Z zlM64had{Kec>EL8^|E)Nu9y82>b!IpwsSfUy&Kg1=tn?Z7djKlx7?xaf}t}92ZPJ$ z1LEI3txv;v^!dBk3!r?ig7WzRD4&-?`Mli8zhS!g|0@2~zTR$u zp&#>XeCI&5r8`txc8BuuaHzJN3e}cNpysJ9zp?mtyWHYG5-R@3LdE|AsQ530ivOcf z@qZmE{-47z{=>3@VZ(pUdDZa^aS!iov16o39{ZB7E%xJ~Vm}GW-*PB_Q&9fShVpkF zl)nq0{H=0oEJ}YFUF+v+sP%Il)cRTPx)|MaC2mF6Jecu~eXBbUN*C2$*;PL2YOi#$ z5MAvZ;^|_(FBeCk>-xtS7(V9!^_;_G*Tr6*U-_i>c3qr?-WSgFbg{oL7b{|VR8Dr} zU*t#RZ`5AJL(3H(QSlNLPl@6y`F}BnYv27bRRC{h-VDt0}DE$?v`TGmk2VQ6M_q|Z@_y}rz?0mg#7Y~Dq*A-CX;0>sGXyHN| z_fJ5L_jjP;+w%q+_s2p#-!dC2{!c*l$9GWuUvgtv*#B*ADhmqH2f{w^5UBo}3)SDx zz@6ZSQ2pHVX1g!ugxku(@A8}vb$`Xpa1eY74u)&t5ZJ1!EZ7`Ud?hB{D{org^0&jrfdcIp$up8eU>6bRF@x7I$ zww_n`dS2=KST{rU>msOreH5x+YoPk|WvG5#4b`vfoc#NLJwDamdhDn_w?g%22J5}3 z@h|2z(F@Vl&qJJ1K2df=*%kjctUranwf;y!$puhx{xwvb7eK}NA*eX7fQs`+Q2uX) zYR@mOv~fQRDlShz&HrCO&4;;HS^AMs+ktsd>%n4AKlEx_KYkB2KPIl>{39F+wO*7$ zttV$ftsj>|)%zsu2j7Dl_uoUU2R)b<2Ect_5j+lR{GSgs{ue-v|KG!KJpLQ|U5gl# zRVQ2iwNUaIRJ^{0idXt67O$RA@fraYuL)4`nhxdnf@v17N1@`i3MyWkpyHKxs>NwI zRGdno#?={6@wozqeuvMQ?8f~Joql#UK|eP@2+>-_Mr?)KN)H}aT(Nh;%=z@ z{HLMHKM&QPe~0SNR`=L=?*+BI7;4-f0X6Q=h8p+RLTwiwf!Z(l3+xF$huSa5zSp)B zgW2B+V_&FvOopNV1F|?b%KJde^Eo%#HT*78MqTUL=sIa(4?7mB zWjspOK>52K%HK^+EmL}2WM8`S?P%OY8A`_f%=9uSndN$P9loTnEO?b)^gW}vzN2?JFQmRX9{f~yt7ne_tLL3w=I>Wf zetr!lZKzB7_O9{Qc>7ECvwT~jWN3-m8wbPkyrZ-?_i@MHk=T-JYPv499vjM2c-n1Y z*&)vOoT23-NY_{&d4>P-m?Phk*hO%1+Re$f{=HI2en|~MVVe9Qe zsO4iu*mzwCHD2$9n#VRn&0}r$iu~IC{Q@KKsdkX%+i$R~57UR(`tWPm(5~&@FOc+h zQDrE_UhmeC*1n_nw)R~F)xLTt|9^nmF8ywl>BsJC?fC;#dzM4BrxW8w?dj*^D1T?3 zn;`#{pE9v(BxYXjm0fzI>AFZB4pyUFm z^cy|>ZK!_Ae8SQPLDgf|=vxO>=%4Z1ytlmL0mC7HO&UonIwd z+l7Cz{BJ->N3SPtw}QMC%PrrPP;#5=P3MsAX7bf}eV=*#|8l*z-t*2q5jp-WU{!5da2LOA?^owpKyv zjNa?b^V|9kP~mH3!5DtgcYxx0Zc$E9G_57?bj=M4SqBSP2NN?Ip81mBg}wd!>UXyW zH7{EG+r4D*SOOJ~f5*;P?3BK2`M-L_%3uAe>1m@9!Kj7l!EW@Mpr>?qpP9zVQZlFVc&q-hWs6BAMQJ-eYkAK zg|;ERptd2yU?dgKS^utpl9!?Cu7#?56;$1;q3T`(Rd*d!-5*2M{W(uKRTVsnB%6MEJc)OD-vTGKhzDVbNA%du{om}C4R||!uvGB_j)BY7uH}yQt^W= ze+WvRfU@(6r{@oC!#KJ(Ejz6$tyNviREwm&XK6j8p6L8Uw{FG5K@RQ?uQt^FOL z?2K@IU#L2dfvWRls5<9D#s7LwuY$^_dL;d!e4Y*EQ~Z7^#h~fFN20IAwbt!?1tt04 zH{TB<$gle92H3I6R%hVx-^Kf7r1#4-*Qfh(yC0+BeQimvzryRg6H3;*p1(^*(5t*N z>usl?{g?KPkoIlXQ%?KA)nlfH{@i`w)Uez-DF5QyjYL1Te`%I}Jd~X2dTwD`o@&=&KadgJgQ0lGIY)5XE>vLqUsT&_Ul}Vbcv|8h{Xq6yOK~+2^EirTz?kI#_Lcv zH$eGXF?MP=ewRRv-!8}O8EQS4e8|*rJvawydvq04zR#fMp%&w&hTEm?Q0YSt zof@`jKd9>?6QS-S_yyGY@XMg`wH-e-JWn(Ls%;lRohPbchl=-lsCaL3#`}`wZBmhAe%u2kk3*IJ3sm{{pyKs(!uo49RDXR6 zRo^#I%ZqYNx91$#w~X!MM(00*{nEDMjz2ehtDx+C;kx44jr#(_zkpel?2ILMYi4<)Tw&%*q%EqN}nHZb3J~(uAY2_o<7X;9pZX!VFt%B z?U<*-Z$H)P+fUkVciqYR*0)b}Q0=ORYFFUnFab4Q`a*5L_JDCo{L8jS2SLdZP(e4=!~6KO4JpC5`7BdBDqgyg|G1t3rHhh^$ri82 zq2y(#`g#{~e7A{vuh(U9Ji&K;hfEE+@S9col;7W<5$eAqE%|%fr_}Pe{-ZL(c|X~) zQ-e|bQuox@G1iaL=+jspeOIvm@I8XOv|W7LrM1fTd8X06GJ>S`1pl&l?gFKkK(%AM zbCNG7DU_-ct=*?2t=*?WmD}Qa{uCRZM?l#*11kQrU0(pz4^>d*RzpczZkr&tj4w59 zyEC6y>fU|c_1i8iu{_)C)kb&v$LuX#OhWIx)wdS>trYq-h%a zm$9;q-{IOW$eF;mkLtKqQDg70tMqlU@DEjC-)R0x4YPjw2ufPgR;^!Mp!zRt@9>PE zYQ)swFZ@PKekN>hT+i>_Lg$`}wQen?4$VI`y{!EBLbLl@D0}u?Q7-RqN$~y_o}J@9 zy>{~(-rrJ3c}ZfleCFM|MrbCVQn_)}%h^ODauZ{PmQ1i|^Fl;B!+6>_w zNMU`?x`NtnHCDSH*PHMt(|{)O&pg>}UQS16B5T zD1R%U{JqxGi%ZPkE1>*+04o2V_P6=+RjB=~&tXG5IyT#mN#2f9Z^vZ!cUsJE*`68G zQ5&@*xtG=R2$cL0s?3v6{(lJN|0Yl0b8qwiIw=1igUbKnDD!^}l>b{{=)aEP%iA;7 za@benyRtLFccP`VjjC|}YaeV_A4&#VxpSf9z(HpJ7#P~?l^OKnyj^$3ZTr}MnCvZb zd&RU@c{QFYyxbBfd26uQ`xJ)u!u$7$FXt!v~`9PBS|bt4={ro&oD%$6VofEiAJ2sE+*? z$wp_i{%mfdr{k+6TApa47sT`^PGJH5RQ56dCiOM{eh+or`)8O5|K{nV`dL4hLLC>R zpyXkwaq%3~_J6IX=k~X8)E{d5bRd+ZpyDl1;uF;C0O%3Y# z*|)h_zhZhm>-Q1%x?$;Ynm=o@P(>`AJQ zu<{>3$p)zQ3^>x-vp;N!ejHRi_Fm%LCiiOCdx;l%Kc{>jY&Mjwc~G%g;8edVhN6~7 z{Vb}ENM}({+{)_x5K2CWD)SYT&6cgrze6&uUv7lzzx$y2?@6fjc@0!QZ-%O)>2Xwz z$D=yUmcIZcpF`D`-oo_3Q1$Nb`b{vj7u$xd_r6m3YTs@R=xyasfy)0Vl-*6Pr?pGh zw@>S|=U`(cE2tpmi}=m@lkFqKb^DIY?#+HjCNYrxQ;e&gl&@Q}q3W9l!@h7T*3zrc z!};79rHd*jYCRGqqU=X{n8=@+F4n$DU9G*RL6tuXs-EBHTYoL>X8rXJRQjCm)^CqP z^;=Pa_1ghZ{dN*m{S{E_@olazfm+X2LY+_EuZQ;s=UDU81~wa?5yWSh$ETR~N=8BX zIo27qt7$tc{kUmJM{D1{Q00c@SvzinEzuu?8so1*#r23z4SwZuzNXPPNBK^t*6}2M zeMDZxwZ{E=+1b>Ol(+L0D0#1^`7y4S`7s5`j|-vfaS;b=QqCEqisz!HdI#?>$$khDc=)W=EqG?QtkRf z*=E0Oj`>{(RW^S7xEj0FzMehj>)l!?zrOMG@S5r{_TOsl7`(Thb6&^xnrEo>+;ZwP z=3IVDpR#qSk*;fR>>Ib5m=RQ-J~dd$uj{)!i;exbo|e%v$QYeo-y+4nz22A2_m%Z+ z%RGM$ymb21;0%5RPg@;vJ>H(BgSlRcFKTBWC>h~;e*YFhX4^v{ez59O0B(I~^ZLevr z4$7xeR?i(!@&r^pZ$Z_w+0!%6vikZ%Yaji{{#`!%cY3}v`ff*s*IVWFJpg5IsWa+_ zMr~zz;!LwU0ZPiD%GE;o@flQmbKJkaQ1iq-Q1iqjD8KBusdZ2~b80Y~U-W&|xSro7 zEyyWjn@wLV!rw?#Us&fec1@vh*sI|^q$R;^!PqF1vmV>3ugy8;ZwDwn&-KG8BU@)d z$px<8>UzG8!H020&7YN*AGyU@LGkbhc?RN+Cf9_`*IJKly~lQ|$28k*7C^s6>YAAPpPc@~sh1+~4o1BUzkP}`d(uPE zy3O8>m(wgZHBhno8mjKJ7S@h-PWh{JQTfEE9jKum-^MB}xWxKnD3pwWDmx9zR_D3a zzTaPJ?fdz!t$pW1wW|`Uj=w>*YZFu*W9Qj+^k^sv_uqNXNVg@8-}bJtRk*XS=ibg6 zyq$MD)eeam?bn3~{7L@O{QnJ+40{ zN!S&mdc>&xJA1n9D_zf6h_Wv>9p5B}>1vOb7yA5ixz8_8L$!S+RN1$nY}G;4Q4cj9 zW}R!}`68%3y9Uaql~A!yoM-!iheGWKmP4hV4b^9BpswG13RSM&mmhGxUAH;%0=Cl!3F%H@4Lr!`!>Um-w{_&-SrF2?#?%u-Cw}4ow54~ zx(;0&B(Jh`d!Kq1=XDxigDWAA$`vwaONK!CKMHDmj`z8IGSv8-4mCb!LrLmNvws(q zEQKn+461w$Yzdb`m0tl>{v8$ zbY8y_8!d1~`RZHR``fb9ja{MqD}wTG1eAYcefcCPslLhTX@9fTe+-npN1@vJnd`wV z*4|c7_A;UD9SqgpQ=r=WPpI-?|8wtK<&9H=+xZpVwZitlV|xDXS={eAko!FcG&zp3 zW0)xJ6?e>OVfbC#BGCSCJOI`Pr=G6A*T6+o?@MNr3^k~rV= zblForQRPM1i`OH+q-&niPxF)Nu6W7z*JiQ5wgP=PHYY*Z(LP))Je#y>Fp}bHEPnSv z$#U1b&$s><4^`hWP<4C`)&6eRT7T>U)gP0g`r}-vd{;vGeLYnDcR|JBU8wfeLHYi# z1vc+K{yUprhh1m$+6I$xg(E3Lk|`|7bVd~u7+yQpFBOS zU5lXIu(rwYU0fU^>;B73zyGr4!KuM2eu-Cgyvy3n@_^-y(-}=aN@E_3l?}h8z8xP& z;G^P@@_9(>O(>LCdJ;;`gYx@MPjA|PN$f}py`Stjv#stm3;UyXxGk@J*zEoQCGD$C zj~~BpCU5fhmah87Q7ug|{I(d4|Uf2U)t z+pBVW4?vY&3bn2-hb>{PGd|ZS-?o_Xzt&}mVkgFzM{|;>i{FBxD zDwMnfRjzQEwP(eX*6#IC?QQpz``OG~Q{%qMPN9#dQBYC^W%m)+GiZhUu1F`d}M;+c55`FM};_vZL89#Q_JIeyi9)I4Cd`D=55YHbB|Zngf`)vz1rhQ@z8&@ zVb&Xs&(l=W=CR6v6hCi%PluAZu3zT*Z62q$Jx)!}$Ed#iKCOfN`QhF4x;MI5+m2vQ zi+72alWqAjKBh-=KtwH9tXq2C;#CcPlN3y%tnOKjOFc1C`BR=V|IdK3^D8J@x46E@ zmwy7apP04W%5{KRzlOW6IwU7S`Ej1>@%vTPwx;uc5owZ?kMCbY$t$jZ>UvHzo|{>Z zOR-VQx~2BCe$mSJfYO`ZM>TIRyIxoKu`R!Lz2$!cDt~UjOrGIr&vje-UasHY7H*5G zDXToyZEg!nKC%3#KuLHEG?8!Dvi`K4V0S93KUaI1fHEo@&1;D|E58qvocN)||7@sy z`Fm&a4S`WycifxnCBuX8&cIsk3@o*M>R@EUwWMT*#eOn+kU(NwN3lT^`2kbe&z@$ z84okzX;AGA&*9JEju!S0d*^2a`K!1elJ|nOWB;QSaZUV#<86L*Z?cZ-n%pMtFIv|o zOq)ddMx|pkCz8vcK<0B|LPrq&Z7oFa*{fmB3`xm33&g&cj)rQ4T$0vV; zIxq7gRGVIcvh%&`@$)CM=!?{=mhU1cS?GH1cD4gmJ`U=A{@Mx^mu&h#u`Pg##}KG^ zjDnKNm#v-`q2x=ba=|MW$84x_-J#0u2Ico(q1w^h^EE5*rON%?`!%y$24#1a>o-FA zRqc9~_iOLGj3AHgoSrAl^y^@?pH2qOnQfn?7t`t z+f8-Z*j9$+al1AT<}eSo3);?Tmz{bOYP&V#{T2CH@VLJ;md7dGfvvPy@cU7jjpEdYX zvc~e?4J9Xf{n7cG)VmxL@{7*j#C4m~4&3gXR!Ke4oR;u@D}ajUIH>kacAnnwgRL)HJYzuEjW z9ZG)yYP)p&-)(+63u=D46iOb1nxFP#|3LC{-%rRbXv23f2C>~J3bN963er=49>e<} zU>hpg1s0KN9&sY+YE#mwbhRm3 z9+9N5+;sA({4A(#c!FQW3x59v`KM}4YgN>@9?eAksOsq=V@{LbQY9#q-cP_}*r zW&0T@Uryd)>)UNm{W$WUwjNG`>c5Mj@~wl~&iB}AdVi=k>A8b9o>R-10egW10KR_+NKPV5+U(`XB`wHrsUv^q~_QX0vN)(nm_PCKV$w@Jz3Fp#lUOFH8f)cVg_4h4Z+e_mLH-#mPn1~x=b)tJ z{_!~Iy8#X7>K0K(F$y}wj&+W;{ChyjEl}g;5l@ew>!_8Foh*M>C>i6rov+Q}Tx;Vx zH+!AY*j3$<+9S+Pn+ay8CzNk{LDhear{C-8)~}6i7w+HC9@&iQ5G#6`y~klFz07VG zsP$oIsQRoQ!gIsnG2~dc8QBWjo4=)FEdMo7a54L(=!jWeEp$hZ`aFRzrb~S zcD>DV|liB z9K6umU7r&h8~9Vduhlq;bVlL{ZlPx-j6g|ho0)OZ=u*|vwJFdh9)D7#ys=FhAyw*8w9HGf_R)sE(l z8xo`0U&yuP8=<6K2dl3TO7?}S_Xrr;8QCr<;yVHTCU)cfG5K7_fg_x zY;Es)bhX!2@8fQ(kHc*0mYo9kp}4)-IRQ$_q3SyaD&J*L^(}^Bef{;^aF=GE8(!^o zrf7%q&WEyfhqrGDl&xod`Rgzoo6ew}o$twp8bhVd$uJXr8jQwrbY3CSbxf|Y9Z7LN z^Y=U`xyki=p?ta@s(lYb`LqG1!%qEeT<;Avu1|3NPN?4&__=PPSi{ z36(Dw%E!~7u1lN`<>Nb0`xBo)`F?Pb$5q!MhI7B9J+HcL%mfG6m`UZ@Sh)_$|5eU9 zDE~M5@~WfF-V0E21oNr#mqE4n45<88Yn}u#`2rTjZ=Xv=GD0>gEeUv=z+sWqE%URfqq^_gY zyA?`$<(WPZO2$FiJ>K=%Q1Q6h^$%g_cewxL-&ON_Nvo)*`aoO$F_gS?kmoOG&2bms zRvMn6^Qz%CbcOu#?Qe;1e~)#&>3&bWx1n~F*=xOz*)N2lKjHUZda{3?7n|>hXsI1P zbsb~lqk?rqas^a7Z-#2$15o|F%$L6mHSShBTjA04wlB9h7sD+XZ z(fZO)_p5a0ew7Z5?pM(~JI!N~@O_s8DBp{qd>;Yj`&cO7C;9SeP@)*bV-Y4EV*ZYT zlAEAxz6@ov7Ru%-D4U(fSv*EV#bXXs{+FQUhYz7-E7W|_G)3$vGH;rlspJkW(kz7Wl*tf zwX==?j!^T#;ZW(<6x(s?$58Kc-2xT!qjoJ1@0*+km2WgYs(=EQI6tDi6;+9|!xOpAY5##jr1Y750PgL6y63WO?}h@Ef4=-3e9i zU*S%0EgS&9gBmN7_bw0L+k84y`AgtPcso@2l~8>*gzd&CxHr`M$7jO*V6|^ga*JAX zKYhm_d=9v@Q?cg9I$y6#*zb~zck2IW{Zt(i_3e9G^g!86|N zc&0TwdJa9DKQj*WV`cJ6Dw@poN>iIRBy3KL)&-4i`JuYkf4MxIt94IZA^H{A(0z82 z#Luk$;ZSk`RGE2DHg5Iw!M^{bvXYyj>Mf>T$tbV?WSEZr98~>p`||vDt%7!=8{R#j z{#4tVJ3mlNdUCM&bvu+i4CU9KJw2c6!8`HIsXlyjsx$i-+urcP{)LXICSgNwrci97 zel20YO*Y0mC&9WSt)7t+t)7WcWln+0dnr^L=DU6mRJ-4EeZf&y?scegYoN-lbA7!p z?|-x{9|$EUyB@w@l>Lb9-SbvKJ0!)vUv-`DXH`f0SK% z4b_G#U^=`Rs;?e^+Wswr+Sb1Yi*wBHNl^tx&+dowQ)zXFylvCam$9&=yP<1c#W5K(i>aK>Wdl^*SD_mE< zYq=<2MU{`ngBYFvB{`I;F6Q4(U9G(bL)ASQs%#R<)-6!BZ-=V;jC^Z%|8Caq6QF$g zp}V!epupO{Kh%EYkuVdU4CTWzsCnTfsQPSwyWt$*W*-NY$Jp}Mpk%G^nd{;GBHSy|i}^5jLiqG(P4upul>1rH=jNb3)5>?tvi5E7eZUJTqw}t{ zqb>is11x{vF&>ZDdEgrImgHKx-Gk444V=@;-PQ7_3lGG*90V6q1utbIwMB0 ztH&?tqqD8PGoa#g8C3f1P;vUo^$gCdDNg%AEpK|BJ8`h}YpO@{%SZU~T3^rp2_+*E zmcQw{H>(e^K2P}h-2!KwkCT>@t$a@?zb8QXW!LR`aSpL3*X;_nUAJ59_9{ABT&{3N z@hG|2%AWxxv!LwW2^EJYeYt&?EJ4iMZ~HD;FwT5Uy3Oe^+ww_uMC*I%LaXNnD0v&I zo{doT1hXy9lVLjQ=`d_pZ@nLz?=Cm<{;eXfzrxSM-vKL5uyUV3$(|>geofNqyAOtT zWA_V|VkbGn(p#Nv;eubKO6XL-HF-Zv#sZ7GFnOA@NxDVUsWcCLhyH=*(t9B=I| zgv#3ws@=1o>doJ!4d*9|c_wTSec3P%S5fz93@A@6_C<0*2ymacuH_;Q_ligf-BuVIOjf|y-CY##47&F1mlpkyDY<+-QYynZg!yj}q%mqRV@ak}mQ z{RZm%+CnI~18RBeU)cG!(_sSr94Pq*RG(*_VfwCTT7Qm%>7<_oCD%f2e|ApU_UKS3 zDTCS`pYQsSXW8|+=}@t1I^V3I|0R_^PVR-0BN^`+S10@U&mCa<>m5@alDWl+QtjW> zN8{G}XOvUrRhOu-D3PtPEEm;Z+IJA8PmHCbhUqG=Oc9WBl=Kl7n%EI-%c zandY{$0ty6*bKG2)%h0p!V9clheD;l47HtJ2UXV*%pdB{B$N-$ZAZHvO3dci@&YKC z=z4ScOUPg6%eQ*|;g@XR{xtHZJpUD*f4S>vZPS9bWsJY@IfyQto9!HQc)eloSp8B- zdHG(P->|KcKFam6&WW(_Q}g3ID0vVnF6%t~2dMFQ{6bKdXG)RQounfvU3>s*XA+oAofLuzGfelHH;F-3O}7 zWl&|Vf-3VO)OzyxudJNCN2UY!spfJl#y8XFH(afePj&87{UEze6U{Ak_gVRFi>=;brVh&6> zmG7t8)tsIGX8!*qZt{P&kL!8xKlMZ97kK%q|BLe5t50?xz}|y!=??6Y<^R+5Vtf7d zpVr%)9kp}0$FFt=?c84ZHC}$bbCWaZ^wa(MpZfp*=eK#kxqi?%{!inxJv-Y=|4;4z zr}?*6Z*%Dyx7m!Z-c0CSVISBJ_Jzf;9~=ey!?AEDI1vtjNmvA@!+~&?Q}sxni#`Na z!kyvGa2L1;4uy|;dJWta{bi{4rmco57ugY2pQ!pp`6J3dQT~eZU)-BA04i#@&7Wp>|Y z9#nchRQ_|IuIJ44^xt^;-=MAoZSwT*pz3?>*H-^4Q2wljlJ}sNcbI3(3!s({fRZ6l z%gcTF8NU2{Uw*MKU+K$N`SK5Z`8r?T|2K9$>4MA4gE83q4LlGogxXhH1l7JLpz3@2 zw|+bT<i-BT-)Hb# zxD`s$uC{y=q4J#omG4w2Im4HK=F7kJzSSUHsm%s1J*ZcCXpyH7}-^w2jRsI;L^5sx+sxM#f%fIyH-$Rwpxz@@rg)09n zRQXrne7FW)3qOU*zZJ^gQ41{pK~VXRfRdx2mR|{V-RVi!{{e48@BKSlJ{YRL-J!~t zK-oXSm%r%C-|*${L&;iS-tD^b;12Y0Q1x95?}QJzz7&S-fnj@~?7#2JgX?X1Ce-py zP}0rQ`+53MsB$Gx^~{0VXSy6d1pn;%Yrgz#sCw5z+5H?!zJkg>exa2=3d&v*D*tIv z`Okrp3w-$}zWgg+{(~=Xd4rXI2dex!sPg}Zw0D8eYs&urPue6+leA5GO?uI!7ka~^ zilWF=QMVCQbf}8zC8;7RsLK!(MUkmnQ6?y=YD6*W{-~lTqB?X;@u;HX8Wd$*e(%p& z>og~6%J={Juh;9zJ8Pf4*Is+=efGJZ^A$|OU!nZ&aI@w64}6*QoLfxa2fl)Ss_SP% z*|`|X&eiZ$cq@DjE{3xA6jZ(!q4KSQ_3#7u25f+m@1WYZ-~36zDmVp7p99~7_q+Zx zT#erAR$IP5{1^IE*H440?_8+*E`@Kyo8TI_5X!H|pzOa0mH!Q>{A=M$@MEZaKSJee zf1BkifXdewz5s_p<=YP`-;GfAZimXZ7)l=W<*om2%iBRMFMyI>Q04dZ<@@>aQeS?g zFTco_&++9q`ttd{{3T!hrZ0cbmw)KXzxU-qt<|3cC3#Tw9}ne!g)gu2#?01Kf-kv_t(}#Kb?ojoPg4$O)1ZrPnEY!Zoc&L4mNl^PH)1mfNPKVleIR|QA z=`*N(qf73b6byoM;b3?lRQh*N`#!%w?K6F}fcscr=3U&!0{g-QyvFtUP|NRy%KstM zzEt|%+`j_*!JT1^>$gHJUj&u^Q#cH^y@&f=U_U574p?aZj)l9Tp9^<`e}lu}BDgzT z2KRvP!9C#*Q1MCQ{G8&I12rzXK*hNTO8P)`$0*nBJ43}Sp07*z`MT0>jn_k{A{5!s z{+?`$lJVqI-Q`f{wX2+3rgVv}hr~s8r0ZO>MCYojDJL$6I$u}sR6R^f4P3FGI;*kDERcN=l((djgaXwNO6(4{HCq?-Qnvfa=al8t6?$xyX#9}AM{tD%B_Z~ZyoFh z)01}pTM^tAeIM7y!0pgahALMDRqlB>5dQgD<{?-Km3}Q840|qP9)f#ArH_Q$!?93f z;c=LNpSoW3oZTl^3blMXRJk+ZP&f~2jMPEhXZO16>!9wp`vuCs^yOBrJ=A@538*ns z3U`O6x_%MVeQvixmCN6m_ot-w4|+HBO7*BOOm?g6TGl1eIlL}5&gYK?jw_Y-XJ=Md zJFn6ihI124$L0{IF*e4j@v8KQ=aR1ZV*%8)s+XNwuJkBh#BW(1FaI05#$pcZozf$A zL)RGW>*+f}jlDf#G;ipbQ+Cx3v23xm|I7#Mc=UXzyq7}RZh&gbPp-GEv-M^=RQlOa z{d5yl{=1>BX{>O)%Y$}(t~=E7Ay91|33YvLk?W5_&7E&U#b7k-T8?&9yN73`=r58^MF6B4+r+1kcEf-b!4tPAfo>oTcL&}C?TLs&ny z6Xcu5uV0Vn!*WgZ@cXqqW5#m^89ZlDhW#7)6})bFo9JEmJ{fi7Qbz`L)URcI$LBS7 zkyk#B%?$P9Nt^9;X?a|4Ql^=`hBfs6znj{VzQ5AkUUPkmGWb=RniNdoSJZn+5WYW2 z{t^eJUB+)fPitFqJzlOb{I*t)@IJ+A=7MGPN$p$K@9Uss=-bxchd_;oKYEwILfK(} zC~uPOp=6~~>!oB3y4J<@P-C>gspZl7tbFnHx#3l-f4|qvuQB!JSMDlXzk5K*6Hqo@ zhO)gDYJKkdFI&I2g<7xohFYJGf?6*pL;0MRogQTK%xm_T%rbjcjrZ!U|Per zxE{V6b8KJk59`Bo;@unX|17inKkGfNVLWCuUgxfT$?6;QviZFpYQ6duDzC-)FTAs% zbc^R!bYJ2o?9O1)Q{IHfcLJ1+O6U1d%ddut#m!K$xZA1tDqW1O*G9VLvUvQHzCGFZ zdGmK7R9&@DbMGpsxVL}7;@$(Qt{0&8M=p5L=ToRUIOy$`>v7SmtAzIUB3>vUqF)UEb#jX)ShU3rPiDMp&wa$7W~)z{|?H( z^iOShTPWEds=XJvz7(q68(sem%HQVCS&zo28RV;f#g<>X((FACmA_cesjg4wT`t_0 z%(Ks$pAz`CKfi(tUS=*MdMpoE9`MHR)L&@zuY-~wUAON{ z6a<}DZTX#vpw#cz=x*^H0Tq+c&d`wmQQP#dmMiX(_;^x!T%!C@T1}tHVSMiBJ2^~R z3{@tr-{dgvnf)h+<0=noeI5ighDSl!3fEn}MVBg?9Ly=692AXT8EzNiy4~x+H^#>_ z-s>@dHcCpnnVqwtdR7`6fciOxL&eexjKk;~F2k zMQ(4Z+pBRse;c-g%bI+BcJsSeYu!ez+gJ?c`%-7TKkD3{&)vTc-L0Lyq1yRn&&lCB zlih1_xL)*wim$!zFE_}VVRz~2o|F~TTePh$KLSdQhpPK5D0^2!t%HkP{|5~1h0hK8 zGi?5D&<5<4(tlcB3nh=aURcyND4KLQ_r@H?cYqJ_XV}>9#*c!-ZJgG7``3EAH#j#! z`5_9aOyPzp?Gf=TQD+erx%T_}=ER={z9PX>_ z8+1u42>h#&$;`@(GQD?Cek^rA%6_x_m4UVMRVcgPLfI`#vv}MN(8H{#!NxF zEnl87Ioz%lWKIsZYuiC>&t^g$2V4e2zry#Z>U${u?Ce~7KW@tXN#71B zw07x!;Vwes6uRuVeK7h6cXSmE`S+ z;X54ij$nKbw07S$$m;(Vs{ZzaJsvGQk20KcYHOLVOVeTXc9#EsC|M3=XSJs{f8MwZ z8V`wXz3?F$*Hb4zt6UYypl4vb0L(xU$Uj$rR1%4 zJGZ;t2V8F+x0KsWonUs_d;UJ2zmS(K>3&hIgIPy5jy3g#e*FeMAC$mIO1H83xBeKj z_Y0I19BaCkOOAsoAD=g6KOVOouT!;WK#Suv0nS+E)uD&$}MZza0P7 z;Lj3%iHB@|r>V}G*({GehrzM&n9Q(_YUqhfU@%-l%1!c?7RYHXARUm`YV(_HclI#Lt2QRlF~of z^3$N?R@a-4zk1J~^zrtkkH6L@TKW9GeB)qjPmbeya2ywVj<3wdI}fUy@Mq8}w(>kAaHgbk}R4>drXKj~k%$J)p{;0=2!m(DlL=;x{iAzq*lD zuFbyY_nA<3>^pE1IDQ}7;_-VD8*^!h@)ps4afov`R2xS@wfzjJHeKfF*F*VyyYqhM zV^GJ^pTKPRqo=oFjA|R($;U4L21#$Yx_1ni<|916pYVS=x zp7$nC;JwL5HJ)$rak+uG-r;erW4(~gC!H&ttD)MOf@*7f#-Z9;1eLx6)ZDX&bARU; zsJKpmvO5iKmQm*a)lfE;L)m^G%65@U&i@*7vCP{9leMh3Cq{f z=hYI|)7qv7ZHMyS*RocLVr|nlW(V!7?A`4p!zKrR;kPhh+p?xQy-nVLyusM4Aik_{ zx13-g@4+reOSHJI49A}tnkLhWmYOc^@(lC)A}G1Z zb^9Jcd-m_!1?^_AcVC$q?%R)}oZ{W!bJfqzqSMXJ;ZSlaR6opi{U%>-@26|W`-F0v zyq~z*?N%09KhA+FKhO308_j;(d1ikw)bazN=HiL2pAO~UOei_W_08u)V&6YlNS!s+ zmj6X4`P%iCj@#?WUv!S;-y2HKa(!#<+T`s@_O^Ddb#8+4JKft?Gt2D01SRXB+V`{T zzd_~ib&1U@yF%#)K*^y{?QU^DWW4oRioU9zVfpTak__*c=EoVMDI=+`vix5|Nq@$N z{2K1#{jdeDyRLK#(AK_#&`hhKQ@B{x0D<$8>+y(sN* zezjg_b3I-z{BFk>d#_g|v8eX(cQ=$g>U#6@$@9po^T~+|Ep8t}N&kyXkH0T8N#0tI z@BJR%XI!`QHEsBA+T`Fye&sjWcX#8ut)uN&M{}EeGh_pHH5Q6|tROQC@^*~joN)Q>#OLL4P8M$# z<&&a#N5@y<@1;lis;{&DdIw7Ox!(Hi0H|^J0o4BJPf+_;oo=vv1yIZX4Yhyv10=#h zuCJ$iLha{{jn>z2UuNs?ldhx9oazXDF7h@HaYk(swN6C7^Dj5Vng2IHNfIg!r(A3P z&4Q9opvvw>JGDL?;qA8bX`NV?I|dz=Y<>P233Ex>-HQg*XuZ!*OPBVHGhsZm|*L5*=#HS4V1h($Lw!_vTNs#J2xpG zo!=aQ4dtnJzvsmKPn~Jy_dCn%PKEOO>zU?v&e@h;2W7*K+xF$SZFr0OqNUWe#QU$# z_f4L3M*S7VP3=%0L=r7uL4J*~)lQ{LkCrRH#*{=pi8^+Y#PcbC9%-WTi5*=pI?>v5 z36v~{YWFjfY@Dxwl6RoeQ&8jlM^EoK+0w6p>d!?`@&%L+1yk(!<43B3#z1Gv`l-v4q4^;jaD<+3+=r(O~c<;~7P;IyZ>OPm-q1yIG{W8=0g(9KU zd%0asGQX>!+F3N++POQF>unWtI%Uxd2%=|iaY?=i#Le>hb8ZT;nY*qqC0zW(Nw z+4wI_*!nvjs!iq2Xk3Z)H<`UIH(PtQg~~e&s{bFp#oGHi)Y$zLhV{p<&-r^jhkLyZ zFW*K^=EPU*TkQp~_EszRCX~DnRZno6)l&ea_k>&6_v?RU*sqyy%U_0)b*{Ix|2&)g zdA@uH&p*NS{QUI5zfG3V@mQVvp7gnQt#5BOxSr?!@9F*@;Qp6G#i`o$Sy2AlG3?go z{oyAx&if_B)=!5(#b6wi%}K6DjQ5-BkghQ!O0Oip*0J-Twn?+0=8fxIkEs007cXD^ zlKFkZ%NEzSpnUle%9p%Xtp6v%4D^{$>&ILu`3}mLLsr_jJ`u{NWl(j!59L#WS15bqU$gb$bSQhaKhJsX7bgcJRy1D6kLxX6$1fw^lDcQj z&cC7Ld#HAHUuNw*6{?>2vFmKgR(twLRNc0p&vjYW zv)A}-zAhWnfA6~N8joZ3?Pl-4Q1ilfQ1#W{VdLU+sQ$~m)AHs2!FASPqVIEL*!wFM zL&adJb2(J|>Y?ge>r{-C9+7`TU5sL=ai`^Kzo_$EVqB{4H9zlPWbw+n&*KXf-^-xt zS-;rYyT?DQy%#=U?YskOdA|p3oSzG|?p*;@-+!RS`=?NT*!K;#yuLetI7o^fvwUlz zq{HLp&mb6<*Kq~=PrR3;Av4u@&qb-1ue;0gb-&xz$C3BgdUYHO%l|=t%=G@Kxx~(G z&WDQULg&L!?Uh9PG!dh8G3ogf@Bc6Tk+;PB%zD_`KMksU4OD+@fU^JHBi6nf{%QJ7 zOD+Dhq2hldRQxwU#s3Eww!gpLyPn_Ta}-4<+E}dj^>nSTryHEn*b!w*EL&@K7eUEC zp!_X;&-}d(N`DF}PA@{0T?I4H8(jar`*=p(=5UOtZQnd^Z%JR9m!>$QcFt&~pWjT6@?8;2 zPyA~2kA;$=->m(IL-pTuD0vL3AD@ScOUl#x1yjPfB%ro42Sdrx2qku2YV)_2!*iWUZ)Z&(Yv(_mq5of-zkQ+PFsS}IAIjgGJl&qZ>C)o3+2HmY z-0sg%HnNC|sCvZC&Gaa}D3(sPCUchBtbF1S@VCBL`~W58KUsS&hiXqP zRNNo)^gaG(^Y#%?HZO;&;}NL1z6Ld3-}Lm|ezx_i6e{0EQ0rOiUu-?=4Yge#24(Lc zsQx_xX25ei{VJ&K{@qaa7edK9uICTS<~gr!K~cjtsh;)Sli_=J6J1I*Zu2Jj_SECu z)8ie*Gva_)x@;?5V@gz=QNHFJ)!0VL;{7_5@2jE8z4V36d+VU|tS_y9hC}ts;ZW&0 zUs?Z*gX*7&PDbz7#p9V|c9_qMcf2jNiLmi(?a{Y9uHm`(w4&gsg z_Vc&nK3(od>b7Ld`$&g-Kh_gR?yCdue(%8i*kMLaWs`3sQ)eixr-XL?=>1x=J%4G+>b(j|Zu-FLeSV$! z@d4C&HR40-$Ah8#Z0Y!+iXqS8w(7g_4m_>+z9L_FMW+)f()V zw6gY{2_^GgZ+yRT<9$iNWUe>7Y4(nWl0~kE?`>m$qw9>04SA{d^|{IH%C==$;d(fL za%FE>xoe>0HMUdgk2TTus(U8i1aEq8Z7JpCd#!J07yI`0Nm%=u*-Jvnf1vC&K(%|6 z$ET&Z&ctrD$K`I1*Q-$FKXiS-8$NDe7{9*RTYcAYt?aF~e6#;${@e&0*9lvS1A6i2>Ef4zHwl){a{{pD~>j$--BwW`zujQg7 zngb%ebcEHn97;Zh%Ks&lz3-vy9kth#aQ>`>(pSI?_%76(|2@?F*_o?>dAm;up5zzZXCBvEIzCN#eTlL5 z9f}c9b`NvCCSmp;gOazPmj49R{=?j__;G92RMt!P>pb^&lj|LKHai1g*#512A2)#w zEwA!Yv8-D|msF?v{A7p9_GRr# zbA5lbnsTM?*H!N48mRVu0@dFC>}vh{9n|)+gV(e9x@+t{^o6qL{d_T$TmxnA9w>WH zLyebrTz?OSacN=Rs`r>gW3-;wRC>GSLCI6DzXMgzx2`w8j+kzeeti$s{&v3p4Dj`72$UqC;t-uT z2r{PxSM!U`8^m=xZ%`QIt=jT_?n-=!OG#U^doNV~Jp#3!)@0jyx)`cIUVy5^|Jx{LAiX{(TKKe{}3+ z%dgvJie}W{GpOUupP=@)4(>fAJl;G8hJJ13e(q%C&$gB?cRTZEA1Hs0f!40A-_N}P z8#Q^B?>DIP%0oKZ@z4RVF)mxbpF6L@*7M|w+rs=Sq3U1bTn`mziTXY|nMwH7!VMpBc1gyWM_9 zc0*Pwv#eP6B2=|!S-T*4G394X33?u7*KwQZ;q_pifjVwC4Ymr_q+3~ z{RjWm;&(Ds+5OMAIF7i$`u%LE@i(p7#=|90$Eow7;{GsHxtSN*_;~*!OaB2X-S+o8 za~+azZR@@2v1d?pY+2*|T{FVYM`Chw8&p0Tzjb$*z3c8Yzk4k(|8|FAJ-QF9suSN( z>Bza7eC`9w3)(Gd+t4PJkyJfPsYg<_(DI*nui1GWsvTcL*(pq9bAMxT5Por>-kyDE zooH36F_gl_H=z~IkJ9(b|KcTPXWgY{=O?K2{K4&l!BxG2?fCX%-(lT@Zrt0vdA2UK z^FdiB*;p^5UsNXQr|GV%Dy56+$C;#S?w;jr-oMJ1y3Fc-X14kD5mfs!F1Pf7P`18; zvXyp)Z3ntQ&9}Qi&1*+O<+~56{3}qtISc^}H3-=O^IJKy}=3u?^g+-m+0hRSy^R6e^-v_1Dk^l9ve zN?plj+e_b$!|zrUP~I|pluUO#l0rk z6a8#;f@`9>_hn-y_r)-GaUQdhn0&{t{urCP;<}C7V#aL|Sm~ZdmO62-hr9$Cn)(1%JDy)EmJ-a~N`)O#ncgsSI0U%&EuWCcCASEL*BX3i33 zO@HRAp1zhOYRsQ&q2zkk&z@^~EmYi=LG?|_)6;g&4tCy{8|<(?JIH0b89noB^K7pc z=h;ovxhkwB2&!*0d&RX@&lR^@J$FLYlQu6an8&%Nb{t##{j8+yP%lxc|UcHi>6(+0O$<~A#RU#=R~dOKc%k{s+S&K;oI zS?cxKaaK-r4}qPJK6z1)Jlp*1evXwN2IaqH??~kPCek%Wq%$9h5~a5!nnUu)Cu*MB8f8bz zWk;0!9up^99PWmaU!lrgdWy|oHBfbZcbd&hnKNu&>IpS34TV~MKGc5wjjq23H9!5} z`r%bJe@ug#UuHqoa~ae;bt}|7^$?U~oMH1-Zz!pPnzycoif!}b_1VN-Qsc)9_xSO{ zuhH>CS3O_V^f~xC%9JcNd#6LmU!nZE9%@|O12vyN?fNpP`fc1aeGYyN_R7w($OmF7gV|E zd_mE};>j~x0u2A(~bAb7C6O`ZG zN1NaKLghOSD&HTSFPQ0m)c@J?|8$tyJ*3p^o(>g{H=yhe8)N=mafJDI+F0BE&V^du z`6wITCqZp@&w(1>uRx9KcVOt(R?ZjHM*bXU`Q}V8f1ZJA=R45awe|A_D`ev!%Xcc& zzRvuEZNK1A*cg|spD$==)<40~R_>>9=FgFTF@Mg3iqC4O_OCt0>O1II)4v#R@z{^{ zC>~>>;&B&LJRbITHh+F|!>PU=uD5!hhLTmTw=}NvDp?OdwETaAlC`cE_R9_WaX!3= z#MlFXo_Dl-_)b*v1||25FAoR8QyK1k2;X0jskBRybw(`7`vdH(Pj z2=1BsU`jAzUE{VtuD7)9pN+3||8oDJ=(XeJzxX^SI4` zlG(27dulw-oQl4{saUV^7}fZ3&3vdj7duzLYOnWBD0v(z&zn%=tvB^bp9nSX?sENJ zD1V!er{FZ}-^9nZd;*l5?t1g>zyQym=lz%e2gmuPp1;of_x^Xy{-aQSp8B5oeI=B? z_rTE4?p)7dJhFe<lQmFdh|EKx)Unsw(J!Mz&WE!598~`oC(Z7xXU)HNmYILgK47hu6%XLD1T@_4&A92K#}JS-xkW=Ht&FxB0lu6H$4+r)2B% zaS1l!QtEymw8H$k3o1S;4)N(w%)c5M&k+wM?h_k*%| zI8+_SLDg9S<-?#)E#8Mg>90c_k8kst#d|nZ`hie!p9mHAbD?~E2kQ9vzfe9N^ttWV z{sqd96QE*t5|o?)!|~Vby&}VjwIun4E&mcqeu64r5cOBHa%J8}wZvAk7%Kk?*8{iL z$L&pUd()u&o9+4>Up^nUnwQY_s)YK~hP(kjZlQb}0K;+XdNiKIl*f1fugtF_p~~C= zRpzf>+jzPjN}sUN#?^GFadj?iDQ@NXB1w8&zVtZ#1ZBVXFIKMk_N>Os)w$i5pyYGc zJ@IC2$x6W8PUYRH#rZTY@|k^;|HT$mLU@=m;tRT+)%(<_`B?9Z>o_vtlR#`&eV9$r7m z3hH}J4I21`&%I^yen`eo#;`VF+VE|r2G^ac^E&jJ_QS~6n8tOUW_sLKzTVMuk)4BI zN}CjqqJfR)tJSWeY-{HsP;xX>953+ncwAD7pT}jH$K`F;TiV~tI@9W`@o_xg$L(St z$4^4daVw$bxc6ZssaED!hS$>z%CA$P#_tTMvS&k;Js)ZuU+em9uzCL{@TbW8@j&nY z%UrkZPvbZnM_x(UNVD@dD7gj7kH=hp(w7%*&pk4{%OrgAtzKspTbH&<*g5xVY|#y& zKMk}|e*NriZSeX}$T0i0P|F{Ns^?AD^S93lwjZ_w?|ARm^jUyX>)(YQ>(n5#Ptnj$ zocjNBmMdPHpyHK2*tT_funl@osQrZjPR%V!7c-sOj!0K|G1}J2uJrh}PP)#Ih_Wj- zx2N;BN{{U6ysh-ep57NMT_Wne-s0Bm75VbWULV&Zd;MGop`C4=+HT5j#I4zn>_+x> z@Nyt5Pq#O*6WJ4o5m&L~cjDXJzTUSTZ~q9_HBO@RV2F*IbGEl}^w7?>UL>LHJrC7? zFGI!uBdGQT!={G*+zhi(ABWmcdk3nYzlGXg=(vmNgP{6*U#R_tiLRdm)zANdI$!@O zlzau%-n(|48VrKZ!@=+)I0R|`F2oo+zl#zhrpfSQBX1w%Fdm`r-tt_e-ldY zyZhAeJ?2M1>D~628te*pgL;qo(NOPEoC$Y_H$lboJGduI-*al9cpeG&g2zKiIn;Nc zX2afaAuNK+U@`o_^&g?eSEmtEgT8PmlztG@xVj5&2OofvrBLSs*Fe2bdlS_7@3`00 z@VdoLQ2K#T>%obz5MJc^%~0e2d#Lx>XY6fu2f)42cY_)i`Gd57(Yxtfk;nOB@`s`-+RaTb(((81=zet9dqS-T$3n?$sP*9{sJ5lO zkR80RzD@A-Sk6fNMSlW9@vc-i50D!%g0Q zQM?kwy~elKDc^p74JCy+J|1?;33eJbob5*<=+e+Bm0#Z>*{(9TEXTJWMQ7QzI$*mX z$%X2h0;oRg2NmxGR9r?t#d|bVyvI8EH%u3mPonrrR9>R^N@Q1}xJp!?MB9(JC~neK zk3{uKBKuljB$0isH!PkWxmR zH1AD!DwEPBTWjA?TfDh_!(5N**L)|5>eqZ1m#F^jNz|B$C_f~BRR2iJwz>XMu1EFn z?|M}KXxAhBU+a(hGm3Nb@{zxPluzxONqogw&Zylr=;KMB@97Jj55wb0PrAMmsy>xd zd_?t+sPQMt4^jS#iicS4R6L|lbAnJ;Jd_@n6#Mx~-@o_NFu4?}d@YpS`=IKngR1ut z7|wT4etibz=d(q&U0ngy{yzPt27iJ3Lh0+^F|c)i)1QXNqQB?*`P)tn<8v!Kj`Z~H zOm7cWepfgFUgY`{P;q+)mcc&_F#TYt{HMbc;4`jYJ#cC;5&c$pB76$U?-$`D_z9d0 z+YFi-Oo0QSB61*9TyKRHa4}R|GX_r$PJ*4`bhslt86E@`&)<8`>uBb@x_vBPn?G6H zM?uAX3RL-vq2hmwr$6QC`8&1?cC6Yi7(8iPoPgFL9b}E<3BV-hKDWsZw&DFQg}y=X zFLAz(PnqS(6Obn$Pe2}BODK!wv1jO--g`Wc7)eU}JVGUuTpyiR*efR(GHf5>JFLa) z)=A3Gr2+D}%#W$!ag(j-TS;%8Z)OYmWLNo;?$2L;HUD->vv}?UB^S4{`27t^=0ojA zKMZA~rRzsEGr5oYU|aqsl)MYo9~+_iHS-XwrzezN1Z6LNT)q@Lb^CffMOj>P+VY)B zDe|aXEyo>_I;eV*uBS#?`L5WJ^nzMm4OQ<3VGg4P&5rI&)eqpIswp`MoPyXPeIrLmJOnR3B=7X8zgy{Q5BS zvv;Ytzc7<)WbK>W7m>hDiO217D7hA@eY;>!?JI>^KTdM{`5N;)U)FJM)3#^JbWox7B@$pqX%KUo*O8x~^|NBs7j^EGfzY0pfc(k{t>z3F5tJNNF@99wT zS15beLzTY=sy$D;z6^%rCX7$h=PDLrufh9wp!+uphWTUXLF>tPE;f}8HdFOJOdmy} z`js~GqUXaorS_25f&u77b!lgL&?8gS02gsP&UqjvKN0JqWrM)O^x?ih5N;% z%eSQ4h~mEzJ#nD5=R_zu4a)wNuHOn(PaTwvCihABxyLo<@SMa$w)`O|c?QZ(3ab1j z*MEkgo$xuJ#`hlw=bDdYC(T#!py67}*X=s9HxQ~^^Yf_#C?~0%Ys(*llC`e4EBamy#J_{I#yw?Zl2ZO?`gb7G?GM(HGlQdVp2u7{Ejq3Zh{%6^;M ztse$M>H99Q_}>WIpg#na{>0rje&2+uum3%EK5H1%{^uB|`tt|p1cQf-XMNrBec{@6 zE+huZ7tk(AE|fn7&M?vcsNR00YyC<^O@?+fhyMps@+8}8xDhNM@!e~8Xm;Pl9sR2HC@K|j_393 zbhVUC@(Zui=@}`%PN%f=hd7UXW#e_arfES~t}zeW@tCcaw%zsKAC<&a?TO-8-3gWNDQNZo{`Y+5xerArS^k5jo89?PcAtY9r^P3m z-C3uYfA5@X{ykf1<9r=dy_06xIDP_Z{e2nc!XBsFdFVkf^lK~k4<#di&ar%Jp`^pP z=FcE#?b`bNLmRMBHp%k64z>RMJlU_WOo__>{{2IF7c};b>MwP_4?4sAxeF>jD`7aF zoN4VJa+cM1GgLhGI@{uLJybjvK*i%b*bb(9JLB&=UPIkU&K9YiABSg+xS!i~I|q^7 zj@bj+x3|q zP}gU6g1Rnq0F>MbbzSZ$*E@Y;*XOo}>a+MeEN0S|(eY5(23!6%lyv*A=MUf0+mGk) zy0Nkt)92nL+Fr9meIt9`5y(_%#k}quew@|Y4m!{i1-zG?9 zmIrOxly83Tc3e-(%?NTw@}#f!R@nzC?#wg6oV)8##q)GrZ^{^!9pt^o^-+GgbG1!l zKP{%)aaqeOgfcb>HR$Z8|&xvZ*4qm17&+0RGp`7wE1fll+U@} z+5FWPwn2XsYW`XU75A^9=BM`GTe(A^+B6m_-o1aY`D%Bl`RYihwjT{OPn`}`?^#ge zb1sxWZ$Y)`-c2@N?f#?9SBFB)Q&XX0Fb(QHf>}`cFNdXQ1P#E{X?jJ{>An0 zGRnh#%47ai`?^E*(@>~-YoM<4FM?`Mbo^WN+0`vk00XtAMNv3Q%`jKQ1r01|4As>AG@lr3@Wa+-{11LJQvE}CoJFY zPulvlA5=dUJ!R|b2&nb-C}{S6e?Pt+n{las&dU9=-25B&y!m$l)VO>bYCLWKqSb%N z3akHLFIoNHL)G8?Wy`nV6`Lpi2Q@!rueAB$Sg84U8Vvp1%6|PO_pkO%%Qt?t`E?Cc z+!n#G{8rxMT6D3uFKPLvL9K^#pS5}He)xZh(`dI-goE1=?|{5IAqZd#i1M2`d$tdhqJtW_Fj`NoA-MfsCR4E9y;&TxZPFX$d8RTH@)^y z&Ag;*4`sQw-d+PGAGogNlB=M~zYS$8e%(Pn*#1iRe$?<@oPt@lFHqz@3~^Ssvw9wc zk{6-ue&XpZT@Nh5R$T`x_aT&g1y!z1p3P(1K*jY>uI~rcZ!JBiS&qHH>)Xct823B% z*LYhR*8BU`Kl1mjL&ahM+$`?r&hFn}j%dl^dB!O)-Zxv0)T z`z7Id+{%oy^l%?2r5GY*ew=rmANM^0W#=WR`Z5?ts;>yDzCC?hZS5O3GcU1mQ%74Q zNho{uQ1((#_8Oq{~jNaq>- z%ph}UtID)4SwR=BEqAGc!`cL0hUPbf+nup^cyM`e8ovd%+3`pdUFYYx9$m9%dGG_j z>Z2bDk6Ge+T7G7bKbJ3~*0)V^-6T=GLuRnU#!kUDRrx{I*u0>2_wwL?J@D=CW&GXZ(f&?ols_v-SHG=>>bI0r`NIBme(w2{E{W_!dYH(c`kl8Wm>yT-gD6*h`!ra+%Gfew~=f5`nC}7b!phXJeaUUd9b)v zeT6qH3s@Fxv5fU6me;PK6$G7EZ9bygd=0IHz6krl*QY0;)}Iy5D1KXuXI&3#*Filk zZpT2CuYii@!XjJ$mO;fS1=Wu~L)B~7DGug3#X(%BIFRcUBOA{fl-hNQa(rxsG35`2 z*?7r?s;2;|o_*}W2K{`h5-`JcO=EuR3@ zjx(U-X{hnB2CANc``h>!4&`@#Pp;RlYkrhr$JI672MKT62yfeHXXLXeTam7M69dhD z6_lI@<^L=w|FZ|1|9e5j|0pQGPlcgh+vNt^RdoycPU^}xdbuIo$xz&A{7 z7TJ@swfJjUrN`rOD0u-Y|0*bd?>x}r_!d+gzk*pX>mc{Hfcu1JG=67EPn+o6M9TdP zuDXTX$PmjvnDsz%0F;0BK9H@Sugtov@qA^9bwFhl?^GWvU((m?owKd^eH{$#hS&I8 zJ~x!W=CaU>ASf!f{Ij8CoZGF1io;UZ^SibQ+D#1KZ&sOJX3x~9o#U{j`bvF$9q;RD zx$}yc&$3_d+o$iLB&W00a}rd%uXX)(sB!*->$`Tf{C|QPH^)QOYu|J0zX`!-hdZIl+VMnollKQT zU_0+D5R{sM~ z@)%UUm!SOr)b-DO`Ik_3^=-d?!}0IO7=pn`;4x)<-Kn(JNv*e|6uO7OzRcIXF}b(kf6*e>?=>r8I9wo=$}^ZIVc(TsQEJk zD(~5@|IPL2JXZbP<-vLPly5$d71vw3k7FG5OX}yE-5;T(>$O(j9#HMS2CClpd8ca1 z)?H`mE1_hxw|^p(%yd1!M<&M!O}`Vmkn*xw?PIM5)_Oe+Q1U;he%Q(D$seNoiTiP{ zP0z;j`r%%n?Ss_2%{sUFBvknoQ0-U^H7-(4t)ohpC|_K%Tv7hd$*=w4O;G#8>AMe;8BfZ+k&1xuF3zdHZRQX+RwDEly)ciLIYMwmZ z(-%S2`v8=G9dEMz_r6f)X@)|jkH6W@mrjB@Px=7NgDauVlWu@v`CH1v^VQozU3c3B zsy%x_ozET%bsoDCsvQ?Xy~pob*YAVsYkSXXKKD3t?7%TX^Y`j(^6^-mwET}i$=lCb z`#*-Eo$z_u?mQ3GvFS5%%*)!27hPpzD@A`uK8K3mCaCzO?`FEs-GFYPq~m% z>Gf55J?BB$n(d7GB3^&p9cFjfomT%|P-XUqs((CG{gtq>{tndNzR7;K>fhk?*LwYn zo$>k_+)l3rR$qUp`W_<=s_!|d`d;<8gy)T_I&+NNiDSEtLGCvh;rpKQuC{Sm=5?fM z&A-Ci&F*P1^f!Ee?KZr>wioZO?P|}ZCwVU2$M%LN=Lwc}9 zI{PfKeBpB!L&K}k+FB)wwg0e@Z`-fudObenJyjl*@=HGG*Xv`t-7DSXJ-d|}w`=gb z*2l}QK7R69FBFGjUq9?URQciguU?$1DP;V&n;Y(hBxNJG#`-B(YVF($O1^@!v)^MD z&#_Q(h~Hm4fU>2&T|UmY|CP~pdYdfX4ZP+3-KAb%^+L1vD3rY9da<6DsA?OuU!Ki< z4D2&KULNeruRd*=-Nz8qrIyPtF2?|UP^TR5-1LixS@ z4?)ROQ1ST>)cW$J>)*g|yoBd8*>X-R53c4Hz3(ut+cEsspN(pu-sst=>Mw2y?MCZy z{Uobr?qu`lkqYzYRT%cu2;DDwDEB|a&O^oazYA&_&qYk+8=tL7A&w-!Uq4=+Hqz4r{OXCPEPi=g`TO{jcdK;`?R_mM4i|7*{+ z{B`G<-FAO9yE{YKt%b7t0hE9HU10w0QEmGL^}|Fz9TO+z58s7-x*Nxn+0Y6 zUr_N|4^^+d|B3fLRq@`ZNo}}ii}wT%?b=}1F&ppS8a>ypi4@gaxwoLC%NwT0=cG#V zmMpjQL!sn&*TeD8T%0#1eB1u!^Vst!BY$dqyH^Vpr#h&1CZXC{4;9}O)VTf@hUY_u z+jXTv7?;{*=EoaQ((O5mUvDV8)lhb?gt9vq%5E)`-G4ysuRa77-<7U^1?6x2eOpP7 z5!r&GJ{95eQ=p_+??+nShHYMEP}#2{n9r}^jK{;dy{V2D=sG+WUl^#h$7xVk=uGXISp~`#$W#h_j6`{>*q3YPXpdzeu zG?Xu6p!z>3tO)zR7`8HgId2Hg*q-?4Rw6^HI#2UKQv(2w#2Vz zi}5QXe(#W9c`JP^p9kghY$%_vgNj2fl+TNy;etvff9T(~{yYKY z%X3h^yaMIRn^3;|2dd6b-m&%PE2#M8uC?`NFjV~ZgUWX(R2-*6#qn~eINl8v$7iA9 zxE3moKf=a1_92e3?;pgr^RtO#be^rAcu3Yl`Mv?l_l;1#2fJGwbDfIY|8<-t-Zg(_ zzGv~NhGAbp)lmawYsmW+pJ7n#PET2U`a#8KZ>W4Dq2`$rpyG5sRD5oNiqAh`*#2-o zXA=84$Fw+(>S+Hm98lgO+9eqR<=b#5-$p^zSqjy6`&wRsTK`J>TLZ9Wd_e#bMQ+OrT!?0)^Z z^!w}<`+W`lK9r!VOdb6sc@ioHE1+Vq+NroIU5xrmdWz+W!RJsh*aQ`WbmnEnAP;IR z_Jmqj2RLO%F%XqLjC94I#2KZFDlf{ODEp%76Ql7I`B&)aAY88YDPLYIi%(Iy#bd)m+{kayZKfiY4Z{m{#xC23d8oba6PFUyY;^OC(nPXkH40l zgQ}ZHACED6qo8D*>&>qhu2Ehj??|t|dj`imndj6xDG`+~ z(!)glq$Zg^(q2w5-_2vwydF^5-yPMy~GAT2tpI#AMbaF+o z<}RHRBzF~CgDuk8md5kxywm#3AaPVvE`@5xBB*x! z=F8*f(;6sSeT0>p4CUG~bM>{U56UX&h)Vx?cn}U z`v?=EWC_fID`D74@dp61^kBWyg5 zgIb=xx9w++gWAuW3bh}(6zX{4MHu?Ejjk7Lc|LfY`xESE`JRN5ub|qQy?@lMt)Ks_ z#zsxT^8E(2ehe9E`@sjm#<*<#{O7{R4^@sdxZh8fm_ObAWd7_06`wk&_CF0(-;pCt z?>@@naRyX8WmW^*o5@8&A4tO%y?E9$)@JXaRi?b=)0&HG04 z=JVcwIcDcJD0#s3_`IDYU)j}`ulae-4J^~PHZ|XtUwfF|4P~hrFF~L27YDFyQ`Ze}le{>G^-~zMSEV0ZGkGHa@zSo&J*>7+7=Ii+7^$1TIUaeZQ*#B4W~n`^A|v^ z^K+rr`MaRb7c7N3)?NXVzP|nsO4?mzaqI&%?`;d^(;z6Hc7pP07pUz-36xI^fep?RB_7xFF@e~(vqpTle) z4-^Td#`FKr=Z7<|v3AUXk{h7fv)J{QpxU+8^^c+2_oM5r=~uP0E0kOa)o1w{TijQa zJEQ6Mk?P!^(td#$I$Xs)>gW^s&3Ajv z^)1S9{Ugab^k06P_I%am&X}IoS>F>Y+~S#twA^%_{m-gr#;h#PNoRgkdpZPVcQe28 zORU1D5t+dV?!(Gqo=aygRQfsmMrfIOgJn(Af+pp|b$X(n$RP$ja+!mo)%6}8zQ>WlcCPlair^l8n?6_`6wCjrtZ>_>wCDJ( z@$${}Cgo%gKQizmpiCQn;WyF>vVsEq%IBVh?6GabdkeIzFTVkATHiL;7#0{e$2( z+druM$l}oVV~fLyQ0r5C|6l-lQ)?{!3n=-`^|VCWAVGTu(w;uUvh1C;_z|uz^ke-y z%nSda?^jzNHPH*V{FY0@_sn}gFy~+JGGmw-kg*k1F&4&V2Thleu4P-Kvu_u(5#L`b zr5)Ao_grtsy{3VB-YvLr?*W=ZA{)T3P#aJC{M_`59{a(JkL}yH9&t z?$d7hI$Q&`SCL<3lWt$fh4t;M{EqF-eg*Z(?uA}&S|0PjNdJ<2)StYcB=KoQFpgi{ zTl8mV=8N!sB{^YQIq6BIYpz_L9!S55-)f~{ySXkqo6E2~Zd>0GEMN}m%st1^HR6K5 z^Ss|T7T=4YGFoyfFdQw*J1?)Mr@wvAA@E!cUg8pfpgYFFlsjl^% zlN~Gb%kpTS`k@5-ic=ABD*Mvx)iqc>H-2q;*tYdqLFxMy!TbE`|Mo=Kwz!_wHa%!N zCZoP}rSA_Cqu@QZ+x$L%JBm-cP|qiAlhQh8hVOvMW!}^MWJ*7nU+x-`Cg32@Ee-`gC zPH!#3)Ro}LY1?7uMXn+QAy+Zz{M< z>RAFM%c1;z2g<+iGR)tsOw)^@{M{SM-@iclTLtBB+O+n;G>%UubKFw4JS#Ys+WWq@dEn zHnLBe_ijZ{!moPh(>7nzZs`;F&0cHmZm!46PoA9OPEwld~lzi)Yd_SV- zcAhu!etHT@-gZ5$C_N}z!ahr7VQIL(%N(1&ylqhPBHJ2%MepL1j+r;M39{G+)PAYb z-{Ln!%dpj4Z&Fsr2UT3*e5fKA%&%m+zaKfS>zo14o)#^w2uAW-I>7QY(Y0-3K2N?> z5v<}jsqC?!xPMmApM8-Y%QM1vcxB+5mVLo*h5OcAZ&KcU%X_#Y*ppx6TNB-VOFUf> zjNupg7T24fgB?x08~)|}J}5UBw6SB*cQxzma-OfP>cKu}A?+;)QqNTcU-26~koKyc z^_@b!csb+aJ&UcDH|iXTVk^K_fUN*KO>EE?O?2(kSG8xm)-K4yPJez`dvGkISh9_l zzCXX8y{_hZlQR9YgZ}JS_F_BPWi`(uEzhAp*tdFw;{bk}Qs!?HUC$O%rVnL$tm`sqemEm1*G1VvR56$Hg+2&$W?qPCe>r}ijD zQN&)I4pBu>d{CxiEKx;KWT;Wb@=-;t^LxJT`+b|6NSW{d@qa%apFDHUJ?DMi=Y5uY z@3~t%9Jbvav|Y;Ej&|FG`}})X^1TG+`#jpRBW+m!;z_}C{A&JXZPy~Kw%bU)rsb?( zyw;qrMOfo`b@!nB>63z){F=h&4A=|*DlTZ5rbmaMM`a;nlJ_n>%zY93=6!%&TBBJ} z5OiP4_YIlDIxya}Z5w`rwLKiOi7-5oxKWCuO|`u_%-){-0r^|xC0)F%&~F?!cFf?n zm_5lQ%(MJ9W{Nwy#kGK0wxd((fCw>kwhy2RQ_Yo+`MW2qJ`n%qu z&3N8>cDoWC*QU`mHcS-+wY@Fh*HF^a_59xb_G{3g`|WG}d~UbymVY<&s6L0g-uQWJ z;tuXB=xgPD043jhI6RKB^UDqQB$tt1b*$L6`B*_=w7r^EPgnYt_}muo;#q@FNBJ3>$-2s?FuNjzR1#*czrJS`n2As%_5H^vx)2N zXXTBADsL|jp9)oORyTdqEstY7*7m07))Z~tG05ee`OHYE==-1z=zNXLN}q`NAS{SK z(yO2Pf!O%bb3qrFJ?s_!vQHq-nD9UPWq&L8VyLvsp`?rZO=%@Vq4aI<;qX0Is@~Xluw?8^2r-8vxVucEVlYhhDuWlm1Yi<-#QQT@;Aw5Kg0I}t2+fb zl%F%QQ$_2wr3~fj+MFcm`Thwdxm&uPlI)-a9o;H<&q%3%k8soMU{lVwSQpN8Y6^RB zh0X;E@0xFYVmDtua;|}q)b3<@hmSJ5&w}#p^HBBaw~Lj(8C3W%sO=Ye{BjSk_i(|M zI`7|%^Zrda@9)QXfA8k=aQbVwp5k`ZxINMN^*My)yID}ayB2DWsdp-!;zgy4@-1My z#@%A4;v-4yVD?@HCG}ACNPB$0GOPFDP`W2WmH9`g^WRsY&VRpxy53T-S|}UZ3+8JEUr=RIw?4i-`wqW&jI5w7B1L=cfZa^1pT>g z-k0kQ`Lpdhn0zNs0HfB~bDzl>J|M z{NBUOUzJetGoZ>_1m(YHJpKcZFB@V0+#4$W2~g?phVt(sk6+>O!?rSimqDekf=WLJ z%KvwJ{PP}Py|uN+nNaC(fJ(mxsy)8-_}(QJe<)P@R70h|(BoT=#o%rmiw#Fxz7viy zf7}J7zi6lYptyRIU~pw$zMWIVIxFKZlhb5ZW^7(AM#uS-At^c1^7WlysHg77Qh>|J#%w~TroOUIUPlI1o=hC}t8GN^fIG*sWOfSNld zK=tj3FkCxxYOLy7t*Gr{j#K#*mL5_1Mdg?1TCGI+B)aEbqI?qNlPI4=_9}nfKGr^y z##sCOxUaQ$`>{5Tw};C6`hGS}--Rk;$~YT`XF`p;%_?l1-2yeP{sv|Hkb`WVD}}nw zyg$@+<`bZNb1KyJ=F6evtg1=jedBYWY`hUlUi5J5ahSpX+9xKCu=LMDNqZkpI}?@JsG$6 z?!!&rM^Jj&vS*^(!-a$m_9Wb%?Vw~lls(lRe}c!SJ$|{z7meVYud+A$g zOIHUaw|n@1u_qO?r|A^a^TKqqXBCt^L$FhFyxY4mduF*kjb~cEgxfRF?TO~5;EYK@ z6~Ab1iieAab`H97>}_7Rcb>`j4d{-Jzw2XdEW1+fr+HBF?CECzJ5cs#6>@CLJXFZs zRLDG4II?G^dlTy_A*m}KR&?#IEs){pDGe;iz6_FV&IS6ltKm^|868>?f@L`#1ilq`hm$4fo_ zd5=$?Wbq@RbhNgo!tF_W`DfAIl1IJW+p=e-+fx^_r`+`)4<+Y&xz~F9UpzkJ@$Dl2 zY-C(5bGsU^FuR|>()4z`s_lAYJblCEw*5HrN$&9ccHX}g&yfs{9WOLrpDLWsH?MG@ ze3XvWtK@pqHw#MkxzYT2Bvje~Bl3a~tYr>f-I4Q*+@O1P^F3H4b0-CR@yi~{nm&2s z;TGSVNU^rlGxp7iO8e$S33WY$U+p^E-?j*c_g~}&Jt(g$`)s}2p$?nU{MMhWYxUea z77G_`m&>v3fM8H{lJ`0G=eWtgRpIBd<<$Qf@~BP?)L)|gn8IS?rB>g<%ghg>@w58d zVNfy+YQJ+aRG#?y$i(@amtJD=W1wWMhqF|V>5RSTUTXFw;hey;%IP}lKYLOz>zn6- z`1qT3qWb_AlRot)E58m(8ldcd*5kwbN|*~eG8Z(SKPfov z0*-&~uzM@x;qX47<>Aq0iQT7^$9+oqTxaOXJwdDmGB=d}c~UTiU)i^6w;a~y*+Y{i zAWcA;;8$sa7J0Ic&k2slmL9B=^xz!1$M|j;-qc%@bzNR?9oJ#%R&)t2tL`53n9Y%I zI=iNGNv8^1SLw!a74PF&m|J7dVe4L|=KEOJ;D_`r=7-=`^FvSAy1f#A<@(WW7M~R! z|8bpXWY?OaLEQJmJB_qbqxrXtbf@A&<(E$*%C8Ieus)=C^$W$#{LbD%-pKb)O9-cS zZ(gTK&bRWapyU(}D~;r2C>>MLD}A>?g^P4w(@1lw01adl<$Bx(nrrRD!tMq^aoL0 z^ox9T=lW(}RS~}mTgzZ1iMz~STiH!AIjEeppIeR^zg?}$CF*|vE#{OppGZc zfU@O0C>b=*jxT3Gokw2|wf$NsSps#u`5x5q=1(5q^IkjNJQ?bk`Oi@KE`jppzo3qp zzxR06NAd|&oeSMp@%PKCt>W)Nm_;~Rr>XP)k^NV*>o}1%!adQX4w0#C2& z88bTtgV?wC=e=EP`du%`3eZ%|u zi#=`H$JG$hOR7CzR+sicmx)~KJC;7(#x?WB_n93vYpk3rp(O3$*6XrOp1%AIuV))N zv+rj<_}I3;2PFyDm(?db=z~2Q&eg_qt~R0z`^e3j-<_3eJ{BuM*9YWR8ze?IA8*%u zVEV^?X!?JGN>jet`fU|d`1jW3tI!{=%fDdh6aO@Q>s~fJU0-oM+jil-Zv$DY?Pu?X zOzR50js045yyiB7Q0n%yei)7EC|-S1{Z?bLsw}5 zF;w1fJzV~_?H{Y4^V+CqK| zeYn+gRji)%Ztr_;-+H(A`FE^7iB(p=Vkj8_RlkuQE`_S!E*}2G>-R$&^^^V0_3Qhq zc5Gz(v*?ok#@K#FqK)sRN>VdiPmbKx^K?tXgC^!I+=;(t%i9M@Cs z=~qBW8S|{{9Pjh3-QTwh_xFu#)1EYX&L>0DeOB&y_nV%}9yC37Le=;8^sI3`6^kwX zS5R`^64P@d{9p7W9x!_vz1&k4nVu~4sa}0u|L^U0%FrV}H+s1zK4E%p!|&4bxclFZ zw>Lbq5gt1~pdnl9~3zhF&k8dmAdh*ruwS0F&$wH`nFME9ReP}r??n6s1 znjfameCK{zZ}w)O^8XjgfA;)QH@?^1HM}pk_4m5RphxLyc@LJT`7|!cK4#xZP*Mk_ z|4xr@@c2&(E&gXHJ$XeI-UKRKP?i^zP3#*C&Dx>OZ|>E&9VHx7NJc@GGX`p2uY?+3 zDHyHg#yMpp@iU3fA>V~g)i0he3fHk+$Fp;tQGCRC#P?wPBFNcYkalXj;-hpCUu3)9 zIkM6j#fz$ksCtR2rzjESuP9vdleOa|P;xU=`Ujx${|u$CS2x8YqThyE;wdhf}BQ13lC2I{>h z)1dtO6fA@7}7^wH4bm}@ee6L9#sP~!-ft$ioxEb6B_J;?-Bs>xhfXBnI ze-7ICeWG*dn+@MvJ7i!eKUg@v{*fkK=39$z$GDUf`S=Xq-^TT6J(F7AeR6OzzeLsZ zp$+k{J(HTRdtJi0Weqwd_1(9v=*Gm!)@m^6c|0pOq&cnZTA8Z-N@j@PeIw(*PV7Z10t-z;=W5?;SrD7n(Z@%lB8w#3WZ#mnE* z!@pI(mEEw|4Lv3Y z@AHfN&>|e(gGpatejLJFAAVaMJ@IgBUlmhsiMRV*Q1YOM<9@0jU5)$YT=&xj9^TmX zjhW=pId`M`<@q12ULBcVTKBVh($+8;5vR$d$$OCS;2{u zgD3e#_Qb>X{U_FyN7}tIQ60(;Wez{A*}fKG>E(HW)Pa+OgDaRL{hg34!fs#5DU*ZK z_(k@`!}0!IkALen^LcS_UND%o%p_}>{df)`p|wcA3Lmz0)E0Z$e)}_L>-|`HmFc?@ zN@hdt$G$s!a=0HGa>V3tKeihT``a%1Uct>AhhE#}acG8eXR{+v+F)-hJI^Wo+BZtV z?e=fDZ`GPv+_ok!ukQr2YZ#PW|2@X`qerG}|2YY2zj;2CPJ7>SH?F~V4YJoIg8G9d z2hZ_K^?fAlAMtQOaUSm9W4oC1{#BIatRp8VfDL z>PMB?!6bB^!f#Z*jh7Z-J(KVIxx~JcgFo^sEBHG;p|OY$*#E`j z$@frx_!-LXll!?p24y!t*TLGi<{3?xk z)8BfXZ83U7>2KRNg_4UsoTYnqsaubc-MH^9hi49Xhdu2bzQcZb^D~D{QQNsa!`;3z zXQ>AB>QEe=HMM=EP6|Q%C-go=HflA*uY4sZmwO)J#RDYfcwYGgX)bU>$ z=D@e1$`7A&tRBGlPcr`d$G&}T=cn0^+V!N8{Ve^(P;$mN3#XyVU+H1nPxrDl*ixS5 zG2c|E?Ml$4GAq14PiUiGYx_ixS2>C4R?Z)w1I0qXd1jmNj2 zVe#R9yV8yWGNU-g-37l);(2QI`5DZ~gpcJ{oUlIMIvmfFmEB&?<7V15alJ1b4?I_m z?&PkF1%5N6L-EzR4wW6oT}XVb>sFe0_*eO6@C-#|PEfM*te67@BS+GtT5`E`yV(K&`B%CB=XNpu}W|EpY`Q;5+yn9?h(a|u!B5@ICDQfu!k zp=3UkEpO~#{bg#I^_QEV;>&il@$d@FCHyl~eC|$mKGPej>?u&^g%?7VeI-=c??Ro& ztb?-6zAMm+?+WzfU5P!oSGIeQzr6Xo0=4*CQZdNVUozP2ybgx>H{(4i&lF_3HRU(v zrn}T+r*uWk_6zf(@q=HLHmvs+mhVg`DIa0>9{@vrTk1ZDJ}uA5D-tCdkBzP`g+9p? zZ?Bmimi`Upgeig`<$7;`k`KMSQ@1w%UIXR7+qX48H$aWYrBJ$TT-bZA>vo?UoU=!C z%tb2Rb)ffJw~XglK9=rxzmwy2DrXLf+n$+hc7K1e*_qGroYFO~uWi*lMrzup z+W9z1KE{1)R7`2p?w=Ri@KeKR(|7+~R?c%!{@8qsg-?c>=l=|)>mN|_*J=;PkMqY+ zX5(g-?p-MP&cpHJxf;@Ce7~0M>5@?8mbH<74(ZE1zRJ_rc=}l$-`09o#p9eG{?Y9D z21@e&WZ{B-9c=w+c20O+JCn4MigRuIEl~0jlwE5)zNjQ8D9YNR&F{$8qhp}^ywUdw zt6-Sl8IApTUyY6dRbJw3D}M%*%z?`PFjPDI6UzVp_V^>uvHp4*lso{XF9&eKF!Me7nE#qy8EX$-|t{9$XVEF!#9{S9weHi)-IsG= z+V_`VK}l!oq4J8L%Dd6)XYWTC%Juo!bLp}1Qcf8kkY2VlcsWa)@%qW;s15lyNX#_* zr$b3SRQX$-Y2}ZFl2f7bz6v$Jd;(RLjpL2KKYb#0EhoLw2K(5&mj_iwp;PuKJlMA@ z9Q7&Xi`$#7^>WWMyS9ePn}YJ!r%-lwI^W`lL)kkHO6RRm{pw+;edr3PGFl&>)?v4# z*89`-P_h83yrmxg*tf^$hsESA_xSOi?pUaNXL@{F!X#eA3d_U1{kD=-CbK+bUSv zk@w>0n?X52Q2pW-kDmv__8!DK%fjY$7Tx30L>c2r8;a}O7fKF+ z(sv@1zQ;U%DcqR8?5E}jM<_FrSY_#shLTB8`p$vU_ln2A1vlth-qOAj^c}0rNa7t! zHyKLKfYNsfl)hCS|8E%T8_YY}mfJc=$BGW&eMnX4n?zb|uX8^xaKA40aPYR}KMqPx zg(~MFsB+%&_z$7A{uB?}IB4Dv%tN;%`MK#k z07{PaaO?Dqp1$ctOW*Y+OFt0Gp4R<;eU$!k+n#lWrQZjJ>37k(%I>VIY~S{AOuG5o z>}lpV<&k~zVI(ic<~_x&B&@k=wKJOk#Q1$vN}HoUNHkxH8S;hq7(v}Pl|9C&{E8Q& z^aR83#*X*vud;d$ud{kT0yV$B05z|E;qjfWw)u5OsQL9jQ0E@qW?TH$Q1O>S&ASgk z)usJ4cAnf9O8P_DHWtd(!=UQ$GSoTChcE#PueJE&pst5p4ZFhyQ2866>eTK!JC7)W zl1-t`C#FH2Ph14mCL7)bxSDg*8JxGWE>ljQIDlWzT02LLhg;tdJcf3jj=q{VOy8h4 zt-Rx4sNdHNYhIlk+`_NqL3<}dJRIML)SypN=l$+>D0v*J@4V#k8+#^j4*6AXEqy?8 zxifi**)tAGj)2m4ugACU|7o`)<^BCUD7h6X-$IWs8rYHJ%I-n<9-9?xE#mxe%%^KLa&(mP3u54}AMt=PywCHLi1= z(ilMSii{ZFMP=AIS?xE=1@9^LD_UH)Of$d!!JSE_9~QZuS40^>tP$$ zy%lCzKuGdKT-H znMSUQ#>RC#93R&!(I+YQ^2U4llcD^6uE%ezZwAlUxGwkcJPyhZwPn-?q(ABXax|2D z0Hr^7mbL4#Q0;OGRQ{sfa)Yf(kE8!qwb_4*DR&_SC~fW7<}#yxrZO%kULsp0a|o-C z+zHi38ld{f66bqRedG(M{n#&1eWL4rmToiWFsMGUJyf6A!^0{^eL|F8G1`x*JcXlm zE7_s2){aDpSmccAp}uwi`gP6w2&ik`lc277p9TBFOMUx|Z~)=E;Xt_1DZPpprRPcF zH-|4cqj)hIhpL~#TRNlqjPP(&pRGL{)n^+IgE0TL&Zs^Ww^{q<+;08g2&iojL-m(N zs5X7wx37lk7vDmS_uh9{zWz{U4uY~}3n&{$L+!^;^6Pbz4L3s7|68c!Czqoe#o zOIHsi4?^XC!Q)#WZ%y=a8?Ur{UqMOFt1R5sJ??enN&nrpuYr=>WuATn&zolL9K@dy zUQGIDFhcE?@bkQWP+{fOyda6fng=2&_Vk*oB&CEk{>zDe6Si>^UPuhQv0CQ*`n%k2zpehzr2g={_XjA+_5NYwsMm() zE3%i`xNi81r5|y1SO(4D~PFc={@(f5y|pFumuu_Z$8CJDRoRQTa9W z2gx~5;i#R1r%m5JP*Mdou1@ms45)s58C1Tu{4|d;%H1y$ecW8;VS65~<$GKj-KKg! z_F4ezFE#xiLdg$Mc65&Bm)N|xp8SoUS^CeRB=>U*+d4(_GiS-?Z2l?#k8Pg`C0BU3 zt@?~1Pq~l#=}>Z=hvWAJ)R0a-so%RkNMB<5+q?Z&dwt^b=N!^EUg37e-anmoJvI2D zZkBC-9!e6fw#K*{$WZtai6^X8A>V@qEKC5L&q zEq|1eC*$ou(EHt9-VfVKpCWy^_sfaiuP^g(>v1!Sv}aL%osW}IbIhKzq3YI_{s!sy zaWWA~F8hsfvr_4wGkp_bnBK!}=@0(SIP>jmJbkXu18t=*R(dagjoXv!`Q!bif^>Ws zDy&y;C^^8xZ9O+Slk^$ip1jb~Zwoap#zOh0t$g+5OL@LJFXu@QN9S3!EqjzJ~`kKJyP&P^89L#x$_IagH$GoGV_8FB>>8hPI z&S*{&bJ;Gcj-uuu{d7#N-{@_c*Exz&HU}HV5U)9Z=189JByRA&&2dTM%80w#nJFjc84nGL=RtjvmL+BhN{DjP<8kaYQNX_7TeF90F}RUz3tz6z#PH{K*djn zs?!Tl$M2s*?Zj|s8>~Yq1g;4b_hT2{RRqxSGwM~?t=oW3JdPZ%heZKr5 z-NClaZI?~v3UtNWEUWQapYiY- z54UG+N!#~9h+?ZujCcm&(s}gdFMivE#EeL zYjzCz&irs8l-)}`{0dasZ=mYcf4zn6`a;X^WLHs6xo@8WB~L}^2k3iD+-Etx`990` zsdnN0QMGPg%I*47%)aD0EAJ0bGTp=HL)m#c_RFs8y&kRiSM$&b&Z|S%A!P4&x<%j0uk>=;~*ORBhw_ob%Z}M>K^NM7n*;DeR={pEYuJ>?3_pG4H zvDR*5NUJgv_@m?tOFs=tF81(c9)7~Z)-Jg%o|~^hPlF%dWO@2tQTo_%#2ha#NqLgt zu+h_f<@q{er~E$9?QLDZwAZh}x4#M{oipyg4d3;$@3n7u9>B{k_p--1)koz6QPSjk zw*AWV?gPVq0M!q!hMFU8hssw_;O~p&nSb5;lX%s9+UWW}gUY|&!{t9(zB8cY5~%IB zLg|0Rw{PryF^iX5`)0aN3Cl0>G2c0#u_gB&596L$-A6Du2=Ah-ur_ZZ zztSZRvNq@kRemv4`K3_xD~Fnw#(7xOyj10k=1o!g<9?KWqFPA3+t;qA*;@vcZ#-1F zQ=rOS09Ec&Q048`Yf3l|PK4TiD%3o9CDeR%FO)n8bKy%+<-g+b?R#7Nrcm*%`&0I7 zK7O-o`|eP3hKKFEh5Jz}3+VIB*X2vdCw+|-&2yddC38*BCV8f37*st|Q0WVjynEyJ z7Wbj?b_#2oD%V+yPRZr2Ta=IHK>6TK=d&I!-#2BO{;plD-2PB`4uHyYNRIh+22^-1 z)c$6^hu1*)`)3&18P2DCk0Ey7`iA)wJImdl7eUEF5AV^(>U%R(`L9Ch%No{^Z=!Z) z-_a@Pum|`1g!hMb2vYRpyZBY?WY^x};euhh$8PAa-Zi9gHqU*Pzz5PF^}l}Zlj4|f zWJf7s)wdj~p5vhQuT@aTWYtdTQM{;hqVkE_uZq$qY8^8Q*N{JokH!O=H%Ptrr!TyJ z{TC`-*LLQgp-}msg=(MmP~)JWy~PiKvSV8)yLN)I^ZE``Li_&>H7-u?Xyalw)Ocus zdGIMH`v-QK60XB;17-g#n1I(qm7hmH(mKYjQ0o|nLD~5b)OyBJD1Y1gG>7s&&0^lC zxdrdjjJ;39`*WkWQ4_wAde|8Q82K`iM81_X21<^A%5w@-p7Wvnlc4X& zFGHcWZwpmM(Js1PzwzgB*JGQW$8Gfa_J*HqK7Ki{`hEQARa&9j$6^{3mQ`qN^l z{`5~MyTb8YO^W1{pqAf;_msuL@wJAD_)U`OXZhP zUFee^o^rkR{p?(Or@J2yE+%jN5X)D-x#c?ss@#Io+@Q3Swfd}7o8R1N^7gJB?{hR% zd2^urey4}|cY~;ZN~B+uza?s)2GWa?)|B43==zBy(xY)JQ9CU`kH+gVr}~M)D+p`7 zvB??5i^?ae+_tFl6)zEWeMD6GV$#DPsNKr^*9ax=LFNAd$}c%vTYtO{s@y&$Hou&` zjm;}-M@|XXM-$sx{GL#D-wCxo`aab4p7kEzR5~SGC;bI#oiu+t)7uN``cE;`b)TJ~ zuCG)=)$=GQdrpL^&*QK^d;uomknN|0>kXw)^=#h%^ZXI#7aQ)&d)>x;3cpIGz{oFQ z#Bj^MJ(TPO<&S@Ocr}zA|Ak>WLvn&mxu3lCkwN%;hnE$2S$R;p3ZZlicB)MjE@>4W z<>|Fu5^uvWfv8TnO&zs0 z`q=qv^L=<@$S0}Y)3!eZCCfZ)=Z7uNy=urKU73T;)}Ng5eptJY>AMF?RzcNs^D)+c zDxv%^5lUC<XCTU{2O?=eZ1VGJp5btpO=wWI+I?P z;o`1V&NfhT7?k~QdA#Pg9@E43=QT!8#c0k+xvrG!x&$iUbx`%b%^CG~Q4+D%{c$^# zd+l&vcn)-MFqrpN^@)EskYg~d`Od=D z<)l^J8{FO{&d8o+gtc8^l^4aU3`woG$Lroc!QN)?MKG){lq`knhfPp=wxyrS?y=r~ z+gg8bz`oi&tQ~HFk_Vyu@lTI08p(5R)UR9g-pLxBZCU+huC!+bl`rG{f3JN_PvKb8 zn}X6e)5G!SUFykS@9{rCNx^>J|9+#~WwCOTp8hN-sTybb>!HeB?BR{ATV&8B|0gP& z+d+CN_BTC$gp%i>^u6ctdZ%Jfo)y+Qj@r8LExWFiJi+pv2qiN;{0&t8PA7W(w#(tW zf=9La985X7meaVhtKtxwngt(;P*dRIV|GsVNR zppH}ThN@@y4fN^Zw`o%YHp>Y%Tfuz_OZh$o->A*uTQ~ZiR_cH$!L|IxjP*5u7GbO+ zPe7i4JOO!vR(T4x=DP%0MJ=DjD@lZFzY}R=*%2IS?VAVX*FvY-LE)%9Hr76kUY~-US$~Wc=YoB&!Tl*A1#rKA4x6PpZH`L?bfa(VyLHX}%DEo@Se)@Eq{j`octR<7u zB^f`G;ZWt2L6tKas((~Kl{W#ZoQY87%z)}2wNUN#2n>(EJpN6n^Sci{{H0U=P`)1t zYrUW|{aIAJ*rQdrKVjYHuqD*-yV8j}#L`Kh;$@c@jSJbWu<9YIUSjL^Av#D^nBQK8 zlFy*h?W3)J~h zCDi%Rbg28_>Y&bx?t}f|i!cd4g<(I9-RH2Fe%a*ne*D~i&fC1-`_GnsAe8Lr;R1bc zrm`3B5bYV{F1P1ibi9!!kEHG<%l9gj447--gP_{C8meE+@c51CTZ2B?TXUH0Z)Q8y zpComj|5Yd%aI=+j6jV7=p~^YeYa|bTn7UZsjkpGyi-8B^|CdKlFpD!_H7TCqtFdc&&}^ccALuh{~4poP} z{$k_15-Q)2>unq#0=3_|1Zq6q4z>LasBxS#$Hws>sQ9C9uz28^x1-C3_lnQ*{$K0mT@IyVE>s&XfE5>8Ij2L(#ZYNpfJ*ZUR6DQs@HbF4 z7Hz?MiD&Sw`RY8bNvqr(m7D3%)Gn>D*Ff2lnpu{9|4U5&F;Mxh_wWlIZhfA+((~8e zW9k12CC_>|YkFQVy)>V1B-lM|h2z8TBQ$nR=hYN!#&J$*w;(b8*Vm$hRW>Iit88A{ z%_-kYYVPy$pyWjl@7!R1>GFX2r4Xtf1>w5U)@`mE6?<9rj6=x+DBmuI^6gR&i;_2? z+Vn%HG4!QVwkaI($2Q`ld4gnNy4GREcaGInYm-r(wXN|Mt52U>t=?Nf*}5Z?t@}fb zyPKeNzglnO{N3AZoUetl@jIyFo6fh}c<%!h|2EWq{Yww8gPOxS++q9oo>1v_yW7Tp zC6pWkHU3ZW@GPiwS3%8rH+%d%sQKdw53h#0jn zlnt%dk;+Lcsqy*m8YpS-aKZ3A)+4%c-K%Rbkn!JZeAi4~Q%)maZng6b&!0HQ^dAHz z6Kc)w$uKN;humN&?~d8n`)ljaqxH%4rsoSNJp=UpK)&VNZ3h13T{(I$ zPUE5}!FT+c*6RIHjICJM&d>At-e4Z*)w$|>VVe}bXY~&LZhH5Gl4CramEiqTyzei; z^OA{?c}?N>ApCt*4UbI;Ugj6QA1xkkeLsIW&Kg#}$c_U|f^L{k@eY3qHHg_xE1j3S( z*SqNv(|^ul)BhK!bTb|`Ki>#7ZWlqt+j}mGH~OB763YF6^h#UfWt|hVA?1D=^$#mI z^@8cYA4=9j%@2A1bbqSDXyflkt)h;#Zr`F8&F)?=xxM-hEN#Jat4*xSZumxB z;^is9vHWU}v}40~IQ%97fXey{lq}u9_wUirloErLedng&};rP5ck90Mi zEnPuj2l__yJ!y^7fh4kR`!-Ngp#28#W9dD;dxo!{HRh#rYPzJd!?|%idBXNQ-1^Q9 zPL0(%*R$C5wC^%C>@T}OwPO{O*nFL{VctqMna*${e;Q&sRaO))9U9;2gH03c{?2-y zLDqGcCFF^&$28kD&7O%r`qmLdo_}`pY~Vzy2bd;`{3{gc~-s^lw5*`^`*m zKPWw|_d_-0kuW>H}rda41_& zf+~9&lr2|4*)SK%h6kX^PD7Pl)M09PzBUock8!`J@kdFi#UBnOTWn|H=sxob+HV%W zhPj-7vAty&3rjn-h|B7o!#CNx^3I{~Sg9!y9`Wa6~b zZ1f3wFaPz}SmSLM9AQ4pgX(vMPK^=yDcY}zs&5poNLao82ql+5<*zO`rEo${^z0W`39?ikC_L0`#dqVjv303FeP<1VH@^9G3L~WO-uSt|oqH_d^Y?8>vxTt)ErB|Y3eo3TH z$NG{;pVkN@zo$=aF&aCyMpxlfTPr@|1mdHx%2)gVr^;7&kW=L=JjD5XyLLptv@~q zmF^wbALb068YJN$sQ8_r>Uu962p2=uwbziT;d8lzq3U`T+#FsCWzV&6OZXrh4wu6b zFax)OT{riB99~ms^?pCUrZCIB5>msooX6N^C4Pcs)vd z{EYJPb1qa~wR6;O6uyM`D6F=;ju=mWw!v%di@jceOAa6Y1 ze@of-LrHJ;&+11zLAB3SF!Wn&y}yFIbzc4gx2M?swTJt!%EJX4dC%}n zbVzT?j}>Y=SUG7Z`N+f3{e*QZxE}HPl%Vcu+n>h6Mbxcybq?o?xxACFN6^2LZ(T3s zZufMDlG>wg2%p)p^WAQo$K`V#m$%{mk9zk*!?$+4J>@$){=OB;5063FSrFa_UBvfx zn$N9tWnSl3%Up--ZhX_y@3_*|A@+jmr^&Z$y=W9ve?1gR@BOQ+yhmZ^_jm1lQxd~E68USoQPe`0zMhHB3Tp!D|qkJ&frGqdlY z&u#r|I@I=cU)Va?eqY-9*by*~_`kw@_!u<1^t?^mekuHre)7Jh`vq#g8u~9=j~fk} z>otIS^=`9X<>-h@lb8GUS6096)>{20K-F&%l>JM-w(^Fpv+zsbSbc`j&YBlXq3UxH zRDG`X_Ae;T35rV#gFb7U-!UGInK{@Zo9mgc#RbmAFtvmA->1r~|Gos3X2^~6N~-tz6NoX4PK z?)FyxqfoLG%8r7PoM1@SX)W(%=KH=3oaI)U_J6plENcwKXu0d-BZ7V4Vl+`yljJq1xg>sJ7~||J1Op%Ak&Y&w{!>eT~NtIl$7L0d>51F;v@iIM9w0 zd%z^&fp7pk9S(#S!9nmAI2b+&hrpMh?9Z>T@_WO}j=#Jix+z|CM zC>uw`Db<%|N>-4i@-!h1ufZ3?Ge_a_eSfn z()A>dG(ERK$>SdGHo^1_gDU6u=I7ueo1a6QynTkldiQJJLrnk6Pm9$DkwizLrL28eOYDtw>{kSFMuld4G-^k zg!%s*DF0vY;k%&p+woK`$5SoWxaVPqByqH*I{-?K_i+5!wvn{yKUg}u?}@o5!#Zc9 zzn`z9U4`!TTTi<27@=}gM_c`-K-oJJs(u$j*;xnGkLN`6Bjwv4;3#ey{P#x z-an%`UiuZUaz#mUirM=llw?meza0T($8;#Y_fE6%^mvWU+b=`evE_7|r;mi1r%!{5 z-}O|Rr;moRe6j`PD@?B_h+8xzex zYoY8bKgsmg!qDE>dBq&^*GBf~x(m-)cAp*|?QU2*PLoFY>byVKL$yv%y>vJCd z7KZg4wDI--HPk7RjMx9xW6YlKq3V~Hvhaye{p>6czX@gErykyi@gzHsfRa<8?7h;% zcfrt};T`dBQP7p+?sk4XE%7n$t|hIummg#P8Rx9M#_}zNl1H!gFqC`=W#{ngEWRK= zE9ii-aKDIN=}fw=;m-Kj%3Njnde)h~YAAiDLe=+bC>_7`{;d?{WX`a3m(4UicSGeX z8qiMfKnmZ3Jd1R?_9&@8-nI`u!OMk8{|Hq1-+4IejlAHE)p^0IOLK!|%z62x`9c18 zzB^IVDV3GiDaa!nonH^oHJf!@KU z9CTgL6?^i-_-wW{Xq&EIt?Lvhyd}S-ZezfDib#SKjr#Vnk57n0IrU9g2_kT`lY)UQ%*_l{@4@vu{7BJXKJ-o`$k-`b9RcTnQC_ z&&4*cJPkDuz5_K6ehpO*>xZ3!#?v`YXH434QRd}X*zQ@|nz{~dv#!CK`Fuy+=A(?) z^(QAqh2@BmsNCp(abscCFPk~&_k1HA6|<~9cS6ZSQ2BB$v;Fh(D{TM#DOCLZSK5BM z5#|&A3d#<23fc~JUq_i*d$mQ7xtra6|s zsF?TBXKfq!_zCCX>`(03v#_j`?Qd#esMi_qyV|csVc8<7y~FfB04481o1xgxXzzmG&OjI-;Ck5h8hot$GfFnqkH)_tfQ7t2iafm`?Ln{ zS81qm(g;<46IA&b7?-sBZy)?5xf06$zd+@`1uFl&Q2866?0*KT+}3`t!k)O4-(czf z03|m;>3_h(%c08o$itm(wDO9eWFHuo6F!%)W1Gk4wUoIKrAk*$yNTnx{i>k!S3A{y zD!;9{NafYtVRB_+3-y=Ot`xdO@`XWnl9xEjhI_d?A>A3>F0Feo<|RJ|!{!Tq== zyD!%td$+j$IM3THfnAb*Zf~)3WA@eDWcvHeHTy1us?R-8_Pq^d-;ch%)6HgQ63Q++ z&)L0AKQ?01TK8jv+qJ|Q_4{S5!Yf*Zn_7iGBdqnG^)Lr^_=7#)k$^g%=;xGvZ5Ne3 zDo@mUPZTaDy+mQvM~v>-R(ytWrTCNXGXFdT<)40cn}5onWRYX9;T)bVxxy%xVSl)ZaF*}p&3`O=9{_1pBXHV>Z%b-r{n)b@Lz&YPCP z1biQ=o;xhCb*;UjJES+_yeyJ%ZIXSPk7?Yo}#jqX<~ zcR!A6!=Lg?`mm`Sa@r^Jne@=EtL<{CGN)9a){i_n$Wn$nOy3bN^U) zKOo!Q<+u1x92@oETZ>$y%B$uY7RQl_FIqS?NNXE5!{Hf=( z(cg>fFVS}t>X|d{;}?BLAs%k)y-^jPGG}E^3+>(>O2&FPzFshsbTzq_uJ!x0>e;4x zm)~XQ=?$GN-Fr~-rHAACmXW8#_1W_jDc*;EXq(3(8PeX)09P6H-ewD&(yw?ik|?aU zT1-04O-r3>Tg8j&3DyIVc?>S6Uf0)}Pwo)(swh8j1^3#WzS z=08wnRuoMO$IB$B^fO>SybNlb+znNB(QwWivdRK`LPuv9b{tyxpXNEg*8Om~Gj4Y# zVS2_Dn0?cr$~zgmHD6u@)!*;;dSvy@3Hov!uP^H-2@@0Jc zur5~4t}tw`*m_D6=^DKJXWX6vd6q8pC%&r7pB9Yj+U%=%xGi60f5uov>N}dAe?ZB< zq5PHO{yGM>wx@)=HE!qSZg;l(YoPnD%)`y^ziWPuq>B8~nZjS?-X66+zHjuf^^@G7 z=8>tvFZ`nG#Vx|>C$vS~LtHa>xH(Ncob^<8@D%=etg>@-j#=_s*MMu?FXd^QfA58w zj~{|MKB;@!_Gb&A`up=xb?N_{&Fe#<{5Kz}zr6;P?sKSg1p|Kj`tLk1zv696f9^Y` zcO{hG|3c|KY?bN#+q-68$M?;?Lz>LK)1l^z8==Y{{DJLP&xYD>UJA8eeFtj3_!Nfr zZFt{a%j@fnkzdwYx}TtA>#xnOvC!(L^P666p5LrTN9v!J?iHy0|4%R4e!tI4QU2fd zPx5o?w@sf|`j!7NJ9hfa>_|cRXE9X0pZna(IpGTnXJyO}RWLlhfbzp)C_nriHrJz1 zi+ix6^RzM8kXT~r&V=e87eV!p)D!0abD;eH7iju^yIwV3FS3M^TyFWszGn5C3)TM5 zLe+1;3aihBuUq+VzhUJ+{ic=s0aX2~-?I8X4prY5pz6B`{Y&*7=KXAA_f^bsyE5*V z1z(vx??c)10}Sh@@5}MbWZv|aYb$BbU-x%Q_XAYB5B!I<`!2BAKO4V)U`;FkBtEo! zIUkul$3xk3Ih21^L)HJYe_MG+d~D&L*O)&Jq5sGq)lmL;2+AKzVQ5eIev#()q*Q!i z{jPDW&4<50N%#FM+&Gc|QU*VVR&pf{O z-j?qGX#GR`&6e+FFDJdWW&C*KCz$YZxAk(TLfLzs#}^FD=Glf^?qhAKYa+TNDX-5g zD0v1d{~I2^VZYLETJQ_M4f~Z?xFGDyz3kqj*g9byWmN2H^|=vB?u63+3zR?m?PkY8 zJ3;G5Ex%W&F~?lV z>h3|8g&i|G%G+??RJiWc_I%caJq`U`PjXr~pACVU&w>GV{Mip`KHDCK_4=LtSa!zR zLn*Gxhgy9OhVt73Q1$7#rIkNvxRrm<2rG9w)b@2-+41gvTTcte?-5Yr z_pean_c0jSw~_r=iQCn%y``J7gV}Q{lz$(CVg8NGXH}lRX^^EGJJ^oLrw_5?@hf1n ze>Og!)wc3aliU6FHfGOuBh8)(Q2tp2RsSX1T6x1tE&S4U=8qxNNAp=Jls_(l^2fDa z&-gg4`byVV%+7W*t-K;AyW{C3J4P+F$H?bsgzg zyN=XI+Tcu!&xex!9?t5*^_|%r(*txZq%uF~z_o$es~D&J=3U7-ZGz{0Sl7>EtuK2< zm!Ly+*Kpg7Y;Vx^4();tE3yNH|G{sW;?UnRj7P~Yog4CzrbRh=4v(?aojEId4zJ;w zX~7fxvWGqy4AA~T=i@xjrMNHom0V?IwGPMg*?0f)Scha1&9-qknsbg(j zrUt4%UI5kpe}QWMd!ddumOzcqSD?;GKY$va-$3nOvyZd&qD`Qr_B8YNgHY1>bn9P- zLFvB-O8-Mp`k#f;|0vhzYf(N zSzS9t--K@LkZxzsh0u15mre`Ly=+=gb~SC@y+hD_MpxEf^250Ei65hQ^eIhq7zLY?-rH2QbWsPsXzl3W} z>SHzD4kg|vMnUNq1LeC)D4(UEe08eFUkv4&*-o{e!lLrsLcIFGd`~ZG4tf}B4tmC^ z^okc%t|$>zhbXML+CN#nnxNz(s63xSmAPN7weKV-TQ7ua&o`mA=bdNmSp?N@)8|`% zeGh8;f1&zu(FGPB4ONGup=>-8%JwT^SJ(u#&iEbFI%D?>E#CmB^~Qss?xULswa)k_ zs5;s4MyH_WoN2*r{Gw|T@o>@hT5J46n`@18XtT8#EM1NGQL+lk7i*yEvd$UztJ25) znfSBWv-vFZ=S@&LmO$y);}Y}d>rnp8K*euEKbK#}LCK*|Z9fC5jMmpJ(%xT7e7x@C z^ZP`o^3L|~eZD<9zHK~rT5!%En~!hf;rKpjjq6YP{%Vx(zZQFVxrf(y`1jr;nfTh) za%=aq`s_5${d1t%`w&z;qvOUV!qY06j~nCRtS%jcF6T#IB<0X4T*t}|N~Y7NPMsE1 zU#B?%udZ$t=jnnO?2q`x)5YU#-JfWrjEA$dM8x51u3iNtUq}DpvvFpI2+eDK^-5>hbressPUas?S9zE@!~A^ zYuzMEH*T`o^Cu{KZiKSm+J@`8(|>(kw*eishgrHWpyr+4hueI#4Yd4PAK3Wu;!3xJ ztf7>+-9H^~_8fMC*>f(Ge?Eh%{|`{*y>+66?>))<@iUY^@~D^maTJt4rg%N=KE;7t z)9?GMb#(1Z%GO!GsHwI&=^QA3%z`TaTB!2tq1tDGGwKhb(uq-jAlRZmC>%-VX7kfo zw^)78hst*;l%Cm89$$3UpE_rAmYaWIrWE{F2RJScxGh4RODQ2nFFoz_3LhUy<< zp!{RkKeuahpEV1=%*Gg{OHxue~0JpyIdd$23~9O^h?=zNPG4s|@SFO+>ZLLEmu0CgPE2z9;kbExaHxqqD&UZ)%i zWv{iv4sEtW1MP6Tw?i#{kzDT7|H?0_UUP_-U+#29@nR%Vdeysubn@>Kr~DTAS@l-< zfAMpqJLUCRy}nxBU15ziQTfEEk4Ciw#5!F{j)lJkjZL#4xt8WHM z)w!u>ezmc%{OO4 z%{Q~4eDD#}e6tS92V-xr_B;YA-^DjtJN*JR4)SlZad14;IG6!dw|_uA^Rp6$?Kx2I zIr`PRPr~bT!8f+gs-S%&6P)r-)Es>fb!?r9{v-Qj(R9R zzV6{QzWsBkG863A2O4hyMw~dWP>+?;doW9lnb-e1cH>=;wACAD4crH?5ujp>T}@BR-f~rq{}Pj&%>dl=vC`S#Zcv3v)t-? z6O=u>y=MLBfE70WPJ|kNmqLxd+oA0F25Ovlc-_W%57?FPKq!CM`!aYR4A**k&ko;v zkr_^ls5pJ4W#1Eqf!l>Td>^w&FOr{YDW`#t+pkDDD$P_hOp-&!a=Kfuub zC1!u$C(Ql>q2`-OQ2pZ~7}jUo{9xM|1A?uqlfjmyn+5%OetE+i61`64UZ)0ZmMnoP za~V{bE4(gEP;L5|Q+0{P#Q$2ywAl#ab}|sY7=PRXM4XtWQmGM*V*#VcB(|Q}IeK%3o2s zRJ)VI_!9k9_>ZM4(EL$7AlRI-)|ass ze$gSVH;38$k@(K$kMuF( zmQlZv7$n^_UdMC1PP055)d@2~+eFE=Y*#*QR~v~9ADEqeKeYND302<|RDBygoLp`7 z-X2O0f~x0-9{vJK=Z+uQ_^X5}D@*rhj_;D@dQQoJp4s8Gp>A9o%Bjv{4CDkg|Dqgh zNZo5=ARZ3aj%M`W`gnJq!z>7T@w{A@&9vc)Z;Q zxf|y*rEU6m7J8#|^o0AfAC!(_r~D>~SW3LcLb)@F7bAa%8TgZU)9mZ9((L;MO7~W8 znZMtF>R(?$^{c$ME#0?JWej`A{Qf$WzcWztUG6GNR}3|8?*>Ev>$)I*WBqNz6Sd(x z0oQfo8eP|*hIA|WHO+Vb$HMl`@7`RK>lJic-u&FE{NLdIub|FR9mNTRC3Wvv`RVt~ zuAs^4xd~Ld2B`j(@%UW&f#U7^Ajvkr53-UnpCOOZC79Pll@({?`_y-)?{O&EYQ6b& z3{-l%H>Bl$ELiVzhaVfg=v)bvM^xLafwg|z_Y{=81=WrpL#6o^s{L~5cM1=R`rnAo z!6rOk9=;czXG}ZP*!`x(lzl$wR8I0Y>Q?ft+5ZHT^rL>#U+VSE>XjYzn!%6z`g$?9 z^cq>vqJ=DB!Qttt&r42sdXYWxZmEJ@7tN5Trx-8A3<9WI!&9%m!d|P8(evmVRIi!@M z^dF`L+whzBH~O%y8C2$m;f2I4QXF<@dvll(Lw-H87mzk+twS?gwEb7xP!=n%Xt?h0 z^7rvH*|T$+r)T2V@g!Bv~JVU2bx;n~` z%!TTQ^PtApA`eI7BHortpYCk?=~3CXAOAa4{-StGT{x-Mb38}mZN{njSh9uLR!g!co?=*n2({ezqbcbV<) zBBIWc@+>QFA(T7^W%oxO--+WH*VFyh^a1v$O@8lv z_#_L{iIR99Der22{u)Z!bu)jiOjx^r3AG>k8LF%zp1bbLu~`?c3$*jOt?>Je&)ZSI ztXXUQeF>C&1=W7J_#o69&S8Vv90%p-Z$~35UA@m)3)+~wq_@_OOV&Wik5K(%#2PDa zAE-;>V$P{z4#_FyJ;ozD)!6g< zxk27Yd!vdyzt8>Es`J6N_@*Wj^|=&OkX#xO@_~jn!c{+%ST^c z(1fll2b>&~J|unAdR~pG{NEk9STpKYvkUe(!XO#s8k3>>o`} zg{SX1-Siwi!}OdE)lT-^%KbPG*`v+#kP`H?!$nG4KE?XmIHW5V39V zz3Hj<-t^FWZ@TNfH=Sbjwz;uTbzY&oq%S?|uZ_K^P36~Hc^z)B`u#r7>XCV)h1+{i zS_fTpt{;A5%HBm0zVoV5qYZ zquNrlXZL=dFJg0{NL?NkDZ9eM_1_v{uZ>VPN={1IZWp6-Mt9#6EhK$CD2sA5ynG-eHGC^~w&lE&o&=Wqut{VEr{%#K!(2Hjfc0 z<1~?eIs16ipA@;ryHX@w)(I2C`=Pla_d|~msq;M|@8Nq~q|R+Me|TqN51&{5u9@)2 z5S|BUf0M5~Az?T6BDwRQ~_ksi6+Hh1YS{GTQr zUu8N8Pe0k}xl}~jonm^fNZO23&EFS~H~-%%68?#Z&3>vY{dJ&-o)JDT)KTXu9dxde zrE`_od$scInr%XLByC=u`VDt|q)4BSb4K+~c>FYxbCB60^I@*Yv8l{Sdcq;;qWp^# zuboM-L~JQ86Vt^?k$d&4ounrmk`9tDva?Rzj8&^h{HtepCV%aa*?)PE7JCxMSRih{E4BDri-i@Z;L#S@TJH+ zY=`InGZ#;kU zoNeb{=lLs&E!|Hda-7Bk?U>@@A|tbjo|j2i*)0RTXEQ82{WqNtmRP>?MP!tYW8^FL ze-^~@uHd20s z)$2nM`BB7vhkP5y6Gi+Qe>Qox@|Jk`d=bf1`J@{tBEwwI>ZsqaMDL-B{Z1>ax31e% z_L>+R-+N-s@6+P?)_$v5uJWr6wDRU3WaYgrQtvNC>anfgKCkk&Q_u8%mVTepc}TMq__#IM=g)`3C$*gEhxk#%66$U1P3X!Y9q@0RezwUhLOL()Nx4Uqg0f#ln$eE6`@8Fsu(7h6j2 zpO_vUAEW2)$WOZHxjXEl*R2O@J>hlhpVt}l1J()G_>|JL<~ZnOMP zh{$^)WqmK=i#d1Lyt)5wn>VkE9AEz}vUm8&!*{sH#@`ST-(4nhT)jZ!{{AJ> zN1uqad4q^AvKHELb#D>hT_$o|eM)5S@veuzcCQ^@e-Sypw!Y8OkG|iIvlSxG{e2|j z+q^|~Tpca42RTdRI66nfw_l39Z#qfinfFb15qZD#UOvt@0c=@EM|ynv*A~Brh+HdT{~-^z@2u$>2cYo6#I>971%yB=IukLR)dlfBC$ zd5-P77OD;Hfc7uVR{vu}(r5Ha(K9+7f_Cfw_`9EBDu*n0TQvaiVceSpZm;RF%e)=w?5vu7qN}PS$DFXQFz1w3g>t<$VoW%qxkA3*6vYFZM-fKDepCrdOwhy2*=?|BJ1$K zL}Y_VxlNjxKPQU#^AZt%E)bDBMaq9#j6Z)NNnaA$2Pdsav7zkUC8kBS~Lp<7bqJoGen-6p^y- z7b)vmk+N2Zl=YoR8NnB}4;Uq4`)ZN)-Y!!2`tI+nQ~RoX{oEuXdwyly{HSG+vua{6OMm5W*&0|&57)_-LFM}sgI*tO zNfXyuBf1xK)B4a=$J-7;YIUida^%>2moN)i99bv>*X?<~{$ z{k8sT-dPsY>pR~Zq;inF&&=*=A~H+F{(U0-v)SY0=bMGfTkigULqvwTzsI`2r?|eg z?>Ehs4f?N4V-898<6(gxA1ApUwy#({{^-PDFa4#Dd(7@x>iIVG@%qcFw7#gT|1nQW zQ1;lwV72}>cF?;NRBl|~>iMneTJoOxX{h=ZnJD6?%S76->FLHTfzZxAcRbubD`GEC zWF8K8vaS&xQU48fNPP%rUP9^tS$`ms_mb7`f|sowAB*H``iiyV3=#WpFE@X5ea-wa z>2>qR9FcY45s`GcZ`wL=xyU+jlSp}AiR}A-5zQalIIos3vY)kdSBtD+OP{mzj1R;= z7_F_o$R|=mNl&-qT1jg=-j#`@ zc}yhFGa@!#60!NFNLe3<)a5@SQ~I)w zmOj4jrZ>_$)Y-%9dEdz(#aDRzzeS|+4qm_T_i1hXoT=uhlTZB$m5(-*tDoQ-&UGR_ z-Qc7@h=-9>^fdc_>t*E~Et2M6BJKOi_43}t8Jm!Cb!{1jF~{|u0hp9VRja7fz_Y{O_=^MC3c zT^AxAJ$pB+M~R3m7s>OfNPSP)!^Z6_k-Q&>jN8vd#_eViTXufXHt4XpU3HtPR+Z@$ zTh5bLc{_qwJIJH#p`PBpyBCe)>X0?%2iZHFu!-aji(3H;72qt~T%X5V2v; zoVV07=Ph)Nu({?5&mP({=RxE9gZu%O?g@o=9Q@xTqEIY*}4wVFD>Y|tbNd{xSf9g*;ezbP0(t6_#2FHZsn^^ zlv};y{IEWoocNM(0wFq*-OcKGlZgB%(*8-^Z5&)9BB%5)f6o%hpOLNa|7qRnsCB1# zQM1q=Q&e_|&;M6Mfdqr_B6+ObXlciHQ6tGQKiTw{ZKtZHpQ|l*kWA<&EaoQ8$@i&k)IXwMc#J8Tg&+ zJr7?f8)Hc-E#>y8s&rga zt`K?N;|;NkxJt|x*Ep#+;jp`t^yuV=b?uj2WPaZ$BB#!@{<&1d$JdI;ha!1@x_DA} zTsm@=_1`%n;V+8x<64paZF-62PZNnhN@PEFmPq^!9zWmXH;U}jI?T5Cp(5q)E0X^> z5#NrwbW(U6JX2&o%@qlMMC5q5Qe+?ZqewZKmzkX|BKx{Lk$Wj)MdD|A{8b`$9uv7Q zaL(nE!u#%5i`)+=7r7s>LL}b?k^22Ek}u_oN#Q=RznCulFp+c zr}U9xFY#=#w|JGJ@^1UvS?>&)p zS6x3Tybp4>$bFFIBI&*qNoVU!^P2A{Z}fGh;w)QFiq5um<`R*7_lo4Rb*6K@>r8gC z)&iwP3Jd^g4B zcaN#2j}h@vaK6pw(IWHtT#@ib7uq~IR%D(OiL|{`JdqVck@-tm&qcp0dMk~ZP{=V>Cg zXN#0M*Qx)8;gGtPDIDTo(jnwS>guFhr1Y$5OPt?{tYN>2oSQZ)GGZ^fPfU9BsGR7& zG4=_kJcvNr0V{kzwPCEy$JQs=d>kc`_goR1d!B0h{Od&4?Z-sIi^tn}^ez9e^XQhR z`}OGwc0PT`L_41zT$Bjc$-_m)_?aSYnKU^O_V?8y{e6!}-77@a;s3batT+*_$Nfc~ zdpb-+?hsjzo)KwNbFD8~(tGM_I4 z4+n~@HHV0dg|Q-Q&AB3VvgaK0|ohqVIvtK^uA^fLTuM)~S8YF9+e#^-C6v_xdy+kLbAhXBp*-%8TmrSHo!+{zu~d5C-U<3g5RJevb9W znId^gM9Mr`^BcdPAu_hE7Q2WK`@FCFUf%R(_bXP%z31(?^t^~neZh`nH;KqyVmPmL zJ*!Pp$J+ZPJ@*&B>p-?%2vh6)?lK!UH(YM@9CW3vBl#kBqWxNQFTc?1k#m*Bj}?&_ zBJI1=!|k3*oA5V&EmkzG(pyTy>msw2AG?)4Mpio`ABM*C&$>F{b>k~M~)Wh^Rq|0Jw)1hq)59bdH91O<-IJ@U!RGzyU8_Xzn6%8yZ?V!?eU#s z-~A3!?hi)DIO)pO7syhP`YjhJ_dAhtJIt{5?JuH3%A=j6LuVg~PJVRur|9qq>8u@7 zMAo3&MD|{|>++=+T}GdkE#kg?6Bm?p>wl{Odm=&zpVa#2)%jF`aaT z$L*tIA0iO@ah>q;hin}EyWGa-Mv;8uAGYy1UBq8kh=e~Y(r=%L`0rbh@!4{*jn7UZ z<8!D;I}a8)MxW;TQC-_J{uvX=g%Ye|Wv? zqaU^N)v+S}xmM)3*XeOPFBl>cK3ilRZnVVC2fB%bpDkvKH;Y}xC&X^z2V!^eC$Wdv z{z*H}-b2Kn`-r_1eu9Tz=;2A9qz0c9qz7|#@4nSoeWN_O(~+ZVpuKsHXn>w0>aXVn z`sq2MUNz4VaUZ0Q#x=InFS0S+NyPVkoceE#kPe0TxJ2QM?Of%9(U{m;x;&+$4~Bbs z7>#K-QaXJxPNXjqu0#3)`=mpUe%}=3kCz`GgVZz9l~oVEm|qVUkuycwc9n>YyO-Md z`bcDa{UQ?H{23cRT|~ysJ|blg7pe2{B6Thjxvn!u^_Nc-u%|FBP@5A&lwJm33J4ExY2lQn`p6xxxi_{dih{uV8#7o7&;u0tAA{>$qk`H1B#{KoV z^6jhe@161Z|DWyNtolUt{Im5SeX6c~{ndQfr`^%`W*nd+ka-a4VW9rW8)ftDE)jWF zB;R`?b|#Ou^Kysa;NMCQ*B zk@JMZMUGErie1F3#B8x##NOqFlfvzBm6#kC^idxN--*ybd&-$Bfip6B{Fk@0?> zxS#mAxWBksJV0zP&hj-oc~Wq!^tZ$@Vzo#+cRgiNP#{hcj~1^L3BOewD?TfpB>r0* zC;l#;EOt3{QgDj6ugG|^^Vz{VpUwHhIvu`eNb7Ww1{7(l&$G39lgJoLo@Q%t8z*Cv z@VJlD?=aBD`#(g+`*aas*nYkK?|_%d*Nasc=}NROhf!Ou z@csHcXA~Y$MTAm%ua)!oeOCY5@3;Cd6S4QIh`i+Kg=x=tc8P^5jsMB3d; z`(gICdyAZx93$eNDZWp(_xtv(_k3iz+83QemT1f%S2&|~%!}#q_TL!`CtrCTJ<3lU zvb0Y8@;Z8yzH~2ZZ^7Qy-cphFydcu5PL%YGK#S455yv2&J(PxJ7rMAq{w53u$8E|GMv zh}eBgB>tiUZC`k^Nc=M*@vn%;nuF~8Zf_AeNo2jbMPzP1DPr%R zBI(wO94{IkZ0SE2iErljrP4+8fv($o`MT@9e4YF|^9^g>ol>oFvqEW+>>JGfLJ>K0 zp7qykk#cSP^{#jPWv1S*XZw6D)4d;LlQS9*$(mmXI`%?E|Fo$mocJhTlrH~9tH&22 z()}i@-yo6kG+IPX6`4=hiHxTwJp6Ar+xVF@-^S0SB65w$arzOFa_#pe8TyT3dXT)r zeqWNO_7Ru&$^0Hj(eqIcJXay7t#8p0T(= zL?C;Yt)&mnUJ$O~X(9qy!?%_`Q}OIkdN}J#M||CI^wKxXpU1pue!fU#{h24?|0N#& z_qXhNQ2yK2593ATB@rL36!Fn#BFECEm3Dulw}@|!7n!dmBGTy{yWf-}a_k%-;*;4T z`?rN6vO?r|_L;~&EqR6APug2#zjnNcJSoz~7e)4IW8Ssvx#x;qq+cf@H;KgGA$Ap? z7rTl7^!Sg(?$R5s^l`Qu-{`ui-uYarG1fqnhw+%>eKl0Xf5SxlS0FOa3PtAG1d(w( z#YrEa&ygZ^jh zvpxU+U&K=%`WG^eAma)mkp70-D=*C8|K#|%-XtQwzHjrr!v{9s2aA+DPQ>ms5x=}D zvajg8%I5oCBH^M2RW zc3=4@k$FE^Wbb^PNWPCm#@jlParleK`B?hDY@X+c+0yex=68`uz9;{k2(JT9u1bW@ z-CQmb{*E|6Tr2JWuf#9hVBVy@Wb(?ob4 zwvWj9*$Evf6XFmXrmaPd&_2=O$L@nQS@OY2>~mT3JNs7@wbaIPO~MC@jYl-EOKJmiRshoR1B z+zpe?`d=WjP8Eubg9%R3Me7&oqI?mjC|yg1&lJ&LAk;it5+{bjMp_?RU!Zsv)s9}kG^Big%*gcFVBnE`J%0zFK4y0^X0B0y zuWxVHg<54={JmLredtAzan-kjT^~9`WZyAC#QrxT<7KnhL(J-E_bE;l(Tl}i;#`q* zw~4*Q=SA|rBK8r#a6PTlq;TBy78y^!beR;cS83Uk!gXeVNcaem>q!3)hl(>q>|G-6 zCEg=)-DtVUyzk!Ct{d$oBG-y};sfHo;_D*gE^EhT`u$|5E%!4E`RcgV3B8-QO6$rB zrA0~}wRNacME?Dlty>$#?b%6Ai`jY2?TE;$ubZ7uMeHQCP7Ye@H_okdn+L6n!mlP2 z+HV&%dcM*cs=sx~uY|{hxNi4)GIg(~z3%n2)4iTnweI!gs1DceR|+75cV8e%DsIPqrpq-!*6%G}iBP zgGUm<4f-3D;y$gVtL91@C~Z(Dt-S}ajoyRUTECTOrT6Y{`K?BY`?^HFr4IP8Y`N8^ z_*JWCYxO_=+ttUz5Z6b$Ztr93t@p9@()-wY{^8xx-1}MR<& zrZ4sXc>GGmvvyTENw=-^Un`wF7i<(+vl>nL<8y*r%dh02MCGGU9(uffW#5^&;))BK~>F*V3!_y*dcuQ1I2cL+n zyA6J@eO-5vb$5S}d{2rThd&fqSAQ0%yY*M}z0I!mes8nV`zy!i;83T`)as96b>?K< z_yWb#Uxm)?_1A=L*uyqL8|;7e_eY7(r}stV8xeoJ{F3!Y?#sU46bb)Cq>ev|^he4o z)*t;u!VeVbkCR2xpDofK3q<Qy(IUsYvwR+zzk6za^w9k1E`P_~hnjEC zq-=D5=M~%h819srn)XumNQJ}r_>25O__$a+`nA#-TMILuc{j4n-sF2z||-vqh(!MCZ z>@L4vEFve~ZTrBpMEv)v$bR7q5&t#2$I@LOaz1yfh&}tBYEOMnRcm=}H$8XJ=?~vi zO+iga_2pM^C~4~Ncfu~ZTP21+rAbVhm-$n>%z4n>%k);>%qGs z`S$izLG zzx?*GHqZMlXR7tvP?55RIqUN~@db*fZG|Fjo8Tn<|D@lh#LC0|%$P1Ul&GKU>ZC8- zMtb7wYe!u>=%kDKJ15D;|7;PtUBuQ3k@@qPNPjnNVBr^twEYS(oIfJ{{j|t&;GZJ> z{i{fScWP+)t`O6umx=Uug@>;Y>F;kv`nzQ#OaG9_eydSqJ5TK?Qm=j@>-eFr-_gXL zr+ZQCrtnWi+GhKNPTD7Q)IOnu_6cpa+-LD|QQ_mFTKiaJlSmoK+wgOkQ2%VJpW4Lo zV=p_VZ!dp+@$vpj{ATlWnTY&bq>S|6ZGQF;>8}Gs!ao-2j~_((qwQu3?=5m%-e2Un ze3FMh7ua=%|A_3nHjAM@!|zRRd!DUxf0n7e$Rcm|lK(~fX~VMrMgFiN`X}ly>{ZGh zdxzB`ZCvNX&xAwL!APR~{}Vmlf9XxlpQnq+43V;47MX7!iS*yE9)4xA&8OQ$`tJpi z^kpg5PY;T;p+aO|^sdN$=zEd*(>m4WPp(M5d(&*5yef8={)HI!?||mPfa2Vs&$wNK z9=QW+-&QSXMO&n%-rq7=P8~sI^5Gi#wPaQNa>s-jPr2FT0%Tb zNM{Y1=HW2vM>tzLzL_iHn=%pKEOKHey0%I>bht$E>=lzs2j4SeyKAu1OM_Uih5s@22%6Lm;JbfxMo*MpS;a7^R-?xjb-!FK0`;E3v z3=mllhKtnsSP|bRMAq$6kv82f;`1j&#@`1bZT?BbcL)A#`|`hw_aU6L zcgs79y`&!|_7=|&`-oSH_^YYb(VfM0}$If93eXdpMw`8QJ ztcd*oYlYLV8%6fDjdU)^c|p39F+w;bT{LDOa}CDrby7ZraQeG$e4ki6{T`3U4mwhP zzxl1iad zIQ>kdzJngN^U1%7$Yhc6TCmvnlOp?z$3*0Lk#YO6Nd3e2*cR)(J^HOn-E+R#-q++S zU1#av6OrCu*!am6>F)zY+B;vQ9ZN;pyIN%4Z4!~>FRi_OM9NP}ZxW=hN!7PNQ-bsn zY1QF(X^VA^H7+^Ge=ZRmU7_p0JJ_|#xNgtu>{##pv2xWrdWIyYo^eFEVP*8sP#;Ib zoKb(q`lg$T)mOM3V2c^Oro4@pr20XNZi$D_vhKvQEBzm#vGRi?pZB-L@X? ze2=Yve-jBmQe?fGAaZQEO2i-5kNxZI$5rab{j{i%u3UbC%34GIzf|FjyXE56<~{l9 z`lsB>pSsZ6U39OF--|`;JSO6&_gwF;`HjE!6!F(_A~H^7{>~C9XIsya1ueHcN0vQp z%e8Xsln=D^@s?d}J^glfTTh$r;p-;fD_NGM>k3=H=g~*@sYCoZF4p9z?eVcvc&gd` zRYV4lxAHy`na{ttzSn8CFFQ`eFXxMtkQD|GpC$CmB5~U1yQ;wU@|o`8aWVUXM$Oc$|nQa@{NLZrQ$McUh?zqNNC zk#vWOwD)w8_FgVhrun(M{M=1`-XVzlxy;*J=IvbcC)>Nk+qq1nPL(2cTJ5BLghTxD zKk-M2_tz^TvPPtx%X*qW-W4h1rrzd{g(CgGM<3hw|6OFgIY-1VH;DM<2@yLlis|AS zF+*(R{?7>a7dvWy(WBn|#d7yqwti=U3=pw5NMzg};EdW#nnOJ0d zNWIAqi(@+J2`4{7xp9fxkIILUY%Lx;B`Sygian&?B=!`a67fq$c8cB`mmYK~XsP#ew+Pbag!e^SkBNIBn%VSas2rla1^+b(?HrF}ypYJHFgO{qH_K(^l03fW%Z9A2lp9le)+pd zdu|(IJv>xDUU}&^(CVhp@!`lJ{Wk z{SdYyp}zb-BLAcaijiL}ZAEkMZ#1 zJ-pDvXLxw{jEcV1lfI9hBh+8|ZTfb0pOm1F?h|#^cZ1t5YZA23ySDibJn@I>udKhF z$JEtp+2Ffd`fao2O%3voP6TJ@Z~h(jZSJ_9l-@8%-%tIbeOK4!je_ROQiI0DT9=0E zTwZ@Y2B<0?-lUX zGURi7TD4aq_+Edxug2O~+*s$0X<>M~y>%Y4qqUKAalKaF@SEx_g2KE+aEboX-+Mji znyqg=s}C|)Hr0F6d2Xh87+0qF@otl}alKalI&G>}|22=bsg_Q^tyI1B{^M%(O9Rz4 zk*0UG*YumUm++qYTj%B1)obPD+KrAaZFIjf&F@#13{C|1>2Kr2*TR0UrPq@_Z_h;V z5B){yYw7q*?|rR0T<1tfB!YRbMSY-eL+ZSp=ZpyNufO>_Ss&EZYvrw{{K6rL;4=M1 z<;V4;=1qd;1DjQAFI=f#`{Zlu2lOYfwN zpksAbRr|`e74i3VSNU3$ulIo=W1R6dnee)6a=m)Kt#=oQ$UKpCaqN+Hy<~>SdF$;W z>(4zR@ehft({FqHw;sR2VLmT;v^tmGG!}re=>s`b824Ne$=eEh5230(Rm6KuXe%Uv+ZvI!?)heUxRq<~0{8Erh2@rbxusv5{S_kesYtoMd3XkMx45mo71c)j zverS`dV5FmLglAjC3=Sfa)mSMyV7sXZl#DctTwypBFEECV(6Ff_>~+)-=?p0yJc=~ zsYrd6yI#89@;xgeFN(yk6R{h7?{@2XFZo8dUFEhmiP@h17!f&E#NJsR9)BNtb}PL< z{VTH{47wsql&igCzSD1{$Gj1)7jeD5?_wlm6DeP3c0Ux6A4Tfd z;R|c;L=iv6-_Jfzc}qNezKCRc{RVpdhPfWkSD}1`9zM;}J?47Y4!zg8`h`is1ussj z`7UEz&)Ov=*hR<7zDn0s*SS*`hu=fWDLL-OV3_K#weMQ2Q@OOE^5QLfmYjcCyS^5Y zF8{W64-rWlu32;R&5}fu!p8ZHa_qYo?W6Z_S8|l)my67?^w#RPmo49oBJ=Yuk#(Wu z72CJX7n#qGi`dWTy6x{+43f>bwE7SI z$jZA(l8oZ9VGbjMk&SLi`)0R~194{>l7y;6`hI&tI(lPl~kv4UzW# zM`V1h7a3oTf3@+IB_hX*jI$zS4^GiH(AazC{V*vQslW2w?YLY^XHTI$S4sb(V8DQ)nsq0x*SGF$lrNF|zC~d@ zri#e*BK`f8NPAoMv-tS>k=<73+a5kaMAo_9K=nW}McNncuZtV09ZiCq9gFlk{-R*x z$IEOF9ns)4yjC9>a#IymF<*-sd7RYbUGc?P6FCe$aYU_Pc%;uzAb6 z71xt?Y!d8PEWhS94N?X+DcsgKbP_5PsY){Y2RA4R`}=5-{?2Jw6rKkT7a0$yh}7e` zCRV>!Mf`Y3Q}g3wk#tvzq}$%QGtbK}Nw@U(WtiPfB6hpCGP~17?5=5T^&8UG>esbh zQ8@ng6Nz8ez9>9T@0eK>&d+`#^Yc8B`FWX0y~6n^ACy$sInWbAGGH>2UDGKMy=c46jz25qImfp_#O<6-J z_jcXa!Rphvqt$1C$oQTq;-4!zS$V&R=(p@({`x^=J!_<*0t{w`TH0vWMhWXQf{H@31>N@b+O#bADm-}Rkxi^A)I2aAM{6_J04wDHVAHlEHF@xg^6zPd!jS93-B ztLG5wuY*MT>jaU0nkv#yb42Fx{UUa=_q6%kN2KjJV)$Huh;Q;ld^SwX5MLNt6toi8 ziaZz4Xs@F1`g&)P>+8FVJU?=T$g@G?Mar2fa=m?yi0{4^xz66e$Dy6?X^!SLt2s9s zq;Zo!$^0=(L~e3DejF}Tx}38toqd0`S$iSpNkU104VAtJ|#U#~ge7fY`&yBkC#{Yvx4 z;UeXpD3a#_k$E@Y^(RE;UsC%f`i@O%(0*X+>Wr$E6f-E|=LlcZf*% zXp#Q7O=LZM%EPB#ZtLImB4vFgvJUz*8RFHY5W zl~Xj=ngyvNnug~L%e~J^H71aJU;pNb$YZY8{jOAXRPS@F-ZzTK6RwBX$uzG!GOtJ2 zbqVHmW|obSDjoZfYLRvZzQ(1C^nJD%jtP(FPPkxO{q4)baJ`S#P{UO)C7V&$7v#sCyis3kO{S*;@O%oaamwNbpBK~{E z^#1GRrSsHo<8SX|%MdF1#y^{*Ue&q*Tb&KF6yz4OUZuSeA}mcIE&vpZhI?$siG`dq~BUZbsk*Bxv1TRX<; z*W@@GPyIyFJ$k(FgHNz^rGv&){iTk9BT-VAA2ZgYdUeHhmq9P2~YHy9Hv_# zA|HtO>syiW)UdC`CyRt1Co<0_iTJU^<7az(g~)of(&N{8{5Kx|yU4oMs-NZWB~q_G zBKA)bnNLL?Kg;7Ydh7mGafY5VXsPE6^xlLy;eGk=_@3F(e3o;i`D~~&?lWu;Q#g$K z?9b@RQX`QM$rnl79$}Hr|D*K$AE~P+_O$lDAR@1c*lsq|{NG8$&;3R6?kW<0ut+~l z6FEP+S|r`=BI)k&_?JZbW0lCf`bs3-?;`0M?qzm*iTHi6NdF8MNq2%sx^W`q&Jo#1 z-{tX3JpLJve^cbVtIFfQ_xK+?zW?5n!}GJfMeH9bVn1VtCczHs*Yr7QiPXZBuwV1M zU;npr;ji>ZURSHnOcA+Mq}?Bg%!jW;>ivsIy&H71_^u-Tv71Qz!6Na8dwh|I|7Usp zO&-6%8ysZI55+@hRP{e|8YDKTyPeu1Ng~Mf$DS<7az(MxQkO#;0}AqaY*5 z)-wwJefse2@vJxF-NzN08`#5FP^N0g|078+w{lMqktZLv@|TO`drd@Ec=*R2{;7v& zF1GZ&Mbc-4-xbyQRzVAWSG4&bzAIX)`h~Ker7skby$>`y!$j<4_0XP2_qX*lZXs`W z;eNvsoOWggd>T` zHXc`t$k<{(UW#FP;XX>|I(j~(jqVLa_tQtJJf!4rmabexQij<$ZzG2JyJ{b$^QF$5 zFUdw**`VI|phPyx4zhIbiOAn&hyFX!?b@~fRORKG)t2%XdV9-#9UyOg?Ty0gw!75l z;aehdj>_kFGRx~@e zA!3bx^j@U4i)(*-8UJkbveK`zwV;zTY6}d8o1ODSmuHtlaxV!XFh0 zxA)0**6%iBzjKaVUm2#d=O{gCE3fvo&l$E;aqH^n8|vsmspX5(r`6Fj>*zhChu31A z{uyb_O_*@%@ z*N7Y+Zx)fu&$Hw0ry|GYZ$#vaX_LeA>%8-AUv-Fx^u1tmcwR7FusI4dc7^7@oF+ zkk@5$Fin3GettSUPQ>-3JsSsmD(y~Mvm4EjFIy*t)%iy}0z7OA}ppDKETL&%ITY2kLUR)A;TmSEtXZv?7W z$-!s(EBm{S={(oDL4CL;ISl)+!WR+Fb>)@1zp*SOyw6YgqydwI3gTqHu8zH$yv#V+ z3}iEqjX*X6Ju48@En9Ztb;;Nb^wumpg*4D~JB6gOD*jXlGr&0{( zgOj;LI3yh;A4DK_BRve%Kk2txeI8t3^YhK_+1glxI(r6cBLn6j;>X}sP02uALc9& zsZ*hobm$XedU`7>_vzNwzV>abeO*OtcWi6zJV&J6(?!C+YG>{KTYC#XQY8Eukutu> zG(Q}WWqvqZB)o42^T$k)@qd*_c%q}(xlqJTM&D*Z*V{W(XI8bVY*W!Hkx`hQ)6&Pl zZ26$v(|s-?8C@)Ywn+Y@77cf#tKDT{e zw8*LKVP1$Y;(|?dj&TTeSfYFoUn7uokUB--#FddDuKSs~eyejZU2m+`5w3!9)JJVZDtcP_2EDA@&LZXR zBZhW%Ney<%%?^5M9jG-6d=BKhugWjA@%W)g{kv^U&5?(Gc&X>8qT%;Xc*4uULz9Rj!tBBq6McOl6q`x+QZ`YYyY_R7T z#)~}1aE?g&)<4?w3}=a4f1525zFcf2e&l+A_8GKuoXCCcvt7SbWIuVEh}iwo_VwN` zo#K62sI>x_;A_ehkuqmG=>ysx^+l<|@yUE=6b>1)k-jjNKk6Grhw+Rx(nXS3Xyfl; z5qV4`PjIiTM(PxOb(^xt)}Lk%*t+wKNI$F+sl#p$+I%@cB>mnG*}OSdq#v#o z312L-?_MS{zE+F$N3|HvhXGB39!Xt;_1)zR;CeO)Y^{G`WTR6dN}i&M8>lq{6e#@7CqMAH0A z#9y04=1IpU7N0E=UntVH%_8%CLR0IXt3<-@7nwKDiu6;JhaZq^{dJMZytzvx{VI_< zk7{Q9wN|9f9aF5IW{dRGLXq&HsdoO=F3rxrb{7esB{FY*a=k-yI}h7QB>q^D`E#!8 z7mLiFdqkcSdR4?%pNKpkl+?oXERlL1C}xSLh&(TJv50>bisASP-y@KvYu=gqeS51Q zJmc`Sbh(eC!1qn`3whF{_;#iR4L2xAF&z=(}WCx+6u> z+4anJ!48XSukIWps=YoXzSp?I8Py9$Yj@cVX0P8otIug7_1Wo0D|eWPoG+5+0}+3H zCWiG0k2C#soat8YaV9g{j>(leS0z1VBdh(~b)AUa4I*{}9eW|^U|JnLvyR?FI^!$H z8Rd&ORN;)TVIs$w0+IE&&`CP<2{Ao79+5Ay10$a?PSEKW$nUoy0{Q)Rq*otre(HUK z`7uYtzxg8mINHPC6|vX0(EQv@r2T_L=HYaawfZ&>-zYK<(@wN`I6x%*P?2@>2$6X> z(ZlZ&@zYLYZ63}LnK!qKtd}o{cdlh#wC>#pc^_B7S^K_72+#a-QhlE0`B*HOWAm}<8r$=HE#mu)B7NLQ@o*n8 z>SOwhKE>xz-@@oPso+rZuC#j15y^ACh>cUPvVQ$cr2P%9Hhri_|32V)xkx|1D3b42 zkuqDCT0ajI(T9taeWFM|Pj>w>5y=RTcin3p@5X!k%f0;{iqx@zpNquXg^fN6r*64U z;?eV@v-S@csl!N-I*fD1{X#l)nDBg&9f&~27A#Z!>DM;bSUWn2=m)uexa${))cpn# zKP_?nC6T`STtqgA_`A&<(~l8p!&DJJZxHck#ikc+s+rpjn zu2j9hzPfppzazh}v5(`@XdG+JLauP)KYRtFwJQ5`^WP~VGFilLpG+{nH8{ikb+m|| z#);Ul^E-XBprD=3@7mTnzgwd6t4CY99gj7;yNTFstn2*P=_=yqy~NO7j{Tms*7JV( zZF4wYRe5{n=@@{Nh}gQqNqdm3F^u$o^8aq-Ef=vda-_AhaFn%khDdl1)t~-9NJI`5 z2|rt;{_{NiCJ$dM(w>zbzU4k`t9tL#CU?DGse>Rp+v;c)E`a0)^=suPA zv5GJ`*xL1=i2O^WJ{vv!@I$QsMvH`>B~qW~MC$pvhkxebLl3q78zz$eB$4zFiS*yo z9{#?EXN1=YJN)4~;X-d$neW{eiP&4>jE_a^qZ1zwudCzVWy%l#Z2HP=q{q(cZN%3t z|9`7f-nv+M=o@1C_UtQpke_4yai@qpC6cdF#9rTBCI{K#!D3hOG?9M0RK(9$iKLq= zvY&WVWFN6oB;5v)bU%xv8#2)L7o$b?7w3wkyGbP79U|%0i0nHW?P~ju9wO-u5J`8K z$Ufu@v5R=6$3Nili$&}_C$fKhPh{WpgUEW{HrLks-9+pjEn@e0k$jUxjuY329CscT zN%xLOy7$Gfo+8JijUxNG%-t;fFp=ZZ86wA}D@F1@Ad-Kv$Z=|g$nj~t$G6(u;O{$7k+g@m)mhOcB`^&KB7hE)+QrTQ0I6Tqj~T zd64C6DUxsZ!IQ)H8yzHemwt*!_+?@b@g}jS_>_mgF7}fCmDpQM9b$I-i_~{#v5&%! z5c`S~J^pHs&*+yH^waO~d+B%h-Evz6?H1P@aq~GgRr)$msC%B+W8T79uFr8UaV~Ry z>HN{zNqbB3^>H5V9PKP|-tBxxL`p8UcI+|B=1YNyo#RC2&H1iBA>yZRJiPfOmTr(p ze~xhdSdo0^x&EL?Kd<%h#iW==%F2^P=4q zmcENf{64OqDl%Udy8eL2zv=pVk$JP(!#ip}kN>xKopz(f4N}(6(l_dF{Wn^qpQee} zneF<0u4i;i4m$dAHg%5O*JK=Kck}&3Z_BqpM0)kH_UtKQFRPySGYnJS{B?F5pCBTm zzOdu|L=l-QQm^|&?1c9U^*iUPhLeLU8fi`T_bbHp`hJIy@OqYfYIg1wk(WjM{-sDc z`)HpL*0-g;gE68(xDTACyg8p+_;3+f?)oRLZ*<+BPtkin^xJ^=^UW2JpKdXK94{iP zM9N?9;kNHesd=7fo$^tiK>HM=+}DS0ds_a#iNssJEx#R0?{58)xXI!-i%74VJ$-ZC z>mKX(9+fuzXKUYR5t->a_rP0^2-lv9W{Kp&ruj`mpA;$&<>qVeh7^jlBO&6)5|Q~` z>YOjerNsAdkBLZyNdDy_`QH%9zg}b=Xszd0WBkH9un_nWR1TT7oW(nsHj?8`QZ?8`bnYV{s0(heJso$DQs zQ+zxobiPSi`Wa4hUFJeP;_R)2&)rIRnZjxNB9XQ)5oyaZk+xSlDHnZpOeY;eTajoy zh1VvfNBvEGiI37p<1tFlxdKvOddg)yM&lcHb)EF+kzMwzNMx72DpH?a!u#=$BuYQP z)IX&6;2`G->#tixWVy)r``E(|USjL{RFO7M7l~is`YR%Jd0V8+e~HxnOA+4=eA33* zD3SA;sUqP&KV{=A`)M0rgGIuhTv`J%+*CA^>|IBUg2?O zTxw8ykAC;HF!sBzn4ZyB??BQsJ)PIry1pCk)5|m_k-YoOUXh4gBvQ`hBFB$cMUHok z7MZ?>$owpJ{fP(6U+;+QZ@&_eZI!*;=R+TjLnK|K%uXU@9_c*J!xL{^vbs z_Qr^mf3`?Jz5RmK^Fxs~j(*YVb&*KATSU@r@Aq+;J*~g;->~$BZ<^g_MC^Vl(*FFn z%7y(he9^?604 zKHrG=r|^Ai|Cu7?HU7Z#*H)Q7da6Cl?_3doTrA>`x!%r<9aHptQ&!M*#UJk@E>T^m zbD@s=knsv9xIRTJyx!XN#7$Pe<8HS4oiCDhjz~S<_3$q}{Iy%Gp1a&?>5mjiA3j4B zU2|TMTCHFFR`6_Rc%9hmlOL;3^&HEWH`mG^CE}m!#n4`lw4jH+y_+qYopc>LeZ`jN zzOk9y%f?~p9hQFioo1)xF0=ED7~0YG>l{6&p1nA$x_wpK%GMPbiS)vj;o6fU8>GpL z)vM|%%NLZIz3Hka^?Kav+qIr|NmgB{HB$MacS+XLd3IC3BS_p<6in6Ml$-UtVcrFx z_gA&l`>Pu3osxvl(BJs!+J}eFdZvW>qY9fwn93(UuGh+=_*(Well9xjuRg*RD9GwQM$jX zbF6(-b|Cia%a3isEB<78Zzvu6&{ZPOpsW$uhgOSRo8IK4Ji=iYC+X42UtfI`97=kr z`S(&0`B|hNI$mSpJw@aMk-D#)W8<;uwU(~0h|hNtiGN7sxcrXCfA8@dJ^t@=tzV~# zlykF4{xXsL&x-i)f$NIH^Po3Hj$_}7q|dnC(r1c{|3M<>N25jJr+NG=5j&5FoEJ5i zR~+tFJBXYQ4G~+3V?^>@AX1N6BKfWnIZi$-a-4iuB;5}p={Ad`>wIHzc>LT;WWRfY zNV@4F$!3Y6Uqt%iHIcqqE7E7b&Myx8GW(X|@cD-B3yQ=03j2!mWto^QJ|%V)SBc%k zAI0usi?ZVII(Uvqxg$i%9V2qie7;Ee*NSb#4Yw7C=Xt5O7l-G0JBs8xLL}cPk#wW) zC=Soji$w0L%oR!ZxJWu%PnrjMzixu#=Bj8t@%44aMq77p5XtwXNIqLnI@i0N1by!h zRw!*K`Bu&gBGTe0Ye#P}v=goeH)}nZQ}24vN492YAd)uFJVDY#>XIqqlO7^#YmUg6 z9qKG{DkvO-kaP%RE-s;c1(2V4#$F1N9y0b|BvJb9>Eyq_>qmb208(#AJ0iOfyD+E3 z{Bw_pydskJBays6i`X82k=iHz%^m)p3$Nn~6fdfUF(GY*o<~LA5V5_=pHE%mB#v-|x*%KA@lCbzv8HTt?slDBci7j7pNWT2KjRbh z?e$OkTQ(2!-nRL1yhvSc5y`t$#Ac_Jc7J2Y`*uI$evvW{SY`JwrvKCKQ!M_E-H)gg z>7R8XbxEqS`;FNm`XM6g-2{rl=oy zhhQXyzgxc7MP#)|^vQvZgC|7V_kBYfZwEB8@ppthZie%zqV3+S2!Je9RZ4sz#&;`i*q3u#4G$PDI`lNxM@ItM5S~=fi~} zd2Aoa_c#00TaV?c$3U+~!uPb(L~PD>QZ5p&M;M@gDt+BN@n`er43WIoiHw)`f3xxO zUy=EnE`L+Mf!+_cPH%ahq+0bsDt@#2ePx7)ZJE|M2U>jxYu9oyra)GvzX8gab7QbS3+YxUS? zrPX)5NIfqT$$O_5j+6Jy--ATf`_W?94iVdjyl?xi6Ge`B(?sfM->K@P-;=fa!|%!P z@e=oO;A1__$9U#e#=1<0cB64o@x84d$850i{({JOUm;TewIc0ltn)(Z+fzjHMA}j4 z=ZiKkcT+#~t9M>jsh-g{`tr4|BV$C$8t{q_e% z*568z^zVw{b1NcsI^;7uew-*$r;I+SK_7kNEi)r}VcuSLNg3Yaa(2oibS? zQ5&gWqZ?|^h4h$Cz2Xw(`=5l@=VR>D7ao-vl~-3MUnkY`&*mrHp-SIfJjY47+saQo z$Wgo9|bq+C08ZWF9{+;@@{f=F3`=Xejl zRctN&+5bn~yTIu+osHW&k;CLXlT1z$GKoY&4ki&1=TSjaFd_&-M+HGJBBv6BQcEtk*7XAL3mJeIDw*sJ{=bSE~-;`ebLQz6b0FkAvI8^P%Nj4tIce z!5!gq(0YdcwFCWY+eZ6WY3yHBH-<61IFc+jj2ZJ^O1R@;IrRKk3$6c}NIs_F(s+vL z@}fQJrc=yE`9B@s_E?8q+1&D3kMn}GKGJzaD$;o*(`!!(^IXZqFn+7KHHtN)H zJ^gd&y!kvdymZpkWGK7|mcjd=;h&y1H8}88bk$$Ndf|6aS@3aKpF9dp z7uL-KndeLXZJu{Oel~f0OgiJ%_FiZf$(l$%8!lbbWRmxF);7rpp}d=*au>8d-~BMG zlWu{={S@k-P9J?e`|ghRmB;w+LFH3u{;$-B{6B)`e;|G^|C6F$in=u0V#yA&i{*0)JIOys`IxbVKb$^zPlzezWFpNAb(jwc*X zIG*skQTgLVeOmKQWWGDd{jiQ3@3E!#X+FaaeOt}GzRddVGIZAwD6QTK?0hM#1`CSQZ!?&UR|F6*g-{g>xt~WH@mTWE=w9#ggCfaHnXsgU@ zl;)M`#x0BaFM`S^vD|Kl2K%N!?VAm??`o)h55Ux}^!l?MzqK0Pqmq9Y*l6r3|7M8y z9#js%FWPie^i$E`Hr#*hne=W_oNW43LwIJeGS;n*^`i2ATyJ(<@YQuQeo41b{(^uP1)zh+BbjPc(osgdd&Z8sQ(gZo(t9oKWzO; z(7y%KehKx@$I$jK{#!WS8|sIBqy7qXoZs_lm}j4d=KI!XVSlUn-^2daHc*=y?$gxZ z7p0<0INqvjuy0#vK4maXmwpeq8)LW2zkLsRUF<7W@!D%~yynXKdt?5oi2G}cpmIu! zP+t3%q25EFG92oUaZo=@g{eIoo~LNP$#b}cgF}6)I)!*6ibFm#I){9I1k?0e_+7@4 ze>kMf8??LV8{a$F-%b@+^4rus(?+5=Zh5BtZ zG`!0P!GBjm{dONTyy(N=zoAfj&x88!Qm9-3jrTj~9?KU{`;Yu6+_#trm7+oIl0j2< z;kQ(G=J)>GuN|~;olzd<);ZDFmA8a>Xcn|ibD(9+hxYj@Xq^^EU0Ro{4b-##WqS3@ z*Qlwkt;V;%dfa;~>T+oVeL1>&FSU_byo_sd@w5JKKI?Mf>g#iQJ{}cHuiXblX8C3u zPk3fuKHWsZ`;qV5$Si)wWt&O2g787w6Pd-&SaRzvNh!w%MP}hLU;apr??SwZk@@y&-drVE93aPk@cPNUtkG(r(cA4U0`qYkx`!u`=H+rw}a2d@D9&~{h{x`?L8j#hhTs7RZx3gg9G5- zqrTsYa2<36+>!8U(0ETm``QlAPfZ5HBcS@X;ShK!G~VTKCwNcPKZf?f!7qgCsng*w z^ef@c@P25z51@VU=ohCZBj6=a{TjF{{3$fvBXA^K9rfNTr>1>y0<>=~gnPiPUYeTh z3H!ml-~n)NI0>51!>|mN{BmltFFY8k9|ykyFM#{OTcGjZg7(Snel<1it0%z&&|iQD z!uR25*uHjZauD1Jn(i9tKHw7Qecj){gW=zxeK}m`b>JM|e#1M_s+m74Uk=A#gUaw% zLjOJrny&jUzK`taP46eg_mQn8{cTOdIeadA>B_>mr+zo&P_hI%K5C%jV`Zdc%W%bb zisLFT#$Qc*$IseG)2Y|zbmJ*sC%>#*X}QvJr6R3&rq7N0=Jik+@#k=TI18Ho4rsZ{ zp>`biPPlHo0(y?Q4I2Ig)b8!y4flf&ho1M&frdW;ZO3<@^FyomLikJ2@%{m{ecQYr zzJIv`^cjPLVRv{Y)b1ys^T4Z7@1DL-Zs$hZFB!6NEnmsnT$vTu=yMvZ)f@UHjm*FD zxE`*C$}gb)yzC!ge!TskVSaoP>W9~%>#e^)?G4Y3w_sh*_jkFMRQJQ5r}NGxy3ay# z4P1LDbLU}GlbY=x4RLaMcuu8%qxBp>J^Nsk<<+u}rmTV5xenTn>mxm8cwS7W?!2yS zuD@pSTq`JF)xVtYvwoH);9u3i;FlJIfwH0)AR$|B?G7S;yYd2 zCfg0)Ch5xW;%#^mxIC-}tH{T=73>=*lOz3XxU?=a8|*6>o>TbC(eY%A2>R!pUa^0NChC>dj9G?Ry9;Cj3ljy4le4$kovE$OAF_J?MI&&9_21KY^ZCUV-{) z$BMA7+!t!s!BD>*27UhP9H^gOfW6=!q45e%4C}=m;dbcXg!(J=w_O_TZ}s%Ic_cPo zVVtLX#(8=`WZvJ#BkQ!h;a_pQYzxQDL&@hihWPqzJk;M4BQ0P32RYq%hFfn%f955h zukl=$H&zeR7;gORcW^PR>$&x` zaQ!h9THbEZesUZvf#*Z(TeN)}e#4C&V)+3?Mg@-Vk|+bQlP{W#1+%b@wK zh|K&&&?fD;Y757Wt5|;c6#j2cx4gQq$gg4hl{_5kcL7x9L-TnPIv)&pB(&dXX!t5< z`+W&rZ}j?E2tRvi@N2=(gTDtr;}3_9^KsDjm={WG zoArm~4IrLu%-^O}%vYxNZ6UtL%Q$X-IXlvPv;5^vgj>J6p!NGHbpCoW()fl;Fae5MT{9Xb*PhJmQZ#)8BZ>)x1zy1TJ=Z||rzMbz4>x{{;7snUD61W`p zhJS*V{~qiM+uaxRGU&Ly0B#R|5BtMpaoCS4fu_3v4um&H{YmI}tc8PNyZgibQ*XEv zdKD~%HE<|=6Apt-9|-$ReWCewcrffUErGkDuY`s-uMYb}#nARF`^nUFJRA+}&y(Px z@B(-kyg7z1e(6xPp2joa3VYrPKAcghLd0wJPke#Ex*~4 zsmXMB0-OOSL&ML7GvT%HJMgDa`yYkp!QaC3;Xk4MF5Evnc(c!+Ps*KpYT1WX)aX8I&-b6l@F9N)*LkC$HtqArFz#l;cIa2W8P@;zLD$>Q zLF282+S2E(FpkQgwpgJo3X`2^tAIG{BL))YT+J6T@ukA-d z`|qfzOZNozm+{o?6Y8c{w@;{>uex)xy5*_cwwcby4fYsbzJ=qaS2FvJKcPW<^UaPM zKd)EC_2OPq z-vRB%&%t8&XQ-{mJQ2pjIneQNEj0YpC&TsXMQ~g6TcP2f!d|dzO|Yvw?2W!#)aOIT z@5500zfS)sC=J&twLIgYtclF~$?$cAyXUh$(&I|QcnSMU`l2oL8m=3(fAod=rWD#g z_KdpB`iJqSnKkHT&=H1<){p(n$PgX$JD|OKOZB6$L;XS_*`qOaOhw!7I@fSe% zMV3P4QP>Z@5%pd63+t4lpgsxxt~c{i3G>pn%uBiF_v5@&8v9)(=SkC~8S`%zy1tqd znfX^5o|i10dkXW3Z~v%@G``_kx`z4W^(-IrUQBv@xD+Z!N<*>d@ZjLfiXtXnWrUZSUux>HY$3_cpJGd8Py^{h-GWgN~`w zp#9>)c)Z|^&_B9E$Ix!jy3K^Ha~DA6W@vwTJnCosHuRS(p>+(uW7(ZOkZ$aObWOT! ze7|A(T;KTEwsoKXc!O`u_kDCF?=$t!HWS|Li^k&@=E6uJ+f@t;_E$q? z=bb})R6+e#1CG^oGa^c3ClhdMaj{eL1<7DD~`Q>Z^*iQzqV4E_CBXn#KsDwjaV@@-I?i+UIEuA?r=Hav@3 z^l{5Ne(NReuXjfuS5a5vrHT2sxRJVhZ0Tmgmp2lg<(FsHACr;6t^=S_uv_rkL}-7! z6e{bXejB=b=#Pg(Gt4hn8E^zb)@a@5(y^d50Et@3irEY0~=F z#`^o+MJ4;rqMtLn{jB^qdN%H}`d7Xf?gKvsl{L`*bKgthzVnOF_I?kh^+=!pD^9i^ z-YIGS^2YZ2EZSe4Tia)LHl*b&+rpYZi*LNS9|ix_LZ##{p&f35N)>c|sEPWopzZMy zG@sthnkLQGwoIyic5bqgze@-4y!7_1lkL~HNV=~oNIFk!m9*tuyUlp_w#V12m_hTPCxgIybq4zXg_=`nUzZV_JYc?bGlVId*rn$9Q>tleCT4Q}xif$qW2t z_H3dTx8S|oZFrw1{e%9M;J=~#_1r1cJ+Ft~UMy<#w--x>-bd?il&Yu0INbJ`FkVMO z$7|E&;rWt2(0S_{(EfiQ^!Q=W`RnX>{D<-Q{CK?mv*G!ZA<*=PLen1sP5&x%TzwLc zcm72^s4xW~l zd&-b$Xk52J?MTnhoSTbZ{`dE}SCiH_b30X~X%SezEv;Ys zJ*TDX!cwR_1WnU?uW4yLieYL;No(FS+cD`mt|;looYD57+Z85a6M$pIn$^-!sT=D*;; zkpJ7z{6B)`-)3~o|0~Wv17iO5yM*{FMuhzTI5OnlB>Jt$`m?9f!}k=94eu$;-tk^e z9u={?Wl;HB)UP`z`Ev*L@bGdlTNtS>L9P z@m-U?`q;acHys6Pts*m&Pby*Q_9SJpTDZ2CO?Tta-;|AQj4^QH8B zn5ECcO{3Jt{<`B%q5k(n%l{|zx?`Wx&_3UShA)P;(+kk?`7ZQ))_Q12|M{?KsU2_Z zJS|;^4H!NxUEhv|+IKkZr9F2-*JBSu+rK@gTJB-E+SeT~FHb9YXkI zsH}^6(;b7}4Vo@I7uO~!`EqLV0Dp6z`b9d9@_P6Ub>1=B;5XE}?R;NSvTev`4OBYx z3ij;?&3{Y3FIqG1|NEdzbH1h6q_A5^x2Aij->zGS`W+9gUoF)B-$VQVv>rj!9^n1g*~} z(E2os?cbzZYrfyvmVNU!oZt97wz$4yU14QW`g`iF*-PK}Tln?ZW*tgSxj88v6YM$# zD(6K#-=Dh;=l9PKiS;eui9yN+wAxDE5q6lFC028*_XfSRjkS4?`Nuy_mCGxX5lhRpY0(xOz-?*yo?RYb${OD|7p5@|3NyUrgq9f{zEJ;FZS8I?&qp! zLVIqrJhW$DXu5&WdO!PYm>2Kd#xCb}xdadmP$MPrWcL-Iu)m#c4@r^k<>r z^Hxqv@0Z^X^U>C{}{tRgXY`xS0Ufg(0$dDp#AFw=)UUfusd7_ zeSY9mXuc)2)6#wUGU&eix1izEq4~~+wp$H!p7|9_*EZ02e}l#=>Qj*J%XWFBKPsa$bZ=9n_9b zp!MlGJJ`1yG{31(`!0*&cg64*p#J-94F4jA7nQV1y4_Y(-=WUklk`m~rC#5Ael3l* z7cSnoXJ{E@la`gyI#k^r%I~=-*xCBtU`ID-ny@zFI)m@e7xUc#-cggDlg3kqQvXzl zH|FV({#0nX#@=r-n>6)t-fkQHawts88P+BlHoPq9)nsI&zpr(7tkc}+=Y>#z=EZ!} zw-kPNuATDnmk{neQUjewRz_XA4%Sz4bqrUx9GOWzzwG#0;%AaSUQf8=>~pxed>Ttv zaPKWi2?vVd=F%Bn5|3wj$gKQ+d>+Jc=bw?#`DYXy2+N}`2cugLSgd)^fAzM=AX5z98Y*&pNL*Tcx4Qq)!_IX^obmw4;Ay%FLD#PG>p3+LuDznoMD%R z^XEjUeh+k9T=Ttfe!T;F{(KfX9=?EH7w&X<(8og0r&FNk)A`VRegr$i$D)4goN)em z1A6@ME5do_ROor<=BPgdy&wD*G~UhM59htdVQ=)8qy9JOd9TZrA>J#{etE`K;XHc* zw4YxC?dNyEA@D_53g3hF>sx;?EqxAc4ODM`^|bVPv>|Y3^h2Tfo(S#F=R*7Qc4<~uklZCZ`fk)v}7N+J+xk*K>O7N*GxoxEo^q)Zc=`W!D z^bL3jOy*5X`{@LDDC!MSe;yu&{to1HkhHossjy!xG3tsjK^0)?RXPv zSBLr2(tf!Ev>!hP?ZES#^ls2}1K}y~V0bD#13He1hPFwD^4vf_zBje$nF-qYB~2RYoPh9 zgP!--!>v5Pdf)SX+epW!;nH~0bdBi*Z!)eM#y6jCbLh}~dw^h2QQ=rf_$Nk4$b`@v&jzPTT^LVpP=zk&LD9W>r? z%ffp9eCT|16ZAa&D0H3wIyC<8q45uSJj_RDLg%X=K;?R9yxXDiYM}GiE6{oCuQB|` zPlWmFC(w2Huc7hpc`~g3pNE~%-+`{93u=NL{h|5q1dU$?yTS_C4bFzj70`G;g2p?H zb(HIYv!V0f525qk1JL@t1dSh_U)h1@R|fF>N`IbTDcSg3Ap_p^-)FH8R&fq6&Ej~D zSQ>S*OWSOD46khvz6RYkS_cc@`l!p+==Mp;4?3jr@_p6v)TL1}nH$GX`Hw>VFM-B+ z6sG+g+J8QZ`o1@Y{xcSOyc*h%-ii9)n?gU@8*1ZNXup^OwQc)_p?^$(>K8-(cq{b0 z^%S&U{1IwL@asq&sJAjG($D50wRI%nj_pyAdH;C4oN#TP z0PXXWpf*m0)?s#J=4WYNzlv~~=?ikY>GJU#>gK@8~j)Wl^U3)xi7Ti$I$j`xj4)N{h@vAKxn+{pk>_)E&ENVt!LdI+Vy5=-8(-J z+Hn_XJ01y*cP#XHiw8ryZVesRdqTtCgpTh|q3e?F)ggR7)K?3j<9R7`JgN_k*C}3myvN`X1=Gei0hpd`TF`ouT7+S7>~GIXEjD%cAy zh9&Tqus8e=>g)76jQ62#&HbhJ^IF#xRJKgt1vHvIsTAH8;vK;CoKgYx>m@Kv-=Fu+ z^M0eQjoc@!%=-1@DwF=NJ!4_s+9EUg-_-N{wB(WChtr_)U8sK+FAeRq5<1_$4^w|N z@}A5E_^JBlaJ(KWJN-E5U*|oUHKhN3nkq?3szSQ!ZVmaYhL)S(CtXMUvI|3a?~cuq zj#GKh=p&h8{0U_pjL>XFojKzpfyC=>_5V#ZY-L>W%Fa%prblJpO)+KREg!tiSrR z{_5H2`m36>+L7E9&V6m6?c6QueWB;u(n$M=dcLoie$NW96Cx+U{)A73d8z(ZXusNu(0=77hVfGeJ#U}RLFf78 zq%hC-fzI>ahT7F~VwmT@57n=Q`nTiBVV;}^)o+B(+nr7c^Zm}y`ThuKe%C?MUwCSm z@0(5v^Zg~zdA`kQVcz~8EJnW*c80%zrY|@>q`wb3-w!z>=(|GwzYIFBkD46xG0^$^ zS?E0RHgq0uer7z6LG4)#o!4ui^Z75K?ebbYzSUV_e(wtV5Z({kK0~1CAA{SWuY&#H zo6vT8FCOo7cGy?$4+jvw3$(rVhNdqX&^8&s^K^ZAo~~qEXP%iTP6|KXxUadI@uAE< zHpD-8LTJy4&~b7%O!FDoHW@gvd(wX#&*t$PdtE=?_SZxbo@rW zFHFa8q~&Jg*Z7$o8TX9oMnliT#F=2hPS8U(L-mh0u&Rzn4+4EU>J={<0%l)*Tjowcy&)PlC7gs^+ zy&&p~pzTo|so%2p$@{UUGWc)RIl=CurUd`J37t<)Iyd-l4Rk*F9O}Pqrw0F>0Mq`| zw+(%LTl)Go^!1)e2kwK1Cy&Cl(9CG>T-w?A3t`&NqrN1v2HIXLqrN(FEwsJrVP5Lu zI2m+&uzz2u-G@Q*9}g|B3R?e%q4jtMrsc%r-A)Mg8Vv0ZdqB$@1x;Txkl(0n(sk44 zQ_2fV9fMV|ZZ*;OE1_ktj@0++(!6B#w2*I~>A~(%P`j5x?OYAD?^CF~BW8s7O$xS3 z3ck^-zG(%|5cwW!*onR$5cUe=;OuE zK3D=h2M>z0-xx0Ko6>aBe5CoxY^+C(BmyW4eP!_ zXrJl^?Tf#H{ouQBd)V@`5Wfrb__lBW90_-TxHX_5TX@H5S2Pgg*|=_Z8@UjX%QS@E)@X7Q@9uG%(vn9hC9Q3;1N*&oelM$-oq{;N843xlq z;U3WNU&C*}^>9Dfp=k*J5gdiS6z&gSiQyl>1JK)UH9h^E$NtcK_JpJ1vG5=`Erzdx z-$efc9t^uR3-Nb^W6%$Vhrm-}_yzD#^ab!R_%O8n3!6_*@3)k~!_g0eW8qoQ`z+sw z-siXz9tod@N5Mb9qv4luJlv*5@Xu~g|AgOr<9x`oXWe=BtTX4tR#U?7y%p@vbC5CK z_n`7oOy8P_ zcmINpw~{p>ylA^tynl@E@J#H?GtkAX!#XC-;+lRuWtGKvw?XAWXg_!gI(}b;=J!bq z@AA7aj!%P*<13)?uZ521pF+p;D^NSby0r)E){c#?TW81mmQ!D40yMu#(DJ87T5t8) zIo)`ME16$p!|*gh{8u0C+UfV9zWYMs9|z6<8fbmrgU(mY{t&`nhSqnxx=_#kpz*8T z4E3#n&R=gp=dZQU`mclOJoQ$X$9hAL4}__I((mKjGsm)aIE`8!nB^d^ER#zOaFQcTP8-yl9hpLmwJ${uS>ByYGO?gV4B-LTwrOLGa(H zQ2)(_hA)QtuMXNz{vN~Ie;EAN59+_Yq4CE;{d6(Ze>cbQx1jqCUqY|9wr2h4_0}$N zJ-MatMb<_?mQa6X5Y+aO(I2C7e$j^Voc^Es$^4blcZ0twp>iHHuS=n2l)V@HatPEf zr$NIng7(Afp?-WYhQA5*$LFvO?26yLJ{|^bqwxFfz4%SrE{#5~^I7!4T*i^I5Ngle zaa=8l^w{R=tbNMnj%#-f`AGYWT-iWh-9TTP)6G8{$9&u%)=$N9J+4T@Grc^HtLvds z1&x0nG~XU;gI^zp`t1Ygb$pArLwFx({~8PJUuVSd3!(k&8t8TXy)pbz=zigI(EAZ@ zLHD(`;`+eyIz#uXhQjV}40ONhRH)tQ_fsYoaoxjje+=*7bx%ESQAw|TO7;lnf@x{{YSVV_5oH$Zrx<&V$Ci9cstJ(6}|w@|&*C`-krsjq8YiiZ=QF zQYChj#CVrL<))}tLF-);^`b#-`Mv!P%(Lxz&aqw6dF+O#^2@zeTR>h)`OBf)YoPM! zZ$dsTu**7j-=P`zdO9VoK5km+_rPjMH-&g*t-^WzuTa^!b~3cRL}K6X`qO1;OrdP+1i9CjDCQeRIBxIJ{-jdRU9f z)W&h)zDGre>B;H*jVy}KrB5wL^=k-^uKf6hE|a&%9+ti*)>V+bi^o+Fn1# z3Z4&&)GykT`KP2L*mqd(;GavNe%Y!|@XI#PcG(S@F8p5D8T?*Y#m04AuC2=`_hTGt z+}X5^a#d`j1yElvg63HrsV#=ftSwPf-Fz}z4VxS7c&A^m_j72P9@__dcZcTPW{1#@ zAMQ9koqxZ8wr7ulp*?qlw&&r{_B;(*Rv5dTn>75cqy4y&y3Hez@oKPLSqUwFHM9V)$Lq^Y~9ApM<8< zN9H3vZ%gx6thdr7AhpMjp2rpKR6LI>`cLt`lVZIT_Zt-JtCXbwH~!NvYTEH4c4hX+ z*Ba<=<#g@TUhR|vBlVm5;7ILM-zic%)rUrAeaL+V!?jcH5(!dWI}KN=V!LlWDDLhWrmIP|Aop!GNsTHh8!!o1KP+Mc^X+jA_mJ+FkW%kF}< z=TcY*pN;w*rPI@O*+~%`WqVFf_l1sywo?ssKj;l;JC*GHLGyVz>g%H(=Cz}l*TytD zuho$6STZneJ$+aCJhI@YK~Do4{4>5mmR(G|bnHX>${?t3M@I5-!-&V(m`EOfj_=!-z&xOvD_r>tvK_xsV)Q<1;v`tz}3E$}%8Eq_F8f@$d zv-YjNC6xb1sC))3XZNa5&Nyh?kZ)V^ZL=ZY3i2)dc{siYR4$5o>QB~B^=Glqdp3Kh z$A@Q{@_P3nEt8VrBa*@Yg{9<{@GaL6~ zwiK@|@kS86+t-M{xqLPkt{Jlj%}D#jV^FDqw(m-4y46s7_ZmDST|XQNT|b-&T|dl$ z&Vjc>`^kOK_=|_kNawHR(D`c(bRPN?8o%RCA^z6T_}xoqr0a~K&~?T^&~?T{X#9(y z`Ckr=zyHt~>H6bD==$OU==x(JH2y=-_>V&4pD}Dkx*oY4x<7O~bp7!(H2!L6{5oj- zpX@v%U6;HBJEOk?yTF3sA^x_|_}fF{{|nkb2ktT>?Vo!?`{z;6b?N<4UlEV5hdv)w zIATV+P8|xp=Xwxyoq8hd1!qC+y8&9>Ezt7D>^dVUffHeGI1BcHH^8+1(D;u+{ncf! z8R`0K2z32*5VYKh(Daj`>1v_*G~0VdI-cf1*Jlqz{Z;5X?XPe**k+#@>HWIxp!e(c zhUR+=G~W}U>Zk(9x~a9=nE z8vonS_+d`po;kf_lR3SbIsIee8K;)HL0JPGyXzv;!1&L2esoN)-@j_=^4~TTGR39FX=jUL@nEK}OHQeKhw7g6=tY&=hL$hPT{L~tnraiPSYoYT{@v%Wa z2|90_3bpBD==?DHxG+DQ0u8?s7QtUY=Yvbm+Lg z1Zs1`-(y%!`zRIT!})v$RBEE$@O{3?K4INc9@jl3$Aol8K;`VHcOTT8{m$-5t0u)s z)5@?vHGs79h@%~~H5=C=rmO23>>JiC_-_)_f0w}2?k&8pt(<%>A#$4U?zY9IT+zahD%VT&gw7;x_o+pw&h4R9l;^yC1KNH_(B;>I7)` zQ_!+HHx1|YzR>gep3pMGzSAC!?ip86*Qar=@v3M?WpQlJrIBf1{AWBrYTt5>OY4;O z0}n*W$NOt8p7FoT>03(I2A?|qyGEL|?WvfL(j{QC<(ppde6D2aJfAC@D?dxuCq&zj z&hxYKRp~r0D_MD-f0eIF=XqAi(hUphSEloPsbuLqPbyzkp65X&OIMa^n@_j7{G6Y+ zqn)yIivF`-d^6Jg)yG7dPc{~${Uy^mluGHxVSFrr%A?S9zlP>_>R-b?+1pV4UFbMy zy*}vYe-ie!=0Vr3_d?@644pq#LeDpAWBBJ#yPN$j?0=Pi7M{2H4LpeOdT9MR|2;f! z(-&HwQScBr9v%v3!o%Q=upB-Ft>2d3!?eOVhsqhRkny4PjP$eNGLuZ#9|MTzd3JcD zak9M{k1NgxdCAh7PSFoa7T@_aFAd{o<1mY#jl(QW7T@+L%h{EU!z^7k4jZP+?CKp4 zWbwDlB1UHAWbykqh@XwaELj%6q3(KN40gKS9SFIjugm=S!(*5sEPwhM7{psm?`8&{gVjk4KC9n)W1Fg>oP(SqhAne0F0iCx# zg*(H-55qp}nb7NiS5B9Eu`r+`ugy-ib zLjAA|9spm22g0}DXxJpqBi(oMw?!M}Q z@%tk5_$#n0`~ILLcWBgq-OBDuhDHCCavo6jgyuIII`58))K0_mlGV$2 z6<;IX=F%I!Ie*l}d3dLP1b^%ajb8yR_nd!*_2$*kbyYPqyzl41UuQzw^M}yz*I^<2 zC$yc4S;u+)7!=oa-FIl2v~RL!lKzr*#a87_>Ga;~E5lbWQ?PX|;hI1h1hr)(H1AQ7 zTk@6h^OE^+OW~XIjrq)O8`g_2LFISQyxxV{bacCLeS8+wKUYJ;cWfW7+eX0-=o6uS zxfE(sc<=PCjrN;K_~JGSF>qZ(GKx>+K%!V7N1MeR?po{#&{ZoXa@Ot^>>QzcL}x&!(4| zd|h3CP9mSIUH&KOr~U`&EoV0I9fwyz_k$KhT6VVn%*JW9{xqG^D`3O_te&nv7Lkv% zADOSxFCZHV(7=vT+zzx+pZlds zmY@5fdCBave%5o}NYktTC+pAZIREe4A&jp>pylpR6!s@Zz&7ZILc^Cs=i6UHue08X z;d^%s`+K9Ib{z?=@0jASUwu9tf_^(D8R4)NkFlZ^pBWos%{nH%p&)T*{a_kK-Pz zdMb>m#ZaB#l=`%AyO4eYRDKNg$FHM4tZz8)j)SJ{KA7htn{2!By~q_?@r&tUZBa*= zZ<5w{HL=W<4a&3(^IuK4)CS`lo~Pk?nH|f28Y&+`)BmhrSPvxIhyAHOP&uxD*pE6F zns4~sgI)Q4!;qwNJBZ zJX;53;oA8b`Ptu^QE&GHhCMwmuwxz z;hoU@ABC3pG}Mmgq4w4F2HHK-WdDLH)5`?{GhDEYu&Bun+uU)bE6j>t~?j`nS+_{siiu zBm0E=XA`0IodWgK^KbxM4V|Yyg!-+?F$KvnYYURLd{3$EFn^_{MR|IUe|@W@bj|eS zUH%Go3eQsJ^(GSvk_kNb+ks~&JMipphhc3ho3v?>v>6-UYrqvi`YiDJ_DS=#ZIim! zrYHY=o$pkUSJ8H@`R-9?zI#;6caJ(I9bQhKZBL)OD2?Ny?9GK($-EcoXYG}l{yP+YvX;FHSxKUb&Wh#?L7%dJ`Wa~zs=eir) zpEh5locnGPbrWi1b-X{d_3>dmu0J8n^X`}q{~Ac>kI4J*S4)`UD>Ll zAng;iu}_r$Y-9eGF#$c3tlY-*ypIa64)wYLD%;Er{#bKOsP}u&`Sc&qJj3tEhwor? zo09&9d~N%hw&Aze`A&Mtyy?lE{0$fu#zHS3 z+i>+vsw;xuet%-{XUlJg@qQ$YQfAzmhXTJ_kbO^2wpSu7}3&KCBhb8tu&Y7YD`Pk=UvtTOU+XhU3?GC9$sz zip+dD65Vk-Dl!Yt+hO`FJT-!UC0B*=&w|PW&^CG$>ep2zUAYxg4hR z15_S|_PgIf%M10|hI$qMTfG)U-y1K9^=TVvUTL@=kgOh={q=J~{-<9N$~_lq_p?_9 z`+fzr?;U79MccMYI&b>B)#)?$wqZ?d!`eqe|6K#kYh5HCH;8ptGTV%om&VpG`Qx6e zmCdCu42L%yw+*bb_pK+7nHmT>~Kj5DF@ge#!y`a9zB2cYqvg{})$L2U@Xtv?b{RDUgtsE_X?;TO?tLXddA-=>B;xVdXDW@ z-=(g&wqs3UW!Q^2u+j6tNc`Q0g3Y6h=V2t-rZNUyo5n*$I*#(b$j6_^amP_*j4!K9XK1>&lf=3;6>;h_BK?C4-MBHB~Tv~ z92WKi4ubZ#6QSXAq4Ua0Xun$Qe*PX*zWK8-o+iRArJobiCj&w`dqCwz=y+Tb z!;1#ANd^ob#CPBN{M$Oyb4_)emnu2WS)OeqXGMJubY7YdZI`O3XYrmycV2oCI!0cL z^tj>D@Ga@iV{eg8HWuITkK*xvZXq7glJe_<-+Epj{5crvj{~9g>UKkzk9L5D?*|Q^ z1g+?-OXh z?ewGY9KjASwFeq+G&J5J(EfJ@^!oQ=XuO-C@v5Nlo`=r2Z$RhS_0V~?!;N8{-4U8@ z6g1sI&~)X{ad1l1FMy7Rew+uLhs$7BcpUURI~|(OTxdQ;{oC-~+HH7mZO^3F@U6L? z=@Qme~W-%6_NHA<4Z*vKhw*X1v{UE z%4^X0e}?AM-}=_xFk)5f2W3gcAOUM+#l+{tD*ACsBi9lD>I`#rSUqg5-L|lJ-lPD zUD9@J*mKcmRiv?u*?iwenG5w%6|~K(p<}-WI`(U!W4{hM_UmD~_FA&>UY}z}F}!Uq zJX=qv2l-c99_sgZn9AXy-YubJw}F=30a|t^XxUw%W%q!VQ39Q3j*a@ap#Ael(7F|+ z*ZGA>m$CnToxdX1zXUs#QfU3lpf;34ZK#0SPzkkRHq?f>P#dZu9b5VOFV2NGtbcX1 z?=7gj2QB+!XxV>?UJF{hLF}ZUrs72wMMfQ9lM+|AkTSd1UlM3BPN{b#eOs z(J8I!c-wFK`_T2#2Q}EL)I#m3gW6FKwIg9)NIMFlJ}80OQ3|!AEHay4%3`_GpzU93m*@@A#>=WhFl{#+QZ zC3?ndhyhX0&w-Yi*~-VH>Y!IM^ z%&xL%*X(G=Rne{mk=kKdiyE<0UwC}>&qDsULgfx%BDCw-+@0XsDg@pmyF0 z&8r6L*FQx4Z!opHdqGk(CH?kvjeR4teNwbNiPzk18K}Gfwd;)2 zgT1#x{aFpQ^Vd*2>!aS1{g>3PtqYQl5AlBLx=r6-J2%=@&pyBMIW+$QzJHYZCHl0u zfnI{H3{e5-R?||C>yQuH9V_2V$h5GqqX#ST#`|qt$ zUkW$){h@#N`_fpy+Sn)7#J;jF*JsEs74z|f{!_GbeJ-AQ!n#1o*V}m_t9SL!gTG&c z%5S0RiXIK^bud()1+CYLs26Z4|7_^ocT3bCfoZ+nljnY3r-wG4 z72Qd59M{FVm&NZHj)CSqK2n?2CpOS4WBhy_v$m~_-#_esYpCBqnC1y>&r_iN@q01+ z6==J5ye-80CUpFq39bKZXx>%O`ac=<-@vqfy;>)|_^xvgek-QKyp8?W`V|}y=BaAt zOyj0)a6(8o87fD9E9SE;@BQYtVjAwtl#+*1d2xuh_a!0SA<#Szk9tMai*{_C>^Qtj zvh72gzLiFM#%K1#F}*A|w)IWkpJ}1|t3N-K(|1-V_vcW5j=3QC^JJ($FOB+5P^pFb z^)0BKMSWYd-`^?eG_ON_ySg^Dt>WyXU9+QIH90?7hW2E3WvrYS^6PeTC}$!x?%B{d z7eej15nBEu@%WQaJHmTR3zC|XXkYSLIO3^vjhffPyP&t*^tX27_jm7(wpPY*HVaz* z9BBFTq2*UW%U=u~uhu2crMYnXmB$@Vd1mq5!!X?ScAn<1c)g=ou9DqX)gDFrlr8}q z{_77F`}cC}$;Ob^`Ih5#ex8{H}2P&{$tV)g#Uu- zaxl~m*_!7<^LiI__Z#}aVQ>iC8SWl+K5lpp%XEtQDw&;M*FN)|@V}Jrg)v|2c`)Tj z>y_18YPUQrQv1~pkF*}@M?~sx^=vGmrn>EJxc*WsNBM94V;=SKdhpUG!}z=oTK*rP z_WT)Y=SekTd{#p1Rq<4qcQ1qLHPHF@t*9?~I?Tf_LdVN%(DCvo==rDVGvWNRE%bPQ zXg-6W{d${c!#?;-X#c(x+P|-b-Y_z~<4+x&vxS%Uqc$4jB* zl*4v#0!;TSp!*eqqW#$OKY=Wjy&KKQxtoc2Dj6#ZM!@bjSUb3e4b4qp+T z2QPg-e1GC(Xus_GLU=xW3{3x8Zj1lBiz=?RV91Ec{i}{{-!STdfSgbJ_>0?*@;Aqv28T+wf?34jd1^3+&cw^Pm?; zIyO9Bf^M6h5W`Q0w&`?en=XlZ4eW@%5_W=$Tpjhb(7Crh()`u)bgxxCn|m{6@$8!( z&*t8Y+3}3Fk@1{+^Yr-VvHXHZgFPPKA;#OW0gYcwJo}*WhD7evfZ6e^{GH?RjE0xw z%FE)(K@Gx3MtypN@Fh82ziN-HAzZ&Jwu@rBDYmm>yDRnschu zy_TnLdD8M^Hb>hp)w4O-KCj+zZayxCXLEFNdl(nrfXac;G}lA(x(S;1?a;FBf|mUt z)Rsq}wmk~9`SnF%ejI#9(9eg?qt8eEm(cli4Rk&KQ4H^KXWaLL&Tr>LeI_*D*-+oy z2pt=@!6H~6^-tpQFQIK#cvsk$-2=McdMmU~{0zF^+VSq7_kr%aj)?j==zY#JqFx0Z zJ4>Kr<~iuR{%7dC-twMsycnAQ5zw*pZRi*}2bRDeK+;_*kI^ZZNDbj|M#^Is?E z*y;oO!M)-3@Ys0#RA~HbVSo5`)JNSHexGI@bj;lh9dp&t^S~=`5d2#_{v|Y@-iyO| zpaMDur$Wcz<P<~N%%eRVel}*4~CAt6X95RZq%=YN1)#b$H9A`=bfja=bK+c z$KIdeG4StEFJk}aSo9vyF*qDffJa3A40t^Hr7%5DZQX+JsTcYVwhhk{eHPD8W%0V| z6zEu;66ttXWbO2j&tIX^e?}PBrODn`c48KZ54*gYN`;9)sFb51nU<&kOTR zDKyLx*+++P-wReemM5_)+f}qJZ!vY@V-xZj9(J{zH971r)TX@+${WNR(yV@;^1I+?a5)kujwgaKXGT6jti(C8~!fF zoS3dOru#Nju7##s62rrN#=+cY9K?Obf!t@>ev|u*)#PLTvwsoBP?`z3*L{+(n<4GEJv~2yl9`g@r-XgX*{XOd_2RplwX$4 zcuM)T!OyosW#Ig(F)5N6>Xr(RCsG2W}RA(PpFHz+d+JXn8&S_HdgG?@C%7`^4Pkw~!O}ieOcI{&IPIF7rKTKWiELUB|4y zb>KInr!-CHXI@I5l-wQcI0z~yN4=<5L3rMJTqmBz?3jLU!#%wLq|xs3XG7T&B28KY+OcqIDCZEUoCvk=xM`u?Wr`RzI>^oz5g{o*QUzql8s;{clfub}@%%8B z{%AeVjr}y8=ht@Udko#EZ&&(sm-JcPtWTGb$0l+`DDM%dtbp3J&-X+7oC$58E1}^x zK7v4Xw{Fq5bB4XuoOwomdZO{dR)Z?-1zmGqU47S|mOA zeoI&GrT85=`_(Kr92)w4+4PYA1yH#LntvDkt$%lg z`gc4``$b>AXEL=b@A~V)I~_XnzJlVUZIg~k^SUs1l#;LUlGvZyHqx)j?%(E$!b?N` zf4nT%@d?z9XMM}mr&{S-BAAd zP(Lh$mj5_R%Wq^pnoZd?7l-42gUX5IXFFXI^WWt6VdGl&Zqk)s5Yl}QDu02d>v-Yj z%c~__<*ac0PN)>cbi-nPjg|Kq=?X6j=?;L(PoU+!9K#z+S8^EFO|wI~F0p)lwo(WEPl^*9A8zlNs!cnkHbB%Qvlr46&TleS%bv~zpxQSOB1_gu6uJg2%dY* z^f}c9G4JHLaE@yW?Qh+n`SgX3t5RtD?+I=H(UICbvC!*}n_+kOSPV~Y4%Z=_VK2gW zfyS@DC44WuuqymMLn(A$a4d8`uo7CYbbPUfY4>r9%H|c#$~|Az#J)V6wpFf*%zR;3 z=99TGpE{@vzBTw`KGYu%L**%`Ki-0AxxSm0_Z)TOJx9gEJMeyoaIRcO*-HK75O2tt zA^l^}{C)@1^yz!j`tkmrzC6FO9p4r2xp7>UhjT|^c^L0ian4>0ZL6iwyp~61ZBEbz zu?&?h^#za5{Z6pwL#Q-AFVw#$w2X_O?a}o7Q2!EW_#kNekAb%TWaxG4RnW5i{#~ag z-IA7d%`2N#Z2a!~Nb2+`@r+Xy+huXCeK?dXZJ;l2px5Sf^D&LGhH!0I7uj$O7{~Zo zxO#G1uy+(xo`(ADH_&?iEryrf9{g|wv>%)cm6g!(Q3qXbC5uA%zR-2mkx)NPi{Xz! zZQS9GaD6`&y5BJ$dR>1TR33m{*RO=y9Ime#U$a-lev+&R{k?5uzQ3DiH^Q~OZ)E0& ze7uJKsgLCkxii=`ADYK2(0cz1TJLS|3iaIsD&L3t@nNVRUyb2^g!Y#&VOp;Net)7D z{l812?{}LM>sAx@7*;~_T@B55EllSNs9m2!?J8hwNb6>}G@dk_+}zmsPt%dzMma0g z>q@BH3oYkCXt_(Ec66!?e(V7)Z#$?TpN96EI%vQ72h?B1=Y)PU1hzrn587{zh4!17 zP=8(m-508Y_Mb;#AzTI1`a|!VeFmMUJ5CAn^bXK`_J`&Z-sKhExn2I&jO66Ce82y$ zW$7MhUJvi%=*%<0#k`NBV^WxV4$rx`n)Xx5e;e|hzb5#l2I`mQzYBgTf!en_wEXZs zj)Qm~$KD&~#mcRCvX3L{eBQM&yi4HkAmh|9+~xl2{}FM3;H_W zCmf^dinJVAxGLCp#jBwnA41D4_)VxsFKC%3L;Kx_(DrTiS_nT9+Rnd+w)6TJe(dVd z-ix8_{S4HGtzQrAJrvsBW1#JHI@G2O&*Q!P@6Y2Uhlle=CH2khul!R;w+1SIdMDW5 z?A@4O@776g+i}XjKTkOz=2y@Bk>w{pN7s)9l#}^0&76NFzYh660F~mGLwTjpwC6z6 z`~d2=r7)de;_-jmH^+v&RQ)RC^E0Tt4sDN5qrPoz$bUFg?uVB1BDDOlU*5|1*QM9G zGqe1E8IBKu%05xg-4>z8Unf(0WaV$^%e8J`3%CtDyBw_j%X0NUG>RW8Pp)Pl)ex z%jw}e9=x+Y_Z^S==$DF>A)hOtawpWD7ohg^dMO;w`>ESlt^=e0)#<9!fx zydMBVer*_M{gckD`!>9}F+o9ly(D&xzSK}{)`swb-B{1`!{#I-UC1Vzz z#gjFpbADeLsecWZU#A_2no4c-!~etDyMTE$wg3NnI!-fF^O=q_9Va?c8VM6&oYUhl z5<(9np$GBNGnl3@j)gFC3SkgJ7zsHKLWn-%A)YW2@(3d#gx~AE?|V0Urit(Mzy9mG zKJ%J;?X~W8uj5{O?X~xQ<2kF3?Vh*#7z0%wk3i{tqQ=fADX96wz!&U%vM}6HKc|dL^R9E;6<=)ey2&G*k^ec!x>mgic7<0v zbzE}9TN?S_8GpA1_UL$&pZ+dK^O1orM{NQz46l4CULvh5Y?q6n+#gV3 z_i0uZ*8hD__4@{t|0huGai8X8Vf#D@%6}$Q|NI`Re|Bi$dZ27M5X#1jq3YrWsCIN_ z%d&7@at+kHp%er6dvapPghuVi#;c}<+vhe=og-~U3bY@x51zrRtU+VIe zF3*BmKUm;$W>#5PH=UvC;%KP-S?@#b&-&T@>$1zjeOlQG3wJlveb4t{FIeaPEpp0& zeB>QqZ+IY--bqk(_cq)b)T(fO9li$#z^|a{uvv$)a6eXW zD7g@B3y+3_U^yHNZ-%Pd`1!MpepT|PjaUDMa@RuD+db}|(>E*V%e$$1vv%Kud!>2I z;o2^5Q^)mpjm}Y3=#Z=S@M8jNFXN%ovu}xZ3_8x*{9B?+h+Db6g)19s@!o<;zYd1+ zx6cf=A2yu##uYUA-ncqXzoMgsPwQlQUWU^1Db#qiOJ{4ZM??7^(8b#8sZj3GuGSvg zb+dL>0OihsYL5><&6A&pYL9u{%fhi?IMldy6jZoldz6LaTLqL`+_Nma9%`O%_1G86 z{nXpq~HHnYtvf>!?{%M7(3qxUiJSwDOcs-3Qa zN-u4_op>tTDE}P{Ot6 zo%}YO@p{;{8_0Prf;_HQTJr3F^@ekT7x*O?J{8z=R_#LhSN!VEv-gyI$JgiT4JZ|=O-)d}i-o^?SJQLT2-EW@4C^z|Ol#H!IyV#$uWmQ<@435$KMaQ9V*7N) z5-wF@{=Y!ELytGv-Wk`(F5apjyDHo+=}WxXaP6QwvRu(WP0t?3TL0boIJ37HD&DP7 z?o0O%+zxwh`I!yN!_%Edx|5mwD1PPAhUv~h);KZGDcuSu%3pIUQ7-Zq7ZP6cn;NIW z$$u%b&O0ld@|UYFHv1nx)bcfaw4L9U9A@*aFQEEIi!l~%Ae6fm%KvHipK`dJ?{0>g zf87Ih9(w^Q{W(Y2dG8LW^WJku+IepYl%C~K;cQ)P4C@r5nrw?H%4{z(uCNL6BG(;C zj`BJHS#!!^P;<#5sB4`AT~;_9kHU||Uu8A{%Jw9b?bBRVI2{-B_cJ@U+uzEe5X$~j zU4C<bFFwfTwR526vrj?Q?{X+Tha7C>n|+9t z?`$X=mqOL+cGRQf;ZWs!7}Pb#cql#PPSlMQI%WyB!2Ff-V zXW?FiazDHLSMlvD{zw{<#uHhCv0<9ql{(sk+Kcs!CgvZszR7B@n< z%CQ#jcPO{>Q6}F2RnBj^Z0lKjY;ip+iT-FktM(1ky%tKx2B-(^tOD_=tCOzW7=xrOt~7{*EV@3I#> znbVc z%Yt?Mf=f9!$)5G>(e(Yx^3Q&VHmqalYb?j(<_&DYGY1`lHtU*&@5U}6ACqMyuILdj zFDSR;0+Z9SId5_<&mNs=?-r%ZE8i#!Ug1|6rb#Vs=0`h>g-IKk9*msOhIjI2@=jjU z6~F$OfgJ^2-g|lZ&vH3DKl5GR{HM!;-T4*fyh=WmW+T6@e1D?ReBQ^N7!JE*XKm!D$KPjY7q{|1!%qR{m0Gki)ouAB(vCPCSI zDg3|aFLV9X>nwknKUg^|fEu^5*IPLhK)FIF{fEN;i~g!ueWWNCxs}d%Jyh>v_V(D- z@-cFRmDjGjSw6=>jh|;hrJJ)=I`1pa4cf13xL&%XQC$?jUtbrBr}V{f_{-IuZ2I<^ zXz5i$<@+tDaJ!vi<@o@V|7%eGIpO;({9F}#AB)D#I&4V%V&!u^RK3sp)ynfV7{(9p zPvr)Q<(uE1$~~%Kd#e1dJ`ah$mj3NfdS~`CyB>tnn^({}=$tkzV7;WleuW}*&LV=s zq?TLW|A3Mc@7VdRJ5(7DaCsPvT)~HC_lHpK7pU~N|F7li5U9A5pxVb{E?n>Ine3A<5;yRv4zQxMu)Z1+SbVrz6xE_PebgG#T`ZN3dEz5Aikd)(z0pB77>bGhxuD)9Iv zq^ESF@#{3?B0oQE)y3=_2W5XbRM@m!E3ZXR{_jEg+kM;Ypw$AqZ#$MW%3iTbVhcIL7wTm0m`lHYUyo9y6Pu~ zK=rc|-JYiIYtHj>sYqG-n+fx$TKOIX<&J^M$3pkF{iN-f+qMl_`F`1y>&btwzI^i! zHv9es<$4}s_U!?cx3mM&g9DhKbY#xekvUg5PyUO0{~Nq~lN-&xhoIbRE;pVx=O1JB zQFn!fZ!^=v?*Ns4e111lVW*jYdni}va&NugiM5$-tjn}#?WQgB#Fk^ygQAsX!IAt@ zv!7$WN6+GT!10Fu)CB$w{elK^d|sBsj+B@4M_&GQF30ViO}HYrZ#0xEbGh*xx`wct zL+4jp{@#Id9hgUl1TpV?c=?m}0vv1P(nS|f(&>WzIbY*XHne~Zj zQ0dKtO7C{4ezgE9y_ccVTLGp2Yp5~(52$fBhd!mXg+5Sg4?8=LfO3h+W=|268v~Wz z@lffV50&0^Q0Y}erS}9>dTXK5`voe!R{yqjgcG3BTL5X9!3QokFSYfAUQow}K;<{5 zPb=PE#oFWO_Q{-*M6t?ZhL=UfTRuKO*)|8twuhl?dlAaE|3KNc2FkYIploaBWzid| zEQUd)y+15UTKZ=|xr?CEsDw)6A*eK7f=c5Ps5HKSN+b77%YR>}{11gn<07au-h;~j zw=Vwy!~Evb9!F=^wn?U!wC2tH%5Syjx6;=H=RnyqAIg^Jp=?{(5?=CWXx?gPJ552_X=Pxz+H7NIk z%er6JBP}P$smrcyo64+-G)r&rPwPXew`1pnTTIW-P;T_?mhTc6)`!NSRc6-!;un?J zd15-03+DrVyqM#a$Jz1EVR&5Y#LMk@&N7Zy%{RTDL%APa&I$KD_h8?1clJGZW8Wvw z%hYAmrl(rfM9-jAx&5`+FINXuM*(wG)lmY<=6qOlm!%WTwRBoQg-wSFyB}12UIbO2 zuij(fZQYna3~Le8{D<=lzbH%t*~8Rb$^Esf>ccdUJxo4f z4&oQ-iOV)G*@byYL4A27>*pm)D3fwBrhHd(o|pUB&-ZmudEMwt_iML~&H}$?Q=F>f zt={$;Z}oOORC&#Y(lHOJyxw(rEmXM;IlZ zI`yF0rZ;cfR^0F7IaZ$GQ!COMPZ4FNxroxOd+0X)3xWy{f8I@&pVy#{$LB>8i5EHL zRlk`xFA43N(R^8WAGwk;D#X9U^-Y3uXS-bH@~wnZ{3pCj^D6b4|V@xE|fhrQ1&c`+OPGa%gvH@yc1Nu^?jZ`yhpwx z&nVWf0NJ(ABFgr1;woG**F0iW4s|Uo{%$QTU!7ZzD>QWoz`MU2Qn+Y1Pxt{uc^o$^`odh z{BT(3>TfEe0kDRD=-T=Au~?~PFIpf%QiM}2Mmb3Ro2c@@f)ePiLJL+%5p zbi#H!+S;w`%^S>nXVP{HqSYhiBmKDgZ%7w;{4=5QbrDoPu6Ewy{`Wega?fAo_CmS5 z&&=LpsQ9Nr*?YIk&qLYQY_-K(@wtsR{m8G{|L&guzq(&rfZfqGFi}E#3uq52+Y!#F z{3AOH{;>3Jg9>-jpFSSaZe-t`Q2zHp+4s7)r@U>`gHG$h_u8i7Wj7WZ$_b~kDv7nl z5^rz!LAhPqnBGI7!uHnvk=5Me=bnA?pHqS|eq)!u8J^qYa$Zqe=H9#V9kE@4{_I=o znl`k)Ef)J)05)8R(b8MtYp*k7Yp_u}lpV8U{_59qil_3?IY!iY9+j7l%T@I^yW0)0 z{B(sXr=d{#_l7FJ@h+bZ<*J~{vHL)i?}bX|aj0|_Lyc>nxxCho=WOHswRQ8L^=xr>=b0m*J9P(~v< zg2p;zM_gxCiy(_N(U#n+s(807SjMkp!b`TEfxqrmHS`Y}$ayF^K4wqGVQpG;5gO*4`U5*q}BjAp1HhrZQ98h!O8fK zY3!fO2$H2a!9NL`n9w0ekS=TcwV_=+Q?!{~+*hwG<=lAIlwgh96_?Z6vFWt)F*OIzLiJ3boAH&C8TO~NwEkBvw9KiRmq1j?Ph z!N$MoP~~gulsQ5Aa(g~Bzr^P+=iMBJuN`dl&~`hkmr__CFC*X`IZ0j9jr4f6k5`59 zs$Vkw|Alg&x}26lpXHt-bE>4Bf4QeRIWw6Sqx;@fw3m(iQls=74<*8w(a?``MJ!C(yo_KT-?qJLb=%-J zuF=vbht~%MdHq}Q-ilr}fARaxHQ2w3G($JW@_RCr+v9L6=cAzP$=gQH`{oCY@1Lzf z$2!6*Ovy(3W@cEgLo8k`lv_|>`d)_$Yx_8|S)bNgH{bS}#rNo%urYCb{kOCWPOYD_ zCjVi2mP5G*4>bL+Lg^3hSMa`$Uc9fP!-8*-K^=t`Gw@Z&BXW?;LIY>3b;m_Axf^_!@?GY}cCW$-cZ7sb^qUlr~42;pLw{&cdAz<@z)4 zQoi?uVf-fQuG-@&e3j3$n|*8T|0AgQKf^7>UlEI6G1Sso1?8UI!P0*pZYh2+zP^3e zdAl3Ey~W=LJxc#r*Q@U^4JsYXx0nWT{j@FXRRS)XN zqWs6i>PhWD{?U9eH-Vb0%4R4~7bN98@2h4V8~qp!CJpBg#ml+Sg5OzGnA?N@kV?H}G4s;E8aK z8kh5S%nY_3vlaclH+9rCsQ;3Nwc{#uzDRnNr&xNcpxouBnw)~N?{k;)w$}R@+lBYw zG(RXf^?_iNBFwk)*%`{6?egEvFUAr-nqL&Jw6Yrqm3Os))LW)^#4^*n2+E$3DU**| zZuLI}Do$D}uD543E3kBjGq2gM{`w|azphw8y5mu#IEjxe-R@4MD}S+igX!)4i>0>$ zD*eYcTDr@i>g!9WIJVDp%jxY$$yrf5eCy!}>w=?%{uiD!b;i2f1u#)DFAF~pxiM~^*9NtT~xaN?NEK=5vX?YuKQp4gtd$Nq2|M%K;_{(sQGZg zBCG%1q5Q`~J@hTmnlmc5s6PIR zD!Uo6c#^L}R^F?i@;o0Z&x@SWCx21lM8#{I4qltpU+|9Q?*u4!1ytOY?^}QF233C} zpvqxSsN*MoX#ILB)bTk`$M1kT{_;mw&;Nxwz7gtp+Q)Xh@26J(yFwiw2X*{-sQ8zx zwsvp})bVGaj=unP{9~x|eAXJ1r$M!oSy160g$lpOj~~9)+Rt}TWi{X%Yd3{ZvxZa($Uv5wK%N4O-ZkHgwUv4D2Uqp%0uk>@? z94Ni>p!B}y@*1ddcs*43sBM(ADG%j`q1^LO@$b$k592R}vTGw${A)AI!~VMvN*$ImpvI8XTrPu=OZ;Kw zw$qP*(?KIS`ojlFNB#SG1i#^`ep59$idV||gzawMw)#jUQE+qa?RYuGu zZ?yE*L%EFEmj9kmK@WC$5mdWe4pl#EVQ6QV-hNG{S3-LF=6l=~&#`z*q1-B{`uhng zXxCd!J{u~%N~rYihkuve3{Owtk{|dv0ZRW2m(>q-JnE16H<{kKQ0^(H@NYrc^QFs& z-fZ@q3T4kFPgDRg4 z$}Q|KQ0dtH^la{@w_}|(ysx(De)|Bqgi2Fo znezG>e4FXr9ZK)XE>DKC|0)>T*|jClj!X#Jq>T@nC4C?rYa=z6c&brfuDe*xiBUJf65xqP>UavAHoD_qYml#kpLFQ<5YRuDGua%k)2 z(#z#M+Hczn!{^2IJVSWS(7pFUbZuI@VDGf*cpiF=#$R?P{F*4Z!}2i@%H{QI5$@?` zk5?EcMVwRcPu^+aUV?Imc{|M8p$+Te{kSLIbF+O08;JWq!YaMsV;dW?oY6R5GOi$&AvmS+)S5kUNw+;RnI1`M@ABV72#!L zit7YXwpI9i^#dq(XPx!$r=Y@U9@~9FZ^n&$#tq&P&bXm6PNHwQ>nn=sEAi{xj3uV; zNT~7ROc?5m%H8W~HhNT7$pv=&4JcRVa^5z4=Qw^potjtrHN=}txau9Oyi&ugTz`a0 zC%m6f+A64_|9!~Mp2=W@YUF3-He`$Q(KVzK%}0x3by}Be>D-lP>HgN;>ajx)ufLu2 z9>^`PQza(XuT#}hesWP;S?lr!r;aI4qUMy5Q+WA{y7m$4yxwmA-pX;mbyogkq1^jW z-;=Y z?dQ=cw_7?dKpoHP-HQ7v9fI^)du~pBm?jnU*7t4JCxQ;|@?GG??SmHV>8aSJJb0d8 z-Sc*TGcM=#Z5ecak#E4Ba*?S@5vbB>PX(!t>*}qE2|6Vk7bT^{)p~y~YH#i60jRLAL)Fu$4kpiss;5C6P2Q!Gg?|t#+-p$rK8FgI*4gA9P_9Q8 zyKdPL%7(nKeK!66Z1t}h$2_D;MpncdWm1v@W*YfJ0{!Od^T(I?Ha7juZY@Qv?q@FkIEncRVMjRWl;b%2Q7l? zKZikGlb!^1Ej9(J&Ci5t^S48-n=F7@8+aK;u40B^K3mLhx4lB?$P-*d@sG81+Ra{WAJa@r{w3! z`F`GPeu3GQ2j%X8vhPWkKY^;RynY$<<*q@Obq(+Lsz2$Df$gj6+wl6q-$yZkbh~;R zsT+T5s4r^Ub(N<7_G>Kt$F4Pd-hyGe%ySa#_l}>@H>DZ2&B64wruQxslWsFlH{Zvb zK~VKj2$j!$obkSgci0zI5Av5CVl;N@c!AGfFNSj0KR=-K8`n?KD zZyi+q{t2b`@R?S>6QI&dJ2xXZcYUkitktc9)45;Gd;avSNJ01<>x4|Mi`sCm<=O1f zt-^g0W#m<^5QugLbxYcRbYbr=aXw=5qf+I}eP2I({8g{oLnr^WnBWl?!z|3DtftarqOdcD&x@ z19vG8+w(Z6@Qtq_YRR+aV|BaR@%#5Md%uDTZ}TypJ=nE8_=I0+g7=wfPaf?(gZAE% z{bln1iQk%6?L6IBZV*?`AaKsEEG`cg@ynm<=k}PK!`Rl3{SaMeb*}4J+dh@3v7Ohd zqx7@Aj=Zc-bC$uls~BPSciPSJ^A=QohLKOTl@mO_S3#BkO)f8ma@wDq&$G?htd%w1 zpIm?q(OO%|(_QIo-2SWfvUI!dZFL-CC&j-)|oamlv*k71+9$?L^(Q&Nh~G zClguusP^=p*+ROBBGdO04BeiV?(tCRRzaov8I-=X%obcHk0$b%Oz1_`&avNMu8=UJo|Gtm1 z2>)aG)lFO&&Wqx5UZ3WyPjwBVHQx=Mw)B@AZ~Epyxkp|86Nc%H_k8TEcX{o~IN9`b zI{D{VTM5Qm_#2_zapO$S6sSDfc)MjiBVA9Ghd=3`rl-5xvyet@S$erp;RZsbH{AXAcKBKB{}lJX$o;Q#{~O)^4)?EtvUdfPTjl;gxPS9g%)c#^Jw2hq_jUgv?qB5od%OQZ z?tiTNAMgIBx_|Oi)7$v`FkAJH{-V>oT%g>JlT1$QnHBWpnyn|-Y(3dy+mk(rJ?$Ov zHDQ0IZ|7fB&bnzi&+I?FX>VXdzo0>woF<-8tnoHf>}_ZqRK6!VqxnXB{MCFWl1mAv z^I`?m{BEXG$K@|Z;Sq!CODumAF17q#3zgozP;K^esCMuN)cLu~bPKl&l%5Bn&dbk0 z)l=6Qc3wUVD*cn8t{?7(x_)>L>U!aQD0_Z|(lhC@^6(z9<<=V^Xr%WV8?D3f})4$0k8!Uv7Q=X6UCx{XP2ZIK;h z&a(ND`tTacUoKH7ekfH!%*e&I#jvzC4H64Fu0lB$(Y?dqnE*ay5%t5nLf2V zn9HvqWp+1|-EP7Mgbx~p|EuvQQD);$YE}KXE}K@myvDiS8GL5pvYffjKF$K?2I3!(gPh3dzBmYDx>Q2ymm{rV60-|02;KLl#;$2%~z^L6td2(^!) z8p?l-`=`B89`0+H0p(ub==ty4>}h@}L*;{!seLVLtM`E`JDn zBe#Cnj_(4uLO$8$o8i{Tue$sz?1S9@Kb}79i#*-sr(i$iFJ12XUU~Q)?W#RC=~<$NqHf z0cCAoV|AgAcln>%xDcHK2O;M_X7MhBayLP>r{(Vd5mY~1@BRgkdpfx-Sl{59&(}9f zNJB1lxgFmCw}Nm* z*IKwqQ0{z}ZSAowYmZq$+tF=mTPItUsBD5Mb}k4$x3cLD7?-&&ki=Tb}J% zv*+7xJd>2Qz^+1-hca|jK4jqzd)VSX2o?VesCHr3?X7}>S>?eI{Hk};dj+Uj?xV#0 z(hkkwU2qw}0bGmi$#qru%u)&ab$Op>C+zP;yXrKnU2Rq}vsmkVMWkWxPUz0N6T0#4 z1lAy%dUt}Cb2V*F?n7tP7QaB&xSrsgD@Oj^{T#e2)VO@2Q^zHr8Iut=xvE8$?^m9* z@>mU39&Mkp_Ph_2I|r(KRzjuwE7W;p>!0y+5&S z^t?`ZeOKr9S9smcfl6bZ%d)fD^ZzxJOMA}J?Ftok2dHspf0w5~*>@R~efIns&k3>T zN@bQ?ZvCj{F4r^H^bUp6HwG$R-u7+y#`M;FFL^7*f_&CLY zxus71FMly|aXG4!s18zhTY4wnV|G+R*-?G3m17F39jt-UWBK8^y3safPxSm$__&^e za;sbp+l|H(`XggOSO%5Ek*->|xfSg~PBv9NYU#WP<*rz0_IwCc&KsdzQ+gMnx9Wb6 z59OvmVDaCBioXHM*_uu3p!oUn;2eGvZ{itM{Nu8H$Ej_!W*)YgTDQH*ZJ+Nf^7F|_ zemyugn)KEI?-we}GB`J{`VU;04B-^Jx(KOSA1*3iB_;b+&T%&X#Zr&d9y z)#>c#;Jxpx>r`?Mx|3hU0^a+M&bS=k4^e1m%8qSx*G5?5VYSxc^hj$1_lM-g1@c-4{x>Z%SnZd92IoeZx_^szaAt-9A&p za0UBL4duO{;zjkBESehJ$SzwNZi-_z`!1?4tCjY~uJGXGIfdLM!E|IYn)+@}=QSU=&JmoY=*P7!%l{KOY#Uw3CT4h(1{qdIhT zoh{viyO{mwK$XuDsQ$FZ{qu6ChU4B5P}?&KAE4hUN4Z>8GFXbHFfW!#|1}e_w0L^-V0adRYclFX_WQop8Oxzf-@w ze!ZmNZ_HH3r&Q4w9>9l8ECMU>TP@m3N(vhp_XyNwmWaUueiP0vUemg`^4OXs1Z*y}%mJ#xE3*-`5D{nflSMf^%nXQ!bS z|2nAnDHx{TKQrjRx)d-L#1;H z)I72RYFv5(D%{&p`AO_(@pJT@xl-Qg&lnJYr+<1Ip!iXKXS;ua_xtV} zY+M)&Wq%RWxG)}u^FyfkZ$jm3mHW5&#m9|C*M%doL#|+@9Ulwj%0D(aEu&?Su~(~F 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

    S&bu{+8`*~L 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 -AonjM|rZK{Xr*J4+N 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

) : lseq
- requires |ts| > 1; - requires lHas(ts)[0]; -{ - var ts', t := LSeqGet(ts, 0); - var t' := add_leg(t); - LSeqUpdate(ts', 0, t') - // Sugar: ts[0 := add_leg(ts[0])] -} - diff --git a/linear-notes/yi-examples.txt b/linear-notes/yi-examples.txt deleted file mode 100644 index c8c43c60187..00000000000 --- a/linear-notes/yi-examples.txt +++ /dev/null @@ -1,191 +0,0 @@ -module eexample { - -datatype table = table(legs: int) - -/* - in the examples, we assume arguments are all linear - t is being used linearly in this example -*/ - -function method set_leg(t: table) : table -{ - t.(legs := 4) -} - -/* - maybe we allow the datatype update syntax to be linear as well - despite t being mentioned twice here? - but we need to make sure that the destination of the update must match the source of the update? -*/ - -function method add_leg(t: table) : table -{ - t.(legs := t.legs + 1) -} - -/* - in the above case we have a linear function that borrows and returns the same t - we want to extract the above as in-place-update, but should we return the pointer? - we can do this: - - void add_leg(shared_ptr
t) { - t->legs = t->legs + 1; - } - - it can also be extracted as: - - shared_ptr
add_leg(shared_ptr
t) { - t->legs = t->legs + 1; - return t; - } - - we can even extract add_leg as: - - shared_ptr
add_leg(shared_ptr
t) { - shared_ptr
t_ = make_shared
(*t); // use the copy constructor - t_->legs = t_->legs + 1; - return t_; - } - - but then this would just make a copy, and does not take advantage of the linearlity -*/ - -function method add_leg_copy(t: table) : table -{ - table(t.legs + 1) -} - -/* - in this case we have a linear function that borrows t, but does not return t. - instead, we get a "new" table back, so we want to extract it as: - - shared_ptr
add_leg_copy(shared_ptr
t) { - return make_shared
(t_->legs + 1); // use the table constructor - } -*/ - -/* - now maybe look at single level "nested" example, and how the extraction will workout -*/ - -datatype room = room(big_table: table, small_table: table) - -function method add_leg_big_table(r: room) : room -{ - r.(big_table := add_leg(r.big_table)) -} - -/* - using the second style, shold we be ignoring the return value from a linear function - since it borrows and returns the same thing? - - shared_ptr add_leg_big_table(shared_ptr r) { - shared_ptr
t_ = add_leg(r->big_table); - // t_ is just unused here? - return r; - } -*/ - -function method add_leg_big_table_bad(r: room) : room -{ - r.(big_table := add_leg(r.small_table)) -} - -/* - seems to me the above case should not be allowed - the destination of the update does not match the source of the update - we cannot extract this as an in place update for either tables -*/ - -function method add_leg_big_table_copy(r: room) : room -{ - r.(big_table := add_leg_copy(r.big_table)) -} - -/* - now in above case, we do want to reassign big_table: - - shared_ptr add_leg_big_table(shared_ptr r) { - shared_ptr
t = add_leg_copy(r->big_table); - r->big_table = t; - return r; - } - - so it seems like despite add_leg_copy and add_leg have the same signature - the extraction on the caller side might need to change - so the information needs to be carried somewhere -*/ - -/* - now maybe look at a sequence example, seems like it gets tricker -*/ - -function method add_leg_first_table_okay(ts: seq
) : seq
- requires |ts| > 1; -{ - ts[0 := add_leg(ts[0])] -} - -/* - we also want to extract the above as in-place-update - - shared_ptr>> add_leg_first_table(shared_ptr>> ts) { - shared_ptr
t = add_leg(ts[0]); - return ts; - } - - for the extraction to work, we have to disallow different indicies being passed in. - the following cannot be compiled as an in place update - again, the destination of the update does not match the source of the update - maybe we just use a separate syntactic construct for in-place, linear update? -*/ - -function method add_leg_first_table_bad(ts: seq
) : seq
- requires |ts| > 1; -{ - ts[1 := add_leg(ts[0])] -} - -/* - conceptually, this one should be okay, since a new copy is returned -*/ - -function method add_leg_first_table_maybe_okay(ts: seq
) : seq
- requires |ts| > 1; -{ - ts[1 := add_leg_copy(ts[0])] -} - -/* - seems like we should be able to extract it this way: - - shared_ptr>> add_leg_first_table_maybe_okay(shared_ptr>> ts) { - temp = add_leg_copy(ts[0]); // will envoke the constructor - ts[1] = temp; - return ts; - } - - a slightly more complicated example: -*/ - -function method keep_some_tables(ts: seq
) : seq
- requires |ts| > 5; -{ - var ts_0 := add_leg_first_table_okay(ts); - var ts_1 := add_leg_first_table_okay(ts_0); - ts_1[0..3] -} - -/* - ideally we would like to do: - - shared_ptr>> keep_some_tables(shared_ptr>> ts) - { - add_leg_first_table_okay(ts); - add_leg_first_table_okay(ts); - ts.resize(3); - return ts; - }` -*/ - -} \ No newline at end of file From b5a6a826a8bd0a043a11cfc1f357ebb31eed5532 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 5 Jan 2021 16:59:22 -0500 Subject: [PATCH 352/573] Remove project files that are no longer needed --- Source/Dafny/DafnyPipeline-NetCore.csproj | 34 ------------- Source/DafnyDriver/DafnyDriver-NetCore.csproj | 49 ------------------- 2 files changed, 83 deletions(-) delete mode 100644 Source/Dafny/DafnyPipeline-NetCore.csproj delete mode 100644 Source/DafnyDriver/DafnyDriver-NetCore.csproj diff --git a/Source/Dafny/DafnyPipeline-NetCore.csproj b/Source/Dafny/DafnyPipeline-NetCore.csproj deleted file mode 100644 index 2552a869a16..00000000000 --- a/Source/Dafny/DafnyPipeline-NetCore.csproj +++ /dev/null @@ -1,34 +0,0 @@ - - - - Library - DafnyPipeline - netcoreapp2.2 - COREFX_SUBSET;ISDAFNYRUNTIMELIB - false - - - - - - - - - - - false - - - - - version.cs - - - - - - - - - - diff --git a/Source/DafnyDriver/DafnyDriver-NetCore.csproj b/Source/DafnyDriver/DafnyDriver-NetCore.csproj deleted file mode 100644 index a59291c3386..00000000000 --- a/Source/DafnyDriver/DafnyDriver-NetCore.csproj +++ /dev/null @@ -1,49 +0,0 @@ - - - - Dafny - 42 - LICENSE.txt - https://github.com/dafny-org/dafny - - - - Exe - DafnyDriver - netcoreapp2.2 - COREFX_SUBSET - false - true - nupkg - true - dafny - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - From 78f9a552072b6c81f0c9d5a2cc63c880c2bc3ce6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 5 Jan 2021 16:59:51 -0500 Subject: [PATCH 353/573] This LIMITATIONS file has been absorbed into Docs/Compilation/Cpp.md --- Test/c++/LIMITATIONS.md | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 Test/c++/LIMITATIONS.md diff --git a/Test/c++/LIMITATIONS.md b/Test/c++/LIMITATIONS.md deleted file mode 100644 index f95f3eec474..00000000000 --- a/Test/c++/LIMITATIONS.md +++ /dev/null @@ -1,18 +0,0 @@ -The C++ backend was written assuming that it would primarily support writing -C/C++ style code in Dafny, which leads to some limitations in the current -implementation. - -- We do not support BigIntegers, so do not use `int`, or raw instances of - `arr.Length`, or sequence length, etc. in executable code. You can however, - use `arr.Length as uint64` if you can prove your array is an appropriate - size. The compiler will report inappropriate integer use. -- We do not support more advanced Dafny features like traits or co-inductive - types. -- Very limited support for higher order functions even for array init. Use - extern definitions like newArrayFill (see extern.dfy) or similar. See also - the example in `functions.dfy`. -- We currently only support tuples up to arity 5. A common place where you - might go over that limit is print statements, which tuple the arguments. -- The current backend also assumes the use of C++17 in order to cleanly and - performantly implement datatypes. - From 2b742708b16132de633406e28bb74129249cd6b5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 6 Jan 2021 17:24:16 -0500 Subject: [PATCH 354/573] Many fixes to restore everything to a state that compiles --- Source/Dafny/Cloner.cs | 6 ++--- Source/Dafny/Compiler-Csharp.cs | 14 +++++------ Source/Dafny/Compiler-cpp.cs | 12 ++++----- Source/Dafny/Compiler-go.cs | 24 +++++++++--------- Source/Dafny/Compiler-java.cs | 14 +++++------ Source/Dafny/Compiler-js.cs | 14 +++++------ Source/Dafny/Compiler.cs | 26 +++++++++---------- Source/Dafny/Dafny.atg | 8 ++---- Source/Dafny/DafnyAst.cs | 36 +++++++++++++-------------- Source/Dafny/Linear.cs | 6 ++--- Source/Dafny/RefinementTransformer.cs | 2 +- Source/Dafny/Resolver.cs | 14 ++++++----- 12 files changed, 87 insertions(+), 89 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index cc316f605ca..8654a11e262 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -667,7 +667,7 @@ public virtual Statement CloneStmt(Statement stmt) { } else if (stmt is VarDeclPattern) { var s = (VarDeclPattern) stmt; - r = new VarDeclPattern(Tok(s.Tok), Tok(s.EndTok), CloneCasePattern(s.LHS), CloneExpr(s.RHS), s.IsAutoGhost, s.Usage); + r = new VarDeclPattern(Tok(s.Tok), Tok(s.EndTok), CloneCasePattern(s.LHS), CloneExpr(s.RHS), s.Usage, s.IsAutoGhost); } else if (stmt is ModifyStmt) { var s = (ModifyStmt)stmt; @@ -766,7 +766,7 @@ public virtual Function CloneFunction(Function f, string newName = null) { } if (f is Predicate) { - return new Predicate(Tok(f.tok), newName, f.HasStaticKeyword, f.Usage, tps, formals, + return new Predicate(Tok(f.tok), newName, f.HasStaticKeyword, f.IsGhost, f.Usage, tps, formals, req, reads, ens, decreases, body, Predicate.BodyOriginKind.OriginalOrInherited, CloneAttributes(f.Attributes), null); } else if (f is LeastPredicate) { return new LeastPredicate(Tok(f.tok), newName, f.HasStaticKeyword, ((LeastPredicate)f).TypeOfK, tps, formals, @@ -781,7 +781,7 @@ public virtual Function CloneFunction(Function f, string newName = null) { return new TwoStateFunction(Tok(f.tok), newName, f.HasStaticKeyword, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); } else { - return new Function(Tok(f.tok), newName, f.HasStaticKeyword, f.Usage, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), + return new Function(Tok(f.tok), newName, f.HasStaticKeyword, f.IsGhost, f.Usage, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); } } diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index ca4ed95a5f3..e12b97df1f2 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -202,7 +202,7 @@ private void EmitTypeDescriptorMethod(TopLevelDecl enclosingTypeDecl, TargetWrit Contract.Requires(wr != null); var type = UserDefinedType.FromTopLevelDecl(enclosingTypeDecl.tok, enclosingTypeDecl); - var initializer = TypeInitializationValue(type, wr, enclosingTypeDecl.tok, false, true); + var initializer = TypeInitializationValue(type, wr, enclosingTypeDecl.tok, Usage.Ordinary, false, true); var targetTypeName = TypeName(type, wr, enclosingTypeDecl.tok); var typeDescriptorExpr = $"new {DafnyTypeDescriptor}<{targetTypeName}>({initializer})"; @@ -277,7 +277,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri foreach (var member in iter.Members) { var f = member as Field; if (f != null && !f.IsGhost) { - cw.DeclareField(IdName(f), iter, false, false, f.Type, f.tok, DefaultValue(f.Type, w, f.tok, true), f); + cw.DeclareField(IdName(f), iter, false, false, f.Type, f.tok, DefaultValue(f.Type, w, f.tok, Usage.Ordinary, true), f); } else if (member is Constructor) { Contract.Assert(ct == null); // we're expecting just one constructor ct = (Constructor)member; @@ -401,7 +401,7 @@ IClassWriter CompileDatatypeBase(DatatypeDecl dt, TargetWriter wr) { wDefault.Write(DtCreateName(groundingCtor)); wDefault.Write("("); var nonGhostFormals = groundingCtor.Formals.Where(f => !f.IsGhost); - wDefault.Write(Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok))); + wDefault.Write(Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok, f.Usage))); wDefault.Write(")"); EmitTypeDescriptorMethod(dt, wr); @@ -1191,7 +1191,7 @@ public override string TypeInitializationValue(Type type, TextWriter wr /*?*/, B s += "<" + TypeNames(udt.TypeArgs, wr, udt.tok) + ">"; } var relevantTypeArgs = UsedTypeParameters(dt, udt.TypeArgs); - return string.Format($"{s}.Default({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, constructTypeParameterDefaultsFromTypeDescriptors))})"); + return string.Format($"{s}.Default({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, Usage.Ordinary, constructTypeParameterDefaultsFromTypeDescriptors))})"); } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type } @@ -1593,7 +1593,7 @@ private List EmitNewArray(Type elmtType, Bpl.IToken tok, int dimCo } else { wr.Write("Dafny.ArrayHelpers.InitNewArray{0}<{1}>", dimCount, TypeName(elmtType, wr, tok)); wr.Write("("); - wr.Write(DefaultValue(elmtType, wr, tok, true)); + wr.Write(DefaultValue(elmtType, wr, tok, Usage.Ordinary,true)); for (var d = 0; d < dimCount; d++) { wr.Write(", "); var w = wr.Fork(); @@ -2664,12 +2664,12 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List()", TypeName(e.Type.AsSetType.Arg, wrVarInit, e.tok)); } protected override void EmitMapBuilder_New(TargetWriter wr, MapComprehension e, string collectionName) { - var wrVarInit = DeclareLocalVar(collectionName, null, null, wr); + var wrVarInit = DeclareLocalVar(collectionName, null, null, Usage.Ordinary, wr); var mt = e.Type.AsMapType; var domtypeName = TypeName(mt.Domain, wrVarInit, e.tok); var rantypeName = TypeName(mt.Range, wrVarInit, e.tok); diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index a6fc34b0570..84f1f9108b6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -330,7 +330,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // Overload the comparison operator ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, InstantiateTemplate(dt.TypeArgs)); - var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs))); + var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); weq.Write("\treturn true "); foreach (var arg in argNames) { weq.WriteLine("\t\t&& left.{0} == right.{0}", arg); @@ -361,7 +361,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr string structName = DatatypeSubStructName(ctor); // First add a forward declaration of the type and the equality operator to workaround templating issues wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), structName); - wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, TemplateMethod(dt.TypeArgs)); + wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, InstantiateTemplate(dt.TypeArgs)); var wstruct = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members @@ -378,8 +378,8 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the comparison operator - wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, TemplateMethod(dt.TypeArgs)); - var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), TemplateMethod(dt.TypeArgs))); + wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, InstantiateTemplate(dt.TypeArgs)); + var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); var preReturn = weq.Fork(); weq.Write("\treturn true "); i = 0; @@ -1017,7 +1017,7 @@ public override string TypeInitializationValue(Type type, TextWriter wr /*?*/, B if (udt.ResolvedParam != null) { if (udt.ResolvedClass != null && Attributes.Contains(udt.ResolvedClass.Attributes, "extern")) { // Assume the external definition includes a default value - return String.Format("{1}::get_{0}_default{2}()", IdProtect(udt.Name), udt.ResolvedClass.EnclosingModuleDefinition.CompileName, TemplateMethod(udt.TypeArgs)); + return String.Format("{1}::get_{0}_default{2}()", IdProtect(udt.Name), udt.ResolvedClass.EnclosingModuleDefinition.CompileName, InstantiateTemplate(udt.TypeArgs)); } else if (usePlaceboValue && !udt.ResolvedParam.Characteristics.MustSupportZeroInitialization) { return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); } else { @@ -2351,7 +2351,7 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List()", TypeName(e.Type.AsSetType.Arg, wrVarInit, e.tok, null, false)); } diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index d6b047779e6..cc42b84be3a 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -409,7 +409,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri Constructor ct = null; foreach (var member in iter.Members) { if (member is Field f && !f.IsGhost) { - cw.DeclareField(IdName(f), iter, false, false, f.Type, f.tok, DefaultValue(f.Type, wr, f.tok, true), f); + cw.DeclareField(IdName(f), iter, false, false, f.Type, f.tok, DefaultValue(f.Type, wr, f.tok, f.Usage, true), f); } else if (member is Constructor c) { Contract.Assert(ct == null); ct = c; @@ -707,7 +707,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri wDefault.Write("return "); var groundingCtor = dt.GetGroundingCtor(); var nonGhostFormals = groundingCtor.Formals.Where(f => !f.IsGhost).ToList(); - var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok)); + var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok, f.Usage)); EmitDatatypeValue(dt, groundingCtor, dt is CoDatatypeDecl, arguments, wDefault); wDefault.WriteLine(); } @@ -843,7 +843,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri WriteRuntimeTypeDescriptorsLocals(usedTypeParams, true, wDefault); - var arguments = Util.Comma(UsedTypeParameters(dt), tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, true)); + var arguments = Util.Comma(UsedTypeParameters(dt), tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, Usage.Ordinary, true)); wDefault.WriteLine($"return {TypeName_Companion(dt, wr, dt.tok)}.Default({arguments});"); } @@ -1020,7 +1020,7 @@ public void InitializeField(Field field, Type instantiatedFieldType, TopLevelDec new List(), enclosingClass.ParentFormalTypeParametersToActuals, instantiatedFieldType); var wRHS = lvalue.EmitWrite(FieldInitWriter(false)); Compiler.EmitCoercionIfNecessary(instantiatedFieldType, field.Type, tok, wRHS); - wRHS.Write(Compiler.PlaceboValue(instantiatedFieldType, ErrorWriter(), tok)); + wRHS.Write(Compiler.PlaceboValue(instantiatedFieldType, ErrorWriter(), tok, Usage.Ordinary)); } public TextWriter/*?*/ ErrorWriter() => ConcreteMethodWriter; @@ -1108,7 +1108,7 @@ private BlockTargetWriter CreateSubroutine(string name, List(), new List() {valueParam}, new List(), null, new List() {valueParam}, new List(), null, tok, isStatic, createBody, ownerName, member, abstractWriter, concreteWriter, forBodyInheritance, false); @@ -1492,7 +1492,7 @@ string nil() { } var n = dt is TupleTypeDecl ? "_dafny.TupleOf" : $"{TypeName_Companion(dt, wr, tok)}.Default"; var relevantTypeArgs = UsedTypeParameters(dt, udt.TypeArgs); - return $"{n}({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, constructTypeParameterDefaultsFromTypeDescriptors))})"; + return $"{n}({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, Usage.Ordinary, constructTypeParameterDefaultsFromTypeDescriptors))})"; } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type } @@ -1630,7 +1630,7 @@ protected void DeclareField(string name, bool isExtern, bool isStatic, bool isCo wr.WriteLine("{0} {1}", name, TypeName(type, initWriter, tok)); if (isStatic) { - initWriter.WriteLine("{0}: {1},", name, rhs ?? PlaceboValue(type, initWriter, tok)); + initWriter.WriteLine("{0}: {1},", name, rhs ?? PlaceboValue(type, initWriter, tok, Usage.Ordinary)); } else if (rhs != null) { initWriter.WriteLine("_this.{0} = {1}", name, rhs); } @@ -1906,7 +1906,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal } protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List dimensions, bool mustInitialize, TargetWriter wr) { - var initValue = DefaultValue(elmtType, wr, tok, true); + var initValue = DefaultValue(elmtType, wr, tok, Usage.Ordinary, true); string sep; if (!mustInitialize) { @@ -3293,12 +3293,12 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List {d})"; } break; @@ -1721,11 +1721,11 @@ IClassWriter CompileDatatypeBase(DatatypeDecl dt, TargetWriter wr) { } var groundingCtor = dt.GetGroundingCtor(); var nonGhostFormals = groundingCtor.Formals.Where(f => !f.IsGhost).ToList(); - var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok)); + var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok, f.Usage)); EmitDatatypeValue(dt, groundingCtor, null, dt is CoDatatypeDecl, arguments, wDefault); var targetTypeName = BoxedTypeName(UserDefinedType.FromTopLevelDecl(dt.tok, dt, null), wr, dt.tok); - arguments = Util.Comma(usedTypeArgs, tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, true)); + arguments = Util.Comma(usedTypeArgs, tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, Usage.Ordinary, true)); EmitTypeMethod(dt, IdName(dt), dt.TypeArgs, usedTypeArgs, targetTypeName, $"Default({arguments})", wr); // create methods @@ -3070,7 +3070,7 @@ public override string TypeInitializationValue(Type type, TextWriter wr, Bpl.ITo return $"({s}{typeargs})null"; } var relevantTypeArgs = UsedTypeParameters(dt, udt.TypeArgs); - return $"{s}.{typeargs}Default({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, constructTypeParameterDefaultsFromTypeDescriptors))})"; + return $"{s}.{typeargs}Default({Util.Comma(relevantTypeArgs, ta => DefaultValue(ta.Actual, wr, tok, Usage.Ordinary, constructTypeParameterDefaultsFromTypeDescriptors))})"; } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type @@ -3445,7 +3445,7 @@ protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List !f.IsGhost).ToList(); - var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok)); + var arguments = Util.Comma(nonGhostFormals, f => DefaultValue(f.Type, wDefault, f.tok, Usage.Ordinary)); EmitDatatypeValue(dt, groundingCtor, dt is CoDatatypeDecl, arguments, wDefault); wDefault.WriteLine(";"); } @@ -493,7 +493,7 @@ protected override BlockTargetWriter CreateIterator(IteratorDecl iter, TargetWri using (var wRtd = wr.NewBlock(")")) { using (var wClass = wRtd.NewBlock("return class", ";")) { using (var wDefault = wClass.NewBlock("static get Default()")) { - var arguments = Util.Comma(UsedTypeParameters(dt), tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, true)); + var arguments = Util.Comma(UsedTypeParameters(dt), tp => DefaultValue(new UserDefinedType(tp), wDefault, dt.tok, Usage.Ordinary, true)); wDefault.WriteLine($"return {DtT_protected}.Default({arguments});"); } } @@ -944,7 +944,7 @@ public override string TypeInitializationValue(Type type, TextWriter wr /*?*/, B var dt = (DatatypeDecl)cl; var s = dt is TupleTypeDecl ? "_dafny.Tuple" : FullTypeName(udt); var relevantTypeArgs = UsedTypeParameters(dt, udt.TypeArgs).ConvertAll(ta => ta.Actual); - return string.Format($"{s}.Default({Util.Comma(relevantTypeArgs, arg => DefaultValue(arg, wr, tok, constructTypeParameterDefaultsFromTypeDescriptors))})"); + return string.Format($"{s}.Default({Util.Comma(relevantTypeArgs, arg => DefaultValue(arg, wr, tok, Usage.Ordinary, constructTypeParameterDefaultsFromTypeDescriptors))})"); } else { Contract.Assert(false); throw new cce.UnreachableException(); // unexpected type } @@ -1183,7 +1183,7 @@ protected override void EmitNew(Type type, Bpl.IToken tok, CallStmt/*?*/ initCal } protected override void EmitNewArray(Type elmtType, Bpl.IToken tok, List dimensions, bool mustInitialize, TargetWriter wr) { - var initValue = mustInitialize ? DefaultValue(elmtType, wr, tok, true) : null; + var initValue = mustInitialize ? DefaultValue(elmtType, wr, tok, Usage.Ordinary, true) : null; if (dimensions.Count == 1) { // handle the common case of 1-dimensional arrays separately wr.Write("Array("); @@ -2206,12 +2206,12 @@ protected override void EmitMapDisplay(MapType mt, Bpl.IToken tok, List(), cf.Type, cf.tok, true, true, member, false, false); + var wBody = classWriter.CreateFunction(IdName(cf), CombineAllTypeArguments(cf), new List(), cf.Type, f.Usage, cf.tok, true, true, member, false, false); Contract.Assert(wBody != null); // since the previous line asked for a body if (cf.Rhs != null) { CompileReturnBody(cf.Rhs, f.Type, wBody, null); } else { - EmitReturnExpr(PlaceboValue(cf.Type, wBody, cf.tok, true), wBody); + EmitReturnExpr(PlaceboValue(cf.Type, wBody, cf.tok, Usage.Ordinary, true), wBody); } } else { BlockTargetWriter wBody; @@ -1657,7 +1657,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { var typeArgs = CombineAllTypeArguments(cf); var typeDescriptors = ForTypeDescriptors(typeArgs, cf, false); if (NeedsTypeDescriptors(typeDescriptors)) { - return classWriter.CreateFunction(name, typeArgs, new List(), cf.Type, cf.tok, isStatic, createBody, cf, forBodyInheritance, false); + return classWriter.CreateFunction(name, typeArgs, new List(), cf.Type, cf.Usage, cf.tok, isStatic, createBody, cf, forBodyInheritance, false); } else { return classWriter.CreateGetter(name, enclosingDecl, cf.Type, cf.tok, isStatic, true, createBody, cf, forBodyInheritance); } @@ -1676,7 +1676,7 @@ private void RedeclareInheritedMember(MemberDecl member, IClassWriter classWrite Contract.Assert(wGet == null && wSet == null); // since the previous line said not to create a body } else if (member is Function) { var fn = ((Function)member).Original; - var wBody = classWriter.CreateFunction(IdName(fn), CombineAllTypeArguments(fn), fn.Formals, fn.ResultType, fn.tok, fn.IsStatic, false, fn, false, false); + var wBody = classWriter.CreateFunction(IdName(fn), CombineAllTypeArguments(fn), fn.Formals, fn.ResultType, fn.Usage, fn.tok, fn.IsStatic, false, fn, false, false); Contract.Assert(wBody == null); // since the previous line said not to create a body } else if (member is Method) { var method = ((Method)member).Original; @@ -1786,7 +1786,7 @@ protected void EmitCallToInheritedMethod(Method method, BlockTargetWriter wr) { var target = returnStyleOutCollector != null ? IdName(p) : idGenerator.FreshId("_out"); outTmps.Add(target); outTypes.Add(p.Type); - DeclareLocalVar(target, p.Type, p.tok, false, null, wr); + DeclareLocalVar(target, p.Type, p.tok, p.Usage, false, null, wr); } } Contract.Assert(outTmps.Count == nonGhostOutParameterCount && outTypes.Count == nonGhostOutParameterCount); @@ -2467,7 +2467,7 @@ protected string PlaceboValue(Type type, TextWriter wr, Bpl.IToken tok, Usage us return dv; } - protected string DefaultValue(Type type, TextWriter wr, Bpl.IToken tok, bool constructTypeParameterDefaultsFromTypeDescriptors = false) { + protected string DefaultValue(Type type, TextWriter wr, Bpl.IToken tok, Usage usage, bool constructTypeParameterDefaultsFromTypeDescriptors = false) { Contract.Requires(type != null); Contract.Requires(wr != null); Contract.Requires(tok != null); @@ -2475,7 +2475,7 @@ protected string DefaultValue(Type type, TextWriter wr, Bpl.IToken tok, bool con bool hs, hz, ik; string dv; - TypeInitialization(type, this, wr, tok, out hs, out hz, out ik, out dv, false, constructTypeParameterDefaultsFromTypeDescriptors); + TypeInitialization(type, this, wr, tok, usage, out hs, out hz, out ik, out dv, false, constructTypeParameterDefaultsFromTypeDescriptors); return dv; } @@ -3895,8 +3895,8 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { if (!p.IsGhost) { string inTmp = idGenerator.FreshId("_in"); inTmps.Add(inTmp); - inTypes.Add(s.Args[i].Type); - DeclareLocalVar(inTmp, s.Args[i].Type, p.tok, p.Usage, s.Args[i].Expr, false, wr); + inTypes.Add(s.Args[i].Expr.Type); + DeclareLocalVar(inTmp, s.Args[i].Expr.Type, p.tok, p.Usage, s.Args[i].Expr, false, wr); } } // Now, assign to the formals @@ -4055,7 +4055,7 @@ void TrCallStmt(CallStmt s, string receiverReplacement, TargetWriter wr) { Formal p = s.Method.Ins[i]; if (!p.IsGhost) { wr.Write(sep); - var fromType = s.Args[i].Type; + var fromType = s.Args[i].Expr.Type; var toType = s.Method.Ins[i].Type; var instantiatedToType = Resolver.SubstType(toType, s.MethodSelect.TypeArgumentSubstitutionsWithParents()); // Order of coercions is important here: EmitCoercionToNativeForm may coerce into a type we're unaware of, so it *has* to be last @@ -4148,7 +4148,7 @@ void TrLocalVar(IVariable v, bool alwaysInitialize, TargetWriter wr) { // only emit non-ghosts (we get here only for local variables introduced implicitly by call statements) return; } - DeclareLocalVar(IdName(v), v.Type, v.Tok, v.Usage, false, alwaysInitialize ? DefaultValue(v.Type, wr, v.Tok, true) : null, wr); + DeclareLocalVar(IdName(v), v.Type, v.Tok, v.Usage, false, alwaysInitialize ? DefaultValue(v.Type, wr, v.Tok, v.Usage, true) : null, wr); } TargetWriter MatchCasePrelude(string source, UserDefinedType sourceType, DatatypeCtor ctor, List arguments, int caseIndex, int caseCount, TargetWriter wr) { @@ -4553,7 +4553,7 @@ void writeObj(TargetWriter w) { } else { var w = CreateIIFE1(0, e.Body.Type, e.Body.tok, "_let_dummy_" + GetUniqueAstNumber(e), wr); foreach (var bv in e.BoundVars) { - DeclareLocalVar(IdName(bv), bv.Type, bv.tok, bv.Usage, false, DefaultValue(bv.Type, wr, bv.tok, true), w); + DeclareLocalVar(IdName(bv), bv.Type, bv.tok, bv.Usage, false, DefaultValue(bv.Type, wr, bv.tok, bv.Usage, true), w); } TrAssignSuchThat(new List(e.BoundVars).ConvertAll(bv => (IVariable)bv), e.RHSs[0], e.Constraint_Bounds, e.tok.line, w, inLetExprBody); EmitReturnExpr(e.Body, e.Body.Type, true, w); diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index ea162929243..1209a24a8da 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2519,7 +2519,7 @@ VarDeclStatement<.out Statement/*!*/ s.> SYNC ";" (. endTok = t; .) (. ConcreteUpdateStatement update; var lhsExprs = new List(); - if (isGhost || (rhss.Count == 0 && exceptionExpr == null && suchThat == null)) { // explicitly ghost or no init + if (usage == Usage.Ghost || (rhss.Count == 0 && exceptionExpr == null && suchThat == null)) { // explicitly ghost or no init foreach (var lhs in lhss) { lhsExprs.Add(new IdentifierExpr(lhs.Tok, lhs.Name)); } @@ -2551,7 +2551,7 @@ VarDeclStatement<.out Statement/*!*/ s.> Expression ";" - (. s = new VarDeclPattern(e.tok, e.tok, pat, e, !isGhost, usage); .) + (. s = new VarDeclPattern(e.tok, e.tok, pat, e, usage, usage != Usage.Ghost); .) ) . IfStmt @@ -4325,10 +4325,6 @@ NoUSIdent SemErr("cannot declare identifier beginning with underscore"); } .) - | IF(IsOperatorSubscript()) operator '(' '[' ']' ')' (. x = t; x.val = "operator$subscript"; .) - | IF(IsOperatorCardinality()) operator '(' '|' '|' ')' (. x = t; x.val = "operator$cardinality"; .) - | operator '(' "in" ')' (. x = t; x.val = "operator$in"; .) - ) . // Identifier, disallowing leading underscores, except possibly the "wildcard" identifier "_" diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 6035db74fda..4413e5eedb2 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -110,7 +110,7 @@ public class BuiltIns { public readonly ModuleDefinition SystemModule = new ModuleDefinition(Token.NoToken, "_System", new List(), false, false, null, null, null, true, true, true); readonly Dictionary arrayTypeDecls = new Dictionary(); - readonly Dictionary arrowTypeDecls = new Dictionary(); + readonly Dictionary ArrowTypeDecls = new Dictionary(); readonly Dictionary, SubsetTypeDecl> arrowSubsets = new Dictionary, SubsetTypeDecl>(); readonly Dictionary tupleTypeDecls = new Dictionary(); @@ -163,8 +163,8 @@ public BuiltIns() { new Formal(Token.NoToken, "a", rankVarA, true, Usage.Ghost), new Formal(Token.NoToken, "b", rankVarB, true, Usage.Ghost) }, new Formal(Token.NoToken, "r", new BoolType(), true, Usage.Ghost), - new BoolType(), new List(), new List(), - new List(), new Specification(new List(), null), + new BoolType(), new List(), new List(), + new List(), new Specification(new List(), null), null, rankAttrs, null); rankFun.IsBuiltin = true; var defaultClass = new DefaultClassDecl(SystemModule, @@ -210,7 +210,7 @@ public UserDefinedType ArrayType(IToken tok, int dims, List optTypeArgs, b } arrayTypeDecls.Add(dims, arrayClass); SystemModule.TopLevelDecls.Add(arrayClass); - CreateArrowTypeDecl(dims); // also create an arrow type with this arity, since it may be used in an initializing expression for the array + CreateArrowTypeDecl(dims, Usage.Ordinary, null); // also create an arrow type with this arity, since it may be used in an initializing expression for the array } UserDefinedType udt = new UserDefinedType(tok, arrayName, optTypeArgs); return udt; @@ -244,7 +244,7 @@ public Type CreateArrowType(IToken tok, bool resolved, Arrow arrow, List t CreateArrowTypeDecl(typeArgs.Count, resultUsage, usages); object key = Tuple.Create(resultUsage, MakeTupleKey(usages, usages.Count)); if (arrow == Arrow.Any) { - return resolved ? new ArrowType(tok, arrowTypeDecls[key], typeArgs, result, resultUsage, usages) + return resolved ? new ArrowType(tok, ArrowTypeDecls[key], typeArgs, result, resultUsage, usages) : new ArrowType(tok, typeArgs, result, resultUsage, usages); } else { string name = ArrowType.ArrowTypeName(arrow, resultUsage, usages); @@ -271,7 +271,7 @@ private void CreateArrowTypeDeclInternal(int arity, Usage resultUsage, List Usage.Ordinary); } object key = Tuple.Create(resultUsage, MakeTupleKey(usages, arity)); - if (!arrowTypeDecls.ContainsKey(key)) { + if (!ArrowTypeDecls.ContainsKey(key)) { IToken tok = Token.NoToken; var tps = Util.Map(Enumerable.Range(0, arity + 1), x => x < arity ? new TypeParameter(tok, "T" + x, TypeParameter.TPVarianceSyntax.Contravariance) : @@ -298,7 +298,7 @@ private void CreateArrowTypeDeclInternal(int arity, Usage resultUsage, List(); // ditto var arrowDecl = new ArrowTypeDecl(tps, req, reads, SystemModule, resultUsage, usages, DontCompile()); - arrowTypeDecls.Add(key, arrowDecl); + ArrowTypeDecls.Add(key, arrowDecl); SystemModule.TopLevelDecls.Add(arrowDecl); // declaration of read-effect-free arrow-type, aka heap-independent arrow-type, aka partial-function arrow-type @@ -384,7 +384,8 @@ Type GetTypeOfFunction(Function f, List typeArgumentsClass, List typ var formals = Util.Concat(f.EnclosingClass.TypeArgs, f.TypeArgs); var actuals = Util.Concat(typeArgumentsClass, typeArgumentsMember); var typeMap = Resolver.TypeSubstitutionMap(formals, actuals); - return new ArrowType(f.tok, atd, f.Formals.ConvertAll(arg => Resolver.SubstType(arg.Type, typeMap)), Resolver.SubstType(f.ResultType, typeMap)); + return new ArrowType(f.tok, atd, f.Formals.ConvertAll(arg => Resolver.SubstType(arg.Type, typeMap)), Resolver.SubstType(f.ResultType, typeMap), + f.Result.Usage, f.Formals.ConvertAll(arg => arg.Usage)); } private object MakeTupleKey(List usages, int dims) { @@ -2505,7 +2506,7 @@ public static string PrettyArrowTypeName(string arrow, List typeArgs, Type } string s = ""; if (domainNeedsParens) { s += "("; } - s += Util.Comma(typeArgs.Take(arity).Zip(usage.Item2), arg => + s += Util.Comma(System.Linq.Enumerable.Zip(typeArgs.Take(arity), usage.Item2), arg => Resolver.UsagePrefix(arg.Item2) + arg.Item1.TypeName(context, parseAble)); if (domainNeedsParens) { s += ")"; } s += " " + arrow + " "; @@ -2957,7 +2958,7 @@ public override string TypeName(ModuleDefinition context, bool parseAble) { if (BuiltIns.IsTupleTypeName(Name)) { // Unfortunately, ResolveClass may be null, so Name is all we have. Reverse-engineer the string name. List usages = BuiltIns.UsagesFromString(Name, TypeArgs.Count).Item2; - return "(" + Util.Comma(TypeArgs.Zip(usages), + return "(" + Util.Comma(System.Linq.Enumerable.Zip(TypeArgs, usages), (ty_u) => Resolver.UsagePrefix(ty_u.Item2) + ty_u.Item1.TypeName(context, parseAble)) + ")"; } else if (ArrowType.IsPartialArrowTypeName(Name)) { return ArrowType.PrettyArrowTypeName(ArrowType.PARTIAL_ARROW, TypeArgs, null, context, parseAble, @@ -4653,8 +4654,8 @@ public TupleTypeDecl(List usages, ModuleDefinition systemModule, Attribut Contract.Requires(systemModule != null); // Resolve the type parameters here - Contract.Assert(TypeArgs.Count == dims); - for (var i = 0; i < dims; i++) { + Contract.Assert(TypeArgs.Count == Dims); + for (var i = 0; i < Dims; i++) { var tp = TypeArgs[i]; tp.Parent = this; tp.PositionalIndex = i; @@ -5198,7 +5199,7 @@ public SpecialFunction(IToken tok, string name, ModuleDefinition module, bool ha List typeArgs, List formals, Type resultType, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, isGhost ? Usage.Ghost : Usage.Ordinary, typeArgs, formals, null, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) + : base(tok, name, hasStaticKeyword, isGhost, isGhost ? Usage.Ghost : Usage.Ordinary, typeArgs, formals, null, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) { Module = module; } @@ -6104,7 +6105,7 @@ public override bool IsMutable { } public void makeGhost() { - IsGhost = true; + Usage = Usage.Ghost; } public BoundVar(IToken tok, string name, Type type, Usage usage = Usage.Ordinary) @@ -6188,8 +6189,7 @@ public Type GetMemberType(ArrowTypeDecl atd) { Contract.Requires(atd.Arity == Formals.Count); // Note, the following returned type can contain type parameters from the function and its enclosing class - // TODO: Old inout: return new ArrowType(tok, Formals.ConvertAll(f => f.Type), ResultType, ResultUsage, Formals.ConvertAll(f => f.Usage)); - return new ArrowType(tok, atd, Formals.ConvertAll(f => f.Type), ResultType); + return new ArrowType(tok, atd, Formals.ConvertAll(f => f.Type), ResultType, Result.Usage, Formals.ConvertAll(f => f.Usage)); } public bool AllowsNontermination { @@ -6248,7 +6248,7 @@ public Function(IToken tok, string name, bool hasStaticKeyword, bool isGhost, Us List typeArgs, List formals, Formal result, Type resultType, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, IToken signatureEllipsis) - : base(tok, makeName(name, formals), hasStaticKeyword, isGhost, usage, removeInline(attributes), signatureEllipsis != null) { + : base(tok, makeName(name, formals), hasStaticKeyword, usage, removeInline(attributes), signatureEllipsis != null) { Contract.Requires(tok != null); Contract.Requires(name != null); @@ -7442,7 +7442,7 @@ public class VarDeclPattern : Statement public bool IsAutoGhost; public readonly Usage Usage; - public VarDeclPattern(IToken tok, IToken endTok, CasePattern lhs, Expression rhs, bool isAutoGhost = false, Usage usage) + public VarDeclPattern(IToken tok, IToken endTok, CasePattern lhs, Expression rhs, Usage usage, bool isAutoGhost = false) : base(tok, endTok) { LHS = lhs; RHS = rhs; diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index af4503d3167..cbf44a0a4c9 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -121,8 +121,8 @@ static bool memberIsMethod(MemberDecl decl) { } return !( m is Constructor || - m is InductiveLemma || - m is CoLemma || + m is LeastLemma || + m is GreatestLemma || m is Lemma || m is TwoStateLemma); } @@ -145,7 +145,7 @@ public class InoutTranslateRewriter : IRewriter { public delegate string FreshTempVarName(string prefix, ICodeContext context); FreshTempVarName freshTempVarName; - + public InoutTranslateRewriter(ErrorReporter reporter, FreshTempVarName freshTempVarName) : base(reporter) { this.freshTempVarName = freshTempVarName; } diff --git a/Source/Dafny/RefinementTransformer.cs b/Source/Dafny/RefinementTransformer.cs index 7be802c271c..86aeee0aa7d 100644 --- a/Source/Dafny/RefinementTransformer.cs +++ b/Source/Dafny/RefinementTransformer.cs @@ -655,7 +655,7 @@ ClassDecl MergeClass(ClassDecl nw, ClassDecl prev) { } else if (f.Body != null) { reporter.Error(MessageSource.RefinementTransformer, nwMember, $"a refining {f.WhatKind} is not allowed to extend/change the body"); } - var newF = CloneFunction(f.tok, prevFunction, f.Usage, f.Ens, f.Result, moreBody, replacementBody, prevFunction.Body == null, f.Attributes); + var newF = CloneFunction(f.tok, prevFunction, f.IsGhost, f.Usage, f.Ens, f.Result, moreBody, replacementBody, prevFunction.Body == null, f.Attributes); newF.RefinementBase = member; nw.Members[index] = newF; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 90871c68a5f..f3104d6cdfe 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7775,7 +7775,7 @@ protected override bool VisitOneStmt(Statement stmt, ref bool st) { Contract.Assert(s.Args.Count == s.Method.Ins.Count); for (var i = 0; i < s.Method.Ins.Count; i++) { if (!s.Method.Ins[i].IsGhost) { - Visit(s.Args[i], st); + Visit(s.Args[i].Expr, st); } } return false; // we've done what there is to be done @@ -8259,7 +8259,9 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } else { bool spec = resolver.UsesSpecFeatures(s.RHS); foreach (var local in s.LocalVars) { - local.IsGhost = spec; + if (spec) { + local.MakeGhost(); + } } if (!spec) resolver.CheckIsCompilable(s.RHS); s.IsGhost = spec; @@ -8353,7 +8355,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable if (rhs.InitCall != null) { for (var i = 0; i < rhs.InitCall.Args.Count; i++) { if (!rhs.InitCall.Method.Ins[i].IsGhost) { - resolver.CheckIsCompilable(rhs.InitCall.Args[i], usageContext, inArg.Item1.Usage); + resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, rhs.InitCall.Method.Ins[i].Usage); } } } @@ -12568,7 +12570,7 @@ private Expression VarDotMethod(IToken tok, string varname, string methodname) { private Expression makeTemp(String prefix, AssignOrReturnStmt s, ICodeContext codeContext, Expression ex) { var temp = FreshTempVarName(prefix, codeContext); - var locvar = new LocalVariable(s.Tok, s.Tok, temp, ex.Type, false); + var locvar = new LocalVariable(s.Tok, s.Tok, temp, ex.Type, Usage.Ordinary); // REVIEW: Should callers specify something other than Usage.Ordinary? var id = new IdentifierExpr(s.Tok, temp); var idlist = new List() { id }; var lhss = new List() { locvar }; @@ -12917,8 +12919,8 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { bool tryToResolve = false; if (callee.Ins.Count != s.Args.Count) { reporter.Error(MessageSource.Resolver, s, "wrong number of method arguments (got {0}, expected {1})", s.Args.Count, callee.Ins.Count); - } else if (callee.Ins.Zip(s.Args).Any(z => z.Item1.Inout != z.Item2.Inout)) { - foreach (var (fInout, aInout, idx) in callee.Ins.Zip(s.Args) + } else if (System.Linq.Enumerable.Zip(callee.Ins, s.Args).Any(z => z.Item1.Inout != z.Item2.Inout)) { + foreach (var (fInout, aInout, idx) in System.Linq.Enumerable.Zip(callee.Ins, s.Args) .Select((z, index) => (z.Item1.Inout, z.Item2.Inout, index)) .Where(ff => ff.Item1 != ff.Item2)) { if (fInout) { From 157fe9a8533bc0fc3fa0a9fa9505130835f759fb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 6 Jan 2021 22:29:34 -0500 Subject: [PATCH 355/573] Attempt to resolve a lookup in GetTypeOfFunction --- Source/Dafny/DafnyAst.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 4413e5eedb2..b1d68195da2 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -379,13 +379,27 @@ Type GetTypeOfFunction(Function f, List typeArgumentsClass, List typ Contract.Requires(typeArgumentsClass.Count == f.EnclosingClass.TypeArgs.Count); Contract.Requires(typeArgumentsMember.Count == f.TypeArgs.Count); - var atd = ArrowTypeDecls[f.Formals.Count]; + var formals = Util.Concat(f.EnclosingClass.TypeArgs, f.TypeArgs); + var actuals = Util.Concat(typeArgumentsClass, typeArgumentsMember); + var typeMap = Resolver.TypeSubstitutionMap(formals, actuals); + var arg_usages = f.Formals.ConvertAll(arg => arg.Usage); + bool hasReads = f.Reads.Count != 0; + bool hasReq = f.Req.Count != 0; + Arrow arrow = hasReads ? Arrow.Any : hasReq ? Arrow.Partial : Arrow.Total; + return CreateArrowType(f.tok, resolved:false, arrow, f.Formals.ConvertAll( + arg => Resolver.SubstType(arg.Type, typeMap)), + Resolver.SubstType(f.ResultType, typeMap), f.ResultUsage, arg_usages); + + /* + object key = Tuple.Create(f.ResultUsage, MakeTupleKey(arg_usages, arg_usages.Count)); + var atd = ArrowTypeDecls[key]; var formals = Util.Concat(f.EnclosingClass.TypeArgs, f.TypeArgs); var actuals = Util.Concat(typeArgumentsClass, typeArgumentsMember); var typeMap = Resolver.TypeSubstitutionMap(formals, actuals); return new ArrowType(f.tok, atd, f.Formals.ConvertAll(arg => Resolver.SubstType(arg.Type, typeMap)), Resolver.SubstType(f.ResultType, typeMap), - f.Result.Usage, f.Formals.ConvertAll(arg => arg.Usage)); + f.Result.Usage, arg_usages); + */ } private object MakeTupleKey(List usages, int dims) { From 390275fe0da906dfb544e532b439c202f2b7c222 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 10:03:18 -0500 Subject: [PATCH 356/573] Attmped fix to contract assertion failure. It looks like someone added a special exception on the `inout` branch for the "_default" module vs. the original master code, due to the presence of rank_is_less_than. Rustan then made the original logic more complex in support of "Revise export reference types", commit 3a9524f5ea629c9b35307. --- Source/Dafny/Resolver.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f3104d6cdfe..0e01fca4647 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1712,11 +1712,7 @@ public static ModuleSignature MergeSignature(ModuleSignature m, ModuleSignature // add for the module itself foreach (var kv in m.TopLevels) { - // TODO: inout previously had: - // if (kv.Key != "_default") { // System._default has rank_is_less_than - // Contract.Assert(EquivIfPresent(info.TopLevels, kv.Key, kv.Value)); - // } - if (info.TopLevels.TryGetValue(kv.Key, out var infoValue)) { + if (info.TopLevels.TryGetValue(kv.Key, out var infoValue) && kv.Key != "_default") { // REVIEW: System._default has rank_is_less_than if (infoValue != kv.Value) { // This only happens if one signature contains the name C as a class C (because it // provides C) and the other signature contains the name C as a non-null type decl From e3754208544ee306b1e7d64e0856b53e75e3f798 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 13:31:51 -0500 Subject: [PATCH 357/573] Fix a number of failing tests by eliminating bugs and/or making the linear pass more complete --- Source/Dafny/Compiler.cs | 2 +- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Linear.cs | 20 +++++++++++++++----- Source/Dafny/Resolver.cs | 4 ++-- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index ec30db2c8a7..b88aa73901c 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -1605,7 +1605,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { } } else if (c is TraitDecl && !f.IsStatic) { if (f.OverriddenMember == null) { - var w = classWriter.CreateFunction(IdName(f), CombineAllTypeArguments(f), f.Formals, f.ResultType, f.Result.Usage, f.tok, false, false, f, false, false); + var w = classWriter.CreateFunction(IdName(f), CombineAllTypeArguments(f), f.Formals, f.ResultType, f.ResultUsage, f.tok, false, false, f, false, false); Contract.Assert(w == null); // since we requested no body } else if (TraitRepeatsInheritedDeclarations) { RedeclareInheritedMember(f, classWriter); diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index b1d68195da2..a0e0263ff62 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6203,7 +6203,7 @@ public Type GetMemberType(ArrowTypeDecl atd) { Contract.Requires(atd.Arity == Formals.Count); // Note, the following returned type can contain type parameters from the function and its enclosing class - return new ArrowType(tok, atd, Formals.ConvertAll(f => f.Type), ResultType, Result.Usage, Formals.ConvertAll(f => f.Usage)); + return new ArrowType(tok, atd, Formals.ConvertAll(f => f.Type), ResultType, ResultUsage, Formals.ConvertAll(f => f.Usage)); } public bool AllowsNontermination { diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index cbf44a0a4c9..03cfb54640b 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -101,15 +101,25 @@ internal static IEnumerable> AllStatementLists(Statement stmt) { foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } } if (ms.ResolvedStatement != null) { - Contract.Assert(ms.ResolvedStatement is MatchStmt); - var resolvedMs = (MatchStmt) ms.ResolvedStatement; - foreach (var mc in resolvedMs.Cases) { - foreach (var ls in AllStatementLists(mc.Body)) { yield return ls; } + if (ms.ResolvedStatement is MatchStmt resolvedMs) { + foreach (var mc in resolvedMs.Cases) { + foreach (var ls in AllStatementLists(mc.Body)) { + yield return ls; + } + } + } else if (ms.ResolvedStatement is IfStmt resolvedIs) { + foreach (var ls in AllStatementLists(resolvedIs)) { yield return ls; } + } else { + Contract.Assert(false); // Did not expect to reach this. Need to handle more cases. } } break; case WhileStmt ws: - foreach (var ls in AllStatementLists(ws.Body.Body)) { yield return ls; } + if (ws.Body != null) { + foreach (var ls in AllStatementLists(ws.Body.Body)) { + yield return ls; + } + } break; } } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 0e01fca4647..a5e4c3fbcb5 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -16864,7 +16864,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs reporter.Error(MessageSource.Resolver, expr, "shared variable <<{0}>> is out of scope here", e.Var.Name); } if (e.Var != null && e.Var.IsGhost) { - reporter.Error(MessageSource.Resolver, expr, "ghost variables (e.g., <<{0}>>) are allowed only in specification contexts", e.Var.Name); + reporter.Error(MessageSource.Resolver, expr, "ghost variables are allowed only in specification contexts"); return Usage.Ordinary; } return e.Var.Usage; @@ -16875,7 +16875,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } else if (expr is MemberSelectExpr) { var e = (MemberSelectExpr)expr; if (e.Member != null && e.Member.IsGhost) { - reporter.Error(MessageSource.Resolver, expr, "ghost fields (e.g., <<{0}>>) are allowed only in specification contexts", e.Member.Name); + reporter.Error(MessageSource.Resolver, expr, "ghost fields are allowed only in specification contexts"); return Usage.Ordinary; } var d = e.Member as DatatypeDestructor; From 6849c08fcf3ed49679251e12e34640b96e09d44a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 16:28:37 -0500 Subject: [PATCH 358/573] Fix another case in Linear.cs --- Source/Dafny/Linear.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 03cfb54640b..74efcd18cb1 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -107,6 +107,8 @@ internal static IEnumerable> AllStatementLists(Statement stmt) { yield return ls; } } + } else if (ms.ResolvedStatement is BlockStmt resolvedBs) { + foreach (var ls in AllStatementLists(resolvedBs.Body)) { yield return ls; } } else if (ms.ResolvedStatement is IfStmt resolvedIs) { foreach (var ls in AllStatementLists(resolvedIs)) { yield return ls; } } else { From 82a06d46816b7142be91ab5470f44a39a76456c9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 16:28:49 -0500 Subject: [PATCH 359/573] Restore a portion of the parser that got lost in the merge --- Source/Dafny/Dafny.atg | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 1209a24a8da..a9385a151dc 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -4318,13 +4318,17 @@ TypeNameOrCtorSuffix . // Identifier, disallowing leading underscores -// x=null hackaround relieves C# error: "Parser.cs(1476,7): error CS0177: The out parameter 'x' must be assigned to before control leaves the current method" NoUSIdent -= (. Contract.Ensures(Contract.ValueAtReturn(out x) != null); .) - Ident (. if (x.val.StartsWith("_")) { += (. Contract.Ensures(Contract.ValueAtReturn(out x) != null); x=null; .) + ( Ident (. x = t; + if (x.val.StartsWith("_")) { SemErr("cannot declare identifier beginning with underscore"); } .) + | IF(IsOperatorSubscript()) operator '(' '[' ']' ')' (. x = t; x.val = "operator$subscript"; .) + | IF(IsOperatorCardinality()) operator '(' '|' '|' ')' (. x = t; x.val = "operator$cardinality"; .) + | operator '(' "in" ')' (. x = t; x.val = "operator$in"; .) + ) . // Identifier, disallowing leading underscores, except possibly the "wildcard" identifier "_" From ae81dfb6ba9ec0b293e1da6b90109d6594940525 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 17:05:49 -0500 Subject: [PATCH 360/573] Fix a problem with emitting default values. Addresses 6 test cases --- Source/Dafny/Compiler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index b88aa73901c..f9ad750a615 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -2066,7 +2066,7 @@ private void CompileMethod(Method m, IClassWriter cw, bool lookasideBody) { var useReturnStyleOuts = UseReturnStyleOuts(m, nonGhostOutsCount); foreach (var p in m.Outs) { if (!p.IsGhost) { - DeclareLocalOutVar(IdName(p), p.Type, p.tok, p.Usage, PlaceboValue(p.Type, w, p.tok, p.Usage), useReturnStyleOuts, w); + DeclareLocalOutVar(IdName(p), p.Type, p.tok, p.Usage, PlaceboValue(p.Type, w, p.tok, p.Usage, true), useReturnStyleOuts, w); } } From 8cb2a7522fe4d672d0c12ec1c710e24e77ac777d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Jan 2021 17:12:32 -0500 Subject: [PATCH 361/573] Fix another bad default to address 4 more test cases --- Source/Dafny/Compiler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index f9ad750a615..ea5c6c4577f 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -1578,7 +1578,7 @@ void CompileClassMembers(TopLevelDeclWithMembers c, IClassWriter classWriter) { var wGet = classWriter.CreateGetterSetter(IdName(f), f.Type, f.tok, f.IsStatic, false, member, out wSet, false); Contract.Assert(wSet == null && wGet == null); // since the previous line specified no body } else { - var rhs = c is TraitDecl ? null : PlaceboValue(f.Type, errorWr, f.tok, Usage.Ordinary); + var rhs = c is TraitDecl ? null : PlaceboValue(f.Type, errorWr, f.tok, Usage.Ordinary, true); classWriter.DeclareField(IdName(f), c, f.IsStatic, false, f.Type, f.tok, rhs, f); } if (f is ConstantField && ((ConstantField)f).Rhs != null) { From 1661d73032f928b5af1439eb72b9bfe3c0802fc9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 8 Jan 2021 10:32:43 -0500 Subject: [PATCH 362/573] Remove redundant use of isGhost in favor of usage --- Source/Dafny/Cloner.cs | 4 ++-- Source/Dafny/Dafny.atg | 4 ++-- Source/Dafny/DafnyAst.cs | 20 ++++++++++---------- Source/Dafny/RefinementTransformer.cs | 8 ++++---- Source/Dafny/Resolver.cs | 2 +- Source/Dafny/Rewriter.cs | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index 8654a11e262..0d91c683dcd 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -766,7 +766,7 @@ public virtual Function CloneFunction(Function f, string newName = null) { } if (f is Predicate) { - return new Predicate(Tok(f.tok), newName, f.HasStaticKeyword, f.IsGhost, f.Usage, tps, formals, + return new Predicate(Tok(f.tok), newName, f.HasStaticKeyword, f.Usage, tps, formals, req, reads, ens, decreases, body, Predicate.BodyOriginKind.OriginalOrInherited, CloneAttributes(f.Attributes), null); } else if (f is LeastPredicate) { return new LeastPredicate(Tok(f.tok), newName, f.HasStaticKeyword, ((LeastPredicate)f).TypeOfK, tps, formals, @@ -781,7 +781,7 @@ public virtual Function CloneFunction(Function f, string newName = null) { return new TwoStateFunction(Tok(f.tok), newName, f.HasStaticKeyword, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); } else { - return new Function(Tok(f.tok), newName, f.HasStaticKeyword, f.IsGhost, f.Usage, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), + return new Function(Tok(f.tok), newName, f.HasStaticKeyword, f.Usage, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); } } diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index a9385a151dc..939197b54ea 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2115,7 +2115,7 @@ FunctionDecl(decreases, null), body, attrs, signatureEllipsis); } else if (isPredicate) { - f = new Predicate(tok, id.val, dmod.IsStatic, !isFunctionMethod, isFunctionMethod ? dmod.Usage : Usage.Ghost, typeArgs, formals, + f = new Predicate(tok, id.val, dmod.IsStatic, isFunctionMethod ? dmod.Usage : Usage.Ghost, typeArgs, formals, reqs, reads, ens, new Specification(decreases, null), body, Predicate.BodyOriginKind.OriginalOrInherited, attrs, signatureEllipsis); } else if (isLeastPredicate) { f = new LeastPredicate(tok, id.val, dmod.IsStatic, kType, typeArgs, formals, @@ -2124,7 +2124,7 @@ FunctionDecl(decreases, null), body, attrs, signatureEllipsis); } f.BodyStartTok = bodyStart; diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index a0e0263ff62..df0798e707f 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -157,7 +157,7 @@ public BuiltIns() { rankVarA.ResolvedParam = rankParamA; rankVarB.ResolvedParam = rankParamB; Attributes rankAttrs = new Attributes("axiom", new List(), null); - var rankFun = new Function(Token.NoToken, "rank_is_less_than", false, false, Usage.Ghost, + var rankFun = new Function(Token.NoToken, "rank_is_less_than", false, Usage.Ghost, new List() { rankParamA, rankParamB }, new List() { new Formal(Token.NoToken, "a", rankVarA, true, Usage.Ghost), @@ -284,12 +284,12 @@ private void CreateArrowTypeDeclInternal(int arity, Usage resultUsage, List { new FrameExpression(tok, readsIS, null) }; - var req = new Function(tok, "requires", false, true, Usage.Ghost, + var req = new Function(tok, "requires", false, Usage.Ghost, new List(), args, null, Type.Bool, new List(), readsFrame, new List(), new Specification(new List(), null), null, null, null); - var reads = new Function(tok, "reads", false, true, Usage.Ghost, + var reads = new Function(tok, "reads", false, Usage.Ghost, new List(), args, null, new SetType(true, ObjectQ()), new List(), readsFrame, new List(), new Specification(new List(), null), @@ -5213,7 +5213,7 @@ public SpecialFunction(IToken tok, string name, ModuleDefinition module, bool ha List typeArgs, List formals, Type resultType, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, isGhost, isGhost ? Usage.Ghost : Usage.Ordinary, typeArgs, formals, null, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) + : base(tok, name, hasStaticKeyword, isGhost ? Usage.Ghost : Usage.Ordinary, typeArgs, formals, null, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) { Module = module; } @@ -6258,7 +6258,7 @@ static Attributes removeInline(Attributes attrs) { /// /// Note, functions are "ghost" by default; a non-ghost function is called a "function method". /// - public Function(IToken tok, string name, bool hasStaticKeyword, bool isGhost, Usage usage, + public Function(IToken tok, string name, bool hasStaticKeyword, Usage usage, List typeArgs, List formals, Formal result, Type resultType, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, IToken signatureEllipsis) @@ -6360,11 +6360,11 @@ public enum BodyOriginKind Extension // this predicate extends the definition of a predicate with a body in a module being refined } public readonly BodyOriginKind BodyOrigin; - public Predicate(IToken tok, string name, bool hasStaticKeyword, bool isGhost, Usage usage, + public Predicate(IToken tok, string name, bool hasStaticKeyword, Usage usage, List typeArgs, List formals, List req, List reads, List ens, Specification decreases, Expression body, BodyOriginKind bodyOrigin, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, isGhost, usage, typeArgs, formals, null, Type.Bool, req, reads, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, hasStaticKeyword, usage, typeArgs, formals, null, Type.Bool, req, reads, ens, decreases, body, attributes, signatureEllipsis) { Contract.Requires(bodyOrigin == Predicate.BodyOriginKind.OriginalOrInherited || body != null); BodyOrigin = bodyOrigin; } @@ -6382,7 +6382,7 @@ public PrefixPredicate(IToken tok, string name, bool hasStaticKeyword, List typeArgs, Formal k, List formals, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, ExtremePredicate extremePred) - : base(tok, name, hasStaticKeyword, true, Usage.Ghost, typeArgs, formals, null, Type.Bool, req, reads, ens, decreases, body, attributes, null) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, formals, null, Type.Bool, req, reads, ens, decreases, body, attributes, null) { Contract.Requires(k != null); Contract.Requires(extremePred != null); Contract.Requires(formals != null && 1 <= formals.Count && formals[0] == k); @@ -6407,7 +6407,7 @@ public ExtremePredicate(IToken tok, string name, bool hasStaticKeyword, KType ty List typeArgs, List formals, List req, List reads, List ens, Expression body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, true, Usage.Ghost, typeArgs, formals, null, Type.Bool, + : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, formals, null, Type.Bool, req, reads, ens, new Specification(new List(), null), body, attributes, signatureEllipsis) { TypeOfK = typeOfK; } @@ -6465,7 +6465,7 @@ public TwoStateFunction(IToken tok, string name, bool hasStaticKeyword, List typeArgs, List formals, Formal result, Type resultType, List req, List reads, List ens, Specification decreases, Expression body, Attributes attributes, IToken signatureEllipsis) - : base(tok, name, hasStaticKeyword, true, Usage.Ghost, typeArgs, formals, result, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) { + : base(tok, name, hasStaticKeyword, Usage.Ghost, typeArgs, formals, result, resultType, req, reads, ens, decreases, body, attributes, signatureEllipsis) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(typeArgs != null); diff --git a/Source/Dafny/RefinementTransformer.cs b/Source/Dafny/RefinementTransformer.cs index 86aeee0aa7d..5ac8bffa1d0 100644 --- a/Source/Dafny/RefinementTransformer.cs +++ b/Source/Dafny/RefinementTransformer.cs @@ -367,7 +367,7 @@ internal override void PostResolve(ModuleDefinition m) { moduleUnderConstruction = null; } - Function CloneFunction(IToken tok, Function f, bool isGhost, Usage usage, List moreEnsures, Formal moreResult, Expression moreBody, Expression replacementBody, bool checkPrevPostconditions, Attributes moreAttributes) { + Function CloneFunction(IToken tok, Function f, Usage usage, List moreEnsures, Formal moreResult, Expression moreBody, Expression replacementBody, bool checkPrevPostconditions, Attributes moreAttributes) { Contract.Requires(tok != null); Contract.Requires(moreBody == null || f is Predicate); Contract.Requires(moreBody == null || replacementBody == null); @@ -410,7 +410,7 @@ Function CloneFunction(IToken tok, Function f, bool isGhost, Usage usage, List(new List(), null), null, null, null); // --- here comes predicate Valid() - var valid = new Predicate(iter.tok, "Valid", false, true, Usage.Ghost, new List(), + var valid = new Predicate(iter.tok, "Valid", false, Usage.Ghost, new List(), new List(), new List(), new List(), diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index d4a943347f2..d9f7c236761 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -481,7 +481,7 @@ void ProcessClassPreResolve(ClassDecl cl) { // Add: predicate Valid() // ...unless an instance function with that name is already present if (!cl.Members.Exists(member => member is Function && member.Name == "Valid" && !member.IsStatic)) { - var valid = new Predicate(cl.tok, "Valid", false, true, Usage.Ghost, new List(), new List(), + var valid = new Predicate(cl.tok, "Valid", false, Usage.Ghost, new List(), new List(), new List(), new List(), new List(), new Specification(new List(), null), null, Predicate.BodyOriginKind.OriginalOrInherited, null, null); cl.Members.Add(valid); From 279504dc191fc1fe877c6710b4abeb99c0ac76a0 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 9 Jan 2021 14:44:22 -0500 Subject: [PATCH 363/573] Import a fix from master commit 5129ec34fa6f63 --- Source/Dafny/Resolver.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index ff8fa20ed91..73c3bc486db 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -9533,7 +9533,10 @@ bool CheckCanBeConstructed(Type type, List typeParametersUsed) { var cl = udt.ResolvedClass; Contract.Assert(cl != null); - if (cl is NewtypeDecl) { + if (cl is InternalTypeSynonymDecl) { + // a type exported as opaque from another module is like a ground type + return true; + } else if (cl is NewtypeDecl) { // values of a newtype can be constructed return true; } else if (cl is SubsetTypeDecl) { From 3f80c13b6a5a452025693a2d53bec3048eecac23 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 13 Jan 2021 20:53:40 +0100 Subject: [PATCH 364/573] Fix #13, autogenerated syntax shouldn't be resolved early: dafny refinement relies on late binding --- Source/Dafny/Linear.cs | 2 +- Test/linear/issue-13.dfy | 11 +++++++++++ Test/linear/issue-13.dfy.expect | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Test/linear/issue-13.dfy create mode 100644 Test/linear/issue-13.dfy.expect diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 74efcd18cb1..589257d88df 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -201,7 +201,7 @@ void AddGeneratedInoutFormals(Formal f, int insertAt) { if (body != null) { var mTok = new AutoGeneratedToken(m.tok); - var lhs = new IdentifierExpr(mTok, outFormal); + var lhs = new IdentifierExpr(mTok, f.Name); var rhsNameSegment = new NameSegment(fTok, "old_" + f.Name, null); var rhs = new ExprRhs(rhsNameSegment); var updateStmt = new UpdateStmt(mTok, mTok, diff --git a/Test/linear/issue-13.dfy b/Test/linear/issue-13.dfy new file mode 100644 index 00000000000..ed969838cf3 --- /dev/null +++ b/Test/linear/issue-13.dfy @@ -0,0 +1,11 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" /autoTriggers:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module Foo { + method Do(linear inout s: seq) +} + +module Food refines Foo { + method Do(linear inout s: seq) { + } +} diff --git a/Test/linear/issue-13.dfy.expect b/Test/linear/issue-13.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/linear/issue-13.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 1a76873c0740afe84712aa3a7c92c021281b012a Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 20 Jan 2021 10:05:03 +0100 Subject: [PATCH 365/573] Partial fix for linearity failures in tests introduced by new auto ghost machinery --- Source/Dafny/Resolver.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 73c3bc486db..24f9a70182d 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8318,12 +8318,15 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable if (s.Rhs is ExprRhs) { var rhs = (ExprRhs)s.Rhs; Usage expectedUsage = x != null ? x.Var.Usage : Usage.Ordinary; + bool madeGhost = false; if (isAutoGhost) { if (resolver.UsesSpecFeatures(rhs.Expr)) { // TODO: Is this the proper way to determine if an expression is ghost? ((lhs as AutoGhostIdentifierExpr).Var as LocalVariable).MakeGhost(); + madeGhost = true; } - } else { + } + if (!madeGhost && !assumeRhsCompilable) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } if (x != null && x.Var.IsLinear) { From fe6c2f491c90710c148afec5925f8d16d6d5effb Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 20 Jan 2021 21:46:46 -0800 Subject: [PATCH 366/573] Fix linearity checking in VarDeclPattern after merge --- Source/Dafny/Resolver.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 24f9a70182d..b74a5881123 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -11,6 +11,7 @@ using System.Diagnostics.Contracts; using System.Linq.Expressions; using Microsoft.Boogie; +using System.Diagnostics; namespace Microsoft.Dafny { @@ -8259,9 +8260,11 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable local.MakeGhost(); } } - if (!spec) resolver.CheckIsCompilable(s.RHS); s.IsGhost = spec; } + if (!s.IsGhost) { + resolver.CheckIsCompilable(s.RHS, usageContext, s.Usage); + } if (s.Usage == Usage.Shared && usageContext.Borrows()) { Error(s.RHS, "cannot borrow variable because expression returns a shared result"); } From 3a90debb3529bdea1164e5fe4db75c3179a9a0ac Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Fri, 22 Jan 2021 17:54:15 -0800 Subject: [PATCH 367/573] Small fixes so that Test/comp passes --- Source/Dafny/Resolver.cs | 6 +++++- Test/comp/Comprehensions.dfy | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b74a5881123..3b785b82dfa 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8163,7 +8163,9 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable UsageContext uc = UsageContext.Copy(usageContext); resolver.PopUsageContext(stmt.EndTok, outer, uc); resolver.MergeUsageContexts(s.Tok, outer, uc, true); - usageContext.unreachable = true; + if (usageContext != null) { + usageContext.unreachable = true; + } } else if (method != null) { bool linearInOut = method.Ins.Concat(method.Outs).ToList().Exists(x => x.IsLinear); bool linearHere = usageContext != null && usageContext.available.Count > 0; @@ -8459,6 +8461,8 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } } else if (jUsage == Usage.Ordinary && xUsage == Usage.Ignore) { // ok + } else if (xUsage == Usage.Ghost) { + // ok } else if (xUsage != jUsage) { Error(x, "expected {0} variable, found {1} variable", UsageName(jUsage), UsageName(xUsage)); } diff --git a/Test/comp/Comprehensions.dfy b/Test/comp/Comprehensions.dfy index 8f10facc30d..fcc94b18fd0 100644 --- a/Test/comp/Comprehensions.dfy +++ b/Test/comp/Comprehensions.dfy @@ -383,7 +383,7 @@ method GoNil() { var aa := {a, null}; var bb := {b, null}; var cc := aa * bb; - var dd := aa + bb; + var dd: set := aa + bb; print "the intersection is ", cc, "\n"; // {null} print "there are ", |dd|, " elements in the union\n"; // 3 } From acf382c8c0ddeeea7a738456e4974e94957c2fb4 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Sat, 23 Jan 2021 14:55:26 +0100 Subject: [PATCH 368/573] Add a README test for inout --- Test/c++/inout/README.dfy | 127 +++++++++++++++++++++++++++++++ Test/c++/inout/README.dfy.expect | 2 + 2 files changed, 129 insertions(+) create mode 100644 Test/c++/inout/README.dfy create mode 100644 Test/c++/inout/README.dfy.expect diff --git a/Test/c++/inout/README.dfy b/Test/c++/inout/README.dfy new file mode 100644 index 00000000000..a4de8442325 --- /dev/null +++ b/Test/c++/inout/README.dfy @@ -0,0 +1,127 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +/* +This file describes an experimental extension to linearity support in dafny. +With this extension, linear Dafny programs can declare inout arguments +to functions, which act as unique mutable references. +This extends the ability of programs to express in-place updates of +functional data structures. +*/ + +module Basic { + linear datatype LD = LD(i:int) + + // A method argument can be declared as `linear inout` to denote it takes a + // "mutable borrow", rather than transferring linear ownership. + method increment(linear inout ld: LD) + // The state of the argument (`ld` in this case) in the pre-state can be + // referenced as `old_ld` (both in requires and ensures clauses). The state + // of the argument in the post-state can be referenced as `ld`. + ensures ld == old_ld.(i := old_ld.i + 1) + { + // The `inout` keyword also marks assignment to fields (or fields-of-fields) + // of `linear inout` arguments. Assignment is only allowed to an ordinary + // sub-field of a sequence of linear fields or subfields: more details on + // this in a more complex example below. + inout ld.i := ld.i + 1; + } + + method example() { + linear var ld := LD(3); + // Calls to methods with inout arguments must mark the mutable borrow + // with the `inout` keyword in front of the formal to be borrowed. + increment(inout ld); + assert ld.i == 4; + linear var LD(_) := ld; + } +} + +/* With appropriate TCB support, this enables modifying sequence elements +in place. */ + +module LinearSequance { + // Allocate a linear sequence filled with `length` copies of ordinary elements. + method {:extern} seq_alloc(length: nat, a: A) returns (linear s: seq) + ensures |s| == length as nat + ensures forall i: nat | i < |s| :: s[i] == a + + // Deallocate a linear sequence. + method {:extern} seq_free(linear s: seq) + + // Set an element in the sequence. + method {:extern} seq_set(linear inout s: seq, i: nat, a: A) + requires i < |old_s| + ensures s == old_s[i := a] + + // Get an element from the sequence. + method {:extern} seq_get(shared s: seq, i: nat) returns (a: A) + requires i < |s| + ensures a == s[i] + + method example() { + linear var xs := seq_alloc(10, 3); + assert forall j: nat | j < |xs| :: xs[j] == 3; + seq_set(inout xs, 7, 4); + assert xs[3] == 3; + var x := seq_get(xs, 7); + assert x == 4; + seq_free(xs); + } +} + +/* Linear datatypes can contain ghost fields. Assignment to such fields +is supported by marking them with `inout ghost`. */ +module InoutGhost { + linear datatype Val0 = Leaf(x:bool, ghost x2:bool) + + predicate Inv(v: Val0) { + v.x == v.x2 + } + + method flip(linear inout v: Val0) + requires Inv(old_v) + ensures v.x2 == !old_v.x2 + ensures Inv(v) + { + inout v.x := !v.x; + // This is necessary to re-establish Inv(v) + inout ghost v.x2 := v.x; + } + + method Main() { + linear var v := Leaf(false, false); + flip(inout v); + var b := v.x; + assert b; + assert v.x2; + linear var Leaf(_, _) := v; + } +} + +/* Inout is also supported as a modifier for `this` in datatype members. +Due to a current limitation, linear datatype methods marked `linear inout` +must refer to `old_self` and `self`, rather than `this`, as they ought to. */ +module DatatypeMembers { + linear datatype Val0 = Leaf(x:bool) { + linear inout method flip_inner() + ensures self.x == !old_self.x + { + inout self.x := !self.x; + } + + linear inout method flip() + ensures self.x == !old_self.x + { + inout self.flip_inner(); + } + } + + method example() { + linear var v := Leaf(true); + inout v.flip(); + var b := v.x; + assert !b; + linear var Leaf(_) := v; + } +} diff --git a/Test/c++/inout/README.dfy.expect b/Test/c++/inout/README.dfy.expect new file mode 100644 index 00000000000..ccc01c35f48 --- /dev/null +++ b/Test/c++/inout/README.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 11 verified, 0 errors From 031689ada23a9af511190bef6e6a3e169752cfd6 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Mon, 25 Jan 2021 21:32:43 -0800 Subject: [PATCH 369/573] When resolving operator overloading, don't splice ResolvedExpression into AST before it's needed --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index df0798e707f..54f14c9da32 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -12318,7 +12318,7 @@ public PlaceholderExpression(IToken tok, Expression e) E = e; } public Expression Expr { - get { return WasResolved() ? Resolved : E.PlaceholderReplacement ?? E; } + get { return E.PlaceholderReplacement ?? E; } } } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3b785b82dfa..8a9d5f4ff14 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -18122,7 +18122,7 @@ bool ReplaceOverload(ResolveOpts opts, Expression e, Type t, string overload, Li var apply = new ApplySuffix(e.tok, f, args); ResolveApplySuffix(apply, opts, false); if (apply.ResolvedExpression != null) { - e.PlaceholderReplacement = apply.ResolvedExpression; + e.PlaceholderReplacement = apply; e.Type = apply.ResolvedExpression.Type; return true; } From f931a05a5714c3d03379c27dad106da80b166fdc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 31 Jan 2021 21:25:46 -0500 Subject: [PATCH 370/573] Resolve compilation errors --- Source/Dafny/Dafny.atg | 53 +++++++++++++++++++++----------------- Source/Dafny/DafnyAst.cs | 8 ++++++ Source/Dafny/Translator.cs | 2 +- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index b6b8ee5fc55..e0ca2d1a76b 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2037,7 +2037,20 @@ TypeAndToken gt = new List{ ty }; usages = new List{ Usage.Ordinary }; } - ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); + var arity = gt.Count; + theBuiltIns.CreateArrowTypeDecl(arity, usage, usages); + if (arrowKind == 0) { + ty = new ArrowType(tok, gt, t2, usage, usages); + } else { + gt.Add(t2); + if (arrowKind == 1) { + // ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); + ty = new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), gt); + } else { + // ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); + ty = new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), gt); + } + } .) ] . @@ -2048,7 +2061,8 @@ TupleType<.out Type ty, out IToken tok, out List tupleArgTypes.> = "(" (. tok = t; ty = null; // To keep compiler happy tupleArgTypes = new List(); - usages = new List(); + var usage = Usage.Ordinary; + var usages = new List(); .) [ [ "linear" (. usage = Usage.Linear; .) @@ -2405,7 +2419,7 @@ OneStmt SYNC ( BlockStmt (. s = bs; .) | UpdateStmt // includes UpdateFailure - | IF(IsMatch()) NestedMatchStmt +/* | IF(IsMatch()) NestedMatchStmt */ | VarDeclStatement | ReturnStmt | IfStmt @@ -3927,7 +3941,7 @@ EndlessExpression - | IF(IsMatch()) NestedMatchExpression +/* | IF(IsMatch()) NestedMatchExpression */ | MatchExpression | QuantifierExpression /* types are such that we can allow bitwise operations in the quantifier body */ | SetComprehensionExpr @@ -4529,11 +4543,18 @@ DotSuffix /*------------------------------------------------------------------------*/ // Identifier, disallowing leading underscores NoUSIdent -= (. Contract.Ensures(Contract.ValueAtReturn(out x) != null); .) - Ident (. if (x.val.StartsWith("_")) { - SemErr("cannot declare identifier beginning with underscore"); - } - .) += (. Contract.Ensures(Contract.ValueAtReturn(out x) != null); + x = t; + .) + ( Ident (. + if (x.val.StartsWith("_")) { + SemErr("cannot declare identifier beginning with underscore"); + } + .) + | IF(IsOperatorSubscript()) operator '(' '[' ']' ')' (. x.val = "operator$subscript"; .) + | IF(IsOperatorCardinality()) operator '(' '|' '|' ')' (. x.val = "operator$cardinality"; .) + | operator '(' "in" ')' (. x.val = "operator$in"; .) + ) . /*------------------------------------------------------------------------*/ @@ -4579,20 +4600,6 @@ TypeNameOrCtorSuffix ) . -// Identifier, disallowing leading underscores -NoUSIdent -= (. Contract.Ensures(Contract.ValueAtReturn(out x) != null); x=null; .) - ( Ident (. x = t; - if (x.val.StartsWith("_")) { - SemErr("cannot declare identifier beginning with underscore"); - } - .) - | IF(IsOperatorSubscript()) operator '(' '[' ']' ')' (. x = t; x.val = "operator$subscript"; .) - | IF(IsOperatorCardinality()) operator '(' '|' '|' ')' (. x = t; x.val = "operator$cardinality"; .) - | operator '(' "in" ')' (. x = t; x.val = "operator$in"; .) - ) - . - /*------------------------------------------------------------------------*/ // Identifier, disallowing leading underscores, except possibly the "wildcard" identifier "_" WildIdent diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 2d68fb87b6e..905cb6c0ed2 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -2639,11 +2639,19 @@ public static bool IsPartialArrowTypeName(string s) { return s.StartsWith("_#PartialFunc"); } + public static string PartialArrowTypeName(int arity) { + return "_#PartialFunc" + arity; + } + [Pure] public static bool IsTotalArrowTypeName(string s) { return s.StartsWith("_#TotalFunc"); } + public static string TotalArrowTypeName(int arity) { + return "_#TotalFunc" + arity; + } + public const string ANY_ARROW = "~>"; public const string PARTIAL_ARROW = "-->"; public const string TOTAL_ARROW = "->"; diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index da4d82af0f5..3d54d66fcd4 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -12608,7 +12608,7 @@ Bpl.Expr SetupVariableAsLocal(IVariable v, Dictionary sub Contract.Requires(locals != null); Contract.Requires(etran != null); - var local = new LocalVariable(v.Tok, v.Tok, v.Name, v.Type, v.IsGhost); + var local = new LocalVariable(v.Tok, v.Tok, v.Name, v.Type, v.IsGhost ? Usage.Ghost : Usage.Ordinary); local.type = local.OptionalType; // resolve local here var ie = new IdentifierExpr(local.Tok, local.AssignUniqueName(currentDeclaration.IdGenerator)); ie.Var = local; ie.Type = ie.Var.Type; // resolve ie here From 00418b37cba3076e33732a5af626d57098d6c91c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 1 Feb 2021 11:07:15 -0500 Subject: [PATCH 371/573] Fix a parser bug --- Source/Dafny/Dafny.atg | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index e0ca2d1a76b..b2471db54af 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -4595,9 +4595,6 @@ MethodFunctionName TypeNameOrCtorSuffix = (. id = Token.NoToken; .) IdentOrDigits - ( Ident - | digits (. id = t; .) - ) . /*------------------------------------------------------------------------*/ From 08ff66c4883dd9154af06bd5e7d9ec78b8ba3175 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 1 Feb 2021 22:17:17 -0500 Subject: [PATCH 372/573] Remove some comments --- Source/Dafny/Dafny.atg | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index b2471db54af..eaa15cb1ad0 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1944,7 +1944,7 @@ TypeAndToken tok = Token.NoToken; ty = new BoolType(); /*keep compiler happy*/ List gt; - List tupleArgTypes = null; List usages = null; Usage usage = Usage.Ordinary; + List tupleArgTypes = null; List usages = new List(); Usage usage = Usage.Ordinary; .) ( "bool" (. tok = t; .) | "char" (. tok = t; ty = new CharType(); .) @@ -2044,10 +2044,8 @@ TypeAndToken } else { gt.Add(t2); if (arrowKind == 1) { - // ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); ty = new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), gt); } else { - // ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); ty = new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), gt); } } From fc49a78eb655da982e1d15ebd17ac83e9496553e Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 2 Feb 2021 07:42:04 -0800 Subject: [PATCH 373/573] After merge, fix usages passed to arrow type in Dafny.atg --- Source/Dafny/Dafny.atg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index eaa15cb1ad0..cd44bdc97af 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1944,7 +1944,7 @@ TypeAndToken tok = Token.NoToken; ty = new BoolType(); /*keep compiler happy*/ List gt; - List tupleArgTypes = null; List usages = new List(); Usage usage = Usage.Ordinary; + List tupleArgTypes = null; List usages = null; Usage usage = Usage.Ordinary; .) ( "bool" (. tok = t; .) | "char" (. tok = t; ty = new CharType(); .) @@ -2018,7 +2018,7 @@ TypeAndToken int dims = StringToInt(dimString, 1, "arrays of that many dimensions"); ty = theBuiltIns.ArrayType(tok, dims, gt, true, q); .) - | TupleType + | TupleType | NamedType ) [ (. int arrowKind = 0; /* 0: any, 1: partial, 2: total */ @@ -2055,12 +2055,12 @@ TypeAndToken /*------------------------------------------------------------------------*/ -TupleType<.out Type ty, out IToken tok, out List tupleArgTypes.> = +TupleType<.out Type ty, out IToken tok, out List tupleArgTypes, out List usages.> = "(" (. tok = t; ty = null; // To keep compiler happy tupleArgTypes = new List(); var usage = Usage.Ordinary; - var usages = new List(); + usages = new List(); .) [ [ "linear" (. usage = Usage.Linear; .) From 545b1bf812a064644361c6917baa6ed7c0ca8bb8 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 2 Feb 2021 13:13:10 -0800 Subject: [PATCH 374/573] Minor post-merge fixes --- Source/Dafny/Dafny.atg | 6 ++---- Source/Dafny/Resolver.cs | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index cd44bdc97af..3427dcaa76b 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2417,7 +2417,7 @@ OneStmt SYNC ( BlockStmt (. s = bs; .) | UpdateStmt // includes UpdateFailure -/* | IF(IsMatch()) NestedMatchStmt */ + | IF(IsMatch()) MatchStmt | VarDeclStatement | ReturnStmt | IfStmt @@ -2429,7 +2429,6 @@ OneStmt | ExpectStmt | ForallStmt | LabeledStmt - | MatchStmt | ModifyStmt | PrintStmt | RevealStmt @@ -3939,8 +3938,7 @@ EndlessExpression -/* | IF(IsMatch()) NestedMatchExpression */ - | MatchExpression + | IF(IsMatch()) MatchExpression | QuantifierExpression /* types are such that we can allow bitwise operations in the quantifier body */ | SetComprehensionExpr | StmtInExpr diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 87c93941325..fd995aa8e5b 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8286,8 +8286,6 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable foreach (var local in s.LocalVars) { local.MakeGhost(); } - } else { - resolver.CheckIsCompilable(s.RHS); } s.IsGhost = spec; } From 6dc9ea1015c8be4e0aaafdb4dcebb01863a8a1ab Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 2 Feb 2021 15:21:31 -0800 Subject: [PATCH 375/573] Minor post-merge fix for linear tuples --- Source/Dafny/Translator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 3d54d66fcd4..005088201df 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -1386,7 +1386,7 @@ void AddDatatype(DatatypeDecl dt) { } Bpl.Variable resType = new Bpl.Formal(ctor.tok, new Bpl.TypedIdent(ctor.tok, Bpl.TypedIdent.NoName, predef.DatatypeType), false); Bpl.Function fn; - if (dt is TupleTypeDecl ttd && ttd.Dims == 2) { + if (dt is TupleTypeDecl ttd && ttd.Dims == 2 && ttd.Usages.TrueForAll(u => u == Usage.Ordinary)) { fn = predef.Tuple2Constructor; } else { fn = new Bpl.Function(ctor.tok, ctor.FullName, argTypes, resType, "Constructor function declaration"); @@ -9178,7 +9178,7 @@ private string AddTyAxioms(TopLevelDecl td) { // Create the type constructor if (td is ClassDecl cl && cl.IsObjectTrait) { // the type constructor for "object" is in DafnyPrelude.bpl - } else if (td is TupleTypeDecl ttd && ttd.Dims == 2) { + } else if (td is TupleTypeDecl ttd && ttd.Dims == 2 && ttd.Usages.TrueForAll(u => u == Usage.Ordinary)) { // the type constructor for "Tuple2" is in DafnyPrelude.bpl } else { Bpl.Variable tyVarOut = BplFormalVar(null, predef.Ty, false); From 02850f6319dc3bdbb71e068e1dbf566c4fa4c7e0 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Thu, 4 Feb 2021 09:39:14 -0800 Subject: [PATCH 376/573] Restore some of Dafny.atg from before merge --- Source/Dafny/Dafny.atg | 24 +++++++----------------- Source/Dafny/DafnyAst.cs | 8 -------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 3427dcaa76b..078b0b5a9f0 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2021,12 +2021,13 @@ TypeAndToken | TupleType | NamedType ) - [ (. int arrowKind = 0; /* 0: any, 1: partial, 2: total */ - Type t2; + [ (. Arrow arrow = Arrow.Any; + Type t2; + usage = Usage.Ordinary; .) - ( "~>" (. tok = t; arrowKind = 0; .) - | "-->" (. tok = t; arrowKind = 1; .) - | "->" (. tok = t; arrowKind = 2; .) + ( "~>" (. tok = t; arrow = Arrow.Any; .) + | "-->" (. tok = t; arrow = Arrow.Partial; .) + | "->" (. tok = t; arrow = Arrow.Total; .) ) [ "linear" (. usage = Usage.Linear; .) ] // TODO: we could also support shared in function types (but not in tuple types) @@ -2037,18 +2038,7 @@ TypeAndToken gt = new List{ ty }; usages = new List{ Usage.Ordinary }; } - var arity = gt.Count; - theBuiltIns.CreateArrowTypeDecl(arity, usage, usages); - if (arrowKind == 0) { - ty = new ArrowType(tok, gt, t2, usage, usages); - } else { - gt.Add(t2); - if (arrowKind == 1) { - ty = new UserDefinedType(tok, ArrowType.PartialArrowTypeName(arity), gt); - } else { - ty = new UserDefinedType(tok, ArrowType.TotalArrowTypeName(arity), gt); - } - } + ty = theBuiltIns.CreateArrowType(tok, false, arrow, gt, t2, usage, usages); .) ] . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 905cb6c0ed2..2d68fb87b6e 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -2639,19 +2639,11 @@ public static bool IsPartialArrowTypeName(string s) { return s.StartsWith("_#PartialFunc"); } - public static string PartialArrowTypeName(int arity) { - return "_#PartialFunc" + arity; - } - [Pure] public static bool IsTotalArrowTypeName(string s) { return s.StartsWith("_#TotalFunc"); } - public static string TotalArrowTypeName(int arity) { - return "_#TotalFunc" + arity; - } - public const string ANY_ARROW = "~>"; public const string PARTIAL_ARROW = "-->"; public const string TOTAL_ARROW = "->"; From d566c39f4d88785cb7119797eb0d894dd0487f21 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 16 Feb 2021 10:41:30 -0800 Subject: [PATCH 377/573] Minor updates to linear documentation --- docs/Linear/RelatedWork.md | 18 +++++++++--------- linear-notes/README.md | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Linear/RelatedWork.md b/docs/Linear/RelatedWork.md index 56cac2a34c6..3e22c17ce16 100644 --- a/docs/Linear/RelatedWork.md +++ b/docs/Linear/RelatedWork.md @@ -85,23 +85,23 @@ or Walker, "Substructural Type Systems", 2005). Wadler's 1990 type system also introduced the idea of borrowing read-only access to a linear variable. To understand how linear Dafny builds on (and differs from) Wadler's idea, here is linear Dafny's rule for typing `u1 var x := e1; e2 : u2` from [TypingRules.md](TypingRules.md), -specialized to `u1 = ordinary` and omitting treatment of ghost variables: +specialized to `u1 = ordinary` and omitting treatment of ghost variables and mutable borrowing: ``` -O ; S, Bs ; {} ; L1 |- e1 : u1 -O, {x1} ; S ; {} ; Bs, L2 |- e2 : u2 ----------------------------------------------------------- -O ; S ; {} ; L1, Bs, L2 |- var x1 := e1; e2 : u2 +O ; S, Bs ; L1 |- e1 : u1 +O, {x1} ; S ; Bs, L2 |- e2 : u2 +----------------------------------------------------- +O ; S ; L1, Bs, L2 |- var x1 := e1; e2 : u2 ``` Here is what Wadler's original rule would look like written in the notation of [TypingRules.md](TypingRules.md): ``` For each xs in Bs, x1's type is "safe" for xs's type -O, Bs ; {} ; L1 |- e1 : u1 -O, {x1} ; {} ; Bs, L2 |- e2 : u2 -------------------------------------------------------- -O ; {} ; L1, Bs, L2 |- var!(Bs) x1 := e1; e2 : u2 +O, Bs ; L1 |- e1 : u1 +O, {x1} ; Bs, L2 |- e2 : u2 +-------------------------------------------------- +O ; L1, Bs, L2 |- var!(Bs) x1 := e1; e2 : u2 ``` The idea behind the two rules is very similar: the variables `Bs` are borrowed nonlinearly in `e1` diff --git a/linear-notes/README.md b/linear-notes/README.md index c45e62a552c..603c8b3a93b 100644 --- a/linear-notes/README.md +++ b/linear-notes/README.md @@ -1 +1 @@ -See the Docs/Linear directory for documentation on the linear type system. +See the [Docs/Linear](../Docs/Linear) directory for documentation on the linear type system. From 2002a5a4e898b099a08693ad08ad9cb1dab0488f Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 16 Feb 2021 10:56:39 -0800 Subject: [PATCH 378/573] Remove linear-notes directory --- linear-notes/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 linear-notes/README.md diff --git a/linear-notes/README.md b/linear-notes/README.md deleted file mode 100644 index 603c8b3a93b..00000000000 --- a/linear-notes/README.md +++ /dev/null @@ -1 +0,0 @@ -See the [Docs/Linear](../Docs/Linear) directory for documentation on the linear type system. From cb34a0b736e88bdf995f453635057a65714d44a4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 30 Mar 2021 12:00:33 -0400 Subject: [PATCH 379/573] Partially through merging Dafny official into betr --- .github/workflows/msbuild.yml | 6 +- .github/workflows/release-downloads.yml | 17 +- Binaries/DafnyPrelude.bpl | 44 +- Binaries/DafnyRuntime.h | 147 +--- RELEASE.txt | 20 +- Scripts/allow_on_mac.sh | 4 +- Scripts/dafny-server | 4 +- Scripts/package.py | 9 +- Scripts/quicktest.out | 15 - Scripts/quicktest.sh | 8 +- Source/Dafny/Cloner.cs | 11 +- Source/Dafny/Compiler-Csharp.cs | 19 +- Source/Dafny/Compiler-cpp.cs | 25 +- Source/Dafny/Compiler-go.cs | 18 +- Source/Dafny/Compiler-java.cs | 39 +- Source/Dafny/Compiler.cs | 70 +- Source/Dafny/Dafny.atg | 42 +- Source/Dafny/DafnyAst.cs | 66 +- Source/Dafny/DafnyMain.cs | 14 +- Source/Dafny/DafnyOptions.cs | 15 +- Source/Dafny/DafnyPipeline.csproj | 2 +- Source/Dafny/Printer.cs | 11 +- Source/Dafny/Resolver.cs | 701 +++++++++++------- Source/Dafny/Rewriter.cs | 32 +- Source/Dafny/Translator.cs | 142 ++-- Source/Dafny/Triggers/TriggersCollector.cs | 59 +- Source/Dafny/Util.cs | 5 + Source/DafnyDriver/DafnyDriver.cs | 13 +- Source/DafnyRuntime/DafnyRuntime.cs | 4 +- Source/Directory.Build.props | 2 +- Source/version.cs | 6 +- Test/c++/maps.dfy.expect | 8 +- Test/comp/Arrays.dfy | 22 + Test/comp/Arrays.dfy.expect | 6 +- Test/comp/AutoInit.dfy | 4 +- Test/comp/Collections.dfy | 62 +- Test/comp/Collections.dfy.expect | 68 ++ Test/comp/MainMethod.dfy | 73 ++ Test/comp/MainMethod.dfy.expect | 110 +++ .../dafny0/BindingGuardsResolution.dfy.expect | 2 +- Test/dafny0/Constant.dfy | 2 +- Test/dafny0/Deprecation.dfy | 8 - Test/dafny0/Deprecation.dfy.expect | 11 +- Test/dafny0/IteratorResolution.dfy | 4 +- Test/dafny0/IteratorResolution.dfy.expect | 34 +- Test/dafny0/NonZeroInitializationCompile.dfy | 2 +- Test/dafny0/ResolutionErrors.dfy | 381 +++++++++- Test/dafny0/ResolutionErrors.dfy.expect | 93 ++- Test/dafny0/Twostate-Resolution.dfy | 177 +++++ Test/dafny0/Twostate-Resolution.dfy.expect | 225 +++++- Test/dafny0/Twostate-Verification.dfy | 446 +++++++++++ Test/dafny0/Twostate-Verification.dfy.expect | 158 +++- Test/dafny0/TypeParameters.dfy | 2 +- Test/dafny1/UltraFilter.dfy.expect | 1 - Test/dafny4/ACL2-extractor.dfy | 16 +- Test/dafny4/Bug170.dfy | 17 + Test/dafny4/Bug170.dfy.expect | 11 +- Test/dafny4/Bug60.dfy | 12 +- Test/dafny4/Primes.dfy | 2 +- Test/dafny4/RollYourOwnArrowType.dfy | 40 +- Test/dafny4/git-issue106.dfy | 9 + Test/dafny4/git-issue106.dfy.expect | 3 + Test/git-issues/git-issue-1093.dfy | 37 + Test/git-issues/git-issue-1093.dfy.expect | 14 + Test/git-issues/git-issue-1094.dfy | 146 ++++ Test/git-issues/git-issue-1094.dfy.expect | 2 + Test/git-issues/git-issue-1100.dfy | 4 + Test/git-issues/git-issue-1100.dfy.expect | 16 + Test/git-issues/git-issue-1105.dfy | 18 + Test/git-issues/git-issue-1105.dfy.expect | 12 + Test/git-issues/git-issue-1109.dfy | 7 + Test/git-issues/git-issue-1109.dfy.expect | 5 + Test/git-issues/git-issue-1112.dfy | 109 +++ Test/git-issues/git-issue-1112.dfy.expect | 113 +++ Test/git-issues/git-issue-1113.dfy | 44 ++ Test/git-issues/git-issue-1113.dfy.expect | 2 + Test/git-issues/git-issue-1127.dfy | 30 + Test/git-issues/git-issue-1127.dfy.expect | 3 + Test/git-issues/git-issue-1130.dfy | 88 +++ Test/git-issues/git-issue-1130.dfy.expect | 3 + Test/git-issues/git-issue-1143.dfy | 25 + Test/git-issues/git-issue-1143.dfy.expect | 2 + Test/git-issues/git-issue-1148.dfy | 82 ++ Test/git-issues/git-issue-1148.dfy.expect | 23 + Test/git-issues/git-issue-1151-concrete.cs | 24 + Test/git-issues/git-issue-1151.dfy | 29 + Test/git-issues/git-issue-1151.dfy.expect | 5 + Test/git-issues/git-issue-1158.dfy | 27 + Test/git-issues/git-issue-1158.dfy.expect | 2 + Test/git-issues/git-issue-551.dfy.expect | 2 +- Test/git-issues/git-issue-615.dfy | 3 + Test/git-issues/git-issue-615.dfy.expect | 6 +- Test/git-issues/git-issue-MainE.dfy | 31 +- Test/git-issues/git-issue-MainE.dfy.expect | 25 +- Test/refman/Example-TwoState.dfy | 18 + Test/refman/Example-TwoState.dfy.expect | 8 + Test/server/counterexample.transcript | 1 - Test/server/counterexample.transcript.expect | 2 +- Test/server/git-issue223.transcript | 1 - Test/server/git-issue223.transcript.expect | 4 +- Test/traits/TraitResolution1.dfy | 2 +- Test/traits/TraitResolution1.dfy.expect | 4 +- ...-not-look-like-the-triggers-they-match.dfy | 128 +++- ...ok-like-the-triggers-they-match.dfy.expect | 86 ++- Test/wishlist/git-issue-Main5.dfy | 28 - docs/Compilation/Cpp.md | 2 - docs/DafnyRef/DafnyRef.md | 26 +- docs/DafnyRef/Expressions.md | 4 +- docs/DafnyRef/Grammar.md | 3 + docs/DafnyRef/Modules.md | 2 +- docs/DafnyRef/Refinement.md | 2 +- docs/DafnyRef/Statements.md | 18 +- docs/DafnyRef/SyntaxTests.md | 2 +- docs/DafnyRef/Types.md | 127 +++- docs/DafnyRef/UserGuide.md | 21 +- .../examples/Example-TwoState-Caller.dfy | 10 + .../examples/Example-TwoState-Diff.dfy | 12 + .../examples/Example-TwoState-DiffAgain.dfy | 11 + .../examples/Example-TwoState-EtaExample.dfy | 8 + .../examples/Example-TwoState-Increasing.dfy | 5 + .../examples/Example-TwoState-SeqSum.dfy | 27 + docs/DafnyRef/out/DafnyRef.pdf | Bin 731578 -> 730907 bytes docs/OnlineTutorial/guide.md | 72 +- docs/QuickReference.md | 4 +- 124 files changed, 4288 insertions(+), 868 deletions(-) create mode 100644 Test/comp/MainMethod.dfy create mode 100644 Test/comp/MainMethod.dfy.expect create mode 100644 Test/dafny4/git-issue106.dfy create mode 100644 Test/dafny4/git-issue106.dfy.expect create mode 100644 Test/git-issues/git-issue-1093.dfy create mode 100644 Test/git-issues/git-issue-1093.dfy.expect create mode 100644 Test/git-issues/git-issue-1094.dfy create mode 100644 Test/git-issues/git-issue-1094.dfy.expect create mode 100644 Test/git-issues/git-issue-1100.dfy create mode 100644 Test/git-issues/git-issue-1100.dfy.expect create mode 100644 Test/git-issues/git-issue-1105.dfy create mode 100644 Test/git-issues/git-issue-1105.dfy.expect create mode 100755 Test/git-issues/git-issue-1109.dfy create mode 100644 Test/git-issues/git-issue-1109.dfy.expect create mode 100644 Test/git-issues/git-issue-1112.dfy create mode 100644 Test/git-issues/git-issue-1112.dfy.expect create mode 100644 Test/git-issues/git-issue-1113.dfy create mode 100644 Test/git-issues/git-issue-1113.dfy.expect create mode 100644 Test/git-issues/git-issue-1127.dfy create mode 100644 Test/git-issues/git-issue-1127.dfy.expect create mode 100644 Test/git-issues/git-issue-1130.dfy create mode 100644 Test/git-issues/git-issue-1130.dfy.expect create mode 100644 Test/git-issues/git-issue-1143.dfy create mode 100644 Test/git-issues/git-issue-1143.dfy.expect create mode 100644 Test/git-issues/git-issue-1148.dfy create mode 100644 Test/git-issues/git-issue-1148.dfy.expect create mode 100644 Test/git-issues/git-issue-1151-concrete.cs create mode 100644 Test/git-issues/git-issue-1151.dfy create mode 100644 Test/git-issues/git-issue-1151.dfy.expect create mode 100644 Test/git-issues/git-issue-1158.dfy create mode 100644 Test/git-issues/git-issue-1158.dfy.expect create mode 100644 Test/refman/Example-TwoState.dfy create mode 100644 Test/refman/Example-TwoState.dfy.expect delete mode 100644 Test/wishlist/git-issue-Main5.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-Caller.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-Diff.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-DiffAgain.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-EtaExample.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-Increasing.dfy create mode 100644 docs/DafnyRef/examples/Example-TwoState-SeqSum.dfy diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 2c51b3e6a3a..8551d353120 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -50,6 +50,10 @@ jobs: if: matrix.os == 'ubuntu-16.04' run: | sudo apt-get install -y build-essential + - name: Choose the right C++ for ubuntu 16.04 + if: matrix.os == 'ubuntu-16.04' + run: | + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 60 - uses: actions/setup-python@v1 - name: Set up JDK 1.8 uses: actions/setup-java@v1 @@ -68,7 +72,7 @@ jobs: path: dafny - name: Create release run: | - python dafny/Scripts/package.py 0.0.0-CI --os ${{ matrix.os_for_build }} --skip_manual=true --trial=true --out=CI.zip + python dafny/Scripts/package.py 0.0.0-CI --os ${{ matrix.os_for_build }} --skip_manual=true --trial=true --github_secret=${{ secrets.GITHUB_TOKEN }} --out=CI.zip - if: runner.os == 'Windows' shell: pwsh run: | diff --git a/.github/workflows/release-downloads.yml b/.github/workflows/release-downloads.yml index 051a6b6deb5..c12e42ae408 100644 --- a/.github/workflows/release-downloads.yml +++ b/.github/workflows/release-downloads.yml @@ -1,14 +1,10 @@ name: Test Release Downloads -#### For a new release: Change 'ver' and 'rel' in the strategy +#### For a new release: Change 'ver' in the strategy on: - workflow_dispatch: - branches: [ master ] - push: - branches: [ master ] - pull_request: - branches: [ master ] + release: + types: [ published ] jobs: build: @@ -27,7 +23,7 @@ jobs: osn: 'osx' - os: 'windows-latest' osn: 'win' - ver: '3.0.0-Prerelease4' + ver: '3.0.0' # There is no hosted environment for Unbuntu 14.04 or for debian # Java is installed by default, but we need to select 1.8 @@ -43,7 +39,10 @@ jobs: - name: Download ${{matrix.os}} releases if: runner.os != 'Windows' run: | - wget -q `curl --silent "https://api.github.com/repos/dafny-lang/dafny/releases/latest" | grep 'browser_download_url' | grep "${{matrix.osn}}" | sed -e 's@"browser_download_url":@@' -e 's@"@@g'` + curl --silent "https://api.github.com/repos/dafny-lang/dafny/releases/latest" \ + --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ + | grep 'browser_download_url' > tmp.curl.out + wget -q `grep "${{matrix.osn}}" tmp.curl.out | sed -e 's@"browser_download_url":@@' -e 's@"@@g'` unzip dafny*.zip && rm dafny*.zip - if: runner.os == 'Windows' shell: pwsh diff --git a/Binaries/DafnyPrelude.bpl b/Binaries/DafnyPrelude.bpl index 777c0b4b0ea..c2832ffa176 100644 --- a/Binaries/DafnyPrelude.bpl +++ b/Binaries/DafnyPrelude.bpl @@ -1213,16 +1213,19 @@ axiom (forall u: U :: { Map#Domain(Map#Empty(): Map U V)[u] } !Map#Domain(Map#Empty(): Map U V)[u]); -function Map#Glue([U] bool, [U]V, Ty): Map U V; -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { Map#Domain(Map#Glue(a, b, t)) } - Map#Domain(Map#Glue(a, b, t)) == a); -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { Map#Elements(Map#Glue(a, b, t)) } - Map#Elements(Map#Glue(a, b, t)) == b); -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { $Is(Map#Glue(a, b, t), t) } - $Is(Map#Glue(a, b, t), t)); +function Map#Glue([U]bool, [U]V, Ty): Map U V; +axiom (forall a: [U]bool, b: [U]V, t: Ty :: + { Map#Domain(Map#Glue(a, b, t)) } + Map#Domain(Map#Glue(a, b, t)) == a); +axiom (forall a: [U]bool, b: [U]V, t: Ty :: + { Map#Elements(Map#Glue(a, b, t)) } + Map#Elements(Map#Glue(a, b, t)) == b); +axiom (forall a: [Box]bool, b: [Box]Box, t0, t1: Ty :: + { Map#Glue(a, b, TMap(t0, t1)) } + // In the following line, no trigger needed, since the quantifier only gets used in negative contexts + (forall bx: Box :: a[bx] ==> $IsBox(bx, t0) && $IsBox(b[bx], t1)) + ==> + $Is(Map#Glue(a, b, TMap(t0, t1)), TMap(t0, t1))); //Build is used in displays, and for map updates @@ -1346,15 +1349,18 @@ axiom (forall u: U :: !IMap#Domain(IMap#Empty(): IMap U V)[u]); function IMap#Glue([U] bool, [U]V, Ty): IMap U V; -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { IMap#Domain(IMap#Glue(a, b, t)) } - IMap#Domain(IMap#Glue(a, b, t)) == a); -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { IMap#Elements(IMap#Glue(a, b, t)) } - IMap#Elements(IMap#Glue(a, b, t)) == b); -axiom (forall a: [U] bool, b:[U]V, t:Ty :: - { $Is(IMap#Glue(a, b, t), t) } - $Is(IMap#Glue(a, b, t), t)); +axiom (forall a: [U]bool, b: [U]V, t: Ty :: + { IMap#Domain(IMap#Glue(a, b, t)) } + IMap#Domain(IMap#Glue(a, b, t)) == a); +axiom (forall a: [U]bool, b: [U]V, t: Ty :: + { IMap#Elements(IMap#Glue(a, b, t)) } + IMap#Elements(IMap#Glue(a, b, t)) == b); +axiom (forall a: [Box]bool, b: [Box]Box, t0, t1: Ty :: + { IMap#Glue(a, b, TIMap(t0, t1)) } + // In the following line, no trigger needed, since the quantifier only gets used in negative contexts + (forall bx: Box :: a[bx] ==> $IsBox(bx, t0) && $IsBox(b[bx], t1)) + ==> + $Is(Map#Glue(a, b, TIMap(t0, t1)), TIMap(t0, t1))); //Build is used in displays function IMap#Build(IMap U V, U, V): IMap U V; diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 36d1141d86f..eadc7b2bb92 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -5,6 +5,8 @@ #include #include +#include +#include #include #include #include @@ -120,138 +122,36 @@ struct get_default> { struct Tuple0 {}; -template -struct Tuple2 { - T0 t0; - T1 t1; +template +struct Tuple{ + public: + Tuple() : Tuple(get_default::call()...) {} + Tuple(Types... values) : values_(values...) {} - Tuple2() { - t0 = get_default::call(); - t1 = get_default::call(); - } + using StdTuple = std::tuple; - Tuple2(T0 _t0, T1 _t1) { - t0 = _t0; - t1 = _t1; + template + std::tuple_element_t get() { + return std::get(values_); } - T0 get_0() const { return t0; } - T1 get_1() const { return t1; } + StdTuple values_; }; -template -inline std::ostream& operator<<(std::ostream& out, const Tuple2& val){ - out << val.get_0(); - out << val.get_1(); - return out; -} - -template -struct Tuple3 { - T0 t0; - T1 t1; - T2 t2; - - Tuple3() { - t0 = get_default::call(); - t1 = get_default::call(); - t2 = get_default::call(); - } - - Tuple3(T0 _t0, T1 _t1, T2 _t2) { - t0 = _t0; - t1 = _t1; - t2 = _t2; +template +std::ostream& PrintElements(const TupleType& tuple, std::ostream& out) { + if (Index != 0) { + PrintElements(tuple, out); } - - T0 get_0() const { return t0; } - T1 get_1() const { return t1; } - T2 get_2() const { return t2; } -}; - -template -inline std::ostream& operator<<(std::ostream& out, const Tuple3& val){ - out << val.get_0(); - out << val.get_1(); - out << val.get_2(); - return out; + return out << std::get(tuple); } -template -struct Tuple4 { - T0 t0; - T1 t1; - T2 t2; - T3 t3; - - Tuple4() { - t0 = get_default::call(); - t1 = get_default::call(); - t2 = get_default::call(); - t3 = get_default::call(); - } - - Tuple4(T0 _t0, T1 _t1, T2 _t2, T3 _t3) { - t0 = _t0; - t1 = _t1; - t2 = _t2; - t3 = _t3; - } - - T0 get_0() const { return t0; } - T1 get_1() const { return t1; } - T2 get_2() const { return t2; } - T3 get_3() const { return t3; } -}; - -template -inline std::ostream& operator<<(std::ostream& out, const Tuple4& val){ - out << val.get_0(); - out << val.get_1(); - out << val.get_2(); - out << val.get_3(); - return out; -} - -template -struct Tuple5 { - T0 t0; - T1 t1; - T2 t2; - T3 t3; - T4 t4; - - Tuple5() { - t0 = get_default::call(); - t1 = get_default::call(); - t2 = get_default::call(); - t3 = get_default::call(); - t4 = get_default::call(); - } - - Tuple5(T0 _t0, T1 _t1, T2 _t2, T3 _t3, T4 _t4) { - t0 = _t0; - t1 = _t1; - t2 = _t2; - t3 = _t3; - t4 = _t4; - } - - T0 get_0() const { return t0; } - T1 get_1() const { return t1; } - T2 get_2() const { return t2; } - T3 get_3() const { return t3; } - T4 get_4() const { return t4; } -}; - -template -inline std::ostream& operator<<(std::ostream& out, const Tuple5& val){ - out << val.get_0(); - out << val.get_1(); - out << val.get_2(); - out << val.get_3(); - out << val.get_4(); - return out; +// Use a separate head template parameter to force Tuple to have at least one +// element. This prevents the compiler from eagerly expanding Tail as an empty +// list and causing compilation errors. +template +inline std::ostream& operator<<(std::ostream& out, const Tuple& val){ + return PrintElements(val.values_, out); } /********************************************************* @@ -853,4 +753,3 @@ struct std::hash> { return seed; } }; - diff --git a/RELEASE.txt b/RELEASE.txt index 317d67fe318..cdd584a3638 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -6,25 +6,33 @@ This is the procedure for generating a new Dafny release. 1) In an up-to-date repository, with the master branch checked out and up-to-date (e.g., git pull upstream) cd to the repo root (i.e., dafny, which contains Source, Binaries, etc.) - create and checkout a new branch: e.g. git checkout -b release -2) Select a version number (descriptor) $VER (e.g., "3.0.0-alpha") - Edit it into Source/version.cs - Also edit the release name into .github/workflows/release-downloads.yml - for the 'ver' variable for Windows +2) Select a version number (descriptor) $VER (e.g., "3.0.0" or "3.0.0-alpha") + and select an internal version number (e.g., "3.0.0.30203") + Edit the internal version number in Source/version.cs. + Push/merge that change to the master branch. 3) Run 'Scripts/package.py "$VER"' (in a Linux or Mac system) Warnings about missing fonts can be ignored. + Note: This step requires that you have installed pandoc, see the + https://github.com/dafny-lang/dafny/wiki/INSTALL#building-the-reference-manual. 4) Run 'Scripts/publish-release.sh $VER' to create the github release and upload files to it. You will need to have a Github Personal Authorization token stored in ~/github.token. + Also, this step requires the "jq" utility, which you can install + by "brew install jq" on a Mac (see https://stedolan.github.io/jq/download/). + Note: Each upload of this step can take a couple of minutes, so + be patient. 5) In the Github releases, edit the new release to add in the release notes. 6) Push the Publish button. -7) Commit the modified files, such as Source/version.cs, +7) Edit the release name into .github/workflows/release-downloads.yml + for the 'ver' variable for Windows + + Commit the modified files, such as .github/workflows/release-downloads,yml, docs/DafnyRef/DafnyRef.pdf, possibly docs/DafnyRef/Options.txt diff --git a/Scripts/allow_on_mac.sh b/Scripts/allow_on_mac.sh index fbabfd0e450..7e53fe88c4d 100755 --- a/Scripts/allow_on_mac.sh +++ b/Scripts/allow_on_mac.sh @@ -1,4 +1,4 @@ #! /bin/bash -cd $( dirname $SOURCE ) -xattr -d com.apple.quarantine *.dylib dafny DafnyServer *.dll z3/bin/z3 +cd "$( dirname "${BASH_SOURCE[0]}" )" || exit 1 +xattr -d com.apple.quarantine ./*.dylib dafny DafnyServer ./*.dll z3/bin/z3 diff --git a/Scripts/dafny-server b/Scripts/dafny-server index c6724afa101..68481172bd5 100755 --- a/Scripts/dafny-server +++ b/Scripts/dafny-server @@ -8,7 +8,7 @@ while [ -h "$SOURCE" ]; do SOURCE="$(readlink "$SOURCE")" [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" done -DAFNY_ROOT="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +DAFNY_ROOT="$( cd -P "$( dirname $( dirname "$SOURCE" ))" && pwd )" MY_OS=$(uname -s) if [ "${MY_OS:0:5}" == "MINGW" ] || [ "${MY_OS:0:6}" == "CYGWIN" ]; then @@ -16,7 +16,7 @@ if [ "${MY_OS:0:5}" == "MINGW" ] || [ "${MY_OS:0:6}" == "CYGWIN" ]; then else DAFNYSERVER_EXE_NAME="DafnyServer.dll" fi -DAFNYSERVER="$DAFNY_ROOT/$DAFNYSERVER_EXE_NAME" +DAFNYSERVER="$DAFNY_ROOT/Binaries/$DAFNYSERVER_EXE_NAME" if [[ ! -e "$DAFNYSERVER" ]]; then echo "Error: $DAFNYSERVER_EXE_NAME not found at $DAFNY_ROOT." exit 1 diff --git a/Scripts/package.py b/Scripts/package.py index 11cdda1c2f9..bb5a510e305 100755 --- a/Scripts/package.py +++ b/Scripts/package.py @@ -10,7 +10,7 @@ import subprocess import sys import time -import urllib.request +from urllib import request import zipfile import shutil import ntpath @@ -108,7 +108,7 @@ def download(self): print("cached!") else: flush("downloading {:.2f}MB...".format(self.MB), end=' ') - with urllib.request.urlopen(self.url) as reader: + with request.urlopen(self.url) as reader: with open(self.z3_zip, mode="wb") as writer: writer.write(reader.read()) flush("done!") @@ -185,7 +185,9 @@ def pack(self): def discover(args): flush(" - Getting information about latest release") - with urllib.request.urlopen(Z3_RELEASES_URL) as reader: + options = {"Authorization": "Bearer " + args.github_secret} if args.github_secret else {} + req = request.Request(Z3_RELEASES_URL, None, options) + with request.urlopen(req) as reader: js = json.loads(reader.read().decode("utf-8")) for release_js in js["assets"]: @@ -261,6 +263,7 @@ def parse_arguments(): parser.add_argument("--os", help="operating system name for which to make a release") parser.add_argument("--skip_manual", help="do not create the reference manual") parser.add_argument("--trial", help="ignore version.cs discrepancies") + parser.add_argument("--github_secret", help="access token for making an authenticated GitHub call, to prevent being rate limited.") parser.add_argument("--out", help="output zip file") return parser.parse_args() diff --git a/Scripts/quicktest.out b/Scripts/quicktest.out index 8d1bcf937cf..7d30dffeeb5 100644 --- a/Scripts/quicktest.out +++ b/Scripts/quicktest.out @@ -10,31 +10,16 @@ Dafny program verifier finished with 0 verified, 1 error Compiling on C# Dafny program verifier finished with 0 verified, 0 errors -Running... - (42, 131) Compiling to Javascript Dafny program verifier finished with 0 verified, 0 errors -Running... - (42, 131) Compiling to Java Dafny program verifier finished with 0 verified, 0 errors -Compiled program written to c-java/c.java -Additional code written to c-java/_System/nat.java -Additional code written to c-java/_System/__default.java -Additional code written to c-java/dafny/Tuple0.java -Running... - (42, 131) Compiling to Go Dafny program verifier finished with 0 verified, 0 errors -Compiled program written to c-go/src/c.go -Additional code written to c-go/src/dafny/dafny.go -Additional code written to c-go/src/System_/System_.go -Running... - (42, 131) diff --git a/Scripts/quicktest.sh b/Scripts/quicktest.sh index cd71fc776dc..fff445e415d 100755 --- a/Scripts/quicktest.sh +++ b/Scripts/quicktest.sh @@ -10,11 +10,11 @@ $DIR/dafny /compile:0 a.dfy echo Should fail $DIR/dafny /compile:0 -useBaseNameForFileName b.dfy echo Compiling on C# -$DIR/dafny /compile:3 /compileTarget:cs c.dfy +$DIR/dafny /compile:3 /compileVerbose:0 /compileTarget:cs c.dfy echo Compiling to Javascript -$DIR/dafny /compile:3 /compileTarget:js c.dfy +$DIR/dafny /compile:3 /compileVerbose:0 /compileTarget:js c.dfy echo Compiling to Java -$DIR/dafny /compile:3 /compileTarget:java c.dfy +$DIR/dafny /compile:3 /compileVerbose:0 /compileTarget:java c.dfy echo Compiling to Go -$DIR/dafny /compile:3 /compileTarget:go c.dfy +$DIR/dafny /compile:3 /compileVerbose:0 /compileTarget:go c.dfy rm -rf a.dfy b.dfy c.dfy c-go c-java c diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index a74bcd92332..428adc01794 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -353,7 +353,7 @@ public virtual Expression CloneExpr(Expression expr) { } else if (expr is FunctionCallExpr) { var e = (FunctionCallExpr)expr; - return new FunctionCallExpr(Tok(e.tok), e.Name, CloneExpr(e.Receiver), e.OpenParen == null ? null : Tok(e.OpenParen), e.Args.ConvertAll(CloneExpr)); + return new FunctionCallExpr(Tok(e.tok), e.Name, CloneExpr(e.Receiver), e.OpenParen == null ? null : Tok(e.OpenParen), e.Args.ConvertAll(CloneExpr), e.AtLabel); } else if (expr is ApplyExpr) { var e = (ApplyExpr)expr; @@ -484,7 +484,7 @@ public NestedMatchCaseExpr CloneNestedMatchCaseExpr(NestedMatchCaseExpr c) { } public virtual Expression CloneApplySuffix(ApplySuffix e) { - var applySuffix = new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( + var applySuffix = new ApplySuffix(Tok(e.tok), e.AtTok == null ? null : Tok(e.AtTok), CloneExpr(e.Lhs), e.Args.ConvertAll( x => new ApplySuffixArg { Inout = x.Inout, Expr = CloneExpr(x.Expr) })); applySuffix.RewrittenAsInoutThis = e.RewrittenAsInoutThis; return applySuffix; @@ -830,6 +830,7 @@ public virtual BlockStmt CloneMethodBody(Method m) { } public virtual IToken Tok(IToken tok) { + Contract.Requires(tok != null); return tok; } } @@ -1138,7 +1139,7 @@ protected Expression CloneCallAndAddK(ApplySuffix e) { foreach (var arg in e.Args) { args.Add(new ApplySuffixArg { Inout = arg.Inout, Expr = CloneExpr(arg.Expr) }); } - var apply = new ApplySuffix(Tok(e.tok), lhs, args); + var apply = new ApplySuffix(Tok(e.tok), e.AtTok == null ? null : Tok(e.AtTok), lhs, args); reporter.Info(MessageSource.Cloner, e.tok, name + suffix); return apply; } @@ -1151,7 +1152,7 @@ protected Expression CloneCallAndAddK(FunctionCallExpr e) { foreach (var arg in e.Args) { args.Add(CloneExpr(arg)); } - var fexp = new FunctionCallExpr(Tok(e.tok), e.Name + "#", receiver, e.OpenParen, args); + var fexp = new FunctionCallExpr(Tok(e.tok), e.Name + "#", receiver, e.OpenParen, args, e.AtLabel); reporter.Info(MessageSource.Cloner, e.tok, e.Name + suffix); return fexp; } @@ -1343,7 +1344,7 @@ public override AssignmentRhs CloneRHS(AssignmentRhs rhs) { var args = new List(); args.Add(new ApplySuffixArg { Inout = false, Expr = k }); apply.Args.ForEach(arg => args.Add(new ApplySuffixArg { Inout = arg.Inout, Expr = CloneExpr(arg.Expr) })); - var applyClone = new ApplySuffix(Tok(apply.tok), lhsClone, args); + var applyClone = new ApplySuffix(Tok(apply.tok), apply.AtTok == null ? null : Tok(apply.AtTok), lhsClone, args); var c = new ExprRhs(applyClone); reporter.Info(MessageSource.Cloner, apply.Lhs.tok, mse.Member.Name + suffix); return c; diff --git a/Source/Dafny/Compiler-Csharp.cs b/Source/Dafny/Compiler-Csharp.cs index 7b81f08f97d..005c04112ac 100644 --- a/Source/Dafny/Compiler-Csharp.cs +++ b/Source/Dafny/Compiler-Csharp.cs @@ -44,7 +44,20 @@ public CsharpCompiler(ErrorReporter reporter) static string FormatTypeDescriptorVariable(string typeVarName) => $"_td_{typeVarName}"; static string FormatTypeDescriptorVariable(TypeParameter tp) => FormatTypeDescriptorVariable(tp.CompileName); const string TypeDescriptorMethodName = "_TypeDescriptor"; - static string FormatDefaultTypeParameterValue(TypeParameter tp) => $"_default_{tp.CompileName}"; + static string FormatDefaultTypeParameterValue(TypeParameter tp) { + if (tp is OpaqueType_AsParameter) { + // This is unusual. Typically, the compiler never needs to compile an opaque type, but this opaque type + // is apparently an :extern. It's difficult to say what the compiler could do in this situation, since + // it doesn't know how to generate code that produces a legal value of the opaque type. If we don't do + // anything different from the common case (the "else" branch below), then the code emitted will not + // compile (see github issue #1151). So, to do something a wee bit better, we emit a placebo value. This + // will only work when the opaque type is in the same module and has no type parameters. + return $"default({tp.CompileName})"; + } else { + // this is the common case + return $"_default_{tp.CompileName}"; + } + } protected override void EmitHeader(Program program, TargetWriter wr) { wr.WriteLine("// Dafny program {0} compiled into C#", program.Name); @@ -2914,13 +2927,13 @@ private void AddTestCheckerIfNeeded(string name, Declaration decl, TargetWriter } public override void EmitCallToMain(Method mainMethod, string baseName, TargetWriter wr) { - var companion = TypeName_Companion(mainMethod.EnclosingClass as TopLevelDecl, wr, mainMethod.tok); + var companion = TypeName_Companion(UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(mainMethod.EnclosingClass), wr, mainMethod.tok, mainMethod); var wClass = wr.NewNamedBlock("class __CallToMain"); var wBody = wClass.NewNamedBlock("public static void Main(string[] args)"); var modName = mainMethod.EnclosingClass.EnclosingModuleDefinition.CompileName == "_module" ? "_module." : ""; companion = modName + companion; - var idName = mainMethod.IsStatic ? IdName(mainMethod) : "_StaticMain"; + var idName = IssueCreateStaticMain(mainMethod) ? "_StaticMain" : IdName(mainMethod); Coverage.EmitSetup(wBody); wBody.WriteLine($"{GetHelperModuleName()}.WithHaltHandling({companion}.{idName});"); diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 219f035680e..7fa1558a43d 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -728,7 +728,7 @@ public void Finish() { } if (nonGhostOuts.Count == 1) { targetReturnTypeReplacement = TypeName(nonGhostOuts[0].Type, wr, nonGhostOuts[0].tok, usage:nonGhostOuts[0].Usage); } else if (nonGhostOuts.Count > 1) { - targetReturnTypeReplacement = String.Format("struct Tuple{0}{1}", nonGhostOuts.Count, InstantiateTemplate(nonGhostOuts.ConvertAll(n => n.Type))); + targetReturnTypeReplacement = String.Format("struct Tuple{0}", InstantiateTemplate(nonGhostOuts.ConvertAll(n => n.Type))); } if (!createBody) { @@ -1084,7 +1084,7 @@ protected override string TypeInitializationValue(Type type, TextWriter wr, Bpl. } } else if (cl is DatatypeDecl) { var dt = (DatatypeDecl)cl; - var s = dt is TupleTypeDecl ? "Tuple" + (dt as TupleTypeDecl).Dims : FullTypeName(udt); + var s = dt is TupleTypeDecl ? "Tuple" : FullTypeName(udt); var w = new TargetWriter(); w.Write("{0}{1}()", s, InstantiateTemplate(udt.TypeArgs)); return w.ToString(); @@ -1213,7 +1213,7 @@ protected override void EmitOutParameterSplits(string outCollector, List EmitAssignment(actualOutParamNames[0], null, outCollector, null, wr); } else { for (var i = 0; i < actualOutParamNames.Count; i++) { - wr.WriteLine("{0} = {1}.get_{2}();", actualOutParamNames[i], outCollector, i); + wr.WriteLine("{0} = {1}.get<{2}>();", actualOutParamNames[i], outCollector, i); } } } @@ -1261,7 +1261,7 @@ protected override void EmitReturn(List outParams, TargetWriter wr) { } else if (outParams.Count == 1) { wr.WriteLine("return {0};", IdName(outParams[0])); } else { - wr.WriteLine("return Tuple{0}{1}({2});", outParams.Count, InstantiateTemplate(outParams.ConvertAll(o => o.Type)), Util.Comma(outParams, IdName)); + wr.WriteLine("return Tuple{0}({1});", InstantiateTemplate(outParams.ConvertAll(o => o.Type)), Util.Comma(outParams, IdName)); } } @@ -1597,8 +1597,7 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } else if (Attributes.Contains(cl.Attributes, "extern")) { return IdProtect(cl.EnclosingModuleDefinition.CompileName) + "::" + IdProtect(cl.Name); } else if (cl is TupleTypeDecl) { - var tuple = cl as TupleTypeDecl; - return "Tuple" + tuple.Dims; + return "Tuple"; } else { return IdProtect(cl.EnclosingModuleDefinition.CompileName) + "::" + IdProtect(cl.CompileName); } @@ -1626,7 +1625,7 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri foreach (var arg in dtv.Arguments) { types.Add(arg.Type); } - wr.Write("Tuple{0}{1}({2})", tuple.Dims, InstantiateTemplate(types), arguments); + wr.Write("Tuple{0}({1})", InstantiateTemplate(types), arguments); } else if (!isCoCall) { // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) @@ -1705,7 +1704,7 @@ protected override ILvalue EmitMemberSelect(Action obj, Type objTy wr.Write("{0}::{1}", IdProtect(member.EnclosingClass.CompileName) , IdProtect(member.CompileName)); }); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { - return SuffixLvalue(obj, ".get_{0}()", dtor.Name); + return SuffixLvalue(obj, ".get<{0}>()", dtor.Name); } else if (member is SpecialField sf2 && sf2.SpecialId == SpecialField.ID.UseIdParam && sf2.IdParam is string fieldName && fieldName.StartsWith("is_")) { // Ugly hack of a check to figure out if this is a datatype query: f.Constructor? @@ -1907,7 +1906,7 @@ protected override void EmitConstructorCheck(string source, DatatypeCtor ctor, T protected override void EmitDestructor(string source, Formal dtor, int formalNonGhostIndex, DatatypeCtor ctor, List typeArgs, Type bvType, TargetWriter wr) { if (ctor.EnclosingDatatype is TupleTypeDecl) { - wr.Write("({0}).get_{1}()", source, formalNonGhostIndex); + wr.Write("({0}).get<{1}>()", source, formalNonGhostIndex); } else { var dtorName = FormalName(dtor, formalNonGhostIndex); if (dtor.Type is UserDefinedType udt && udt.ResolvedClass == ctor.EnclosingDatatype) { @@ -2396,7 +2395,7 @@ public override bool CompileTargetProgram(string dafnyProgramName, string target var codebase = System.IO.Path.GetDirectoryName(assemblyLocation); Contract.Assert(codebase != null); var exeName = ComputeExeName(targetFilename); - var args = $"-g -Wall -Wextra -Wpedantic -Wno-unused-variable -std=c++17 -I{codebase} -o {exeName} {targetFilename}"; + var args = $"-g -Wall -Wextra -Wpedantic -Wno-unused-variable -Wno-deprecated-copy -Wno-unknown-warning-option -std=c++17 -I{codebase} -o {exeName} {targetFilename}"; compilationResult = null; var psi = new ProcessStartInfo("g++", args) { CreateNoWindow = true, @@ -2422,12 +2421,14 @@ public override bool CompileTargetProgram(string dafnyProgramName, string target public override bool RunTargetProgram(string dafnyProgramName, string targetProgramText, string/*?*/ callToMain, string targetFilename, ReadOnlyCollection otherFileNames, object compilationResult, TextWriter outputWriter) { var exeName = ComputeExeName(targetFilename); - var psi = new ProcessStartInfo(exeName) { + var dir = Path.GetDirectoryName(Path.GetFullPath(targetFilename)); + var exePath = Path.Combine(dir, exeName); + var psi = new ProcessStartInfo(exePath) { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, - WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(targetFilename)) + WorkingDirectory = dir }; var proc = Process.Start(psi); while (!proc.StandardOutput.EndOfStream) { diff --git a/Source/Dafny/Compiler-go.cs b/Source/Dafny/Compiler-go.cs index 3f80dada5d3..660d6a954e3 100644 --- a/Source/Dafny/Compiler-go.cs +++ b/Source/Dafny/Compiler-go.cs @@ -89,12 +89,15 @@ void EmitImports(TargetWriter wr, out TargetWriter importWriter, out TargetWrite } public override void EmitCallToMain(Method mainMethod, string baseName, TargetWriter wr) { - var companion = TypeName_Companion(mainMethod.EnclosingClass as ClassDecl, wr, mainMethod.tok); + var companion = TypeName_Companion(UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(mainMethod.EnclosingClass), wr, mainMethod.tok, mainMethod); var wBody = wr.NewNamedBlock("func main()"); wBody.WriteLine("defer _dafny.CatchHalt()"); + + var idName = IssueCreateStaticMain(mainMethod) ? "Main" : IdName(mainMethod); + Coverage.EmitSetup(wBody); - wBody.WriteLine("{0}.{1}()", companion, mainMethod.IsStatic ? IdName(mainMethod) : "Main"); + wBody.WriteLine("{0}.{1}()", companion, idName); Coverage.EmitTearDown(wBody); } @@ -1770,6 +1773,7 @@ protected void EmitReturnWithCoercions(List outParams, List/*?*/ protected override TargetWriter CreateLabeledCode(string label, TargetWriter wr) { var w = wr.ForkSection(); + wr.WriteLine("goto L{0};", label); wr.IndentLess(); wr.WriteLine("L{0}:", label); return w; @@ -2561,13 +2565,17 @@ protected override void EmitIndexCollectionSelect(Expression source, Expression } protected override void EmitIndexCollectionUpdate(Expression source, Expression index, Expression value, CollectionType resultCollectionType, bool inLetExprBody, TargetWriter wr) { - EmitIndexCollectionUpdate(out var wSource, out var wIndex, out var wValue, wr); + EmitIndexCollectionUpdate(out var wSource, out var wIndex, out var wValue, wr, false); TrParenExpr(source, wSource, inLetExprBody); - TrExprToBigInt(index, wIndex, inLetExprBody); + if (source.Type.AsSeqType != null) { + TrExprToBigInt(index, wIndex, inLetExprBody); + } else { + TrExpr(index, wIndex, inLetExprBody); + } TrExpr(value, wValue, inLetExprBody); } - protected override void EmitIndexCollectionUpdate(out TargetWriter wSource, out TargetWriter wIndex, out TargetWriter wValue, TargetWriter wr, bool nativeIndex = false) { + protected override void EmitIndexCollectionUpdate(out TargetWriter wSource, out TargetWriter wIndex, out TargetWriter wValue, TargetWriter wr, bool nativeIndex) { wSource = wr.Fork(); wr.Write(nativeIndex ? ".UpdateInt(" : ".Update("); wIndex = wr.Fork(); diff --git a/Source/Dafny/Compiler-java.cs b/Source/Dafny/Compiler-java.cs index fc70ec427f4..6c980bd0deb 100644 --- a/Source/Dafny/Compiler-java.cs +++ b/Source/Dafny/Compiler-java.cs @@ -308,7 +308,7 @@ public override void EmitCallToMain(Method mainMethod, string baseName, TargetWr var className = TransformToClassName(baseName); wr = wr.NewBlock($"public class {className}"); - var companion = TypeName_Companion(mainMethod.EnclosingClass as ClassDecl, wr, mainMethod.tok); + var companion = TypeName_Companion(UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(mainMethod.EnclosingClass), wr, mainMethod.tok, mainMethod); var wBody = wr.NewNamedBlock("public static void main(String[] args)"); var modName = mainMethod.EnclosingClass.EnclosingModuleDefinition.CompileName == "_module" ? "_System." : ""; companion = modName + companion; @@ -1479,7 +1479,7 @@ public TargetWriter EmitWrite(TargetWriter wr) { protected override void EmitSeqSelectRange(Expression source, Expression lo, Expression hi, bool fromArray, bool inLetExprBody, TargetWriter wr) { if (fromArray) { - wr.Write($"{DafnySeqClass}.fromRawArrayRange({TypeDescriptor(source.Type.TypeArgs[0], wr, source.tok)}, "); + wr.Write($"{DafnySeqClass}.fromRawArrayRange({TypeDescriptor(source.Type.NormalizeExpand().TypeArgs[0], wr, source.tok)}, "); } TrParenExpr(source, wr, inLetExprBody); if (fromArray) { @@ -1873,9 +1873,6 @@ void DatatypeFieldsAndConstructor(DatatypeCtor ctor, int constructorIndex, Targe } } } - if (ctor.Formals.Count > 0){ - wr.WriteLine($"public {DtCtorDeclarationName(ctor)}() {{ }}"); - } if (dt is CoDatatypeDecl) { string typeParams = TypeParameters(dt.TypeArgs); wr.WriteLine($"public {dt.CompileName}{typeParams} Get() {{ return this; }}"); @@ -1887,27 +1884,23 @@ void DatatypeFieldsAndConstructor(DatatypeCtor ctor, int constructorIndex, Targe w.WriteLine("if (this == other) return true;"); w.WriteLine("if (other == null) return false;"); w.WriteLine("if (getClass() != other.getClass()) return false;"); - if(ctor.Formals.Count > 0){string typeParams = TypeParameters(dt.TypeArgs); - w.WriteLine("{0} o = ({0})other;", DtCtorDeclarationName(ctor, dt.TypeArgs)); - w.Write("return "); - i = 0; - foreach (Formal arg in ctor.Formals) { - if (!arg.IsGhost) { - string nm = FormalName(arg, i); - if(i!= 0) - w.Write(" && "); - if (IsDirectlyComparable(arg.Type)) { - w.Write($"this.{nm} == o.{nm}"); - } else { - w.Write($"java.util.Objects.equals(this.{nm}, o.{nm})"); - } - i++; + string typeParams = TypeParameters(dt.TypeArgs); + w.WriteLine("{0} o = ({0})other;", DtCtorDeclarationName(ctor, dt.TypeArgs)); + w.Write("return true"); + i = 0; + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + string nm = FormalName(arg, i); + w.Write(" && "); + if (IsDirectlyComparable(arg.Type)) { + w.Write($"this.{nm} == o.{nm}"); + } else { + w.Write($"java.util.Objects.equals(this.{nm}, o.{nm})"); } + i++; } - w.WriteLine(";"); - } else { - w.WriteLine("return true;"); } + w.WriteLine(";"); } // GetHashCode method (Uses the djb2 algorithm) wr.WriteLine("@Override"); diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index a2bf83da07d..137c760d66b 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -921,7 +921,7 @@ protected virtual string ArrayIndexToNativeInt(string arrayIndex, Type fromType) protected abstract void EmitExprAsInt(Expression expr, bool inLetExprBody, TargetWriter wr); protected abstract void EmitIndexCollectionSelect(Expression source, Expression index, bool inLetExprBody, TargetWriter wr); protected abstract void EmitIndexCollectionUpdate(Expression source, Expression index, Expression value, CollectionType resultCollectionType, bool inLetExprBody, TargetWriter wr); - protected virtual void EmitIndexCollectionUpdate(out TargetWriter wSource, out TargetWriter wIndex, out TargetWriter wValue, TargetWriter wr, bool nativeIndex = false) { + protected virtual void EmitIndexCollectionUpdate(out TargetWriter wSource, out TargetWriter wIndex, out TargetWriter wValue, TargetWriter wr, bool nativeIndex) { wSource = wr.Fork(); wr.Write('['); wIndex = wr.Fork(); @@ -1355,12 +1355,9 @@ public bool HasMain(Program program, out Method mainMethod) { continue; } foreach (var decl in module.TopLevelDecls) { - var c = decl as TopLevelDeclWithMembers; - if (c != null) { + if (decl is TopLevelDeclWithMembers c) { foreach (MemberDecl member in c.Members) { - var m = member as Method; - if (m == null) continue; - if (member.FullDafnyName == name) { + if (member is Method m && member.FullDafnyName == name) { mainMethod = m; if (!IsPermittedAsMain(mainMethod, out string reason)) { Error(mainMethod.tok, "The method \"{0}\" is not permitted as a main method ({1}).", null, name, reason); @@ -1480,13 +1477,26 @@ public static bool IsPermittedAsMain(Method m, out String reason) { reason = "the method has type parameters"; return false; } - if (cl.TypeArgs.Count != 0) { - reason = "the enclosing class has type parameters"; + if (cl is OpaqueTypeDecl) { + reason = "the enclosing type is an opaque type"; return false; } - if (!m.IsStatic && !cl.Members.TrueForAll(f => !(f is Constructor))) { - reason = "the method is not static and the enclosing class has constructors"; - return false; + if (!m.IsStatic) { + if (cl is TraitDecl) { + reason = "the method is not static and the enclosing type does not support auto-initialization"; + return false; + } else if (cl is ClassDecl) { + if (cl.Members.Exists(f => f is Constructor)) { + reason = "the method is not static and the enclosing class has constructors"; + return false; + } + } else { + var ty = UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(cl); + if (!ty.HasCompilableValue) { + reason = "the method is not static and the enclosing type does not support auto-initialization"; + return false; + } + } } if (!m.Ins.TrueForAll(f => f.IsGhost)) { reason = "the method has non-ghost parameters"; @@ -2205,21 +2215,43 @@ private void CompileMethod(Program program, Method m, IClassWriter cw, bool look if (m == program.MainMethod && IssueCreateStaticMain(m)) { w = CreateStaticMain(cw); + var ty = UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(m.EnclosingClass); + LocalVariable receiver = null; if (!m.IsStatic) { - var c = m.EnclosingClass; - var typeArgs = c.TypeArgs.ConvertAll(tp => (Type)Type.Bool); - var ty = new UserDefinedType(m.tok, c.Name, c, typeArgs); - var wRhs = DeclareLocalVar("b", ty, m.tok, Usage.Ordinary, w); - EmitNew(ty, m.tok, null, wRhs); - w.WriteLine("b.{0}();", IdName(m)); + receiver = new LocalVariable(m.tok, m.tok, "b", ty, Usage.Ordinary) { + type = ty + }; + if (m.EnclosingClass is ClassDecl) { + var wRhs = DeclareLocalVar(IdName(receiver), ty, m.tok, Usage.Ordinary, w); + EmitNew(ty, m.tok, null, wRhs); + } else { + TrLocalVar(receiver, true, w); + } + } + var typeArgs = CombineAllTypeArguments(m, ty.TypeArgs, m.TypeArgs.ConvertAll(tp => (Type)Type.Bool)); + bool customReceiver = !(m.EnclosingClass is TraitDecl) && NeedsCustomReceiver(m); + + if (receiver != null && !customReceiver) { + w.Write("{0}.", IdName(receiver)); } else { - w.WriteLine("{0}();", IdName(m)); + var companion = TypeName_Companion(UserDefinedType.FromTopLevelDeclWithAllBooleanTypeParameters(m.EnclosingClass), w, m.tok, m); + w.Write("{0}.", companion); + } + EmitNameAndActualTypeArgs(IdName(m), TypeArgumentInstantiation.ToActuals(ForTypeParameters(typeArgs, m, false)), m.tok, w); + w.Write("("); + var sep = ""; + if (receiver != null && customReceiver) { + w.Write("{0}", IdName(receiver)); + sep = ", "; } + EmitTypeDescriptorsActuals(ForTypeDescriptors(typeArgs, m, false), m.tok, w, ref sep); + w.Write(")"); + EndStmt(w); } } protected virtual bool IssueCreateStaticMain(Method m) { - return !m.IsStatic; + return !m.IsStatic || m.EnclosingClass.TypeArgs.Count != 0; } diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 078b0b5a9f0..7c89ce98ee5 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -128,11 +128,11 @@ bool IsAssumeTypeKeyword(IToken la) { /// Returns the number of parsing errors encountered. /// Note: first initialize the Scanner. /// -public static int Parse (string/*!*/ filename, Include include, ModuleDecl module, BuiltIns builtIns, Errors/*!*/ errors, bool verifyThisFile=true, bool compileThisFile=true) /* throws System.IO.IOException */ { +public static int Parse (bool useStdin, string/*!*/ filename, Include include, ModuleDecl module, BuiltIns builtIns, Errors/*!*/ errors, bool verifyThisFile=true, bool compileThisFile=true) /* throws System.IO.IOException */ { Contract.Requires(filename != null); Contract.Requires(module != null); string s; - if (filename == "stdin.dfy") { + if (useStdin) { s = Microsoft.Boogie.ParserHelper.Fill(System.Console.In, new List()); return Parse(s, filename, filename, include, module, builtIns, errors, verifyThisFile, compileThisFile); } else { @@ -525,6 +525,7 @@ bool IsGenericInstantiation(bool inExpressionContext) { case _openparen: // it was probably a type instantiation of a function/method case _lbracket: // it is possible that it was a type instantiation case _lbrace: // it was probably a type instantiation of a function/method + case _at: // In the following cases, we're sure we must have read a type instantiation that just ended an expression case _closeparen: case _rbracket: @@ -868,6 +869,7 @@ TOKENS neq = "!=". neqAlt = '\u2260'. star = '*'. + at = '@'. notIn = "!in" CONTEXT (nonidchar). ellipsis = "...". reveal = "reveal". @@ -1091,7 +1093,8 @@ ModuleExport . /*------------------------------------------------------------------------*/ -// TODO - this is somewhat a hack because it relies on TypeNameOrCtorSuffix +// Note - before the "." only Type names are permitted (no 'digits'), but name resolution sorts that +// out, since the parser does not know (without adding lookahead) when it has seen the last dot // matching any permitted member name ExportSignature @@ -4197,19 +4200,23 @@ CasePatternLocal<.out CasePattern pat, Usage usage.> /*------------------------------------------------------------------------*/ NameSegment = (. IToken id; - IToken openParen = null; List typeArgs = null; List args = null; + IToken openParen = null; IToken atLabel = null; + List typeArgs = null; List args = null; .) Ident ( IF(IsGenericInstantiation(true)) (. typeArgs = new List(); .) GenericInstantiation + [ AtCall ] | HashCall - | /* empty */ + | [ AtCall ] ) /* Note, since HashCall updates id.val, we make sure not to use id.val until after the possibility of calling HashCall. */ (. e = new NameSegment(id, id.val, typeArgs); if (openParen != null) { - e = new ApplySuffix(openParen, e, args); + e = new ApplySuffix(openParen, atLabel, e, args); + } else { + Contract.Assert(atLabel == null); } .) . @@ -4246,6 +4253,18 @@ HashCall<.IToken id, out IToken openParen, out List typeArgs, out List args.> += (. atLabel = null; + openParen = null; + args = new List(); + .) + "@" LabelName + "(" (. openParen = t; .) + [ Expressions ] + ")" + . + /*------------------------------------------------------------------------*/ SuffixExpression @@ -4282,18 +4301,21 @@ Suffix id = x; // move to the next Suffix } IToken openParen = null; List typeArgs = null; List args = null; + IToken atLabel = null; .) - ( IF(IsGenericInstantiation(true)) (. typeArgs = new List(); .) GenericInstantiation + [ AtCall ] | HashCall - | /* empty */ + | [ AtCall ] ) (. e = new ExprDotName(id, e, id.val, typeArgs); if (openParen != null) { - e = new ApplySuffix(openParen, e, args); + e = new ApplySuffix(openParen, atLabel, e, args); + } else { + Contract.Assert(atLabel == null); } .) ) @@ -4365,7 +4387,7 @@ Suffix "]" | "(" (. IToken openParen = t; var args = new List(); .) [ SuffixArgumentExpressions ] - ")" (. e = new ApplySuffix(openParen, e, args); .) + ")" (. e = new ApplySuffix(openParen, null, e, args); .) ) . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 2d68fb87b6e..fe007a60166 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -2962,6 +2962,14 @@ public static UserDefinedType FromTopLevelDecl(IToken tok, TopLevelDecl cd, List } } + public static UserDefinedType FromTopLevelDeclWithAllBooleanTypeParameters(TopLevelDecl cd) { + Contract.Requires(cd != null); + Contract.Requires(!(cd is ArrowTypeDecl)); + + var typeArgs = cd.TypeArgs.ConvertAll(tp => (Type)Type.Bool); + return new UserDefinedType(cd.tok, cd.Name, cd, typeArgs); + } + /// /// If "member" is non-null, then: /// Return the upcast of "receiverType" that has base type "member.EnclosingClass". @@ -4268,8 +4276,15 @@ public static IEnumerable AllFields(List declarations) { public static IEnumerable AllClasses(List declarations) { foreach (var d in declarations) { - var cl = d as ClassDecl; - if (cl != null) { + if (d is ClassDecl cl) { + yield return cl; + } + } + } + + public static IEnumerable AllTypesWithMembers(List declarations) { + foreach (var d in declarations) { + if (d is TopLevelDeclWithMembers cl) { yield return cl; } } @@ -5024,6 +5039,13 @@ public CodeContextWrapper(ICodeContext inner, bool isGhostContext) { public bool MustReverify => inner.MustReverify; public string FullSanitizedName => inner.FullSanitizedName; public bool AllowsNontermination => inner.AllowsNontermination; + + public static ICodeContext Unwrap(ICodeContext codeContext) { + while (codeContext is CodeContextWrapper ccw) { + codeContext = ccw.inner; + } + return codeContext; + } } /// @@ -6014,6 +6036,7 @@ bool IsShared { Usage Usage { get; } + void MakeGhost(); IToken Tok { get; } @@ -6071,6 +6094,9 @@ public bool IsGhost { throw new NotImplementedException(); } } + public void MakeGhost() { + throw new NotImplementedException(); + } public bool IsLinear { get { throw new NotImplementedException(); @@ -6213,6 +6239,9 @@ public bool IsGhost { return Usage == Usage.Ghost; } } + public void MakeGhost() { + Usage = Usage.Ghost; + } public bool IsLinear { get { return Usage == Usage.Linear; @@ -7870,7 +7899,6 @@ public static bool LhsIsToGhost(Expression lhs) { public static bool LhsIsToGhostOrAutoGhost(Expression lhs) { Contract.Requires(lhs != null); return LhsIsToGhost_Which(lhs) == NonGhostKind.IsGhost || lhs.Resolved is AutoGhostIdentifierExpr; - ; } public enum NonGhostKind { IsGhost, Variable, Field, ArrayElement } public static string NonGhostKind_To_String(NonGhostKind gk) { @@ -8258,9 +8286,9 @@ public LoopStmt(IToken tok, IToken endTok, List invariants this.Decreases = decreases; this.Mod = mod; } - public override IEnumerable SubExpressions { + + public IEnumerable LoopSpecificationExpressions { get { - foreach (var e in base.SubExpressions) { yield return e; } foreach (var mfe in Invariants) { foreach (var e in Attributes.SubExpressions(mfe.Attributes)) { yield return e; } yield return mfe.E; @@ -8279,6 +8307,17 @@ public override IEnumerable SubExpressions { } } } + + public override IEnumerable SubExpressions { + get { + foreach (var e in base.SubExpressions) { + yield return e; + } + foreach (var e in LoopSpecificationExpressions) { + yield return e; + } + } + } } public class WhileStmt : LoopStmt @@ -8420,7 +8459,7 @@ void ObjectInvariant() { } public ForallStmt(IToken tok, IToken endTok, List boundVars, Attributes attrs, Expression range, List ens, Statement body) - : base(tok, endTok) { + : base(tok, endTok, attrs) { Contract.Requires(tok != null); Contract.Requires(endTok != null); Contract.Requires(cce.NonNullElements(boundVars)); @@ -8428,7 +8467,6 @@ public ForallStmt(IToken tok, IToken endTok, List boundVars, Attribute Contract.Requires(boundVars.Count != 0 || LiteralExpr.IsTrue(range)); Contract.Requires(cce.NonNullElements(ens)); this.BoundVars = boundVars; - this.Attributes = attrs; this.Range = range; this.Ens = ens; this.Body = body; @@ -10004,7 +10042,8 @@ public SeqDisplayExpr(IToken tok, List elements) public class MemberSelectExpr : Expression { public readonly Expression Obj; public readonly string MemberName; - public MemberDecl Member; // filled in by resolution, will be a Field or Function + public MemberDecl Member; // filled in by resolution, will be a Field or Function + public Label /*?*/ AtLabel; // determined by resolution; non-null for a two-state selection /// /// TypeApplication_AtEnclosingClass is the list of type arguments used to instantiate the type that @@ -10358,6 +10397,7 @@ public class FunctionCallExpr : Expression { public readonly string Name; public readonly Expression Receiver; public readonly IToken OpenParen; // can be null if Args.Count == 0 + public readonly Label/*?*/ AtLabel; public readonly List Args; public List TypeApplication_AtEnclosingClass; // filled in during resolution public List TypeApplication_JustFunction; // filled in during resolution @@ -10422,7 +10462,7 @@ void ObjectInvariant() { public Function Function; // filled in by resolution [Captured] - public FunctionCallExpr(IToken tok, string fn, Expression receiver, IToken openParen, [Captured] List args) + public FunctionCallExpr(IToken tok, string fn, Expression receiver, IToken openParen, [Captured] List args, Label/*?*/ atLabel = null) : base(tok) { Contract.Requires(tok != null); Contract.Requires(fn != null); @@ -10436,6 +10476,7 @@ public FunctionCallExpr(IToken tok, string fn, Expression receiver, IToken openP cce.Owner.AssignSame(this, receiver); this.Receiver = receiver; this.OpenParen = openParen; + this.AtLabel = atLabel; this.Args = args; } @@ -12735,8 +12776,8 @@ public class ApplySuffixArg { /// /// An ApplySuffix desugars into either an ApplyExpr or a FunctionCallExpr /// - public class ApplySuffix : SuffixExpr - { + public class ApplySuffix : SuffixExpr { + public readonly IToken/*?*/ AtTok; public readonly List Args; public bool RewrittenAsInoutThis; @@ -12746,11 +12787,12 @@ void ObjectInvariant() { Contract.Invariant(Args != null); } - public ApplySuffix(IToken tok, Expression lhs, List args) + public ApplySuffix(IToken tok, IToken/*?*/ atLabel, Expression lhs, List args) : base(tok, lhs) { Contract.Requires(tok != null); Contract.Requires(lhs != null); Contract.Requires(cce.NonNullElements(args)); + AtTok = atLabel; Args = args; } diff --git a/Source/Dafny/DafnyMain.cs b/Source/Dafny/DafnyMain.cs index 2c005cdf3d2..bb9e49740be 100644 --- a/Source/Dafny/DafnyMain.cs +++ b/Source/Dafny/DafnyMain.cs @@ -18,6 +18,7 @@ namespace Microsoft.Dafny { public class IllegalDafnyFile : Exception { } public class DafnyFile { + public bool UseStdin { get; private set; } public string FilePath { get; private set; } public string CanonicalPath { get; private set; } public string BaseName { get; private set; } @@ -39,11 +40,12 @@ public static List fileNames(IList dafnyFiles) { } return sourceFiles; } - public DafnyFile(string filePath) { + public DafnyFile(string filePath, bool useStdin = false) { + UseStdin = useStdin; FilePath = filePath; BaseName = Path.GetFileName(filePath); - var extension = Path.GetExtension(filePath); + var extension = useStdin ? ".dfy" : Path.GetExtension(filePath); if (extension != null) { extension = extension.ToLower(); } // Normalizing symbolic links appears to be not @@ -52,8 +54,9 @@ public DafnyFile(string filePath) { // cf. IncludeComparer.CompareTo CanonicalPath = Canonicalize(filePath); - if (!Path.IsPathRooted(filePath)) + if (!useStdin && !Path.IsPathRooted(filePath)) { filePath = Path.GetFullPath(filePath); + } if (extension == ".dfy" || extension == ".dfyi") { isPrecompiled = false; @@ -121,9 +124,10 @@ public static string Parse(IList files, string programName, ErrorRepo program = null; ModuleDecl module = new LiteralModuleDecl(new DefaultModuleDecl(), null); BuiltIns builtIns = new BuiltIns(); + foreach (DafnyFile dafnyFile in files){ Contract.Assert(dafnyFile != null); - if (Bpl.CommandLineOptions.Clo.XmlSink != null && Bpl.CommandLineOptions.Clo.XmlSink.IsOpen) { + if (Bpl.CommandLineOptions.Clo.XmlSink != null && Bpl.CommandLineOptions.Clo.XmlSink.IsOpen && !dafnyFile.UseStdin) { Bpl.CommandLineOptions.Clo.XmlSink.WriteFileFragment(dafnyFile.FilePath); } if (Bpl.CommandLineOptions.Clo.Trace) @@ -224,7 +228,7 @@ public static string ParseIncludes(ModuleDecl module, BuiltIns builtIns, IList - + diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index 49f192045f8..bfc2647bd96 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -1508,7 +1508,7 @@ public void PrintStatement(Statement stmt, int indent) { // prefix lemmas end up as CallStmt's by the end of resolution and they may need to be printed here. var s = (CallStmt)stmt; PrintExpression(s.MethodSelect, false); - PrintActualArguments(s.Args, s.Method.Name); + PrintActualArguments(s.Args, s.Method.Name, null); } else if (stmt is VarDeclStmt) { var s = (VarDeclStmt)stmt; @@ -2111,7 +2111,7 @@ void PrintExpr(Expression expr, int contextBindingStrength, bool fragileContext, PrintExpr(e.Lhs, opBindingStrength, false, false, !parensNeeded && isFollowedBySemicolon, -1, keyword); } string name = e.Lhs is NameSegment ? ((NameSegment)e.Lhs).Name : e.Lhs is ExprDotName ? ((ExprDotName)e.Lhs).SuffixName : null; - PrintActualArguments(e.Args, name); + PrintActualArguments(e.Args, name, e.AtTok); if (parensNeeded) { wr.Write(")"); } } else if (expr is MemberSelectExpr) { @@ -2252,7 +2252,7 @@ void PrintExpr(Expression expr, int contextBindingStrength, bool fragileContext, */ if (e.OpenParen == null && e.Args.Count == 0) { } else { - PrintActualArguments(e.Args, e.Name); + PrintActualArguments(e.Args, e.Name, null); } if (parensNeeded) { wr.Write(")"); } @@ -2810,13 +2810,16 @@ private void PrintQuantifierDomain(List boundVars, Attributes attrs, E } } - void PrintActualArguments(List args, string name) { + void PrintActualArguments(List args, string name, Bpl.IToken/*?*/ atLabel) { Contract.Requires(args != null); if (name != null && name.EndsWith("#")) { + Contract.Assert(atLabel == null); wr.Write("["); PrintExpression(args[0], false); wr.Write("]"); args = new List(args.Skip(1)); + } else if (atLabel != null) { + wr.Write($"@{atLabel.val}"); } wr.Write("("); PrintExpressionList(args, false); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index fd995aa8e5b..75a6088b593 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2634,7 +2634,7 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, scope.PushMarker(); var added = scope.Push(dd.Var.Name, dd.Var); Contract.Assert(added == Scope.PushResult.Success); - ResolveExpression(dd.Constraint, new ResolveOpts(dd, false)); + ResolveExpression(dd.Constraint, new ResolveOpts(new CodeContextWrapper(dd, true), false)); Contract.Assert(dd.Constraint.Type != null); // follows from postcondition of ResolveExpression ConstrainTypeExprBool(dd.Constraint, "newtype constraint must be of type bool (instead got {0})"); SolveAllTypeConstraints(); @@ -2656,7 +2656,7 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, scope.PushMarker(); var added = scope.Push(dd.Var.Name, dd.Var); Contract.Assert(added == Scope.PushResult.Success); - ResolveExpression(dd.Constraint, new ResolveOpts(dd, false)); + ResolveExpression(dd.Constraint, new ResolveOpts(new CodeContextWrapper(dd, true), false)); Contract.Assert(dd.Constraint.Type != null); // follows from postcondition of ResolveExpression ConstrainTypeExprBool(dd.Constraint, "subset-type constraint must be of type bool (instead got {0})"); SolveAllTypeConstraints(); @@ -2725,7 +2725,7 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, var dd = (RedirectingTypeDecl)d; if (dd.Witness != null) { var prevErrCnt = reporter.Count(ErrorLevel.Error); - ResolveExpression(dd.Witness, new ResolveOpts(dd, false)); + ResolveExpression(dd.Witness, new ResolveOpts(new CodeContextWrapper(dd, dd.WitnessKind == SubsetTypeDecl.WKind.Ghost), false)); ConstrainSubtypeRelation(dd.Var.Type, dd.Witness.Type, dd.Witness, "witness expression must have type '{0}' (got '{1}')", dd.Var.Type, dd.Witness.Type); SolveAllTypeConstraints(); if (reporter.Count(ErrorLevel.Error) == prevErrCnt) { @@ -2921,7 +2921,7 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, } } reporter.Info(MessageSource.Resolver, com.tok, - string.Format("{0} with focal predicate{2} {1}", com.PrefixLemma.Name, Util.Comma(focalPredicates, p => p.Name), focalPredicates.Count == 1 ? "" : "s")); + string.Format("{0} with focal predicate{2} {1}", com.PrefixLemma.Name, Util.Comma(focalPredicates, p => p.Name), Util.Plural(focalPredicates.Count))); // Compute the statement body of the prefix lemma Contract.Assume(prefixLemma.Body == null); // this is not supposed to have been filled in before if (com.Body != null) { @@ -3199,72 +3199,36 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, // Check that all == and != operators in non-ghost contexts are applied to equality-supporting types. // Note that this check can only be done after determining which expressions are ghosts. foreach (var d in declarations) { + for (var attr = d.Attributes; attr != null; attr = attr.Prev) { + attr.Args.Iter(e => CheckTypeCharacteristics_Expr(e, true)); + } + if (d is IteratorDecl) { var iter = (IteratorDecl)d; foreach (var p in iter.Ins) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } + CheckTypeCharacteristics_Type(p.tok, p.Type, p.IsGhost); } foreach (var p in iter.Outs) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } + CheckTypeCharacteristics_Type(p.tok, p.Type, p.IsGhost); } if (iter.Body != null) { - CheckEqualityTypes_Stmt(iter.Body); + CheckTypeCharacteristics_Stmt(iter.Body, false); } } else if (d is ClassDecl) { var cl = (ClassDecl)d; foreach (var parentTrait in cl.ParentTraits) { - CheckEqualityTypes_Type(cl.tok, parentTrait); - } - foreach (var member in cl.Members) { - if (!member.IsGhost) { - if (member is Field) { - var f = (Field)member; - CheckEqualityTypes_Type(f.tok, f.Type); - } else if (member is Function) { - var f = (Function)member; - foreach (var p in f.Formals) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } - } - CheckEqualityTypes_Type(f.tok, f.ResultType); - if (f.Body != null) { - CheckEqualityTypes(f.Body); - } - } else if (member is Method) { - var m = (Method)member; - foreach (var p in m.Ins) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } - } - foreach (var p in m.Outs) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } - } - if (m.Body != null) { - CheckEqualityTypes_Stmt(m.Body); - } - } - } + CheckTypeCharacteristics_Type(cl.tok, parentTrait, false); } } else if (d is DatatypeDecl) { var dt = (DatatypeDecl)d; foreach (var ctor in dt.Ctors) { foreach (var p in ctor.Formals) { - if (!p.IsGhost) { - CheckEqualityTypes_Type(p.tok, p.Type); - } + CheckTypeCharacteristics_Type(p.tok, p.Type, p.IsGhost); } } } else if (d is TypeSynonymDecl) { var syn = (TypeSynonymDecl)d; - CheckEqualityTypes_Type(syn.tok, syn.Rhs); + CheckTypeCharacteristics_Type(syn.tok, syn.Rhs, false); if (!isAnExport) { if (syn.SupportsEquality && !syn.Rhs.SupportsEquality) { reporter.Error(MessageSource.Resolver, syn.tok, "type '{0}' declared as supporting equality, but the RHS type ({1}) might not", @@ -3283,6 +3247,48 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, } } } + + if (d is RedirectingTypeDecl) { + var rtd = (RedirectingTypeDecl)d; + if (rtd.Constraint != null) { + CheckTypeCharacteristics_Expr(rtd.Constraint, true); + } + if (rtd.Witness != null) { + CheckTypeCharacteristics_Expr(rtd.Witness, rtd.WitnessKind == SubsetTypeDecl.WKind.Ghost); + } + } + + if (d is TopLevelDeclWithMembers) { + var cl = (TopLevelDeclWithMembers)d; + foreach (var member in cl.Members) { + if (member is Field) { + var f = (Field)member; + CheckTypeCharacteristics_Type(f.tok, f.Type, f.IsGhost); + if (f is ConstantField cf && cf.Rhs != null) { + CheckTypeCharacteristics_Expr(cf.Rhs, cf.IsGhost); + } + } else if (member is Function) { + var f = (Function)member; + foreach (var p in f.Formals) { + CheckTypeCharacteristics_Type(p.tok, p.Type, f.IsGhost || p.IsGhost); + } + if (f.Body != null) { + CheckTypeCharacteristics_Expr(f.Body, f.IsGhost); + } + } else if (member is Method) { + var m = (Method)member; + foreach (var p in m.Ins) { + CheckTypeCharacteristics_Type(p.tok, p.Type, m.IsGhost || p.IsGhost); + } + foreach (var p in m.Outs) { + CheckTypeCharacteristics_Type(p.tok, p.Type, m.IsGhost || p.IsGhost); + } + if (m.Body != null) { + CheckTypeCharacteristics_Stmt(m.Body, m.IsGhost); + } + } + } + } } // Check that extreme predicates are not recursive with non-extreme-predicate functions (and only // with extreme predicates of the same polarity), and @@ -3380,15 +3386,24 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, // and that a class without any constructor only has fields with known initializers. // Also check that static fields (which are necessarily const) have initializers. var cdci = new CheckDividedConstructorInit_Visitor(this); - foreach (var cl in ModuleDefinition.AllClasses(declarations)) { + foreach (var cl in ModuleDefinition.AllTypesWithMembers(declarations)) { + if (!(cl is ClassDecl)) { + if (!isAnExport && !cl.EnclosingModuleDefinition.IsAbstract) { + // non-reference types (datatype, newtype, opaque) don't have constructors that can initialize fields + foreach (var member in cl.Members) { + if (member is ConstantField f && f.Rhs == null && !f.IsExtern(out _, out _)) { + CheckIsOkayWithoutRHS(f); + } + } + } + continue; + } if (cl is TraitDecl) { - // traits never have constructors, but check for static consts - foreach (var member in cl.Members) { - if (member is ConstantField && member.IsStatic && !member.IsGhost) { - var f = (ConstantField)member; - if (!isAnExport && !cl.EnclosingModuleDefinition.IsAbstract && f.Rhs == null && !f.Type.HasCompilableValue && !f.IsExtern(out _, out _)) { - reporter.Error(MessageSource.Resolver, f.tok, "static non-ghost const field '{0}' of type '{1}' (which does not have a default compiled value) must give a defining value", - f.Name, f.Type); + if (!isAnExport && !cl.EnclosingModuleDefinition.IsAbstract) { + // traits never have constructors, but check for static consts + foreach (var member in cl.Members) { + if (member is ConstantField f && f.IsStatic && f.Rhs == null && !f.IsExtern(out _, out _)) { + CheckIsOkayWithoutRHS(f); } } } @@ -3403,17 +3418,16 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, if (constructor.BodyInit != null) { cdci.CheckInit(constructor.BodyInit); } - } else if (member is ConstantField && member.IsStatic && !member.IsGhost) { + } else if (member is ConstantField && member.IsStatic) { var f = (ConstantField)member; - if (!isAnExport && !cl.EnclosingModuleDefinition.IsAbstract && f.Rhs == null && !f.Type.HasCompilableValue && !f.IsExtern(out _, out _)) { - reporter.Error(MessageSource.Resolver, f.tok, "static non-ghost const field '{0}' of type '{1}' (which does not have a default compiled value) must give a defining value", - f.Name, f.Type); + if (!isAnExport && !cl.EnclosingModuleDefinition.IsAbstract && f.Rhs == null && !f.IsExtern(out _, out _)) { + CheckIsOkayWithoutRHS(f); } - } else if (member is Field && !member.IsGhost && fieldWithoutKnownInitializer == null) { + } else if (member is Field && fieldWithoutKnownInitializer == null) { var f = (Field)member; if (f is ConstantField && ((ConstantField)f).Rhs != null) { // fine - } else if (!f.Type.HasCompilableValue) { + } else if (!f.Type.KnownToHaveToAValue(f.IsGhost)) { fieldWithoutKnownInitializer = f; } } @@ -3422,11 +3436,11 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, if (fieldWithoutKnownInitializer == null) { // time to check inherited members foreach (var member in cl.InheritedMembers) { - if (member is Field && !member.IsGhost) { + if (member is Field) { var f = (Field)member; if (f is ConstantField && ((ConstantField)f).Rhs != null) { // fine - } else if (!Resolver.SubstType(f.Type, cl.ParentFormalTypeParametersToActuals).HasCompilableValue) { + } else if (!Resolver.SubstType(f.Type, cl.ParentFormalTypeParametersToActuals).KnownToHaveToAValue(f.IsGhost)) { fieldWithoutKnownInitializer = f; break; } @@ -3443,6 +3457,18 @@ public void ResolveTopLevelDecls_Core(List/*!*/ declarations, } } + private void CheckIsOkayWithoutRHS(ConstantField f) { + if (f.IsGhost && !f.Type.IsNonempty) { + reporter.Error(MessageSource.Resolver, f.tok, + "{0}ghost const field '{1}' of type '{2}' (which may be empty) must give a defining value", + f.IsStatic ? "static " : "", f.Name, f.Type); + } else if (!f.IsGhost && !f.Type.HasCompilableValue) { + reporter.Error(MessageSource.Resolver, f.tok, + "{0}non-ghost const field '{1}' of type '{2}' (which does not have a default compiled value) must give a defining value", + f.IsStatic ? "static " : "", f.Name, f.Type); + } + } + private void ResolveClassMembers_Pass1(TopLevelDeclWithMembers cl) { foreach (var member in cl.Members) { var prevErrCnt = reporter.Count(ErrorLevel.Error); @@ -3572,7 +3598,7 @@ private void CheckDestructsAreAbstemiousCompliant(Expression expr) { private void AddTypeDependencyEdges(ICodeContext context, Type type) { Contract.Requires(type != null); Contract.Requires(context != null); - var caller = context as ICallable; + var caller = CodeContextWrapper.Unwrap(context) as ICallable; if (caller != null && type is NonProxyType) { type.ForeachTypeComponent(ty => { var udt = ty as UserDefinedType; @@ -4941,10 +4967,11 @@ public bool Confirm(Resolver resolver, bool fullstrength, out bool convertedInto var proxy = (TypeProxy)t; Type meet = null; if (resolver.MeetOfAllSubtypes(proxy, ref meet, new HashSet()) && meet != null) { - var tt = Type.HeadWithProxyArgs(meet); + var headWithProxyArgs = Type.HeadWithProxyArgs(meet); + var tt = headWithProxyArgs.NormalizeExpand(); satisfied = tt is SeqType || tt is MultiSetType || tt is MapType || (tt.IsArrayType && tt.AsArrayType.Dims == 1); if (satisfied) { - resolver.AssignProxyAndHandleItsConstraints(proxy, tt, true); + resolver.AssignProxyAndHandleItsConstraints(proxy, headWithProxyArgs, true); convertedIntoOtherTypeConstraints = true; } } else { @@ -4961,10 +4988,11 @@ public bool Confirm(Resolver resolver, bool fullstrength, out bool convertedInto var proxy = (TypeProxy)t; Type meet = null; if (resolver.MeetOfAllSubtypes(proxy, ref meet, new HashSet()) && meet != null) { - var tt = Type.HeadWithProxyArgs(meet); + var headWithProxyArgs = Type.HeadWithProxyArgs(meet); + var tt = headWithProxyArgs.NormalizeExpand(); satisfied = tt is SeqType || (tt.IsArrayType && tt.AsArrayType.Dims == 1); if (satisfied) { - resolver.AssignProxyAndHandleItsConstraints(proxy, tt, true); + resolver.AssignProxyAndHandleItsConstraints(proxy, headWithProxyArgs, true); convertedIntoOtherTypeConstraints = true; } } else { @@ -6569,7 +6597,7 @@ protected override void VisitOneExpr(Expression expr) { } if (whereToLookForBounds != null) { e.Bounds = DiscoverBestBounds_MultipleVars_AllowReordering(e.BoundVars, whereToLookForBounds, polarity, ComprehensionExpr.BoundedPool.PoolVirtues.None); - if (2 <= DafnyOptions.O.Allocated && (codeContext is Function || codeContext is ConstantField || codeContext is RedirectingTypeDecl)) { + if (2 <= DafnyOptions.O.Allocated && (codeContext is Function || codeContext is ConstantField || CodeContextWrapper.Unwrap(codeContext) is RedirectingTypeDecl)) { // functions are not allowed to depend on the set of allocated objects foreach (var bv in ComprehensionExpr.BoundedPool.MissingBounds(e.BoundVars, e.Bounds, ComprehensionExpr.BoundedPool.PoolVirtues.IndependentOfAlloc)) { var msgFormat = "a {0} involved in a {3} definition is not allowed to depend on the set of allocated references; Dafny's heuristics can't figure out a bound for the values of '{1}'"; @@ -6577,7 +6605,7 @@ protected override void VisitOneExpr(Expression expr) { var tp = bv.Type.AsTypeParameter; msgFormat += " (perhaps declare its type, '{2}', as '{2}(!new)')"; } - var declKind = codeContext is RedirectingTypeDecl ? ((RedirectingTypeDecl)codeContext).WhatKind : ((MemberDecl)codeContext).WhatKind; + var declKind = CodeContextWrapper.Unwrap(codeContext) is RedirectingTypeDecl redir ? redir.WhatKind : ((MemberDecl)codeContext).WhatKind; resolver.reporter.Error(MessageSource.Resolver, e, msgFormat, what, bv.Name, bv.Type, declKind); } } @@ -7726,142 +7754,135 @@ void ExtremeLemmaChecks(Expression expr, ExtremeLemma context) { #endregion ExtremeLemmaChecks // ------------------------------------------------------------------------------------------------------ - // ----- CheckEqualityTypes ----------------------------------------------------------------------------- + // ----- CheckTypeCharacteristics ----------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------ -#region CheckEqualityTypes - class CheckEqualityTypes_Visitor : ResolverTopDownVisitor +#region CheckTypeCharacteristics + void CheckTypeCharacteristics_Stmt(Statement stmt, bool isGhost) { + Contract.Requires(stmt != null); + var v = new CheckTypeCharacteristics_Visitor(this); + v.Visit(stmt, isGhost); + } + void CheckTypeCharacteristics_Expr(Expression expr, bool isGhost) { + Contract.Requires(expr != null); + var v = new CheckTypeCharacteristics_Visitor(this); + v.Visit(expr, isGhost); + } + public void CheckTypeCharacteristics_Type(IToken tok, Type type, bool isGhost) { + Contract.Requires(tok != null); + Contract.Requires(type != null); + var v = new CheckTypeCharacteristics_Visitor(this); + v.VisitType(tok, type, isGhost); + } + + /// + /// This visitor checks that type characteristics are respected in all (implicitly or explicitly) + /// declared types. Note that equality-support is checked only in compiled contexts. + /// In addition, this visitor checks that operations that require equality are applied to + /// types that really do support equality; this, too, is checked only in compiled contexts. + /// + class CheckTypeCharacteristics_Visitor : ResolverTopDownVisitor { - public CheckEqualityTypes_Visitor(Resolver resolver) + public CheckTypeCharacteristics_Visitor(Resolver resolver) : base(resolver) { Contract.Requires(resolver != null); } - protected override bool VisitOneStmt(Statement stmt, ref bool st) { + protected override bool VisitOneStmt(Statement stmt, ref bool inGhostContext) { if (stmt.IsGhost) { - return false; // no need to recurse to sub-parts, since all sub-parts must be ghost as well - } else if (stmt is VarDeclStmt) { + inGhostContext = true; + } + // In the sequel, do two things: + // * Call VisitType on any type that occurs in the statement + // * If the statement introduces ghost components, handle those components here + // rather than letting the default visitor handle them + if (stmt is VarDeclStmt) { var s = (VarDeclStmt)stmt; foreach (var v in s.Locals) { - if (!v.IsGhost) { - CheckEqualityTypes_Type(v.Tok, v.Type); - } + VisitType(v.Tok, v.Type, inGhostContext || v.IsGhost); } } else if (stmt is VarDeclPattern) { var s = (VarDeclPattern)stmt; foreach (var v in s.LocalVars) { - CheckEqualityTypes_Type(v.Tok, v.Type); + VisitType(v.Tok, v.Type, inGhostContext || v.IsGhost); } } else if (stmt is AssignStmt) { var s = (AssignStmt)stmt; - var tRhs = s.Rhs as TypeRhs; - if (tRhs != null && tRhs.Type is UserDefinedType) { - var udt = (UserDefinedType)tRhs.Type; - CheckTypeArgumentCharacteristics(tRhs.Tok, "type", udt.ResolvedClass.Name, udt.ResolvedClass.TypeArgs, tRhs.Type.TypeArgs); + if (s.Rhs is TypeRhs tRhs) { + VisitType(tRhs.Tok, tRhs.Type, inGhostContext); } + } else if (stmt is AssignSuchThatStmt) { + var s = (AssignSuchThatStmt)stmt; + Visit(Attributes.SubExpressions(s.Attributes), true); + Visit(s.Expr, inGhostContext); + foreach (var lhs in s.Lhss) { + Visit(lhs, inGhostContext); + } + return false; } else if (stmt is WhileStmt) { var s = (WhileStmt)stmt; - // don't recurse on the specification parts, which are ghost + // all subexpressions are ghost, except the guard + Visit(s.LoopSpecificationExpressions, true); if (s.Guard != null) { - Visit(s.Guard, st); - } - // don't recurse on the body, if it's a dirty loop - if (s.Body != null) { - Visit(s.Body, st); + Visit(s.Guard, inGhostContext); } + Visit(s.SubStatements, inGhostContext); return false; } else if (stmt is AlternativeLoopStmt) { var s = (AlternativeLoopStmt)stmt; - // don't recurse on the specification parts, which are ghost + // all subexpressions are ghost, except the guards + Visit(s.LoopSpecificationExpressions, true); foreach (var alt in s.Alternatives) { - Visit(alt.Guard, st); - foreach (var ss in alt.Body) { - Visit(ss, st); - } + Visit(alt.Guard, inGhostContext); } + Visit(s.SubStatements, inGhostContext); return false; } else if (stmt is CallStmt) { var s = (CallStmt)stmt; - CheckTypeArgumentCharacteristics(s.Tok, s.Method.WhatKind, s.Method.Name, s.Method.TypeArgs, s.MethodSelect.TypeApplication_JustMember); - // recursively visit all subexpressions (which are all actual parameters) passed in for non-ghost formal parameters + CheckTypeInstantiation(s.Tok, s.Method.WhatKind, s.Method.Name, s.Method.TypeArgs, s.MethodSelect.TypeApplication_JustMember, inGhostContext); + // recursively visit all subexpressions, noting that some of them may correspond to ghost formal parameters Contract.Assert(s.Lhs.Count == s.Method.Outs.Count); for (var i = 0; i < s.Method.Outs.Count; i++) { - if (!s.Method.Outs[i].IsGhost) { - Visit(s.Lhs[i], st); - } + Visit(s.Lhs[i], inGhostContext || s.Method.Outs[i].IsGhost); } - Visit(s.Receiver, st); + Visit(s.Receiver, inGhostContext); Contract.Assert(s.Args.Count == s.Method.Ins.Count); for (var i = 0; i < s.Method.Ins.Count; i++) { - if (!s.Method.Ins[i].IsGhost) { - Visit(s.Args[i].Expr, st); - } + Visit(s.Args[i], inGhostContext || s.Method.Ins[i].IsGhost); } - return false; // we've done what there is to be done + return false; } else if (stmt is ForallStmt) { var s = (ForallStmt)stmt; foreach (var v in s.BoundVars) { - CheckEqualityTypes_Type(v.Tok, v.Type); - } - // do substatements and subexpressions, except attributes and ensures clauses, since they are not compiled - foreach (var ss in s.SubStatements) { - Visit(ss, st); + VisitType(v.Tok, v.Type, inGhostContext); } + // do substatements and subexpressions, noting that ensures clauses are ghost + Visit(Attributes.SubExpressions(s.Attributes), true); if (s.Range != null) { - Visit(s.Range, st); + Visit(s.Range, inGhostContext); } - return false; // we're done - } - return true; - } - - void CheckTypeArgumentCharacteristics(IToken tok, string what, string className, List formalTypeArgs, List actualTypeArgs) { - Contract.Requires(tok != null); - Contract.Requires(what != null); - Contract.Requires(className != null); - Contract.Requires(formalTypeArgs != null); - Contract.Requires(actualTypeArgs != null); - Contract.Requires(formalTypeArgs.Count == actualTypeArgs.Count); - - for (var i = 0; i < formalTypeArgs.Count; i++) { - var formal = formalTypeArgs[i]; - var actual = actualTypeArgs[i]; - string whatIsWrong, hint; - if (!CheckCharacteristics(formal.Characteristics, actual, out whatIsWrong, out hint)) { - resolver.reporter.Error(MessageSource.Resolver, tok, "type parameter{0} ({1}) passed to {2} {3} must support {4} (got {5}){6}", - actualTypeArgs.Count == 1 ? "" : " " + i, formal.Name, what, className, whatIsWrong, actual, hint); + foreach (var ee in s.Ens) { + Visit(Attributes.SubExpressions(ee.Attributes), true); + Visit(ee.E, true); } - CheckEqualityTypes_Type(tok, actual); - } - } - - bool CheckCharacteristics(TypeParameter.TypeParameterCharacteristics formal, Type actual, out string whatIsWrong, out string hint) { - Contract.Ensures(Contract.Result() || (Contract.ValueAtReturn(out whatIsWrong) != null && Contract.ValueAtReturn(out hint) != null)); - if (formal.EqualitySupport != TypeParameter.EqualitySupportValue.Unspecified && !actual.SupportsEquality) { - whatIsWrong = "equality"; - hint = TypeEqualityErrorMessageHint(actual); - return false; - } - if (formal.HasCompiledValue && !actual.HasCompilableValue) { - whatIsWrong = "auto-initialization"; - hint = ""; + Visit(s.SubStatements, inGhostContext); return false; - } - if (formal.IsNonempty && !actual.IsNonempty) { - whatIsWrong = "nonempty"; - hint = ""; - return false; - } - if (formal.ContainsNoReferenceTypes && !actual.IsAllocFree) { - whatIsWrong = "no references"; - hint = ""; + } else if (stmt is ExpectStmt) { + var s = (ExpectStmt)stmt; + Visit(Attributes.SubExpressions(s.Attributes), true); + Visit(s.Expr, inGhostContext); + if (s.Message != null) { + Visit(s.Message, inGhostContext); + } return false; } - whatIsWrong = null; - hint = null; return true; } - protected override bool VisitOneExpr(Expression expr, ref bool st) { - if (expr is BinaryExpr) { + protected override bool VisitOneExpr(Expression expr, ref bool inGhostContext) { + // Do two things: + // * Call VisitType on any type that occurs in the statement + // * If the expression introduces ghost components, handle those components here + // rather than letting the default visitor handle them + if (expr is BinaryExpr && !inGhostContext) { var e = (BinaryExpr)expr; var t0 = e.E0.Type.NormalizeExpand(); var t1 = e.E1.Type.NormalizeExpand(); @@ -7906,33 +7927,82 @@ protected override bool VisitOneExpr(Expression expr, ref bool st) { } else if (expr is ComprehensionExpr) { var e = (ComprehensionExpr)expr; foreach (var bv in e.BoundVars) { - CheckEqualityTypes_Type(bv.tok, bv.Type); + VisitType(bv.tok, bv.Type, inGhostContext); } } else if (expr is LetExpr) { var e = (LetExpr)expr; - foreach (var bv in e.BoundVars) { - CheckEqualityTypes_Type(bv.tok, bv.Type); + Visit(Attributes.SubExpressions(e.Attributes), true); + if (e.Exact) { + Contract.Assert(e.LHSs.Count == e.RHSs.Count); + for (var i = 0; i < e.LHSs.Count; i++) { + // The VisitPattern function visits all BoundVar's in a pattern and returns + // "true" if all variables are ghost. + bool VisitPattern(CasePattern pat, bool patternGhostContext) { + if (pat.Var != null) { + VisitType(pat.tok, pat.Var.Type, patternGhostContext || pat.Var.IsGhost); + return pat.Var.IsGhost; + } else { + var allGhost = true; + Contract.Assert(pat.Ctor != null); + Contract.Assert(pat.Ctor.Formals.Count == pat.Arguments.Count); + for (var i = 0; i < pat.Ctor.Formals.Count; i++) { + var formal = pat.Ctor.Formals[i]; + var arg = pat.Arguments[i]; + // don't use short-circuit booleans in the following line, because we want to visit all nested patterns + allGhost &= VisitPattern(arg, patternGhostContext || formal.IsGhost); + } + return allGhost; + } + } + + var allGhosts = VisitPattern(e.LHSs[i], inGhostContext); + Visit(e.RHSs[i], inGhostContext || allGhosts); + } + } else { + Contract.Assert(e.RHSs.Count == 1); + var allGhost = true; + foreach (var bv in e.BoundVars) { + if (!bv.IsGhost) { + allGhost = false; + } + VisitType(bv.tok, bv.Type, inGhostContext || bv.IsGhost); + } + Visit(e.RHSs[0], inGhostContext || allGhost); } + Visit(e.Body, inGhostContext); + return false; } else if (expr is MemberSelectExpr) { var e = (MemberSelectExpr)expr; if (e.Member is Function || e.Member is Method) { - CheckTypeArgumentCharacteristics(e.tok, e.Member.WhatKind, e.Member.Name, ((ICallable)e.Member).TypeArgs, e.TypeApplication_JustMember); + CheckTypeInstantiation(e.tok, e.Member.WhatKind, e.Member.Name, ((ICallable)e.Member).TypeArgs, e.TypeApplication_JustMember, inGhostContext); } } else if (expr is FunctionCallExpr) { var e = (FunctionCallExpr)expr; - CheckTypeArgumentCharacteristics(e.tok, e.Function.WhatKind, e.Function.Name, e.Function.TypeArgs, e.TypeApplication_JustFunction); - // recursively visit all subexpressions (which are all actual parameters) passed in for non-ghost formal parameters - Visit(e.Receiver, st); + CheckTypeInstantiation(e.tok, e.Function.WhatKind, e.Function.Name, e.Function.TypeArgs, e.TypeApplication_JustFunction, inGhostContext); + // recursively visit all subexpressions (all actual parameters), noting which ones correspond to ghost formal parameters + Visit(e.Receiver, inGhostContext); Contract.Assert(e.Args.Count == e.Function.Formals.Count); for (var i = 0; i < e.Args.Count; i++) { - if (!e.Function.Formals[i].IsGhost) { - Visit(e.Args[i], st); - } + Visit(e.Args[i], inGhostContext || e.Function.Formals[i].IsGhost); + } + return false; // we've done what there is to be done + } else if (expr is DatatypeValue) { + var e = (DatatypeValue)expr; + // recursively visit all subexpressions (all actual parameters), noting which ones correspond to ghost formal parameters + Contract.Assert(e.Arguments.Count == e.Ctor.Formals.Count); + for (var i = 0; i < e.Arguments.Count; i++) { + Visit(e.Arguments[i], inGhostContext || e.Ctor.Formals[i].IsGhost); } return false; // we've done what there is to be done - } else if (expr is SetDisplayExpr || expr is MultiSetDisplayExpr || expr is MapDisplayExpr || expr is SeqConstructionExpr || expr is MultiSetFormingExpr || expr is StaticReceiverExpr) { + } else if (expr is SetDisplayExpr || expr is MultiSetDisplayExpr || expr is MapDisplayExpr || expr is SeqConstructionExpr || + expr is MultiSetFormingExpr || expr is StaticReceiverExpr) { // This catches other expressions whose type may potentially be illegal - CheckEqualityTypes_Type(expr.tok, expr.Type); + VisitType(expr.tok, expr.Type, inGhostContext); + } else if (expr is StmtExpr) { + var e = (StmtExpr)expr; + Visit(e.S, true); + Visit(e.E, inGhostContext); + return false; } return true; } @@ -7963,7 +8033,7 @@ private bool CanCompareWith(Expression expr) { return false; } - public void CheckEqualityTypes_Type(IToken tok, Type type) { + public void VisitType(IToken tok, Type type, bool inGhostContext) { Contract.Requires(tok != null); Contract.Requires(type != null); type = type.Normalize(); // we only do a .Normalize() here, because we want to keep stop at any type synonym or subset type @@ -7972,29 +8042,29 @@ public void CheckEqualityTypes_Type(IToken tok, Type type) { } else if (type is SetType) { var st = (SetType)type; var argType = st.Arg; - if (!argType.SupportsEquality) { + if (!inGhostContext && !argType.SupportsEquality) { resolver.reporter.Error(MessageSource.Resolver, tok, "{2}set argument type must support equality (got {0}){1}", argType, TypeEqualityErrorMessageHint(argType), st.Finite ? "" : "i"); } - CheckEqualityTypes_Type(tok, argType); + VisitType(tok, argType, inGhostContext); } else if (type is MultiSetType) { var argType = ((MultiSetType)type).Arg; - if (!argType.SupportsEquality) { + if (!inGhostContext && !argType.SupportsEquality) { resolver.reporter.Error(MessageSource.Resolver, tok, "multiset argument type must support equality (got {0}){1}", argType, TypeEqualityErrorMessageHint(argType)); } - CheckEqualityTypes_Type(tok, argType); + VisitType(tok, argType, inGhostContext); } else if (type is MapType) { var mt = (MapType)type; - if (!mt.Domain.SupportsEquality) { + if (!inGhostContext && !mt.Domain.SupportsEquality) { resolver.reporter.Error(MessageSource.Resolver, tok, "{2}map domain type must support equality (got {0}){1}", mt.Domain, TypeEqualityErrorMessageHint(mt.Domain), mt.Finite ? "" : "i"); } - CheckEqualityTypes_Type(tok, mt.Domain); - CheckEqualityTypes_Type(tok, mt.Range); + VisitType(tok, mt.Domain, inGhostContext); + VisitType(tok, mt.Range, inGhostContext); } else if (type is SeqType) { Type argType = ((SeqType)type).Arg; - CheckEqualityTypes_Type(tok, argType); + VisitType(tok, argType, inGhostContext); } else if (type is UserDefinedType) { var udt = (UserDefinedType)type; @@ -8008,7 +8078,7 @@ public void CheckEqualityTypes_Type(IToken tok, Type type) { if (formalTypeArgs == null) { Contract.Assert(udt.TypeArgs.Count == 0); } else { - CheckTypeArgumentCharacteristics(udt.tok, "type", udt.ResolvedClass.Name, formalTypeArgs, udt.TypeArgs); + CheckTypeInstantiation(udt.tok, "type", udt.ResolvedClass.Name, formalTypeArgs, udt.TypeArgs, inGhostContext); } } else if (type is TypeProxy) { @@ -8018,6 +8088,56 @@ public void CheckEqualityTypes_Type(IToken tok, Type type) { } } + void CheckTypeInstantiation(IToken tok, string what, string className, List formalTypeArgs, List actualTypeArgs, bool inGhostContext) { + Contract.Requires(tok != null); + Contract.Requires(what != null); + Contract.Requires(className != null); + Contract.Requires(formalTypeArgs != null); + Contract.Requires(actualTypeArgs != null); + Contract.Requires(formalTypeArgs.Count == actualTypeArgs.Count); + + for (var i = 0; i < formalTypeArgs.Count; i++) { + var formal = formalTypeArgs[i]; + var actual = actualTypeArgs[i]; + if (!CheckCharacteristics(formal.Characteristics, actual, inGhostContext, out var whatIsWrong, out var hint)) { + resolver.reporter.Error(MessageSource.Resolver, tok, "type parameter{0} ({1}) passed to {2} {3} must support {4} (got {5}){6}", + actualTypeArgs.Count == 1 ? "" : " " + i, formal.Name, what, className, whatIsWrong, actual, hint); + } + VisitType(tok, actual, inGhostContext); + } + } + + bool CheckCharacteristics(TypeParameter.TypeParameterCharacteristics formal, Type actual, bool inGhostContext, out string whatIsWrong, out string hint) { + Contract.Ensures(Contract.Result() || (Contract.ValueAtReturn(out whatIsWrong) != null && Contract.ValueAtReturn(out hint) != null)); + if (!inGhostContext && formal.EqualitySupport != TypeParameter.EqualitySupportValue.Unspecified && !actual.SupportsEquality) { + whatIsWrong = "equality"; + hint = TypeEqualityErrorMessageHint(actual); + return false; + } + var tp = actual.AsTypeParameter; + if (formal.HasCompiledValue && (inGhostContext ? !actual.IsNonempty : !actual.HasCompilableValue)) { + whatIsWrong = "auto-initialization"; + hint = tp == null ? "" : + string.Format(" (perhaps try declaring type parameter '{0}' on line {1} as '{0}(0)', which says it can only be instantiated with a type that supports auto-initialization)", tp.Name, tp.tok.line); + return false; + } + if (formal.IsNonempty && !actual.IsNonempty) { + whatIsWrong = "nonempty"; + hint = tp == null ? "" : + string.Format(" (perhaps try declaring type parameter '{0}' on line {1} as '{0}(00)', which says it can only be instantiated with a nonempty type)", tp.Name, tp.tok.line); + return false; + } + if (formal.ContainsNoReferenceTypes && !actual.IsAllocFree) { + whatIsWrong = "no references"; + hint = tp == null ? "" : + string.Format(" (perhaps try declaring type parameter '{0}' on line {1} as '{0}(!new)', which says it can only be instantiated with a type that contains no references)", tp.Name, tp.tok.line); + return false; + } + whatIsWrong = null; + hint = null; + return true; + } + string TypeEqualityErrorMessageHint(Type argType) { Contract.Requires(argType != null); var tp = argType.AsTypeParameter; @@ -8027,24 +8147,8 @@ string TypeEqualityErrorMessageHint(Type argType) { return ""; } } - void CheckEqualityTypes_Stmt(Statement stmt) { - Contract.Requires(stmt != null); - var v = new CheckEqualityTypes_Visitor(this); - v.Visit(stmt, false); - } - void CheckEqualityTypes(Expression expr) { - Contract.Requires(expr != null); - var v = new CheckEqualityTypes_Visitor(this); - v.Visit(expr, false); - } - public void CheckEqualityTypes_Type(IToken tok, Type type) { - Contract.Requires(tok != null); - Contract.Requires(type != null); - var v = new CheckEqualityTypes_Visitor(this); - v.CheckEqualityTypes_Type(tok, type); - } -#endregion CheckEqualityTypes +#endregion CheckTypeCharacteristics // ------------------------------------------------------------------------------------------------------ // ----- ComputeGhostInterest --------------------------------------------------------------------------- @@ -8304,8 +8408,17 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } else if (stmt is AssignStmt) { var s = (AssignStmt)stmt; var lhs = s.Lhs.Resolved; + + // Make an auto-ghost variable a ghost if the RHS is a ghost + if (lhs.Resolved is AutoGhostIdentifierExpr && s.Rhs is ExprRhs) { + var rhs = (ExprRhs)s.Rhs; + if (resolver.UsesSpecFeatures(rhs.Expr)) { + var autoGhostIdExpr = (AutoGhostIdentifierExpr)lhs.Resolved; + autoGhostIdExpr.Var.MakeGhost(); + } + } + var gk = AssignStmt.LhsIsToGhost_Which(lhs); - var isAutoGhost = AssignStmt.LhsIsToGhostOrAutoGhost(lhs); if (gk == AssignStmt.NonGhostKind.IsGhost) { s.IsGhost = true; if (s.Rhs is TypeRhs) { @@ -8318,35 +8431,38 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable AssignStmt.NonGhostKind_To_String(gk)); } else { if (gk == AssignStmt.NonGhostKind.Field) { - var mse = (MemberSelectExpr)lhs; + var mse = (MemberSelectExpr) lhs; resolver.CheckIsCompilable(mse.Obj, usageContext, mse.Member.IsGhost ? Usage.Ghost : Usage.Ordinary); } else if (gk == AssignStmt.NonGhostKind.ArrayElement) { resolver.CheckIsCompilable(lhs, usageContext, Usage.Ordinary); } + var x = lhs as IdentifierExpr; if (x != null && HasLinearity(x.Var.Usage) && !(s.Rhs is ExprRhs)) { Error(s, "only expressions can be assigned to linear or shared variables"); } + if (s.InoutAssignTarget.HasValue) { var (inoutAssignTargetUsage, inoutAssignTargetExpr) = s.InoutAssignTarget.Value; var mse = inoutAssignTargetExpr.Resolved as MemberSelectExpr; if (mse != null) { if (mse.Member.Usage != inoutAssignTargetUsage) { - Error(mse, "expected {0} lhs, found {1} lhs", UsageName(inoutAssignTargetUsage), UsageName(mse.Member.Usage)); + Error(mse, "expected {0} lhs, found {1} lhs", UsageName(inoutAssignTargetUsage), + UsageName(mse.Member.Usage)); } else if (!CheckValidInoutArg("lhs", usageContext, inoutAssignTargetExpr, true)) { // errors emitted by check } } else { Error(s, "invalid inout update lhs"); } + if (inoutAssignTargetUsage == Usage.Ghost) { s.IsGhost = true; } } - if (s.Rhs is ExprRhs) { - var rhs = (ExprRhs)s.Rhs; + var rhs = (ExprRhs) s.Rhs; Usage expectedUsage = x != null ? x.Var.Usage : Usage.Ordinary; bool madeGhost = false; if (isAutoGhost) { @@ -8355,42 +8471,51 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable ((lhs as AutoGhostIdentifierExpr).Var as LocalVariable).MakeGhost(); madeGhost = true; } - } - if (!madeGhost && !assumeRhsCompilable) { - resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); - } - if (x != null && x.Var.IsLinear) { - // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? - if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { - Error(x, "variable must be unavailable before assignment"); + + if (!AssignStmt.LhsIsToGhost(lhs)) { + resolver.CheckIsCompilable(rhs.Expr); } - usageContext.available[x.Var] = Available.Available; - } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { - Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); - } - } else if (s.Rhs is HavocRhs) { - // cool - } else { - var rhs = (TypeRhs)s.Rhs; - if (rhs.ArrayDimensions != null) { - rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); - if (rhs.ElementInit != null) { - resolver.CheckIsCompilable(rhs.ElementInit); + + if (!madeGhost && !assumeRhsCompilable) { + resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } - if (rhs.InitDisplay != null) { - rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); + + if (x != null && x.Var.IsLinear) { + // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? + if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { + Error(x, "variable must be unavailable before assignment"); + } + + usageContext.available[x.Var] = Available.Available; + } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { + Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); } - } - if (rhs.InitCall != null) { - for (var i = 0; i < rhs.InitCall.Args.Count; i++) { - if (!rhs.InitCall.Method.Ins[i].IsGhost) { - resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, rhs.InitCall.Method.Ins[i].Usage); + } else if (s.Rhs is HavocRhs) { + // cool + } else { + var rhs = (TypeRhs) s.Rhs; + if (rhs.ArrayDimensions != null) { + rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); + if (rhs.ElementInit != null) { + resolver.CheckIsCompilable(rhs.ElementInit); + } + + if (rhs.InitDisplay != null) { + rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); + } + } + + if (rhs.InitCall != null) { + for (var i = 0; i < rhs.InitCall.Args.Count; i++) { + if (!rhs.InitCall.Method.Ins[i].IsGhost) { + resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, + rhs.InitCall.Method.Ins[i].Usage); + } } } } } } - } else if (stmt is CallStmt) { var s = (CallStmt)stmt; var callee = s.Method; @@ -10102,7 +10227,7 @@ void ResolveMethod(Method m) { } // attributes are allowed to mention both in- and out-parameters (including the implicit _k, for greatest lemmas) - ResolveAttributes(m.Attributes, m, new ResolveOpts(m, false)); + ResolveAttributes(m.Attributes, m, new ResolveOpts(m, m is TwoStateLemma)); DafnyOptions.O.WarnShadowing = warnShadowingOption; // restore the original warnShadowing value scope.PopMarker(); // for the out-parameters and outermost-level locals @@ -10574,7 +10699,7 @@ public ResolveTypeReturn ResolveTypeLenient(IToken tok, Type type, ICodeContext t.ResolvedClass = d; // Store the decl, so the compiler will generate the fully qualified name } else if (d is SubsetTypeDecl || d is NewtypeDecl) { var dd = (RedirectingTypeDecl)d; - var caller = context as ICallable; + var caller = CodeContextWrapper.Unwrap(context) as ICallable; if (caller != null && !(d is SubsetTypeDecl && caller is SpecialFunction)) { caller.EnclosingModule.CallGraph.AddEdge(caller, dd); if (caller == d) { @@ -10585,7 +10710,7 @@ public ResolveTypeReturn ResolveTypeLenient(IToken tok, Type type, ICodeContext t.ResolvedClass = d; } else if (d is DatatypeDecl) { var dd = (DatatypeDecl)d; - var caller = context as ICallable; + var caller = CodeContextWrapper.Unwrap(context) as ICallable; if (caller != null) { caller.EnclosingModule.CallGraph.AddEdge(caller, dd); } @@ -10765,12 +10890,17 @@ public void ResolveStatement(Statement stmt, ICodeContext codeContext) { if (labeledAssert != null) { s.LabeledAsserts.Add(labeledAssert); } else { - var opts = new ResolveOpts(codeContext, false, true, false, false); + var opts = new ResolveOpts(codeContext, codeContext is Method || codeContext is TwoStateFunction, true, false, false); if (expr is ApplySuffix) { var e = (ApplySuffix)expr; var methodCallInfo = ResolveApplySuffix(e, opts, true); if (methodCallInfo == null) { reporter.Error(MessageSource.Resolver, expr.tok, "expression has no reveal lemma"); + } else if (methodCallInfo.Callee.Member is TwoStateLemma && !opts.twoState) { + reporter.Error(MessageSource.Resolver, methodCallInfo.Tok, "a two-state function can only be revealed in a two-state context"); + } else if (methodCallInfo.Callee.AtLabel != null) { + Contract.Assert(methodCallInfo.Callee.Member is TwoStateLemma); + reporter.Error(MessageSource.Resolver, methodCallInfo.Tok, "to reveal a two-state function, do not list any parameters or @-labels"); } else { if (methodCallInfo.Args.Exists(a => a.Inout)) { // bug in inout @@ -10927,7 +11057,7 @@ public void ResolveStatement(Statement stmt, ICodeContext codeContext) { if (s.Update is AssignSuchThatStmt) { ResolveConcreteUpdateStmt(s.Update, codeContext); } - // Update the VarDeclStmt's ghost status according to its components + // Check on "assumption" variables foreach (var local in s.Locals) { if (Attributes.Contains(local.Attributes, "assumption")) { if (currentMethod != null) { @@ -12613,7 +12743,7 @@ private void ResolveAssignSuchThatStmt(AssignSuchThatStmt s, ICodeContext codeCo } private Expression VarDotMethod(IToken tok, string varname, string methodname) { - return new ApplySuffix(tok, new ExprDotName(tok, new IdentifierExpr(tok, varname), methodname, null), new List() { }); + return new ApplySuffix(tok, null, new ExprDotName(tok, new IdentifierExpr(tok, varname), methodname, null), new List() { }); } private Expression makeTemp(String prefix, AssignOrReturnStmt s, ICodeContext codeContext, Expression ex) { @@ -12662,8 +12792,8 @@ private void ResolveAssignOrReturnStmt(AssignOrReturnStmt s, ICodeContext codeCo // We need to figure out whether we are using a status type that has Extract or not, // as that determines how the AssignOrReturnStmt is desugared. Thus if the Rhs is a - // method call we need to know which one (to inpsectx its first output); if RHs is a - // list of expressions, we need to know the type of the first one. FOr all of this we have + // method call we need to know which one (to inspect its first output); if RHs is a + // list of expressions, we need to know the type of the first one. For all of this we have // to do some partial type resolution. bool expectExtract = s.Lhss.Count != 0; // default value if we cannot determine and inspect the type @@ -12823,13 +12953,20 @@ private void ResolveAssignOrReturnStmt(AssignOrReturnStmt s, ICodeContext codeCo } s.ResolvedStatements.Add(ss); } else { + var enclosingOutParameter = ((Method)codeContext).Outs[0]; + var ident = new IdentifierExpr(s.Tok, enclosingOutParameter.Name); + // resolve it here to avoid capture into more closely declared local variables + Contract.Assert(enclosingOutParameter.Type != null); // this confirms our belief that the out-parameter has already been resolved + ident.Var = enclosingOutParameter; + ident.Type = ident.Var.Type; + s.ResolvedStatements.Add( // "if temp.IsFailure()" new IfStmt(s.Tok, s.Tok, false, VarDotMethod(s.Tok, temp, "IsFailure"), // THEN: { out := temp.PropagateFailure(); return; } new BlockStmt(s.Tok, s.Tok, new List() { new UpdateStmt(s.Tok, s.Tok, - new List() {new IdentifierExpr(s.Tok, (codeContext as Method).Outs[0].CompileName)}, + new List() { ident }, new List() {new ExprRhs(VarDotMethod(s.Tok, temp, "PropagateFailure"))} ), new ReturnStmt(s.Tok, s.Tok, null), @@ -13034,7 +13171,7 @@ void ResolveCallStmt(CallStmt s, ICodeContext codeContext, Type receiverType) { ModuleDefinition calleeModule = ((ICodeContext)callee).EnclosingModule; if (callerModule == calleeModule) { // intra-module call; add edge in module's call graph - var caller = codeContext as ICallable; + var caller = CodeContextWrapper.Unwrap(codeContext) as ICallable; if (caller == null) { // don't add anything to the call graph after all } else if (caller is IteratorDecl) { @@ -14726,8 +14863,8 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { // the argument is allowed to have any type at all expr.Type = Type.Bool; if (2 <= DafnyOptions.O.Allocated && - ((opts.codeContext is Function && !opts.InsideOld) || opts.codeContext is ConstantField || opts.codeContext is RedirectingTypeDecl)) { - var declKind = opts.codeContext is RedirectingTypeDecl ? ((RedirectingTypeDecl)opts.codeContext).WhatKind : ((MemberDecl)opts.codeContext).WhatKind; + ((opts.codeContext is Function && !opts.InsideOld) || opts.codeContext is ConstantField || CodeContextWrapper.Unwrap(opts.codeContext) is RedirectingTypeDecl)) { + var declKind = CodeContextWrapper.Unwrap(opts.codeContext) is RedirectingTypeDecl redir ? redir.WhatKind : ((MemberDecl)opts.codeContext).WhatKind; reporter.Error(MessageSource.Resolver, expr, "a {0} definition is not allowed to depend on the set of allocated references", declKind); } break; @@ -15158,7 +15295,7 @@ public void ResolveExpressionX(Expression expr, ResolveOpts opts) { } private Expression VarDotFunction(IToken tok, string varname, string functionname) { - return new ApplySuffix(tok, new ExprDotName(tok, new IdentifierExpr(tok, varname), functionname, null), new List() { }); + return new ApplySuffix(tok, null, new ExprDotName(tok, new IdentifierExpr(tok, varname), functionname, null), new List() { }); } // TODO search for occurrences of "new LetExpr" which could benefit from this helper @@ -15613,6 +15750,9 @@ void ResolveCasePattern(CasePattern pat, Type sourceType, ICodeContext c if (pat.Var != null) { // this is a simple resolution var v = pat.Var; + if (context.IsGhost) { + v.MakeGhost(); + } ResolveType(v.Tok, v.Type, context, ResolveTypeOptionEnum.InferTypeProxies, null); AddTypeDependencyEdges(context, v.Type); // Note, the following type constraint checks that the RHS type can be assigned to the new variable on the left. In particular, it @@ -15677,7 +15817,7 @@ void ResolveCasePattern(CasePattern pat, Type sourceType, ICodeContext c if (j < ctor.Formals.Count) { var formal = ctor.Formals[j]; Type st = SubstType(formal.Type, subst); - ResolveCasePattern(arg, st, context, uOuter, formal.Usage); + ResolveCasePattern(arg, st, new CodeContextWrapper(context, context.IsGhost || formal.IsGhost)); } j++; } @@ -16272,7 +16412,7 @@ ResolveTypeReturn ResolveDotSuffix_Type(ExprDotName expr, ResolveOpts opts, bool if (ri.TypeParamDecl != null) { ty = new UserDefinedType(ri.TypeParamDecl); } else { - ty = new UserDefinedType(expr.tok, ri.Decl.Name, ri.Decl, ri.TypeArgs); + ty = new UserDefinedType(ri.tok, ri.Decl.Name, ri.Decl, ri.TypeArgs); } if (allowDanglingDotName && ty.IsRefType) { return new ResolveTypeReturn(ty, expr); @@ -16343,7 +16483,8 @@ MemberSelectExpr ResolveExprDotCall(IToken tok, Expression receiver, Type receiv } int suppliedTypeArguments = optTypeArguments == null ? 0 : optTypeArguments.Count; if (optTypeArguments != null && suppliedTypeArguments != fn.TypeArgs.Count) { - reporter.Error(MessageSource.Resolver, tok, "function '{0}' expects {1} type arguments (got {2})", member.Name, fn.TypeArgs.Count, suppliedTypeArguments); + reporter.Error(MessageSource.Resolver, tok, "function '{0}' expects {1} type argument{2} (got {3})", + member.Name, fn.TypeArgs.Count, Util.Plural(fn.TypeArgs.Count), suppliedTypeArguments); } for (int i = 0; i < fn.TypeArgs.Count; i++) { var ta = i < suppliedTypeArguments ? optTypeArguments[i] : new InferredTypeProxy(); @@ -16366,7 +16507,8 @@ MemberSelectExpr ResolveExprDotCall(IToken tok, Expression receiver, Type receiv } int suppliedTypeArguments = optTypeArguments == null ? 0 : optTypeArguments.Count; if (optTypeArguments != null && suppliedTypeArguments != m.TypeArgs.Count) { - reporter.Error(MessageSource.Resolver, tok, "method '{0}' expects {1} type arguments (got {2})", member.Name, m.TypeArgs.Count, suppliedTypeArguments); + reporter.Error(MessageSource.Resolver, tok, "method '{0}' expects {1} type argument{2} (got {3})", + member.Name, m.TypeArgs.Count, Util.Plural(m.TypeArgs.Count), suppliedTypeArguments); } for (int i = 0; i < m.TypeArgs.Count; i++) { var ta = i < suppliedTypeArguments ? optTypeArguments[i] : new InferredTypeProxy(); @@ -16448,6 +16590,13 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a // some error had been detected during the attempted resolution of e.Lhs e.Lhs.Type = new InferredTypeProxy(); } + Label atLabel = null; + if (e.AtTok != null) { + atLabel = dominatingStatementLabels.Find(e.AtTok.val); + if (atLabel == null) { + reporter.Error(MessageSource.Resolver, e.AtTok, "no label '{0}' in scope at this time", e.AtTok.val); + } + } if (r != null && hasInOutArg) { reporter.Error(MessageSource.Resolver, e.tok, "inout arguments are not allowed in this context"); } @@ -16462,7 +16611,6 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Module) { reporter.Error(MessageSource.Resolver, e.tok, "name of module ({0}) is used as a function", ((Resolver_IdentifierExpr)lhs).Decl.Name); } else if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Type) { - // It may be a conversion expression var ri = (Resolver_IdentifierExpr)lhs; if (ri.TypeParamDecl != null) { reporter.Error(MessageSource.Resolver, e.tok, "name of type parameter ({0}) is used as a function", ri.TypeParamDecl.Name); @@ -16492,8 +16640,15 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a } } } else { - if (lhs is MemberSelectExpr && ((MemberSelectExpr)lhs).Member is Method) { - var mse = (MemberSelectExpr)lhs; + if (lhs is MemberSelectExpr mse && mse.Member is Method) { + if (atLabel != null) { + Contract.Assert(mse != null); // assured by the parser + if (mse.Member is TwoStateLemma) { + mse.AtLabel = atLabel; + } else { + reporter.Error(MessageSource.Resolver, e.AtTok, "an @-label can only be applied to a two-state lemma"); + } + } if (allowMethodCall) { foreach (var arg in e.Args) { if (arg.Inout) { @@ -16524,14 +16679,17 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a var what = callee != null ? string.Format("function '{0}'", callee.Name) : string.Format("function type '{0}'", fnType); reporter.Error(MessageSource.Resolver, e.tok, "wrong number of arguments to function application ({0} expects {1}, got {2})", what, fnType.Arity, e.Args.Count); } else { - for (var i = 0; i < fnType.Arity; i++) { + if (atLabel != null && !(callee is TwoStateFunction)) { + reporter.Error(MessageSource.Resolver, e.AtTok, "an @-label can only be applied to a two-state function"); + atLabel = null; + }for (var i = 0; i < fnType.Arity; i++) { AddAssignableConstraint(e.Args[i].Expr.tok, fnType.Args[i], e.Args[i].Expr.Type, "type mismatch for argument" + (fnType.Arity == 1 ? "" : " " + i) + " (function expects {0}, got {1})"); } if (errorCount != reporter.Count(ErrorLevel.Error)) { // do nothing else; error has been reported } else if (callee != null) { // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) - var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args)); + var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args, atLabel)); // resolve it here: rr.Function = callee; Contract.Assert(!(mse.Obj is StaticReceiverExpr) || callee.IsStatic); // this should have been checked already @@ -16878,7 +17036,9 @@ static IdentifierExpr ExprAsIdentifier(UsageContext usageContext, Expression exp } /// - /// Generate an error for every ghost feature used in "expr". + /// Try to make "expr" compilable (in particular, mark LHSs of a let-expression as ghosts if + /// the corresponding RHS is ghost), and then report errors for every part that would prevent + /// compilation. /// Requires "expr" to have been successfully resolved. /// void CheckIsCompilable(Expression expr) { @@ -16979,7 +17139,15 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs var e = (FunctionCallExpr)expr; if (e.Function != null) { if (e.Function.IsGhost) { - reporter.Error(MessageSource.Resolver, expr, "function calls are allowed only in specification contexts (consider declaring the function a 'function method')"); + string msg; + if (e.Function is TwoStateFunction || e.Function is ExtremePredicate || e.Function is PrefixPredicate) { + msg = $"a call to a {e.Function.WhatKind} is allowed only in specification contexts"; + } else if (e.Function is Predicate) { + msg = "predicate calls are allowed only in specification contexts (consider declaring the predicate a 'predicate method')"; + } else { + msg = "function calls are allowed only in specification contexts (consider declaring the function a 'function method')"; + } + reporter.Error(MessageSource.Resolver, expr, msg); return Usage.Ordinary; } var functionContext = (usageContext == null) ? null : (usageContext.codeContext as Function); @@ -17066,9 +17234,18 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs var i = 0; var uc0 = UsageContext.Copy(usageContext); foreach (var ee in e.RHSs) { - var xs = e.LHSs[i].Vars.ToList(); - if (!xs.All(bv => bv.IsGhost) || e.Usage == Usage.Linear) { - CheckIsCompilable(ee, usageContext, e.Usage); + var lhs = e.LHSs[i]; + // Make LHS vars ghost if the RHS is a ghost + if (UsesSpecFeatures(ee)) { + foreach (var bv in lhs.Vars) { + if (!bv.IsGhost) { + bv.MakeGhost(); + } + } + } + + if (!lhs.Vars.All(bv => bv.IsGhost) || e.Usage == Usage.Linear) { + CheckIsCompilable(ee); } i++; } @@ -17299,7 +17476,7 @@ private static void AddCallGraphEdge(ICodeContext callingContext, ICallable func ModuleDefinition calleeModule = function is SpecialFunction ? null : function.EnclosingModule; if (callerModule == calleeModule) { // intra-module call; add edge in module's call graph - var caller = callingContext as ICallable; + var caller = CodeContextWrapper.Unwrap(callingContext) as ICallable; if (caller == null) { // don't add anything to the call graph after all } else if (caller is IteratorDecl) { diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index ac2c7fa8f3d..cd559bcff72 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -873,7 +873,7 @@ public static Expression ValidCall(IToken tok, Expression receiver, Function Val call.Type = Type.Bool; call.TypeApplication_AtEnclosingClass = receiver.Type.TypeArgs; call.TypeApplication_JustFunction = new List(); - callingContext.EnclosingModule.CallGraph.AddEdge(callingContext, Valid); + callingContext.EnclosingModule.CallGraph.AddEdge((ICallable)CodeContextWrapper.Unwrap(callingContext), Valid); return call; } @@ -908,7 +908,7 @@ void AddHoverText(IToken tok, string format, params object[] args) { public class OpaqueFunctionRewriter : IRewriter { protected Dictionary fullVersion; // Given an opaque function, retrieve the full protected Dictionary original; // Given a full version of an opaque function, find the original opaque version - protected Dictionary revealOriginal; // Map reveal_* lemmas back to their original functions + protected Dictionary revealOriginal; // Map reveal_* lemmas (or two-state lemmas) back to their original functions public OpaqueFunctionRewriter(ErrorReporter reporter) : base(reporter) { @@ -916,7 +916,7 @@ public OpaqueFunctionRewriter(ErrorReporter reporter) fullVersion = new Dictionary(); original = new Dictionary(); - revealOriginal = new Dictionary(); + revealOriginal = new Dictionary(); } internal override void PreResolve(ModuleDefinition m) { @@ -929,8 +929,8 @@ internal override void PreResolve(ModuleDefinition m) { internal override void PostResolve(ModuleDefinition m) { foreach (var decl in ModuleDefinition.AllCallables(m.TopLevelDecls)) { - if (decl is Lemma) { - var lem = (Lemma)decl; + if (decl is Lemma || decl is TwoStateLemma) { + var lem = (Method)decl; if (revealOriginal.ContainsKey(lem)) { Function fn = revealOriginal[lem]; AnnotateRevealFunction(lem, fn); @@ -939,7 +939,8 @@ internal override void PostResolve(ModuleDefinition m) { } } - protected void AnnotateRevealFunction(Lemma lemma, Function f) { + protected void AnnotateRevealFunction(Method lemma, Function f) { + Contract.Requires(lemma is Lemma || lemma is TwoStateLemma); Expression receiver; if (f.IsStatic) { receiver = new StaticReceiverExpr(f.tok, (TopLevelDeclWithMembers)f.EnclosingClass, true); @@ -1005,7 +1006,9 @@ private void RewriteOpaqueFunctionUseFuel(Function f, List newDecls) // We produce: // lemma {:axiom} {:auto_generated} {:fuel foo, 1, 2 } reveal_foo() // - // The translator, in AddMethod, then adds ensures clauses to bump up the fuel parameters approriately + // If "foo" is a two-state function, then "reveal_foo" will be declared as a two-state lemma. + // + // The translator, in AddMethod, then adds ensures clauses to bump up the fuel parameters appropriately var cloner = new Cloner(); @@ -1023,9 +1026,16 @@ private void RewriteOpaqueFunctionUseFuel(Function f, List newDecls) lemma_attrs = new Attributes("auto_generated", new List(), lemma_attrs); lemma_attrs = new Attributes("opaque_reveal", new List(), lemma_attrs); lemma_attrs = new Attributes("verify", new List() { new LiteralExpr(f.tok, false)}, lemma_attrs); - var reveal = new Lemma(f.tok, "reveal_" + f.Name, f.HasStaticKeyword, new List(), new List(), new List(), new List(), - new Specification(new List(), null), /* newEnsuresList*/new List(), - new Specification(new List(), null), null, lemma_attrs, null); + Method reveal; + if (f is TwoStateFunction) { + reveal = new TwoStateLemma(f.tok, "reveal_" + f.Name, f.HasStaticKeyword, new List(), new List(), new List(), new List(), + new Specification(new List(), null), /* newEnsuresList*/new List(), + new Specification(new List(), null), null, lemma_attrs, null); + } else { + reveal = new Lemma(f.tok, "reveal_" + f.Name, f.HasStaticKeyword, new List(), new List(), new List(), new List(), + new Specification(new List(), null), /* newEnsuresList*/new List(), + new Specification(new List(), null), null, lemma_attrs, null); + } newDecls.Add(reveal); revealOriginal[reveal] = f; reveal.InheritVisibility(f, true); @@ -1571,7 +1581,7 @@ public override Expression CloneApplySuffix(ApplySuffix e) { } return new NameSegment(new AutoGeneratedToken(e.tok), bv.Name, null); } else { - return new ApplySuffix(Tok(e.tok), CloneExpr(e.Lhs), e.Args.ConvertAll( + return new ApplySuffix(Tok(e.tok), e.AtTok == null ? null : Tok(e.AtTok), CloneExpr(e.Lhs), e.Args.ConvertAll( x => new ApplySuffixArg { Inout = x.Inout, Expr = CloneExpr(x.Expr) })); } } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 005088201df..ba5636387f6 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -6607,7 +6607,7 @@ Bpl.Expr CanCallAssumption(Expression expr, ExpressionTranslator etran) { return CanCallAssumption(e.E, etran); } else if (expr is OldExpr) { var e = (OldExpr)expr; - return CanCallAssumption(e.E, e.AtLabel == null ? etran.Old : etran.OldAt(e.AtLabel)); + return CanCallAssumption(e.E, etran.OldAt(e.AtLabel)); } else if (expr is UnchangedExpr) { var e = (UnchangedExpr)expr; Bpl.Expr be = Bpl.Expr.True; @@ -7304,12 +7304,6 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu } else { CheckNonNull(expr.tok, e.Obj, builder, etran, options.AssertKv); // Check that the receiver is available in the state in which the dereference occurs - if (etran.UsesOldHeap) { - Bpl.Expr wh = GetWhereClause(expr.tok, etran.TrExpr(e.Obj), e.Obj.Type, etran, ISALLOC, true); - if (wh != null) { - builder.Add(Assert(expr.tok, wh, "receiver must be allocated in the state in which its fields are accessed")); - } - } } } else if (e.Member is DatatypeDestructor) { var dtor = (DatatypeDestructor)e.Member; @@ -7323,6 +7317,19 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu string.Format("destructor '{0}' can only be applied to datatype values constructed by {1}", dtor.Name, dtor.EnclosingCtorNames("or")))); } } + if (!e.Member.IsStatic) { + if (e.Member is TwoStateFunction) { + Bpl.Expr wh = GetWhereClause(expr.tok, etran.TrExpr(e.Obj), e.Obj.Type, etran.OldAt(e.AtLabel), ISALLOC, true); + if (wh != null) { + builder.Add(Assert(expr.tok, wh, "receiver argument must be allocated in the two-state function's previous state")); + } + } else if (etran.UsesOldHeap) { + Bpl.Expr wh = GetWhereClause(expr.tok, etran.TrExpr(e.Obj), e.Obj.Type, etran, ISALLOC, true); + if (wh != null) { + builder.Add(Assert(expr.tok, wh, $"receiver must be allocated in the state in which its {(e.Member is Field ? "fields" : "members")} are accessed")); + } + } + } if (options.DoReadsChecks && e.Member is Field && ((Field)e.Member).IsMutable) { options.AssertSink(this, builder)(expr.tok, Bpl.Expr.SelectTok(expr.tok, etran.TheFrame(expr.tok), etran.TrExpr(e.Obj), GetField(e)), "insufficient reads clause to read field", options.AssertKv); } @@ -7334,7 +7341,7 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu Bpl.Expr seq = etran.TrExpr(e.Seq); if (eSeqType.IsArrayType) { builder.Add(Assert(e.Seq.tok, Bpl.Expr.Neq(seq, predef.Null), "array may be null")); - if (!CommonHeapUse) { + if (!CommonHeapUse || etran.UsesOldHeap) { builder.Add(Assert(e.Seq.tok, MkIsAlloc(seq, eSeqType, etran.HeapExpr), "array may not be allocated")); } } @@ -7393,6 +7400,10 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu MultiSelectExpr e = (MultiSelectExpr)expr; CheckWellformed(e.Array, options, locals, builder, etran); Bpl.Expr array = etran.TrExpr(e.Array); + builder.Add(Assert(e.Array.tok, Bpl.Expr.Neq(array, predef.Null), "array may be null")); + if (!CommonHeapUse || etran.UsesOldHeap) { + builder.Add(Assert(e.Array.tok, MkIsAlloc(array, e.Array.Type, etran.HeapExpr), "array may not be allocated")); + } for (int idxId = 0; idxId < e.Indices.Count; idxId++) { var idx = e.Indices[idxId]; CheckWellformed(idx, options, locals, builder, etran); @@ -7539,6 +7550,12 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu } else if (e.Receiver.Type.IsArrowType) { CheckFunctionSelectWF("function specification", builder, etran, e.Receiver, ""); } + if (!e.Function.IsStatic && CommonHeapUse && !etran.UsesOldHeap) { + // the argument can't be assumed to be allocated for the old heap + Type et = Resolver.SubstType(UserDefinedType.FromTopLevelDecl(e.tok, e.Function.EnclosingClass), e.GetTypeArgumentSubstitutions()); + builder.Add(new Bpl.CommentCmd("assume allocatedness for receiver argument to function")); + builder.Add(TrAssumeCmd(e.Receiver.tok, MkIsAlloc(etran.TrExpr(e.Receiver), et, etran.HeapExpr))); + } // check well-formedness of the other parameters foreach (Expression arg in e.Args) { CheckWellformed(arg, options, locals, builder, etran); @@ -7589,9 +7606,9 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu } } else if (e.Function is TwoStateFunction) { if (!e.Function.IsStatic) { - Bpl.Expr wh = GetWhereClause(e.Receiver.tok, etran.TrExpr(e.Receiver), e.Receiver.Type, etran.Old, ISALLOC, true); + Bpl.Expr wh = GetWhereClause(e.Receiver.tok, etran.TrExpr(e.Receiver), e.Receiver.Type, etran.OldAt(e.AtLabel), ISALLOC, true); if (wh != null) { - builder.Add(Assert(e.Receiver.tok, wh, "receiver argument must be allocated in the two-state functions's previous state")); + builder.Add(Assert(e.Receiver.tok, wh, "receiver argument must be allocated in the two-state function's previous state")); } } Contract.Assert(e.Function.Formals.Count == e.Args.Count); @@ -7599,7 +7616,7 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu var formal = e.Function.Formals[i]; if (formal.IsOld) { Expression ee = e.Args[i]; - Bpl.Expr wh = GetWhereClause(ee.tok, etran.TrExpr(ee), ee.Type, etran.Old, ISALLOC, true); + Bpl.Expr wh = GetWhereClause(ee.tok, etran.TrExpr(ee), ee.Type, etran.OldAt(e.AtLabel), ISALLOC, true); if (wh != null) { builder.Add(Assert(ee.tok, wh, string.Format("argument{0} ('{1}') must be allocated in the two-state function's previous state", e.Args.Count == 1 ? "" : " " + i, formal.Name))); @@ -7729,7 +7746,7 @@ void CheckWellformedWithResult(Expression expr, WFOptions options, Bpl.Expr resu // Anything read inside the 'old' expressions depends only on the old heap, which isn't included in the // frame axiom. In other words, 'old' expressions have no dependencies on the current heap. Therefore, // we turn off any reads checks for "e.E". - CheckWellformed(e.E, new WFOptions(options), locals, builder, etran.Old); + CheckWellformed(e.E, new WFOptions(options), locals, builder, etran.OldAt(e.AtLabel)); } else if (expr is UnchangedExpr) { var e = (UnchangedExpr)expr; foreach (var fe in e.Frame) { @@ -8504,12 +8521,7 @@ void CheckResultToBeInType_Aux(IToken tok, Expression expr, Type toType, BoogieS void CheckFunctionSelectWF(string what, BoogieStmtListBuilder builder, ExpressionTranslator etran, Expression e, string hint) { - Function fn = null; - var sel = e as MemberSelectExpr; - if (sel != null) { - fn = sel.Member as Function; - } - if (fn != null) { + if (e is MemberSelectExpr sel && sel.Member is Function fn) { Bpl.Expr assertion = !InVerificationScope(fn) ? Bpl.Expr.True : Bpl.Expr.Not(etran.HeightContext(fn)); builder.Add(Assert(e.tok, assertion, "cannot use " + what + " in recursive setting." + hint)); @@ -10127,6 +10139,7 @@ public Bpl.Expr BoxIfUnboxed(Bpl.Expr e, Type t) { /// /// If the expression is boxed, but the type is not boxed, this unboxes it. /// For lambda functions. + /// KRML: The name of this method is really confusing. It seems it should be named something like UnboxUnlessInherentlyBoxed. /// public Bpl.Expr UnboxIfBoxed(Bpl.Expr e, Type t) { if (!ModeledAsBoxType(t)) { @@ -12262,7 +12275,7 @@ void TrCallStmt(CallStmt s, BoogieStmtListBuilder builder, List locals builder.Add(Bpl.Cmd.SimpleAssign(s.Tok, initHeap, etran.HeapExpr)); } builder.Add(new CommentCmd("TrCallStmt: Before ProcessCallStmt")); - ProcessCallStmt(s.Tok, tySubst, GetTypeParams(s.Method), s.Receiver, actualReceiver, s.Method, s.Args.ConvertAll(a => a.Expr), bLhss, lhsTypes, builder, locals, etran); + ProcessCallStmt(s.Tok, tySubst, GetTypeParams(s.Method), s.Receiver, actualReceiver, s.Method, s.MethodSelect.AtLabel, s.Args.ConvertAll(a => a.Expr), bLhss, lhsTypes, builder, locals, etran); builder.Add(new CommentCmd("TrCallStmt: After ProcessCallStmt")); for (int i = 0; i < lhsBuilders.Count; i++) { var lhs = s.Lhs[i]; @@ -12313,7 +12326,7 @@ void TrCallStmt(CallStmt s, BoogieStmtListBuilder builder, List locals void ProcessCallStmt(IToken tok, Dictionary tySubst, List tyArgs, Expression dafnyReceiver, Bpl.Expr bReceiver, - Method method, List Args, + Method method, Label/*?*/ atLabel, List Args, List Lhss, List LhsTypes, BoogieStmtListBuilder builder, List locals, ExpressionTranslator etran) { @@ -12321,6 +12334,7 @@ void ProcessCallStmt(IToken tok, Contract.Requires(dafnyReceiver != null || bReceiver != null); Contract.Requires(method != null); Contract.Requires(VisibleInScope(method)); + Contract.Requires(method is TwoStateLemma || atLabel == null); Contract.Requires(Args != null); Contract.Requires(Lhss != null); Contract.Requires(LhsTypes != null); @@ -12369,7 +12383,7 @@ void ProcessCallStmt(IToken tok, var ins = new List(); if (callee is TwoStateLemma) { - ins.Add(etran.Old.HeapExpr); + ins.Add(etran.OldAt(atLabel).HeapExpr); ins.Add(etran.HeapExpr); } // Add type arguments @@ -12398,7 +12412,7 @@ void ProcessCallStmt(IToken tok, var substMap = new Dictionary(); for (int i = 0; i < callee.Ins.Count; i++) { var formal = callee.Ins[i]; - var local = new LocalVariable(formal.tok, formal.tok, formal.Name + "#", formal.Type, formal.Usage); + var local = new LocalVariable(formal.tok, formal.tok, formal.Name + "#", Resolver.SubstType(formal.Type, tySubst), formal.Usage); local.type = local.OptionalType; // resolve local here var ie = new IdentifierExpr(local.Tok, local.AssignUniqueName(currentDeclaration.IdGenerator)); ie.Var = local; ie.Type = ie.Var.Type; // resolve ie here @@ -12430,11 +12444,11 @@ void ProcessCallStmt(IToken tok, // Check the subrange without boxing var beforeBox = etran.TrExpr(actual); CheckSubrange(actual.tok, beforeBox, actual.Type, Resolver.SubstType(formal.Type, tySubst), builder); - bActual = CondApplyBox(actual.tok, beforeBox, actual.Type, formal.Type); + bActual = CondApplyBox(actual.tok, beforeBox, actual.Type, Resolver.SubstType(formal.Type, tySubst)); } Bpl.Cmd cmd = Bpl.Cmd.SimpleAssign(formal.tok, param, bActual); builder.Add(cmd); - ins.Add(param); + ins.Add(CondApplyBox(param.tok, param, Resolver.SubstType(formal.Type, tySubst), formal.Type)); } // Check that every parameter is available in the state in which the method is invoked; this means checking that it has @@ -12458,7 +12472,7 @@ void ProcessCallStmt(IToken tok, } } else if (method is TwoStateLemma) { if (!method.IsStatic) { - Bpl.Expr wh = GetWhereClause(receiver.tok, etran.TrExpr(receiver), receiver.Type, etran.Old, ISALLOC, true); + Bpl.Expr wh = GetWhereClause(receiver.tok, etran.TrExpr(receiver), receiver.Type, etran.OldAt(atLabel), ISALLOC, true); if (wh != null) { builder.Add(Assert(receiver.tok, wh, "receiver argument must be allocated in the two-state lemma's previous state")); } @@ -12468,7 +12482,7 @@ void ProcessCallStmt(IToken tok, var formal = callee.Ins[i]; if (formal.IsOld) { Expression ee = Args[i]; - Bpl.Expr wh = GetWhereClause(ee.tok, etran.TrExpr(ee), ee.Type, etran.Old, ISALLOC, true); + Bpl.Expr wh = GetWhereClause(ee.tok, etran.TrExpr(ee), ee.Type, etran.OldAt(atLabel), ISALLOC, true); if (wh != null) { builder.Add(Assert(ee.tok, wh, string.Format("parameter{0} ('{1}') must be allocated in the two-state lemma's previous state", Args.Count == 1 ? "" : " " + i, formal.Name))); @@ -14813,16 +14827,18 @@ public ExpressionTranslator Old { } } - public ExpressionTranslator OldAt(Label label) { - Contract.Requires(label != null); + public ExpressionTranslator OldAt(Label/*?*/ label) { Contract.Ensures(Contract.Result() != null); + if (label == null) { + return Old; + } var heapAt = new Bpl.IdentifierExpr(Token.NoToken, "$Heap_at_" + label.AssignUniqueId(translator.CurrentIdGenerator), predef.HeapType); return new ExpressionTranslator(translator, predef, heapAt, This, applyLimited_CurrentFunction, layerInterCluster, layerIntraCluster, modifiesFrame, stripLits); } public bool UsesOldHeap { get { - return HeapExpr is Bpl.OldExpr; + return HeapExpr is Bpl.OldExpr || (HeapExpr is Bpl.IdentifierExpr ide && ide.Name.StartsWith("$Heap_at_")); } } @@ -15401,11 +15417,11 @@ public Bpl.Expr TrExpr(Expression expr) { } else if (expr is OldExpr) { var e = (OldExpr)expr; - return e.AtLabel == null ? Old.TrExpr(e.E) : OldAt(e.AtLabel).TrExpr(e.E); + return OldAt(e.AtLabel).TrExpr(e.E); } else if (expr is UnchangedExpr) { var e = (UnchangedExpr)expr; - return translator.FrameCondition(e.tok, e.Frame, false, Resolver.FrameExpressionUse.Unchanged, e.AtLabel == null ? Old : OldAt(e.AtLabel), this, this, true); + return translator.FrameCondition(e.tok, e.Frame, false, Resolver.FrameExpressionUse.Unchanged, OldAt(e.AtLabel), this, this, true); } else if (expr is UnaryOpExpr) { var e = (UnaryOpExpr)expr; @@ -16046,19 +16062,21 @@ public Bpl.Expr TrExpr(Expression expr) { Bpl.Expr keys, values; if (!e.IsGeneralMapComprehension) { var bv = e.BoundVars[0]; - Bpl.Expr unboxw = translator.UnboxIfBoxed(new Bpl.IdentifierExpr(expr.tok, wVar), bv.Type); - Bpl.Expr typeAntecedent = translator.GetWhereClause(bv.tok, unboxw, bv.Type, this, NOALLOC); + var w = new Bpl.IdentifierExpr(expr.tok, wVar); + Bpl.Expr unboxw = translator.UnboxIfBoxed(w, bv.Type); + Bpl.Expr typeAntecedent = translator.MkIsBox(w, bv.Type); var subst = new Dictionary(); subst.Add(bv, new BoogieWrapper(unboxw, bv.Type)); - var ebody = BplAnd(typeAntecedent ?? Bpl.Expr.True, TrExpr(Translator.Substitute(e.Range, null, subst))); + var ebody = BplAnd(typeAntecedent, TrExpr(Translator.Substitute(e.Range, null, subst))); keys = new Bpl.LambdaExpr(e.tok, new List(), new List { wVar }, kv, ebody); ebody = TrExpr(Translator.Substitute(e.Term, null, subst)); values = new Bpl.LambdaExpr(e.tok, new List(), new List { wVar }, kv, BoxIfNecessary(expr.tok, ebody, e.Term.Type)); } else { var t = e.TermLeft; - Bpl.Expr unboxw = translator.UnboxIfBoxed(new Bpl.IdentifierExpr(expr.tok, wVar), t.Type); - Bpl.Expr typeAntecedent = translator.GetWhereClause(t.tok, unboxw, t.Type, this, NOALLOC); + var w = new Bpl.IdentifierExpr(expr.tok, wVar); + Bpl.Expr unboxw = translator.UnboxIfBoxed(w, t.Type); + Bpl.Expr typeAntecedent = translator.MkIsBox(w, t.Type); List bvs; List args; translator.CreateBoundVariables(e.BoundVars, out bvs, out args); @@ -16070,7 +16088,7 @@ public Bpl.Expr TrExpr(Expression expr) { var rr = TrExpr(Translator.Substitute(e.Range, null, subst)); var ff = TrExpr(Translator.Substitute(t, null, subst)); var exst_body = BplAnd(rr, Bpl.Expr.Eq(unboxw, ff)); - var ebody = BplAnd(typeAntecedent ?? Bpl.Expr.True, new Bpl.ExistsExpr(e.tok, bvs, exst_body)); + var ebody = BplAnd(typeAntecedent, new Bpl.ExistsExpr(e.tok, bvs, exst_body)); keys = new Bpl.LambdaExpr(e.tok, new List(), new List { wVar }, kv, ebody); translator.CreateMapComprehensionProjectionFunctions(e); @@ -16347,7 +16365,7 @@ public Bpl.Expr TrBoundVariablesRename(List boundVars, List args.Add(layerArgument); } if (e.Function is TwoStateFunction) { - args.Add(Old.HeapExpr); + args.Add(OldAt(e.AtLabel).HeapExpr); } if (!omitHeapArgument && (AlwaysUseHeap || e.Function.ReadsHeap)) { Contract.Assert(HeapExpr != null); @@ -16368,10 +16386,12 @@ public Bpl.Expr TrBoundVariablesRename(List boundVars, List Statistics_HeapAsQuantifierCount++; } } + argsAreLit = true; if (!e.Function.IsStatic) { - args.Add(TrExpr(e.Receiver)); + var tr_ee = TrExpr(e.Receiver); + argsAreLit = argsAreLit && translator.IsLit(tr_ee); + args.Add(tr_ee); } - argsAreLit = true; for (int i = 0; i < e.Args.Count; i++) { Expression ee = e.Args[i]; Type t = e.Function.Formals[i].Type; @@ -16445,12 +16465,15 @@ public Bpl.Expr TrInSet(IToken tok, Bpl.Expr elmt, Expression s, Type elmtType, Contract.Ensures(Contract.Result() != null); var elmtBox = BoxIfNecessary(tok, elmt, elmtType); - return TrInSet_Aux(tok, elmt, elmtBox, s, out performedRewrite); + var r = TrInSet_Aux(tok, elmt, elmtBox, s, out performedRewrite); + Contract.Assert(performedRewrite == RewriteInExpr(s)); // sanity check + return r; } /// /// The worker routine for TrInSet. This method takes both "elmt" and "elmtBox" as parameters, /// using the former when the unboxed form is needed and the latter when the boxed form is needed. /// This gives the caller the flexibility to pass in either "o, Box(o)" or "Unbox(bx), bx". + /// Note: This method must be kept in synch with RewriteInExpr. /// public Bpl.Expr TrInSet_Aux(IToken tok, Bpl.Expr elmt, Bpl.Expr elmtBox, Expression s, out bool performedRewrite) { Contract.Requires(tok != null); @@ -16522,6 +16545,7 @@ public Bpl.Expr TrInSet_Aux(IToken tok, Bpl.Expr elmt, Bpl.Expr elmtBox, Express /// /// Translate like 0 < s[Box(elmt)], but try to avoid as many set functions as possible in the /// translation, because such functions can mess up triggering. + /// Note: This method must be kept in synch with RewriteInExpr. /// public Bpl.Expr TrInMultiSet(IToken tok, Bpl.Expr elmt, Expression s, Type elmtType) { Contract.Requires(tok != null); @@ -16571,6 +16595,33 @@ public Bpl.Expr TrInMultiSet_Aux(IToken tok, Bpl.Expr elmt, Bpl.Expr elmtBox, Ex return Bpl.Expr.Gt(Bpl.Expr.SelectTok(tok, TrExpr(s), elmtBox), Bpl.Expr.Literal(0)); } + /// + /// This method returns "true" iff TrInSet_Aux/TrInMultiSet_Aux will rewrite an expression "x in s". + /// Note: This method must be kept in synch with TrInSet_Aux/TrInMultiSet_Aux. + /// + public static bool RewriteInExpr(Expression s) { + Contract.Requires(s != null); + + if (s is BinaryExpr) { + BinaryExpr bin = (BinaryExpr)s; + switch (bin.ResolvedOp) { + case BinaryExpr.ResolvedOpcode.Union: + case BinaryExpr.ResolvedOpcode.Intersection: + case BinaryExpr.ResolvedOpcode.SetDifference: + case BinaryExpr.ResolvedOpcode.MultiSetUnion: + case BinaryExpr.ResolvedOpcode.MultiSetIntersection: + return true; + default: + break; + } + } else if (s is SetDisplayExpr || s is MultiSetDisplayExpr) { + return true; + } else if (s is SetComprehension) { + return true; + } + return false; + } + public Bpl.QKeyValue TrAttributes(Attributes attrs, string skipThisAttribute) { Bpl.QKeyValue kv = null; foreach (var attr in attrs.AsEnumerable()) { @@ -17545,7 +17596,7 @@ bool TrSplitExpr(Expression expr, List/*!*/ splits, bool pos } else if (expr is OldExpr) { var e = (OldExpr)expr; - return TrSplitExpr(e.E, splits, position, heightLimit, inlineProtectedFunctions, apply_induction, e.AtLabel == null ? etran.Old : etran.OldAt(e.AtLabel)); + return TrSplitExpr(e.E, splits, position, heightLimit, inlineProtectedFunctions, apply_induction, etran.OldAt(e.AtLabel)); } else if (expr is FunctionCallExpr && position) { var fexp = (FunctionCallExpr)expr; @@ -18100,7 +18151,7 @@ public static bool UsesHeap(Expression expr) { var FVsHeapAt = new HashSet(): int + function F2(): int + method M0() + method M1() + method M2() + + method TestFunction() { + var x; + x := F0(); + x := F1(); // type argument inferred + x := F2(); // type arguments inferred + x := F0(); // error: wrong number of type parameters + x := F1(); + x := F2(); // error: wrong number of type parameters + x := F0(); // error: wrong number of type parameters + x := F1(); // error: wrong number of type parameters + x := F2(); + } + + method TestMethods() { + M0(); + M1(); // type argument inferred + M2(); // type arguments inferred + M0(); // error: wrong number of type parameters + M1(); + M2(); // error: wrong number of type parameters + M0(); // error: wrong number of type parameters + M1(); // error: wrong number of type parameters + M2(); + } +} + +module AutoGhostRegressions { + datatype Quad = Quad(0: T, 1: T, ghost 2: U, ghost 3: U) + + method Test() { + var q := Quad(20, 30, 40, 50); + print q, "\n"; + + var Quad(a, b, c, d) := q; + print c, "\n"; // error: c is ghost (this was once not handled correctly) + + match q { + case Quad(r, s, t, u) => + print t, "\n"; // error: t is ghost + } + + ghost var p := Quad(20, 30, 40, 50); + var Quad(a', b', c', d') := p; + print a', "\n"; // error: a' is ghost + print c', "\n"; // error: c' is ghost + } + + datatype NoEquality = NoEquality(ghost u: int) + newtype NT = x | var s: set := {}; |s| <= x // fine, since constraint is a ghost context + type ST = x | var s: set := {}; |s| <= x // fine, since constraint is a ghost context +} + +module TypeCharacteristicsInGhostCode { + function method MustBeNonempty(): int { 5 } + function method MustBeAutoInit(): int { 5 } + function method MustSupportEquality(): int { 5 } + function method NoReferences(): int { 5 } + + type PossiblyEmpty = x: int | true witness * + type Nonempty = x: int | true ghost witness 0 + datatype NoEquality = NoEquality(ghost u: int) + class Class { } + type Good = bool + + method TestCompiled() + { + var w; + + w := MustBeNonempty(); // error + w := MustBeNonempty(); + w := MustBeNonempty(); + w := MustBeNonempty(); + w := MustBeNonempty(); + w := MustBeNonempty(); // error (a hint is given) + + w := MustBeAutoInit(); // error + w := MustBeAutoInit(); // error + w := MustBeAutoInit(); + w := MustBeAutoInit(); + w := MustBeAutoInit(); + w := MustBeAutoInit(); // error (a hint is given) + + w := MustSupportEquality(); + w := MustSupportEquality(); + w := MustSupportEquality(); // error + w := MustSupportEquality(); + w := MustSupportEquality(); + w := MustSupportEquality(); // error (a hint is given) + + w := NoReferences(); + w := NoReferences(); + w := NoReferences(); + w := NoReferences(); // error + w := NoReferences(); + w := NoReferences(); // error (a hint is given) + } + + method TestGhost() + { + ghost var w; + + w := MustBeNonempty(); // error + w := MustBeNonempty(); + w := MustBeNonempty(); + w := MustBeNonempty(); + w := MustBeNonempty(); + + w := MustBeAutoInit(); // error + w := MustBeAutoInit(); // fine, because the call appears in a ghost context + w := MustBeAutoInit(); + w := MustBeAutoInit(); + w := MustBeAutoInit(); + + w := MustSupportEquality(); + w := MustSupportEquality(); + w := MustSupportEquality(); + w := MustSupportEquality(); + w := MustSupportEquality(); + + w := NoReferences(); + w := NoReferences(); + w := NoReferences(); + w := NoReferences(); // error + w := NoReferences(); + } + + function method FF(a: bool, ghost b: bool): int { 5 } + method MM(a: bool, ghost b: bool) { } + function method GetInt(): int { 2 } + method GhostContexts(x: T, y: T) { + var r; + r := FF(x == y, true); // error: T must support equality + r := FF(true, x == y); // no problem, since this is a ghost context + MM(x == y, true); // error: T must support equality + MM(true, x == y); // no problem, since this is a ghost context + + r := FF(GetInt() == 0, true); // error: type argument must support equality + r := FF(true, GetInt() == 0); // okay, since this is a ghost context + MM(GetInt() == 0, true); // error: type argument must support equality + MM(true, GetInt() == 0); // okay, since this is a ghost context + + var q0 := Quad(GetInt() == 0, true, true, true); // error: type argument must support equality + var q1 := Quad(true, true, GetInt() == 0, true); // fine, since in a ghost context + } + + datatype Quad = Quad(0: T, 1: T, ghost 2: U, ghost 3: U) + datatype QuadEq = QuadEq(0: T, 1: T, ghost 2: U, ghost 3: U) + + method VarDecls(x: T, y: T) { + var a := x == y; // error: this requires T to support equality + ghost var b := x == y; // fine + + var q := Quad(x, y, x, y); + var Quad(k, l, m, n) := q; // k,l are compiled; m,n are ghost + var c := k == l; // error: this requires T to support equality + var d := m == n; // fine, since d is implicitly ghost + d, c, d := m == n, k == l, m == n; // error: "k == l" requires T to support equality + + var q' := QuadEq([x], [x], [0], [0]); // error: seq requires T to support equality + var q'' := QuadEq([0], [0], [x], [x]); // error: seq requires T to support equality + } + + newtype NT = x | var s: set := {}; |s| <= x // fine, since constraint is a ghost context + type ST = x | var s: set := {}; |s| <= x // fine, since constraint is a ghost context + + method LetVarDecls(x: T, y: T) { + var lhs; + lhs := + var a := x == y; // error: this requires T to support equality + 0; + lhs := + ghost var b := x == y; // fine + 0; + + var q := Quad(x, y, x, y); + var Quad(k, l, m, n) := q; // k,l are compiled; m,n are ghost + lhs := + var c := k == l; // error: this requires T to support equality + 0; + lhs := + var d := m == n; // fine, since d is implicitly ghost + 0; + + ghost var ghostLhs; + ghostLhs := + var a := x == y; // fine + 0; + ghostLhs := + ghost var b := x == y; // fine + 0; + } + + datatype DatatypeHasMembersToo = Abc | Def { + method Test() { + var w; + w := MustBeNonempty(); // error + w := MustBeAutoInit(); // error + w := MustBeAutoInit(); // error + w := MustSupportEquality(); // error + w := NoReferences(); // error + } + } + + newtype NewtypeHasMembersToo = x: int | x == MustBeNonempty() // error: constraint has bad type instantiation + witness MustBeNonempty() // error: witness expression has bad type instantiation + { + method Test() { + var w; + w := MustBeNonempty(); // error + w := MustBeAutoInit(); // error + w := MustBeAutoInit(); // error + w := MustSupportEquality(); // error + w := NoReferences(); // error + } + } + + type SubsetTypeHasExpressionToo = x: int | x == MustBeNonempty() // error: constraint has bad type instantiation + witness MustBeNonempty() // error: witness expression has bad type instantiation + + newtype NT_CompiledWitness = x | 0 <= x + witness MustSupportEquality() // error + newtype NT_GhostWitness = x | 0 <= x + ghost witness MustSupportEquality() // fine, since it's ghost + type ST_CompiledWitness = x | 0 <= x + witness MustSupportEquality() // error + type ST_GhostWitness = x | 0 <= x + ghost witness MustSupportEquality() // fine, since it's ghost + + trait + {:MyAttribute MustSupportEquality(), MustBeNonempty()} // error: about MustBeNonempty (no prob with (==)) + MyTrait + { + const x := (CallMyLemma(MustSupportEquality(), MustBeNonempty()); 23) // error: about MustBeNonempty (no prob with (==)) + } + lemma CallMyLemma(x: int, y: int) +} + +module MoreAutoGhostTests { + datatype Quad = Quad(0: T, 1: T, ghost 2: U, ghost 3: U) + + method SomeLetVarsAreGhost0(q: Quad) returns (r: int) { + r := + var Quad(k, l, m, n) := q; // k,l are compiled; m,n are ghost + k + l; + } + + method SomeLetVarsAreGhost1(q: Quad) returns (r: int) { + r := + var Quad(k, l, m, n) := q; // k,l are compiled; m,n are ghost + m; // error: m is ghost + } + + method AssignSuchThat(ghost m: int) { + var d :| d == m; // error: LHS is not inferred to be ghost for :| + } + + function method LetSuchThat(ghost m: int): int { + var d :| d == m; // error: LHS is not inferred to be ghost for :| + 0 + } +} + +module RelaxedAutoInitChecking { + // In a ghost context, the (==) is never relevant. Therefore, checking of adherence to (==) for + // type arguments is suppressed in ghost contexts. + // Similarly, in a ghost context, there's no difference between (0) and (00). Therefore, a + // formal parameter that expects (0) can take either a (0) or a (00) in a ghost context. + + function method MustBeNonempty(): int { 5 } + function method MustBeAutoInit(): int { 5 } + function method MustSupportEquality(): int { 5 } + function method NoReferences(): int { 5 } + + type PossiblyEmpty = x: int | true witness * + type Nonempty = x: int | true ghost witness 0 + datatype NoEquality = NoEquality(ghost u: int) + class Class { } + type Good = bool + + method M(compiledValue: int, ghost ghostValue: int) + + method TestCompiled() + { + M(MustBeNonempty(), 0); // error + M(MustBeNonempty(), 0); + M(MustBeNonempty(), 0); + M(MustBeNonempty(), 0); + M(MustBeNonempty(), 0); + + M(MustBeAutoInit(), 0); // error + M(MustBeAutoInit(), 0); // error + M(MustBeAutoInit(), 0); + M(MustBeAutoInit(), 0); + M(MustBeAutoInit(), 0); + + M(MustSupportEquality(), 0); + M(MustSupportEquality(), 0); + M(MustSupportEquality(), 0); // error + M(MustSupportEquality(), 0); + M(MustSupportEquality(), 0); + + M(NoReferences(), 0); + M(NoReferences(), 0); + M(NoReferences(), 0); + M(NoReferences(), 0); // error + M(NoReferences(), 0); + } + + method TestGhost() + { + M(0, MustBeNonempty()); // error + M(0, MustBeNonempty()); + M(0, MustBeNonempty()); + M(0, MustBeNonempty()); + M(0, MustBeNonempty()); + + M(0, MustBeAutoInit()); // error + M(0, MustBeAutoInit()); // this is fine in a ghost context + M(0, MustBeAutoInit()); + M(0, MustBeAutoInit()); + M(0, MustBeAutoInit()); + + M(0, MustSupportEquality()); + M(0, MustSupportEquality()); + M(0, MustSupportEquality()); // this is fine in a ghost context + M(0, MustSupportEquality()); + M(0, MustSupportEquality()); + + M(0, NoReferences()); + M(0, NoReferences()); + M(0, NoReferences()); + M(0, NoReferences()); // error + M(0, NoReferences()); + } +} diff --git a/Test/dafny0/ResolutionErrors.dfy.expect b/Test/dafny0/ResolutionErrors.dfy.expect index 295a32257f5..5370e54999b 100644 --- a/Test/dafny0/ResolutionErrors.dfy.expect +++ b/Test/dafny0/ResolutionErrors.dfy.expect @@ -97,10 +97,8 @@ ResolutionErrors.dfy(729,22): Error: a possibly infinite loop is allowed only if ResolutionErrors.dfy(762,22): Error: a possibly infinite loop is allowed only if the enclosing method is declared (with 'decreases *') to be possibly non-terminating ResolutionErrors.dfy(793,19): Error: calls to methods with side-effects are not allowed inside a statement expression ResolutionErrors.dfy(794,20): Error: wrong number of method result arguments (got 0, expected 1) -ResolutionErrors.dfy(806,26): Error: function calls are allowed only in specification contexts (consider declaring the function a 'function method') ResolutionErrors.dfy(816,4): Error: ghost variables are allowed only in specification contexts ResolutionErrors.dfy(827,40): Error: ghost variables are allowed only in specification contexts -ResolutionErrors.dfy(836,17): Error: function calls are allowed only in specification contexts (consider declaring the function a 'function method') ResolutionErrors.dfy(850,6): Error: RHS (of type B) not assignable to LHS (of type object) ResolutionErrors.dfy(852,6): Error: RHS (of type B) not assignable to LHS (of type object) ResolutionErrors.dfy(857,6): Error: RHS (of type G) not assignable to LHS (of type object) @@ -283,8 +281,8 @@ ResolutionErrors.dfy(1860,14): Error: in the first division of the constructor b ResolutionErrors.dfy(1891,15): Error: 'this' is not allowed in a 'static' context ResolutionErrors.dfy(1893,16): Error: 'this' is not allowed in a 'static' context ResolutionErrors.dfy(1909,8): Error: return statement is not allowed before 'new;' in a constructor -ResolutionErrors.dfy(1935,5): Error: type parameter (G) passed to method P must support auto-initialization (got F) -ResolutionErrors.dfy(1937,5): Error: type parameter (G) passed to method P must support auto-initialization (got Y) +ResolutionErrors.dfy(1935,5): Error: type parameter (G) passed to method P must support auto-initialization (got F) (perhaps try declaring type parameter 'F' on line 1928 as 'F(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(1937,5): Error: type parameter (G) passed to method P must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 1925 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) ResolutionErrors.dfy(1974,5): Error: type parameter (G) passed to method P must support auto-initialization (got SixOrMore) ResolutionErrors.dfy(1975,5): Error: type parameter (G) passed to method P must support auto-initialization (got AnotherSixOrMore) ResolutionErrors.dfy(1976,5): Error: type parameter (G) passed to method P must support auto-initialization (got MySixOrMore) @@ -340,8 +338,10 @@ ResolutionErrors.dfy(2263,17): Error: static non-ghost const field 'O' of type ' ResolutionErrors.dfy(2269,17): Error: static non-ghost const field 'W' of type 'MyClass' (which does not have a default compiled value) must give a defining value ResolutionErrors.dfy(2271,17): Error: static non-ghost const field 'O' of type 'Odd' (which does not have a default compiled value) must give a defining value ResolutionErrors.dfy(2279,8): Error: class 'Instance' with fields without known initializers, like 'w' of type 'MyClass', must declare a constructor +ResolutionErrors.dfy(2285,8): Error: class 'GhostCl' with fields without known initializers, like 'z' of type 'MyClass', must declare a constructor ResolutionErrors.dfy(2253,8): Error: static non-ghost const field 'X' of type 'Odd' (which does not have a default compiled value) must give a defining value ResolutionErrors.dfy(2256,8): Error: static non-ghost const field 'Y' of type 'MyClass' (which does not have a default compiled value) must give a defining value +ResolutionErrors.dfy(2257,14): Error: static ghost const field 'Y'' of type 'MyClass' (which may be empty) must give a defining value ResolutionErrors.dfy(2295,6): Error: LHS of assignment must denote a mutable field ResolutionErrors.dfy(2296,10): Error: LHS of assignment must denote a mutable field ResolutionErrors.dfy(2303,6): Error: LHS of assignment must denote a mutable field @@ -450,10 +450,81 @@ ResolutionErrors.dfy(2949,16): Error: sequence update requires the value to have ResolutionErrors.dfy(2953,11): Error: multiset update requires domain element to be of type Elem (got Trait) ResolutionErrors.dfy(2958,13): Error: map update requires domain element to be of type Elem (got Trait) ResolutionErrors.dfy(2960,18): Error: map update requires the value to have the range type Elem (got Trait) -ResolutionErrors.dfy(2985,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Y) -ResolutionErrors.dfy(2988,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Z) -ResolutionErrors.dfy(2989,5): Error: type parameter (G) passed to method P must support nonempty (got Z) -ResolutionErrors.dfy(2998,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) -ResolutionErrors.dfy(3001,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) -ResolutionErrors.dfy(3002,9): Error: type parameter (G) passed to function FP must support nonempty (got Z) -453 resolution/type errors detected in ResolutionErrors.dfy +ResolutionErrors.dfy(2985,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 2980 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(2988,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 2980 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(2989,5): Error: type parameter (G) passed to method P must support nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 2980 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors.dfy(2998,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 2993 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(3001,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 2993 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(3002,9): Error: type parameter (G) passed to function FP must support nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 2993 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors.dfy(3019,9): Error: function calls are allowed only in specification contexts (consider declaring the function a 'function method') +ResolutionErrors.dfy(3020,9): Error: predicate calls are allowed only in specification contexts (consider declaring the predicate a 'predicate method') +ResolutionErrors.dfy(3021,9): Error: a call to a least predicate is allowed only in specification contexts +ResolutionErrors.dfy(3022,9): Error: a call to a greatest predicate is allowed only in specification contexts +ResolutionErrors.dfy(3023,9): Error: a call to a twostate function is allowed only in specification contexts +ResolutionErrors.dfy(3024,9): Error: a call to a twostate predicate is allowed only in specification contexts +ResolutionErrors.dfy(3041,9): Error: function 'F0' expects 0 type arguments (got 1) +ResolutionErrors.dfy(3043,9): Error: function 'F2' expects 2 type arguments (got 1) +ResolutionErrors.dfy(3044,9): Error: function 'F0' expects 0 type arguments (got 2) +ResolutionErrors.dfy(3045,9): Error: function 'F1' expects 1 type argument (got 2) +ResolutionErrors.dfy(3053,4): Error: method 'M0' expects 0 type arguments (got 1) +ResolutionErrors.dfy(3055,4): Error: method 'M2' expects 2 type arguments (got 1) +ResolutionErrors.dfy(3056,4): Error: method 'M0' expects 0 type arguments (got 2) +ResolutionErrors.dfy(3057,4): Error: method 'M1' expects 1 type argument (got 2) +ResolutionErrors.dfy(3070,10): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3074,14): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3079,10): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3080,10): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3231,11): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3232,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3233,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors.dfy(3234,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3235,11): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +ResolutionErrors.dfy(3239,47): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3240,12): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3244,11): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3245,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3246,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors.dfy(3247,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3248,11): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +ResolutionErrors.dfy(3252,50): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3253,12): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3256,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3260,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3265,53): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3268,63): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3104,9): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3109,9): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 3100 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors.dfy(3111,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3112,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors.dfy(3116,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 3100 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors.dfy(3120,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3123,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got Z) (perhaps try declaring type parameter 'Z' on line 3100 as 'Z(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3128,9): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +ResolutionErrors.dfy(3130,9): Error: type parameter (T) passed to function NoReferences must support no references (got Z) (perhaps try declaring type parameter 'Z' on line 3100 as 'Z(!new)', which says it can only be instantiated with a type that contains no references) +ResolutionErrors.dfy(3137,9): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3143,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3158,9): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +ResolutionErrors.dfy(3167,12): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3165 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3169,7): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3165 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3172,12): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors.dfy(3174,7): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors.dfy(3177,19): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors.dfy(3185,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3184 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3190,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3184 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3192,23): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3184 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3194,14): Error: type parameter 0 (T) passed to type QuadEq must support equality (got seq) +ResolutionErrors.dfy(3195,15): Error: type parameter 1 (U) passed to type QuadEq must support equality (got seq) +ResolutionErrors.dfy(3204,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3201 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3213,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 3201 as 'T(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors.dfy(3285,6): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3289,8): Error: non-ghost variable cannot be assigned a value that depends on a ghost +ResolutionErrors.dfy(3293,18): Error: ghost variables are allowed only in specification contexts +ResolutionErrors.dfy(3319,6): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3325,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3326,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors.dfy(3333,6): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors.dfy(3340,6): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +ResolutionErrors.dfy(3346,9): Error: type parameter (T) passed to function MustBeNonempty must support nonempty (got PossiblyEmpty) +ResolutionErrors.dfy(3352,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors.dfy(3367,9): Error: type parameter (T) passed to function NoReferences must support no references (got Class?) +524 resolution/type errors detected in ResolutionErrors.dfy diff --git a/Test/dafny0/Twostate-Resolution.dfy b/Test/dafny0/Twostate-Resolution.dfy index 4e171ddf47e..e13b1ed3faf 100644 --- a/Test/dafny0/Twostate-Resolution.dfy +++ b/Test/dafny0/Twostate-Resolution.dfy @@ -339,3 +339,180 @@ module PrintTest { var rr := 2; x % rr == 0 ghost witness var ww := 2; ww + 8 } + +module TwoStateAt { + class Cell { + var data: int + constructor (x: int) + ensures data == x + { + data := x; + } + + static twostate function Sum(c: Cell, y: Y): int + reads c + { + c.Plus(y) + } + + twostate function Plus(y: Y): int + reads this + { + SP(this, y) + } + + twostate lemma LL(y: Y) + ensures old(data) < data + { + var g := data; + IdentityLemma(this, y); + Cell.IdentityLemma(this, 0); + this.IdentityLemma(this, y); + assert data == g; + } + + static twostate lemma IdentityLemma(c: Cell, y: Y) { + assert old(c.data) == c.data; + } + + function method G(): int { 32 } + lemma Theorem() { } + } + + twostate function SP(c: Cell, y: Y): int + reads c + { + old(c.data) + c.data + } + + function F(): int { 9 } + + method Test(c: Cell, b: bool, y: Y) + requires c.data == 2 + modifies c + { + assert c.Plus(0) == 4; + c.data := c.data + 3; + label Five: + assert Cell.Sum(c, y) == 7; + assert Cell.Sum@Five(c, 0) == 10; + assert Cell.Sum@Five(c, 0) == 10; + assert Cell.Sum@Five(c, y) == 10; + assert Cell.Sum@Five(c, y) == 10; + + c.data := c.data + 1; + assert SP(c, 0) == 8; + assert SP@DoesNotExist(c, y) == 11; // error: label does not exist + + if b { + label OnlyB: + c.data := c.data + 10; + } else { + c.data := c.data + 20; + } + label PostIf: + + assert c.Plus@OnlyB(y) == 16 || c.Plus@Five(0) == 26; // error: usage is not dominated by OnlyB + assert b ==> Cell.Sum@PostIf(c, y) == 32; + + ghost var z := F@Five(); // error: F is not a two-state function + } + + twostate lemma TwoLemma(c: Cell, y: Y) + requires 2 * old(c.data) <= Cell.Sum(c, y) + ensures old(c.data) <= SP(c, 0) == SP(c, y) == c.Plus(0) + { + } + + method CallLemmas(c: Cell, b: bool, y: Y) + modifies c + { + c.data := c.data + 1; + label OneMore: + if -1 <= old(c.data) { + TwoLemma(c, y); + } + + c.data := c.data + 4; + label FiveMore: + TwoLemma@OneMore(c, 0); + + if b { + c.data := c.data - 10; + TwoLemma@FiveMore(c, y); + } else { + c.data := c.data + 2; + TwoLemma@After(c, 0); // error: After is not in scope + } + c.LL(y); + c.LL(y); + c.LL(0); + label After: + + var g := c.G@FiveMore(); // error: G is not a two-state lemma + c.Theorem@OneMore(); // error: Theorem is not a two-state lemma + } + + method ExprAt(c: Cell, f: int -> int, g: int -> int, b: bool) { + label L: + var plus := c.Plus; + var xL := plus@L(0); // error: cannot apply @L to an expression LHS + // Note, the following two lines are rejected by the parser + // var plusL := c.Plus@L; // error (this could be allowed, but isn't supported yet) + // var e := (if b then f else g)@L(0); // error (this never makes sense) + } + + twostate lemma ReturnSomething(c: Cell) returns (x: int, d: Cell) { + d := c; + } + + method CallTwo(c: Cell) + modifies c + { + c.data := 16; + label L: + var x, d := ReturnSomething@L(c); + } + + function {:opaque} OrdinaryOpaque(): int { 12 } + method UseOrdinaryOpaque() { + label L: + reveal OrdinaryOpaque(); + reveal OrdinaryOpaque; // error (admittedly, a poor error message) + reveal OrdinaryOpaque@K(); // error: label K not in scope + reveal OrdinaryOpaque@L(); // error: @ can only be applied to something two-state (error message can be improved) + } + function FuncUseOrdinaryOpaque(): int { + reveal OrdinaryOpaque(); + reveal OrdinaryOpaque; // error (admittedly, a poor error message) + reveal OrdinaryOpaque@K(); // error: label K not in scope + 10 + } + twostate function {:opaque} Opaque(): int { 12 } + method UseOpaque() { + label L: + reveal Opaque(); + reveal Opaque; // error (admittedly, a poor error message) + reveal Opaque@K(); // error: label K not in scope + reveal Opaque@L(); // error: all parameters in a reveal must be implicit, including labels + } + function FuncUseOpaque(): int { + reveal Opaque(); // error: cannot call two-state lemma in one-state function + reveal Opaque; // error (admittedly, a poor error message) + reveal Opaque@K(); // error: label K not in scope + 10 + } + twostate function TwoFuncUseOpaque(): int { + reveal Opaque(); + reveal Opaque; // error (admittedly, a poor error message) + reveal Opaque@K(); // error: label K not in scope + 10 + } + + twostate lemma EasyTwo() + ensures true + function CallEasy(): int { + EasyTwo(); // error: two-state lemma cannot be called from one-state function + 9 + } +} diff --git a/Test/dafny0/Twostate-Resolution.dfy.expect b/Test/dafny0/Twostate-Resolution.dfy.expect index 906a02fe94b..57ceaf81ca5 100644 --- a/Test/dafny0/Twostate-Resolution.dfy.expect +++ b/Test/dafny0/Twostate-Resolution.dfy.expect @@ -402,6 +402,205 @@ module PrintTest { true } } + +module TwoStateAt { + class Cell { + var data: int + + constructor (x: int) + ensures data == x + { + data := x; + } + + static twostate function Sum(c: Cell, y: Y): int + reads c + { + c.Plus(y) + } + + twostate function Plus(y: Y): int + reads this + { + SP(this, y) + } + + twostate lemma LL(y: Y) + ensures old(data) < data + { + var g := data; + IdentityLemma(this, y); + Cell.IdentityLemma(this, 0); + this.IdentityLemma(this, y); + assert data == g; + } + + static twostate lemma IdentityLemma(c: Cell, y: Y) + { + assert old(c.data) == c.data; + } + + function method G(): int + { + 32 + } + + lemma Theorem() + { + } + } + + twostate function SP(c: Cell, y: Y): int + reads c + { + old(c.data) + c.data + } + + function F(): int + { + 9 + } + + method Test(c: Cell, b: bool, y: Y) + requires c.data == 2 + modifies c + { + assert c.Plus(0) == 4; + c.data := c.data + 3; + label Five: + assert Cell.Sum(c, y) == 7; + assert Cell.Sum@Five(c, 0) == 10; + assert Cell.Sum@Five(c, 0) == 10; + assert Cell.Sum@Five(c, y) == 10; + assert Cell.Sum@Five(c, y) == 10; + c.data := c.data + 1; + assert SP(c, 0) == 8; + assert SP@DoesNotExist(c, y) == 11; + if b { + label OnlyB: + c.data := c.data + 10; + } else { + c.data := c.data + 20; + } + label PostIf: + assert c.Plus@OnlyB(y) == 16 || c.Plus@Five(0) == 26; + assert b ==> Cell.Sum@PostIf(c, y) == 32; + ghost var z := F@Five(); + } + + twostate lemma TwoLemma(c: Cell, y: Y) + requires 2 * old(c.data) <= Cell.Sum(c, y) + ensures old(c.data) <= SP(c, 0) == SP(c, y) == c.Plus(0) + { + } + + method CallLemmas(c: Cell, b: bool, y: Y) + modifies c + { + c.data := c.data + 1; + label OneMore: + if -1 <= old(c.data) { + TwoLemma(c, y); + } + c.data := c.data + 4; + label FiveMore: + TwoLemma@OneMore(c, 0); + if b { + c.data := c.data - 10; + TwoLemma@FiveMore(c, y); + } else { + c.data := c.data + 2; + TwoLemma@After(c, 0); + } + c.LL(y); + c.LL(y); + c.LL(0); + label After: + var g := c.G@FiveMore(); + c.Theorem@OneMore(); + } + + method ExprAt(c: Cell, f: int -> int, g: int -> int, b: bool) + { + label L: + var plus := c.Plus; + var xL := plus@L(0); + } + + twostate lemma ReturnSomething(c: Cell) returns (x: int, d: Cell) + { + d := c; + } + + method CallTwo(c: Cell) + modifies c + { + c.data := 16; + label L: + var x, d := ReturnSomething@L(c); + } + + function {:opaque} OrdinaryOpaque(): int + { + 12 + } + + method UseOrdinaryOpaque() + { + label L: + reveal OrdinaryOpaque(); + reveal OrdinaryOpaque; + reveal OrdinaryOpaque@K(); + reveal OrdinaryOpaque@L(); + } + + function FuncUseOrdinaryOpaque(): int + { + reveal OrdinaryOpaque(); + reveal OrdinaryOpaque; + reveal OrdinaryOpaque@K(); + 10 + } + + twostate function {:opaque} Opaque(): int + { + 12 + } + + method UseOpaque() + { + label L: + reveal Opaque(); + reveal Opaque; + reveal Opaque@K(); + reveal Opaque@L(); + } + + function FuncUseOpaque(): int + { + reveal Opaque(); + reveal Opaque; + reveal Opaque@K(); + 10 + } + + twostate function TwoFuncUseOpaque(): int + { + reveal Opaque(); + reveal Opaque; + reveal Opaque@K(); + 10 + } + + twostate lemma EasyTwo() + ensures true + + function CallEasy(): int + { + EasyTwo(); + 9 + } +} Twostate-Resolution.dfy(13,15): Error: twostate lemmas are not allowed to have modifies clauses Twostate-Resolution.dfy(25,15): Error: unchanged expressions are not allowed in this context Twostate-Resolution.dfy(28,15): Error: unchanged expressions are not allowed in this context @@ -434,7 +633,7 @@ Twostate-Resolution.dfy(165,31): Error: two-state function ('P') can only be cal Twostate-Resolution.dfy(166,34): Error: two-state function ('Sp') can only be called in a two-state context Twostate-Resolution.dfy(167,7): Error: two-state function ('P') can only be called in a two-state context Twostate-Resolution.dfy(218,6): Error: two-state lemmas can only be used in two-state contexts -Twostate-Resolution.dfy(229,9): Error: function calls are allowed only in specification contexts (consider declaring the function a 'function method') +Twostate-Resolution.dfy(229,9): Error: a call to a twostate predicate is allowed only in specification contexts Twostate-Resolution.dfy(230,30): Error: ghost fields are allowed only in specification contexts Twostate-Resolution.dfy(242,26): Error: two-state function ('F') can only be called in a two-state context Twostate-Resolution.dfy(243,27): Error: two-state lemmas can only be used in two-state contexts @@ -445,4 +644,26 @@ Twostate-Resolution.dfy(264,29): Error: parameter 'c' of function A cannot be ch Twostate-Resolution.dfy(265,25): Error: parameter 'c' of function B cannot be changed, compared to in the overridden function, from non-new to new Twostate-Resolution.dfy(267,25): Error: in-parameter 'c' of method L cannot be changed, compared to in the overridden method, from new to non-new Twostate-Resolution.dfy(268,21): Error: in-parameter 'c' of method M cannot be changed, compared to in the overridden method, from non-new to new -43 resolution/type errors detected in Twostate-Resolution.dfy +Twostate-Resolution.dfy(405,17): Error: no label 'DoesNotExist' in scope at this time +Twostate-Resolution.dfy(415,21): Error: no label 'OnlyB' in scope at this time +Twostate-Resolution.dfy(418,21): Error: an @-label can only be applied to a two-state function +Twostate-Resolution.dfy(445,20): Error: no label 'After' in scope at this time +Twostate-Resolution.dfy(452,17): Error: an @-label can only be applied to a two-state function +Twostate-Resolution.dfy(453,14): Error: an @-label can only be applied to a two-state lemma +Twostate-Resolution.dfy(459,19): Error: an @-label can only be applied to a two-state function +Twostate-Resolution.dfy(481,11): Error: expression is not allowed to invoke a lemma (reveal_OrdinaryOpaque) +Twostate-Resolution.dfy(482,26): Error: no label 'K' in scope at this time +Twostate-Resolution.dfy(483,26): Error: an @-label can only be applied to a two-state lemma +Twostate-Resolution.dfy(487,11): Error: expression is not allowed to invoke a lemma (reveal_OrdinaryOpaque) +Twostate-Resolution.dfy(488,26): Error: no label 'K' in scope at this time +Twostate-Resolution.dfy(495,11): Error: expression is not allowed to invoke a twostate lemma (reveal_Opaque) +Twostate-Resolution.dfy(496,18): Error: no label 'K' in scope at this time +Twostate-Resolution.dfy(497,19): Error: to reveal a two-state function, do not list any parameters or @-labels +Twostate-Resolution.dfy(500,17): Error: a two-state function can only be revealed in a two-state context +Twostate-Resolution.dfy(501,11): Error: expression is not allowed to invoke a twostate lemma (reveal_Opaque) +Twostate-Resolution.dfy(502,18): Error: no label 'K' in scope at this time +Twostate-Resolution.dfy(502,19): Error: a two-state function can only be revealed in a two-state context +Twostate-Resolution.dfy(507,11): Error: expression is not allowed to invoke a twostate lemma (reveal_Opaque) +Twostate-Resolution.dfy(508,18): Error: no label 'K' in scope at this time +Twostate-Resolution.dfy(515,11): Error: two-state lemmas can only be used in two-state contexts +65 resolution/type errors detected in Twostate-Resolution.dfy diff --git a/Test/dafny0/Twostate-Verification.dfy b/Test/dafny0/Twostate-Verification.dfy index 6c3b5a50192..51e3a232793 100644 --- a/Test/dafny0/Twostate-Verification.dfy +++ b/Test/dafny0/Twostate-Verification.dfy @@ -237,3 +237,449 @@ class {:autocontracts} NodeAuto { } } } + +module TwoStateAt { + class Cell { + var data: int + constructor (x: int) + ensures data == x + { + data := x; + } + + static twostate function Sum(c: Cell, y: Y): int + reads c + { + c.Plus(y) + } + + twostate function Plus(y: Y): int + reads this + { + SP(this, y) + } + + twostate lemma LL(y: Y) + ensures old(data) < data + { + if old(data) < data { + // we're good + } else if old(data) != data { + // the following lemma call will let us prove anything + IdentityLemma(this, y); + assert false; + } else { // error: postcondition doesn't hold on this path + } + } + + static twostate lemma IdentityLemma(c: Cell, y: Y) + ensures old(c.data) == c.data + { // error: postcondition does not hold + } + } + + twostate function SP(c: Cell, y: Y): int + reads c + { + old(c.data) + c.data + } + + method Test(c: Cell, b: bool, y: Y) + requires c.data == 2 + modifies c + { + assert c.Plus(y) == 4; + c.data := c.data + 3; // 5 + label Five: + assert Cell.Sum(c, y) == 7; + assert Cell.Sum@Five(c, y) == 10; + + c.data := c.data + 1; // 6 + assert SP(c, y) == 8; + assert SP@Five(c, 0 as bv3) == 11; + + if b { + c.data := c.data + 10; // 16 + } else { + c.data := c.data + 20; // 26 + } + label PostIf: + + assert c.Plus@Five(y) == 21 || c.Plus@Five(0) == 31; + assert b ==> (var w := Cell.Sum@PostIf(c, y); w) == 32; + assert !b ==> SP@PostIf(c, y) == 52; + ghost var u := SP@Five(c, 0); + assert b ==> u == 21; + assert !b ==> Cell.Sum@Five(c, y) == 30; // error: it is 31 + } + + twostate lemma TwoLemma(c: Cell, y: Y) + requires 2 * old(c.data) <= Cell.Sum(c, 0) // tantamount to old(c.data) <= c.data + ensures 0 <= c.data ==> old(c.data) <= SP(c, y) == c.Plus(y) + { + } + + method CallLemmas(c: Cell, b: bool, y: Y) + modifies c + { + c.data := c.data + 1; // +1 + label OneMore: + if -1 <= old(c.data) { + TwoLemma(c, y); + } + + c.data := c.data + 4; // +5 + label FiveMore: + TwoLemma@OneMore(c, y); // fine + + if b { + c.data := c.data - 10; // -5 + TwoLemma@FiveMore(c, y); // error: precondition violation + } else { + c.data := c.data + 2; // +7 + } + c.LL(y); + c.LL(0); + assert !b; // follows from the control flow above and LL's (bogus) postcondition + } + + twostate function {:opaque} Opaque(c: Cell): int { old(c.data) + 12 } + method UseOpaque(c: Cell) + requires c.data == 100 + modifies c + { + c.data := c.data + 5; + label L: + c.data := c.data + 2; + + var y112 := Opaque(c); + var y117 := Opaque@L(c); + + if * { + assert y112 == 112; // error: don't konw Opaque's definition + } else if * { + assert y117 == 117; // error: don't konw Opaque's definition + } else { + reveal Opaque(); // this gets Opaque for all possible parameters, including for all labels + assert y112 == 112; + assert y117 == 117; + } + assert c.data == 107; + } + twostate function FuncUseOpaque(c: Cell, b: bool): int { + reveal Opaque(); + 10 + } + + method Allocatedness_Function() { + label A: + var c := new Cell(5); + label B: + label C: + c.data := c.data + 400; + label D: + + if { + case true => + var a := c.Plus(0); // error: c not allocated in old state + case true => + var a := c.Plus@A(0); // error: c not allocated in state A + case true => + var a := c.Plus@B(0) + c.Plus@C(0) + c.Plus@D(0); + assert a == 5 + 5 + 405 + 1215; + case true => + var u := Cell.Sum(c, 0); // error: c not allocated in old state + case true => + var a := Cell.Sum@A(c, 0); // error: c not allocated in state A + case true => + var a := Cell.Sum@B(c, 0) + Cell.Sum@C(c, 0) + Cell.Sum@D(c, 0); + assert a == 5 + 5 + 405 + 1215; + case true => + var a := c.Plus; // error: c not allocated in old state + } + } + + method Allocatedness_Lemma() { + label A: + var c := new Cell(5); + label B: + label C: + c.data := c.data + 400; + label D: + + if { + case true => + c.LL(0); // error: c not allocated in old state + case true => + c.LL@A(0); // error: c not allocated in state A + case true => + c.LL@B(0); + c.LL@C(0); + c.LL@D(0); + case true => + Cell.IdentityLemma(c, 0); // error: c not allocated in old state + case true => + Cell.IdentityLemma@A(c, 0); // error: c not allocated in state A + case true => + Cell.IdentityLemma@B(c, 0); + Cell.IdentityLemma@C(c, 0); + Cell.IdentityLemma@D(c, 0); + } + } + + twostate function FuncMoreParams(c: Cell, new d: Cell): int { 7 } + twostate lemma LemmaMoreParams(c: Cell, new d: Cell) returns (e: Cell) { + if * { + e := c; + } else { + e := d; + } + } + method TestFuncMoreParams(c0: Cell) { + var c1 := new Cell(1); + label L: + var c2 := new Cell(2); + ghost var x; + + if { + case true => + x := FuncMoreParams(c0, c0); + x := FuncMoreParams(c1, c0); // error: c1 not allocated in old state + case true => + x := FuncMoreParams@L(c0, c0); + x := FuncMoreParams@L(c1, c0); + x := FuncMoreParams@L(c2, c0); // error: c2 not allocated in state L + case true => + x := FuncMoreParams(c0, c1); + x := FuncMoreParams(c0, c2); + } + } + method TestLemmaMoreParams(c0: Cell) { + var c1 := new Cell(1); + label L: + var c2 := new Cell(2); + ghost var x; + + if { + case true => + x := LemmaMoreParams(c0, c0); + x := LemmaMoreParams(c1, c0); // error: c1 not allocated in old state + case true => + x := LemmaMoreParams@L(c0, c0); + x := LemmaMoreParams@L(c1, c0); + x := LemmaMoreParams@L(c2, c0); // error: c2 not allocated in state L + case true => + x := LemmaMoreParams(c0, c1); + x := LemmaMoreParams(c0, c2); + } + } + + datatype DT = Green | Blue(value: X) { + static const sc := 18 + twostate function F(x: X, y: Y, c: Cell): int + reads c + { + c.data - old(c.data) + } + twostate lemma L(x: X, y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := F(x, y, c); + } + static twostate function G(x: X, y: Y, c: Cell): int + reads c + { + Green.F(x, y, c) + } + static twostate lemma M(x: X, y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := Green.L(x, y, c); + } + } + + newtype NT = x | 0 <= x < 86 { + const value := 18 + static const sc := 18 + twostate function F(y: Y, c: Cell): int + reads c + { + c.data - old(c.data) + } + twostate lemma L(y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := F(y, c); + } + static twostate function G(y: Y, c: Cell): int + reads c + { + (82 as NT).F(y, c) + } + static twostate lemma M(y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := (82 as NT).L(y, c); + } + } + + type OT { + const value := 18 + static const sc := 18 + twostate function F(x: X, y: Y, c: Cell): int + reads c + { + c.data - old(c.data) + } + twostate lemma L(x: X, y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := F(x, y, c); + } + static twostate function G(ot: OT, x: X, y: Y, c: Cell): int + reads c + { + ot.F(x, y, c) + } + static twostate lemma M(ot: OT, x: X, y: Y, c: Cell) returns (n: nat) + requires old(c.data) <= c.data + { + n := ot.L(x, y, c); + } + } + + method TestOthers0(dt: DT, nt: NT, ot: OT, r: real, t: bv19, u: ()) { + var c := new Cell(333); + label Label: + ghost var n, x, y; + + if * { + x := dt.F@Label(r, u, c); + x := dt.F(r, u, c); // error: c is not in old state + } else if * { + n := dt.L@Label(r, u, c); + n := dt.L(r, u, c); // error: c is not in old state + } else if * { + y := DT.G@Label(r, u, c); + y := DT.G(r, u, c); // error: c is not in old state + } else if * { + n := DT.M@Label(r, u, c); + n := DT.M(r, u, c); // error: c is not in old state + } + } + + method TestOthers1(nt: NT, ot: OT, r: Cell, t: bv19, u: (), c: Cell) { + var dtx := new Cell(333); + var dt := Blue(dtx); + label Label: + ghost var n, x; + + if * { + x := dt.F@Label(r, u, c); + x := dt.F(r, u, c); // error: receiver is not in old state + } else if * { + n := dt.L@Label(r, u, c); + n := dt.L(r, u, c); // error: receiver is not in old state + } + } + + method TestOthers2(dt: DT, nt: NT, ot: OT, r: real, t: bv19, u: ()) { + var c := new Cell(333); + label Label: + ghost var n, x, y; + + if * { + x := nt.F@Label(u, c); + x := nt.F(u, c); // error: c is not in old state + } else if * { + n := nt.L@Label(u, c); + n := nt.L(u, c); // error: c is not in old state + } else if * { + y := NT.G@Label(u, c); + y := NT.G(u, c); // error: c is not in old state + } else if * { + n := NT.M@Label(u, c); + n := NT.M(u, c); // error: c is not in old state + } + } + + method TestOthers3(dt: DT, nt: NT, ot: OT, r: real, t: bv19, u: ()) { + var c := new Cell(333); + label Label: + ghost var n, x, y; + + if * { + x := ot.F@Label(t, u, c); + x := ot.F(t, u, c); // error: c is not in old state + } else if * { + n := ot.L@Label(t, u, c); + n := ot.L(t, u, c); // error: c is not in old state + } else if * { + y := OT.G@Label(ot, t, u, c); + y := OT.G(ot, t, u, c); // error: c is not in old state + } else if * { + n := OT.M@Label(ot, t, u, c); + n := OT.M(ot, t, u, c); // error: c is not in old state + } + } + + method TestOthers4(d0: DT, nt: NT, ot: OT, r: Cell, u: ()) { + var c := new Cell(333); + var d1 := Blue(c); + label Label: + + if * { + ghost var f0 := d0.F; + ghost var f1 := nt.F; + ghost var f2 := ot.F; + ghost var f3 := d1.F; // error: receiver is not in old state + } else if * { + ghost var g0 := DT.G; + ghost var g1 := NT.G; + ghost var g2 := OT.G; + } else if * { + ghost var h0 := d0.G; + ghost var h1 := nt.G; + ghost var h2 := ot.G; + ghost var h3 := d1.G; // this is also fine + } + } + + method FieldAccess(d0: DT, nt: NT, ot: OT, r: Cell, u: ()) + requires d0.Blue? + { + var c := new Cell(333); + var d1 := Blue(c); + label Label: + + if * { + ghost var f0 := old(d0.value); + ghost var f1 := old(nt.value); + ghost var f2 := old(ot.value); + ghost var f3 := old(d1.value); // error: receiver is not in old state + } else if * { + ghost var g0 := old(DT.sc); + ghost var g1 := old(NT.sc); + ghost var g2 := old(OT.sc); + } else if * { + ghost var h0 := old(d0.sc); + ghost var h1 := old(nt.sc); + ghost var h2 := old(ot.sc); + ghost var h3 := old(d1.sc); // this is also fine + } else if * { + ghost var f0 := old@Label(d0.value); + ghost var f1 := old@Label(nt.value); + ghost var f2 := old@Label(ot.value); + ghost var f3 := old@Label(d1.value); // fine + } else if * { + ghost var g0 := old@Label(DT.sc); + ghost var g1 := old@Label(NT.sc); + ghost var g2 := old@Label(OT.sc); + } else if * { + ghost var h0 := old@Label(d0.sc); + ghost var h1 := old@Label(nt.sc); + ghost var h2 := old@Label(ot.sc); + ghost var h3 := old@Label(d1.sc); + } + } +} diff --git a/Test/dafny0/Twostate-Verification.dfy.expect b/Test/dafny0/Twostate-Verification.dfy.expect index d181c4e7aef..3e569aa1ce5 100644 --- a/Test/dafny0/Twostate-Verification.dfy.expect +++ b/Test/dafny0/Twostate-Verification.dfy.expect @@ -1,3 +1,159 @@ +Twostate-Verification.dfy(271,13): Error: A postcondition might not hold on this return path. +Twostate-Verification.dfy(263,24): Related location: This is the postcondition that might not hold. +Execution trace: + (0,0): anon0 + (0,0): anon5_Else + (0,0): anon6_Else +Twostate-Verification.dfy(277,4): Error: A postcondition might not hold on this return path. +Twostate-Verification.dfy(276,26): Related location: This is the postcondition that might not hold. +Execution trace: + (0,0): anon0 +Twostate-Verification.dfy(313,38): Error: assertion violation +Execution trace: + (0,0): anon0 + (0,0): anon14_Else + (0,0): anon3 + (0,0): anon15_Then + (0,0): anon5 + Twostate-Verification.dfy(309,14): anon16_Else + (0,0): anon7 + (0,0): anon17_Then + (0,0): anon9 + Twostate-Verification.dfy(312,14): anon18_Else + (0,0): anon11 + (0,0): anon19_Then + (0,0): anon13 +Twostate-Verification.dfy(337,23): Error: A precondition for this call might not hold. +Twostate-Verification.dfy(317,29): Related location: This is the precondition that might not hold. +Execution trace: + (0,0): anon0 + (0,0): anon6_Then + (0,0): after_0 + (0,0): anon7_Then +Twostate-Verification.dfy(359,18): Error: assertion violation +Execution trace: + (0,0): anon0 + (0,0): anon6_Then +Twostate-Verification.dfy(361,18): Error: assertion violation +Execution trace: + (0,0): anon0 + (0,0): anon7_Then +Twostate-Verification.dfy(384,17): Error: receiver argument must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon9_Then +Twostate-Verification.dfy(386,17): Error: receiver argument must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon10_Then +Twostate-Verification.dfy(391,26): Error: argument 0 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon12_Then +Twostate-Verification.dfy(393,28): Error: argument 0 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon13_Then +Twostate-Verification.dfy(398,19): Error: receiver argument must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon15_Then +Twostate-Verification.dfy(412,8): Error: receiver argument must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon8_Then +Twostate-Verification.dfy(414,8): Error: receiver argument must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon9_Then +Twostate-Verification.dfy(420,27): Error: parameter 0 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon11_Then +Twostate-Verification.dfy(422,29): Error: parameter 0 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon12_Then +Twostate-Verification.dfy(447,28): Error: argument 0 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon5_Then +Twostate-Verification.dfy(451,30): Error: argument 0 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon6_Then +Twostate-Verification.dfy(466,29): Error: parameter 0 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon5_Then +Twostate-Verification.dfy(470,31): Error: parameter 0 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon6_Then +Twostate-Verification.dfy(558,22): Error: argument 2 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon9_Then +Twostate-Verification.dfy(561,22): Error: parameter 2 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon10_Then +Twostate-Verification.dfy(564,22): Error: argument 2 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon11_Then +Twostate-Verification.dfy(567,22): Error: parameter 2 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon12_Then +Twostate-Verification.dfy(579,11): Error: receiver argument must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon5_Then +Twostate-Verification.dfy(582,11): Error: receiver argument must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon6_Then +Twostate-Verification.dfy(593,19): Error: argument 1 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon9_Then +Twostate-Verification.dfy(596,19): Error: parameter 1 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon10_Then +Twostate-Verification.dfy(599,19): Error: argument 1 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon11_Then +Twostate-Verification.dfy(602,19): Error: parameter 1 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon12_Then +Twostate-Verification.dfy(613,22): Error: argument 2 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon9_Then +Twostate-Verification.dfy(616,22): Error: parameter 2 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon10_Then +Twostate-Verification.dfy(619,26): Error: argument 3 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon11_Then +Twostate-Verification.dfy(622,26): Error: parameter 3 ('c') must be allocated in the two-state lemma's previous state +Execution trace: + (0,0): anon0 + (0,0): anon12_Then +Twostate-Verification.dfy(635,25): Error: receiver argument must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + (0,0): anon7_Then +Twostate-Verification.dfy(659,29): Error: receiver must be allocated in the state in which its fields are accessed +Execution trace: + (0,0): anon0 + (0,0): anon13_Then Twostate-Verification.dfy(37,26): Error: receiver must be allocated in the state in which its fields are accessed Execution trace: (0,0): anon0 @@ -22,4 +178,4 @@ Twostate-Verification.dfy(12,17): Error: receiver must be allocated in the state Execution trace: (0,0): anon0 -Dafny program verifier finished with 31 verified, 7 errors +Dafny program verifier finished with 62 verified, 42 errors diff --git a/Test/dafny0/TypeParameters.dfy b/Test/dafny0/TypeParameters.dfy index 56ecfcf9e50..5568cd49e26 100644 --- a/Test/dafny0/TypeParameters.dfy +++ b/Test/dafny0/TypeParameters.dfy @@ -247,7 +247,7 @@ predicate Subset(xs: List, ys: List) { forall x :: InList(x, xs) ==> InList(x, ys) } -ghost method ListLemma_T(xs: List, ys: List) +ghost method ListLemma_T(xs: List, ys: List) requires forall x :: InList(x, xs) ==> InList(x, ys) { assert Subset(xs, ys); diff --git a/Test/dafny1/UltraFilter.dfy.expect b/Test/dafny1/UltraFilter.dfy.expect index 133eb04b985..851aaf58286 100644 --- a/Test/dafny1/UltraFilter.dfy.expect +++ b/Test/dafny1/UltraFilter.dfy.expect @@ -1,3 +1,2 @@ -UltraFilter.dfy(39,7): Warning: /!\ No trigger covering all quantified variables found. Dafny program verifier finished with 7 verified, 0 errors diff --git a/Test/dafny4/ACL2-extractor.dfy b/Test/dafny4/ACL2-extractor.dfy index ff6c74aaf66..6f95b0424de 100644 --- a/Test/dafny4/ACL2-extractor.dfy +++ b/Test/dafny4/ACL2-extractor.dfy @@ -49,14 +49,14 @@ function nats(n: nat): List if n == 0 then Nil else Cons(n-1, nats(n-1)) } -function xtr(mp: List, lst: List): List +function xtr(mp: List, lst: List): List { match mp case Nil => Nil case Cons(n, rest) => Cons(nth(n, lst), xtr(rest, lst)) } -lemma ExtractorTheorem(xs: List) +lemma ExtractorTheorem(xs: List) ensures xtr(nats(length(xs)), xs) == rev(xs); { var a, b := xtr(nats(length(xs)), xs), rev(xs); @@ -116,7 +116,7 @@ lemma RevLength(xs: List) // you can prove two lists equal by proving their elements equal -lemma EqualElementsMakeEqualLists(xs: List, ys: List) +lemma EqualElementsMakeEqualLists(xs: List, ys: List) requires length(xs) == length(ys) requires forall i :: 0 <= i < length(xs) ==> nth(i, xs) == nth(i, ys) ensures xs == ys @@ -139,7 +139,7 @@ lemma EqualElementsMakeEqualLists(xs: List, ys: List) // here is the theorem, but applied to the ith element -lemma ExtractorLemma(i: int, xs: List) +lemma ExtractorLemma(i: int, xs: List) requires 0 <= i < length(xs); ensures nth(i, xtr(nats(length(xs)), xs)) == nth(i, rev(xs)); { @@ -157,7 +157,7 @@ lemma ExtractorLemma(i: int, xs: List) // lemmas about what nth gives on certain lists -lemma NthXtr(i: int, mp: List, lst: List) +lemma NthXtr(i: int, mp: List, lst: List) requires 0 <= i < length(mp); ensures nth(i, xtr(mp, lst)) == nth(nth(i, mp), lst); { @@ -189,7 +189,7 @@ lemma NthNatsWorker(i: int, n: nat) { } -lemma NthRev(i: int, xs: List) +lemma NthRev(i: int, xs: List) requires 0 <= i < length(xs) == length(rev(xs)); ensures nthWorker(i, rev(xs)) == nthWorker(length(xs) - 1 - i, xs); { @@ -230,7 +230,7 @@ lemma NthRev(i: int, xs: List) } } -lemma NthAppendA(i: int, xs: List, ys: List) +lemma NthAppendA(i: int, xs: List, ys: List) requires 0 <= i < length(xs); ensures nth(i, append(xs, ys)) == nth(i, xs); { @@ -251,7 +251,7 @@ lemma NthAppendA(i: int, xs: List, ys: List) } } -lemma NthAppendB(i: int, xs: List, ys: List) +lemma NthAppendB(i: int, xs: List, ys: List) requires length(xs) <= i < length(xs) + length(ys); ensures nth(i, append(xs, ys)) == nth(i - length(xs), ys); { diff --git a/Test/dafny4/Bug170.dfy b/Test/dafny4/Bug170.dfy index 393180f2788..2a83d34dcd6 100644 --- a/Test/dafny4/Bug170.dfy +++ b/Test/dafny4/Bug170.dfy @@ -57,3 +57,20 @@ module CoThings { assert A(x+1); // this one should be replaced by A#[_k-1] (which will happen, provided that BB is listed as also being specialized for A) } } + +module SingleThings { + predicate P(x: int) + + least predicate A(x: int) + { + P(x) || A(x+1) + } + + least lemma AA(x: int) // should be specialized just for A + requires A(x) + { + if A(x+1) { // this one should be replaced by B#[_k-1](x+1) + AA(x+1); + } + } +} diff --git a/Test/dafny4/Bug170.dfy.expect b/Test/dafny4/Bug170.dfy.expect index 4a2be45b238..23e081c5c30 100644 --- a/Test/dafny4/Bug170.dfy.expect +++ b/Test/dafny4/Bug170.dfy.expect @@ -26,13 +26,22 @@ Bug170.dfy(56,4): Info: AA#[_k - 1] Bug170.dfy(57,11): Info: A#[_k - 1] Bug170.dfy(38,4): Info: B#[_k - 1] Bug170.dfy(43,4): Info: A#[_k - 1] +Bug170.dfy(64,18): Info: _k: ORDINAL +Bug170.dfy(69,14): Info: _k: ORDINAL +Bug170.dfy(70,14): Info: A#[_k] +Bug170.dfy(69,14): Info: AA# with focal predicate A +Bug170.dfy(72,7): Info: A#[_k - 1] +Bug170.dfy(73,6): Info: AA#[_k - 1] +Bug170.dfy(66,12): Info: A#[_k - 1] Bug170.dfy(18,14): Info: AA# decreases _k, x Bug170.dfy(26,14): Info: BB# decreases _k, x Bug170.dfy(46,17): Info: AA# decreases _k, x Bug170.dfy(53,17): Info: BB# decreases _k, x +Bug170.dfy(69,14): Info: AA# decreases _k, x Bug170.dfy(18,14): Info: AA# {:induction _k, x} Bug170.dfy(26,14): Info: BB# {:induction _k, x} Bug170.dfy(46,17): Info: AA# {:induction _k, x} Bug170.dfy(53,17): Info: BB# {:induction _k, x} +Bug170.dfy(69,14): Info: AA# {:induction _k, x} -Dafny program verifier finished with 8 verified, 0 errors +Dafny program verifier finished with 10 verified, 0 errors diff --git a/Test/dafny4/Bug60.dfy b/Test/dafny4/Bug60.dfy index 68bd03688f4..0aa9209269d 100644 --- a/Test/dafny4/Bug60.dfy +++ b/Test/dafny4/Bug60.dfy @@ -4,10 +4,10 @@ // This method can be used to test compilation. method Main() { - var s := {2, 3}; - var m := map[2 := 20, 3 := 30]; - print (s, m), "\n"; - print (|s|, |m|), "\n"; - print(set s | s in m), "\n"; - print (forall x {:nowarn} :: x in (map [1:=10, 2:=20]) ==> x > 0), "\n"; + var s := {2, 3}; + var m := map[2 := 20, 3 := 30]; + print (s, m), "\n"; + print (|s|, |m|), "\n"; + print set s | s in m, "\n"; + print forall x :: x in (map[1 := 10, 2 := 20]) ==> x > 0, "\n"; } diff --git a/Test/dafny4/Primes.dfy b/Test/dafny4/Primes.dfy index 3cedb717756..d204033ee16 100644 --- a/Test/dafny4/Primes.dfy +++ b/Test/dafny4/Primes.dfy @@ -201,7 +201,7 @@ lemma LargestElementExists(s: set) var s' := s; while true invariant s' != {} && s' <= s - invariant forall x,y {:nowarn} :: x in s' && y in s - s' ==> y <= x + invariant forall x,y :: x in s' && y in s && y !in s' ==> y <= x decreases s' { var x :| x in s'; // pick something diff --git a/Test/dafny4/RollYourOwnArrowType.dfy b/Test/dafny4/RollYourOwnArrowType.dfy index c86ed59a920..5e92c980205 100644 --- a/Test/dafny4/RollYourOwnArrowType.dfy +++ b/Test/dafny4/RollYourOwnArrowType.dfy @@ -3,20 +3,20 @@ // ----- arrows with no read effects ------------------------------------- -type NoWitness_EffectlessArrow = f: A ~> B // error: cannot find witness +type NoWitness_EffectlessArrow = f: A ~> B // error: cannot find witness | forall a :: f.reads(a) == {} -type NonGhost_EffectlessArrow = f: A ~> B +type NonGhost_EffectlessArrow = f: A ~> B | forall a :: f.reads(a) == {} - witness EffectlessArrowWitness + witness EffectlessArrowWitness // The following compilable function, which is used in the witness clause above, can never // be implemented, because there is no way to produce a B (for any B) in compiled code. -function method EffectlessArrowWitness(a: A): B +function method EffectlessArrowWitness(a: A): B -type EffectlessArrow = f: A ~> B +type EffectlessArrow = f: A ~> B | forall a :: f.reads(a) == {} - ghost witness GhostEffectlessArrowWitness + ghost witness GhostEffectlessArrowWitness function GhostEffectlessArrowWitness(a: A): B { @@ -68,23 +68,23 @@ method Main() // ----- totality constraint by predicate Total ------------------------------------- -predicate Total(f: A ~> B) // (is this (!new) really necessary?) +predicate Total(f: A ~> B) // (is this (!new) really necessary?) reads f.reads { forall a :: f.reads(a) == {} && f.requires(a) } -type TotalArrow = f: EffectlessArrow +type TotalArrow = f: EffectlessArrow | Total(f) - ghost witness TotalWitness + ghost witness TotalWitness function TotalWitness(a: A): B { var b: B :| true; b } -lemma TotalWitnessIsTotal() - ensures Total(TotalWitness) +lemma TotalWitnessIsTotal() + ensures Total(TotalWitness) { } @@ -95,12 +95,12 @@ function TotalClientTwice(f: TotalArrow, x: int): int // ----- inlined totality constraint ------------------------------------- -type DirectTotalArrow = f: EffectlessArrow +type DirectTotalArrow = f: EffectlessArrow | forall a :: f.requires(a) - ghost witness TotalWitness + ghost witness TotalWitness -lemma DirectTotalWitnessIsTotal(f: DirectTotalArrow) - ensures Total(TotalWitness) +lemma DirectTotalWitnessIsTotal(f: DirectTotalArrow) + ensures Total(TotalWitness) { } @@ -111,21 +111,21 @@ function DirectTotalClientTwice(f: DirectTotalArrow, x: int): int // ----- using two predicates, and showing which conjunct of constraint is violated ------ -predicate EmptyReads(f: A ~> B) // (is this (!new) really necessary?) +predicate EmptyReads(f: A ~> B) // (is this (!new) really necessary?) reads f.reads { forall a :: f.reads(a) == {} } -predicate TruePre(f: A ~> B) // (is this (!new) really necessary?) +predicate TruePre(f: A ~> B) // (is this (!new) really necessary?) reads f.reads { forall a :: f.requires(a) } -type TwoPred_TotalArrow = f: A ~> B +type TwoPred_TotalArrow = f: A ~> B | EmptyReads(f) && TruePre(f) - ghost witness TotalWitness + ghost witness TotalWitness predicate SomeCondition(a: A) @@ -135,7 +135,7 @@ function PartialFunction(a: A): B var b: B :| true; b } -type Bad_TwoPred_TotalArrow = f: A ~> B +type Bad_TwoPred_TotalArrow = f: A ~> B | EmptyReads(f) && TruePre(f) // cool: the type instantiation of "PartialFunction" below is inferred ghost witness PartialFunction // error: the second conjunct of the constraint is not satisfied diff --git a/Test/dafny4/git-issue106.dfy b/Test/dafny4/git-issue106.dfy new file mode 100644 index 00000000000..36a9a800aca --- /dev/null +++ b/Test/dafny4/git-issue106.dfy @@ -0,0 +1,9 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +function f(i:nat, j:nat):int {if i == 0 then 0 else f(i - 1, i * j + 1) + f(i - 1, 2 * i * j)} + +lemma{:rlimit 10000} L() +{ + assert f(10, 5) == 0; +} diff --git a/Test/dafny4/git-issue106.dfy.expect b/Test/dafny4/git-issue106.dfy.expect new file mode 100644 index 00000000000..8d629641db9 --- /dev/null +++ b/Test/dafny4/git-issue106.dfy.expect @@ -0,0 +1,3 @@ +git-issue106.dfy(6,21): Verification out of resource (Impl$$_module.__default.L) + +Dafny program verifier finished with 1 verified, 0 errors, 1 out of resource diff --git a/Test/git-issues/git-issue-1093.dfy b/Test/git-issues/git-issue-1093.dfy new file mode 100644 index 00000000000..ada9c423127 --- /dev/null +++ b/Test/git-issues/git-issue-1093.dfy @@ -0,0 +1,37 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:cs "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:js "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:go "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:java "%s" >> "%t" +// RUN: %diff "%s.expect" "%t" + +method Main() { + UnusedLabel(); + var c := new C; + c.x := 4; + c.LabelUsedInGhostCode(); // 10 + print c.x, "\n"; +} + +method UnusedLabel() +{ + // The following once resulted in malformed Go code, in particular generating an unused labeled. + label foo: {} +} + +class C { + var x: int + + method LabelUsedInGhostCode() + modifies this + { + x := x + 2; + label A: + x := x + 1; + label B: + x := x + 3; + assert x == old(x) + 6; + assert x == old@A(x) + 4; + assert old@B(x) + x == 2 * old(x) + 9; + } +} diff --git a/Test/git-issues/git-issue-1093.dfy.expect b/Test/git-issues/git-issue-1093.dfy.expect new file mode 100644 index 00000000000..2770b5c463e --- /dev/null +++ b/Test/git-issues/git-issue-1093.dfy.expect @@ -0,0 +1,14 @@ + +Dafny program verifier finished with 2 verified, 0 errors + +Dafny program verifier did not attempt verification +10 + +Dafny program verifier did not attempt verification +10 + +Dafny program verifier did not attempt verification +10 + +Dafny program verifier did not attempt verification +10 diff --git a/Test/git-issues/git-issue-1094.dfy b/Test/git-issues/git-issue-1094.dfy new file mode 100644 index 00000000000..2bb4b88b587 --- /dev/null +++ b/Test/git-issues/git-issue-1094.dfy @@ -0,0 +1,146 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +// ----- Type error ----- + +method FP() returns (r: FStatus) +{ + { + var r: int; // this variable shadows the out-parameter r + :- FTry(); // regression: this once gave an error saying RHS (of type FStatus) not assignable to LHS (of type int) + } +} + +method MP() returns (r: MStatus) +{ + { + var r: int; // this variable shadows the out-parameter r + :- MTry(); // regression: this once gave an error saying RHS (of type MStatus) not assignable to LHS (of type int) + } +} + +method FQ() returns (r: FResult) + ensures r == FResult.Failure(5) +{ + { + var r: int; // this variable shadows the out-parameter r + var x :- FCompute(); // regression: this once gave an error saying RHS (of type FResult) not assignable to LHS (of type int) + } +} + +method MQ() returns (r: MResult) + ensures r == MResult.Failure(5) +{ + { + var r: int; // this variable shadows the out-parameter r + var x :- MCompute(); // regression: this once gave an error saying RHS (of type MResult) not assignable to LHS (of type int) + } +} + +// ----- Verification error ----- + +method FS() returns (r: FStatus) + ensures r == FStatus.Error(5) +{ + { + var r: FStatus; // this variable shadows the out-parameter r + :- FTry(); // regression: this once resulted in a reported postcondition violation + } +} + +method MS() returns (r: MStatus) + ensures r == MStatus.Error(5) +{ + { + var r: MStatus; // this variable shadows the out-parameter r + :- MTry(); // regression: this once resulted in a reported postcondition violation + } +} + +method FR() returns (r: FResult) + ensures r == FResult.Failure(5) +{ + { + var r: FResult; // this variable shadows the out-parameter r + var x :- FCompute(); // regression: this once resulted in a reported postcondition violation + } +} + +method MR() returns (r: MResult) + ensures r == MResult.Failure(5) +{ + { + var r: MResult; // this variable shadows the out-parameter r + var x :- MCompute(); // regression: this once resulted in a reported postcondition violation + } +} + +// ----- Aux definitions ----- + +method FTry() returns (status: FStatus) + ensures status == FStatus.Error(5) + +method MTry() returns (status: MStatus) + ensures status == MStatus.Error(5) + +datatype FStatus = Okay | Error(code: int) { + predicate method IsFailure() { + Error? + } + function method PropagateFailure(): FStatus + requires Error? + { + this + } +} + +datatype MStatus = Okay | Error(code: int) { + predicate method IsFailure() { + Error? + } + method PropagateFailure() returns (m: MStatus) + requires Error? + ensures m == this + { + return this; + } +} + +method FCompute() returns (result: FResult) + ensures result == FResult.Failure(5) + +method MCompute() returns (result: MResult) + ensures result == MResult.Failure(5) + +datatype FResult = Success(x: X) | Failure(code: int) { + predicate method IsFailure() { + Failure? + } + function method PropagateFailure(): FResult + requires Failure? + { + FResult.Failure(code) + } + function method Extract(): X + requires Success? + { + x + } +} + +datatype MResult = Success(x: X) | Failure(code: int) { + predicate method IsFailure() { + Failure? + } + method PropagateFailure() returns (result: MResult) + requires Failure? + ensures result.Failure? && result.code == code + { + return MResult.Failure(code); + } + method Extract() returns (result: X) + requires Success? + { + return x; + } +} diff --git a/Test/git-issues/git-issue-1094.dfy.expect b/Test/git-issues/git-issue-1094.dfy.expect new file mode 100644 index 00000000000..66ffe3665d5 --- /dev/null +++ b/Test/git-issues/git-issue-1094.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 14 verified, 0 errors diff --git a/Test/git-issues/git-issue-1100.dfy b/Test/git-issues/git-issue-1100.dfy new file mode 100644 index 00000000000..47af222b432 --- /dev/null +++ b/Test/git-issues/git-issue-1100.dfy @@ -0,0 +1,4 @@ +// RUN: %dafny /compile:3 /compileTarget:cpp ../c++/arrays.dfy > "%t" +// RUN: %diff "%s.expect" "%t" + +// Test compilation of a file in another directory diff --git a/Test/git-issues/git-issue-1100.dfy.expect b/Test/git-issues/git-issue-1100.dfy.expect new file mode 100644 index 00000000000..552f9355593 --- /dev/null +++ b/Test/git-issues/git-issue-1100.dfy.expect @@ -0,0 +1,16 @@ + +Dafny program verifier finished with 9 verified, 0 errors +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 +17 +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] +[20, 21, 22] +[0, 1, 2, 3, 4, 5, 6, 7] +[0, 1, 2, 3, 4, 5, 6, 7] +It's null +Null array: +It's null +Non-Null array: +1 2 3 4 5 +Array in datatype: +1 3 9 diff --git a/Test/git-issues/git-issue-1105.dfy b/Test/git-issues/git-issue-1105.dfy new file mode 100644 index 00000000000..2f5020db338 --- /dev/null +++ b/Test/git-issues/git-issue-1105.dfy @@ -0,0 +1,18 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:cs "%s" > "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:js "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:go "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /compileTarget:java "%s" >> "%t" +// RUN: %diff "%s.expect" "%t" + +// Regression: A constructor like PushOp with 1+ ghost parameters and 0 non-ghost parameters +// once caused the Java compiler to emit two 0-parameter constructors + +datatype Op = + | NoOp + | PushOp(ghost id: int) + +method Main() { + var o := PushOp(20); + print o, "\n"; +} diff --git a/Test/git-issues/git-issue-1105.dfy.expect b/Test/git-issues/git-issue-1105.dfy.expect new file mode 100644 index 00000000000..5c93be06c4f --- /dev/null +++ b/Test/git-issues/git-issue-1105.dfy.expect @@ -0,0 +1,12 @@ + +Dafny program verifier did not attempt verification +Op.PushOp() + +Dafny program verifier did not attempt verification +Op.PushOp + +Dafny program verifier did not attempt verification +Op.PushOp + +Dafny program verifier did not attempt verification +Op.PushOp() diff --git a/Test/git-issues/git-issue-1109.dfy b/Test/git-issues/git-issue-1109.dfy new file mode 100755 index 00000000000..840900a7cbe --- /dev/null +++ b/Test/git-issues/git-issue-1109.dfy @@ -0,0 +1,7 @@ +// RUN: %dafny /compile:0 /stdin < "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +lemma TestStdin() +{ + assert 2 == 3; // this error should be labeled (6, 11) +} diff --git a/Test/git-issues/git-issue-1109.dfy.expect b/Test/git-issues/git-issue-1109.dfy.expect new file mode 100644 index 00000000000..872ae86903c --- /dev/null +++ b/Test/git-issues/git-issue-1109.dfy.expect @@ -0,0 +1,5 @@ +(6,11): Error: assertion violation +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 0 verified, 1 error diff --git a/Test/git-issues/git-issue-1112.dfy b/Test/git-issues/git-issue-1112.dfy new file mode 100644 index 00000000000..17f57926381 --- /dev/null +++ b/Test/git-issues/git-issue-1112.dfy @@ -0,0 +1,109 @@ +// RUN: %dafny "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +class C { + var d: D? + const k: int +} +class D { + var b: bool +} + +method Field(c: C) + modifies c + requires c.d != null +{ + c.d := null; + label L: + assert c.d == old@L(c.d) == null != old(c.d); + // The following errors were once not properly checked + if + case true => + ghost var x := old@L(c.d.b); // error: null dereference error + case true => + assert old@L(c.d.b) || !old@L(c.d.b); // error (x2): null dereference error +} + +method Array(arr: array, i: nat) + requires i < arr.Length && arr[i] != null + modifies arr +{ + arr[i] := null; + label L: + assert arr[i] == old@L(arr[i]) == null != old(arr[i]); + // The following errors were once not properly checked + if * { + ghost var x := old@L(arr[i].b); // error: null dereference error + } else { + assert old@L(arr[i].b) || !old@L(arr[i].b); // error (x2): null dereference error + } +} + +method MultiArray(m: array2, i: nat, j: nat) + requires i < m.Length0 && j < m.Length1 && m[i, j] != null + modifies m +{ + m[i, j] := null; + label L: + assert m[i, j] == old@L(m[i, j]) == null != old(m[i, j]); + // The following errors were once not properly checked + if * { + ghost var x := old@L(m[i, j].b); // error: null dereference error + } else { + assert old@L(m[i, j].b) || !old@L(m[i, j].b); // error (x2): null dereference error + } +} + +method AllocField(c: C) + modifies c +{ + c.d := null; + label L: + var nd := new D; + if * { + ghost var x := old(nd.b); // error: receiver must be allocated in old state + } else { + ghost var x := old@L(nd.b); // error: receiver must be allocated in state L + } +} + +method AllocArray(c: C) + modifies c +{ + c.d := null; + label L: + var arr := new real[5]; + if * { + ghost var x := old(arr[2]); // error: array must be allocated in old state + } else { + ghost var x := old@L(arr[2]); // error: array must be allocated in state L + } +} + +method AllocMatrix(c: C) + modifies c +{ + c.d := null; + label L: + var m := new real[5, 5]; + if * { + ghost var x := old(m[2, 0]); // error: array must be allocated in old state + } else { + ghost var x := old@L(m[2, 0]); // error: array must be allocated in state L + } +} + +method ArrayNullCheckRegression0(arr: array?, m: array2?, a10: Array10, m1010: Matrix1010) +{ + var x := arr[2]; // error (x2): array may be null, index out of bounds + var y := m[2, 3]; // error (x3): array may be null, indices out of bounds +} + +type Array10 = a: array? | a == null || a.Length == 10 +type Matrix1010 = a: array2? | a == null || (a.Length0 == a.Length1 == 10) + +method ArrayNullCheckRegression1(arr: Array10, m: Matrix1010) +{ + var x := arr[2]; // error: array may be null + var y := m[2, 3]; // error: array may be null +} diff --git a/Test/git-issues/git-issue-1112.dfy.expect b/Test/git-issues/git-issue-1112.dfy.expect new file mode 100644 index 00000000000..c927cf95ba7 --- /dev/null +++ b/Test/git-issues/git-issue-1112.dfy.expect @@ -0,0 +1,113 @@ +git-issue-1112.dfy(22,29): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon10_Then + (0,0): anon11_Then + (0,0): anon4 + (0,0): anon12_Then +git-issue-1112.dfy(24,21): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon10_Then + (0,0): anon11_Then + (0,0): anon4 + (0,0): anon13_Then +git-issue-1112.dfy(24,38): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon10_Then + (0,0): anon11_Then + (0,0): anon4 + (0,0): anon13_Then + (0,0): anon14_Then +git-issue-1112.dfy(36,32): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Then +git-issue-1112.dfy(38,24): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Else +git-issue-1112.dfy(38,44): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Else + (0,0): anon12_Then +git-issue-1112.dfy(51,33): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Then +git-issue-1112.dfy(53,25): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Else +git-issue-1112.dfy(53,46): Error: target object may be null +Execution trace: + (0,0): anon0 + (0,0): anon9_Then + (0,0): anon10_Then + (0,0): anon4 + (0,0): anon11_Else + (0,0): anon12_Then +git-issue-1112.dfy(64,26): Error: receiver must be allocated in the state in which its fields are accessed +Execution trace: + (0,0): anon0 + (0,0): anon3_Then +git-issue-1112.dfy(66,28): Error: receiver must be allocated in the state in which its fields are accessed +Execution trace: + (0,0): anon0 + (0,0): anon3_Else +git-issue-1112.dfy(77,23): Error: array may not be allocated +Execution trace: + (0,0): anon0 + (0,0): anon3_Then +git-issue-1112.dfy(79,25): Error: array may not be allocated +Execution trace: + (0,0): anon0 + (0,0): anon3_Else +git-issue-1112.dfy(90,23): Error: array may not be allocated +Execution trace: + (0,0): anon0 + (0,0): anon3_Then +git-issue-1112.dfy(92,25): Error: array may not be allocated +Execution trace: + (0,0): anon0 + (0,0): anon3_Else +git-issue-1112.dfy(98,11): Error: array may be null +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(98,14): Error: index out of range +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(99,11): Error: array may be null +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(99,13): Error: index 0 out of range +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(99,16): Error: index 1 out of range +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(107,11): Error: array may be null +Execution trace: + (0,0): anon0 +git-issue-1112.dfy(108,11): Error: array may be null +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 5 verified, 22 errors diff --git a/Test/git-issues/git-issue-1113.dfy b/Test/git-issues/git-issue-1113.dfy new file mode 100644 index 00000000000..f68121afb79 --- /dev/null +++ b/Test/git-issues/git-issue-1113.dfy @@ -0,0 +1,44 @@ +// RUN: %dafny "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +// ---------- 1113 ---------- + +type pair = s:seq | |s| == 2 witness [0,0] + +function id(x: T): T { x } + +function fst(p: pair): int +{ + id(p)[0] // this once gave a type-checking error +} + +function pair_id(p: pair): seq +{ + id(p)[0..2] // this once gave a type-checking error +} + +function pair_to_seq(p: pair): seq { p } + +method stuff_that_works(p: pair) +{ + var _: int := p[0]; + var _: seq := p[0..1]; + var _: seq := id(p); + var _: int := pair_to_seq(p)[1]; + var _: seq := pair_to_seq(p)[0..1]; +} + +// ---------- 1157 ---------- + +type subString = x: seq | 0 <= |x| < 0x8000_0000 + +function method foo(s: subString): subString { "0" } + +method goo(s: subString) returns (eq: bool) +{ + if s != [] { + ghost var s' := foo(s[0..]); + assert s'[1..] == []; // this once gave a type-checking error + } + return true; +} diff --git a/Test/git-issues/git-issue-1113.dfy.expect b/Test/git-issues/git-issue-1113.dfy.expect new file mode 100644 index 00000000000..851aaf58286 --- /dev/null +++ b/Test/git-issues/git-issue-1113.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 7 verified, 0 errors diff --git a/Test/git-issues/git-issue-1127.dfy b/Test/git-issues/git-issue-1127.dfy new file mode 100644 index 00000000000..d826af1402d --- /dev/null +++ b/Test/git-issues/git-issue-1127.dfy @@ -0,0 +1,30 @@ +// RUN: %dafny "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +// ----- + +function method Func(): int { + 5 +} + +type PossiblyEmpty = x: int | true witness * + +method Test() +{ + ghost var w; + w := Func(); // error: PossiblyEmpty is not known to be nonempty +} + +// ----- + +function GetInhabitant(): T { + var x: T :| true; x +} + +type EmptyInt = x: int | false witness * + +lemma False() + ensures false +{ + ghost var w := GetInhabitant(); // error: type parameter must support auto-init +} diff --git a/Test/git-issues/git-issue-1127.dfy.expect b/Test/git-issues/git-issue-1127.dfy.expect new file mode 100644 index 00000000000..119a89a52cc --- /dev/null +++ b/Test/git-issues/git-issue-1127.dfy.expect @@ -0,0 +1,3 @@ +git-issue-1127.dfy(15,7): Error: type parameter (T) passed to function Func must support nonempty (got PossiblyEmpty) +git-issue-1127.dfy(29,17): Error: type parameter (T) passed to function GetInhabitant must support auto-initialization (got EmptyInt) +2 resolution/type errors detected in git-issue-1127.dfy diff --git a/Test/git-issues/git-issue-1130.dfy b/Test/git-issues/git-issue-1130.dfy new file mode 100644 index 00000000000..fcae9971838 --- /dev/null +++ b/Test/git-issues/git-issue-1130.dfy @@ -0,0 +1,88 @@ +// RUN: %dafny /compile:3 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Main() { + var a := new Issue.Foo(); + Issue.CallUseFoo(a); + + var b := new Variation.Foo(); + Variation.CallUseFoo(b); + + var c := new AnotherVariation.Foo(); + AnotherVariation.CallUseFoo(c); + + print "\n"; +} + +module Issue +{ + class Foo { + function Repr(): set { {this} } + constructor() {} + } + + method UseFoo(t: Foo) + modifies t.Repr() + { + print 0; + } + + method CallUseFoo(t: Foo) + modifies t.Repr() + { + // the following line once produced malformed Boogie + UseFoo(t); + } +} + +// the following variation was working all along +module Variation { + class Foo { + function Repr(): set { {this} } + constructor() {} + } + + class UseFooHelper + { + const foo: Foo + constructor(foo: Foo) + ensures this.foo == foo + { + this.foo := foo; + } + + method Do() + modifies foo.Repr() + { + print 1; + } + } + + method CallUseFoo(t: Foo) + modifies t.Repr() + { + var fh := new UseFooHelper(t); + fh.Do(); + } +} + +// the following variation was also working all along +module AnotherVariation +{ + class Foo { + function Repr(): set { {this} } + constructor() {} + + method UseFoo() + modifies Repr() + { + print 2; + } + } + + method CallUseFoo(t: Foo) + modifies t.Repr() + { + t.UseFoo(); + } +} diff --git a/Test/git-issues/git-issue-1130.dfy.expect b/Test/git-issues/git-issue-1130.dfy.expect new file mode 100644 index 00000000000..6c3dd07b1f1 --- /dev/null +++ b/Test/git-issues/git-issue-1130.dfy.expect @@ -0,0 +1,3 @@ + +Dafny program verifier finished with 13 verified, 0 errors +012 diff --git a/Test/git-issues/git-issue-1143.dfy b/Test/git-issues/git-issue-1143.dfy new file mode 100644 index 00000000000..ea4ea607e13 --- /dev/null +++ b/Test/git-issues/git-issue-1143.dfy @@ -0,0 +1,25 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +datatype Nat = Zero | Succ(pred: Nat) +{ + function method MemberToInt(): int { + match this + case Zero => 0 + case Succ(p) => 1 + p.MemberToInt() + } +} + +function method ExternalToInt(n: Nat): int { + match n + case Zero => 0 + case Succ(p) => 1 + ExternalToInt(p) +} + +function method Prefix(n: Nat, len: nat): Nat + requires len <= n.MemberToInt() && len <= ExternalToInt(n) + ensures ExternalToInt(Prefix(n, len)) == len // this line verifies + ensures Prefix(n, len).MemberToInt() == len // this once failed to verify +{ + if len == 0 then Zero else Succ(Prefix(n.pred, len - 1)) +} diff --git a/Test/git-issues/git-issue-1143.dfy.expect b/Test/git-issues/git-issue-1143.dfy.expect new file mode 100644 index 00000000000..00a51f822da --- /dev/null +++ b/Test/git-issues/git-issue-1143.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 3 verified, 0 errors diff --git a/Test/git-issues/git-issue-1148.dfy b/Test/git-issues/git-issue-1148.dfy new file mode 100644 index 00000000000..a0c42802d08 --- /dev/null +++ b/Test/git-issues/git-issue-1148.dfy @@ -0,0 +1,82 @@ +// RUN: %dafny "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module AutoInitRegressions { + trait Y { } + + datatype Datatype = Make + { + static const Static: Y // error: Y is not auto-init + const Instance: Y // error: Y is not auto-init + } + + method Main() { + print Datatype.Static, "\n"; + var c := Make; + print c.Instance, "\n"; + } + + const Global: Y // error: Y is not auto-init + + class Class { // error: InstanceField is of type Y, which is not auto-init, so class must have a constructor + static const StaticField: Y // error: Y is not auto-init + const InstanceField: Y + } + + trait Trait { + static const StaticField: Y // error: Y is not auto-init + const InstanceField: Y + } + + class TraitImpl extends Trait { // error: inherited InstanceField is of type Y, which is not auto-init, so class must have a constructor + } + + newtype Newtype = int + { + static const Static: Y // error: Y is not auto-init + const Instance: Y // error: Y is not auto-init + } + + type Opaque + { + static const Static: Y // error: Y is not auto-init + const Instance: Y // error: Y is not auto-init + } +} + +module NonemptyRegressions { + type Y { } + + datatype Datatype = Make + { + ghost static const Static: Y // error: Y is not nonempty + ghost const Instance: Y // error: Y is not nonempty + } + + ghost const Global: Y // error: Y is not nonempty + + class Class { // error: InstanceField is of type Y, which is not nonempty, so class must have a constructor + ghost static const StaticField: Y // error: Y is not nonempty + ghost const InstanceField: Y + } + + trait Trait { + ghost static const StaticField: Y // error: Y is not nonempty + ghost const InstanceField: Y + } + + class TraitImpl extends Trait { // error: inherited InstanceField is of type Y, which is not auto-init, so class must have a constructor + } + + newtype Newtype = int + { + ghost static const Static: Y // error: Y is not nonempty + ghost const Instance: Y // error: Y is not nonempty + } + + type Opaque + { + ghost static const Static: Y // error: Y is not nonempty + ghost const Instance: Y // error: Y is not nonempty + } +} diff --git a/Test/git-issues/git-issue-1148.dfy.expect b/Test/git-issues/git-issue-1148.dfy.expect new file mode 100644 index 00000000000..775c89899d0 --- /dev/null +++ b/Test/git-issues/git-issue-1148.dfy.expect @@ -0,0 +1,23 @@ +git-issue-1148.dfy(9,17): Error: static non-ghost const field 'Static' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(10,10): Error: non-ghost const field 'Instance' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(22,17): Error: static non-ghost const field 'StaticField' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(21,8): Error: class 'Class' with fields without known initializers, like 'InstanceField' of type 'Y', must declare a constructor +git-issue-1148.dfy(27,17): Error: static non-ghost const field 'StaticField' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(31,8): Error: class 'TraitImpl' with fields without known initializers, like 'InstanceField' of type 'Y', must declare a constructor +git-issue-1148.dfy(36,17): Error: static non-ghost const field 'Static' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(37,10): Error: non-ghost const field 'Instance' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(42,17): Error: static non-ghost const field 'Static' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(43,10): Error: non-ghost const field 'Instance' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(19,8): Error: static non-ghost const field 'Global' of type 'Y' (which does not have a default compiled value) must give a defining value +git-issue-1148.dfy(52,23): Error: static ghost const field 'Static' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(53,16): Error: ghost const field 'Instance' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(59,23): Error: static ghost const field 'StaticField' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(58,8): Error: class 'Class' with fields without known initializers, like 'InstanceField' of type 'Y', must declare a constructor +git-issue-1148.dfy(64,23): Error: static ghost const field 'StaticField' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(68,8): Error: class 'TraitImpl' with fields without known initializers, like 'InstanceField' of type 'Y', must declare a constructor +git-issue-1148.dfy(73,23): Error: static ghost const field 'Static' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(74,16): Error: ghost const field 'Instance' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(79,23): Error: static ghost const field 'Static' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(80,16): Error: ghost const field 'Instance' of type 'Y' (which may be empty) must give a defining value +git-issue-1148.dfy(56,14): Error: static ghost const field 'Global' of type 'Y' (which may be empty) must give a defining value +22 resolution/type errors detected in git-issue-1148.dfy diff --git a/Test/git-issues/git-issue-1151-concrete.cs b/Test/git-issues/git-issue-1151-concrete.cs new file mode 100644 index 00000000000..1207b949ad9 --- /dev/null +++ b/Test/git-issues/git-issue-1151-concrete.cs @@ -0,0 +1,24 @@ +namespace M { + // try an unusual type here, namely a struct + public struct T { + } + + public partial class __default { + public static T GetT() { + return new T(); + } + } + + // By declaring U a class here, it allows "null" as a value. + // In other words, the opaque type M.U declared in the Dafny program + // evidently stands for what in Dafny could have been declared as + // type U? for a class U. + public class U { + } + + public struct V { + } + + public struct W { + } +} diff --git a/Test/git-issues/git-issue-1151.dfy b/Test/git-issues/git-issue-1151.dfy new file mode 100644 index 00000000000..a2ef5b9a45b --- /dev/null +++ b/Test/git-issues/git-issue-1151.dfy @@ -0,0 +1,29 @@ +// RUN: %dafny /compile:3 "%s" git-issue-1151-concrete.cs > "%t" +// RUN: %diff "%s.expect" "%t" + +module {:extern "M"} M { + type {:extern "T"} T + method {:extern} GetT() returns (t: T) + + datatype D = D(t: T) + datatype E = E(t: T, x: X) + + type {:extern "U"} U(0) + type {:extern "V"} V(0) + datatype F = F(u: U, v: V) +} + +method Main() { + var t := M.GetT(); + + var d: M.D; + d := M.D(t); + print d, "\n"; + + var e: M.E; + e := M.E(t, 45); + print e, "\n"; + + var f: M.F; + print f, "\n"; +} diff --git a/Test/git-issues/git-issue-1151.dfy.expect b/Test/git-issues/git-issue-1151.dfy.expect new file mode 100644 index 00000000000..4072f2cfd18 --- /dev/null +++ b/Test/git-issues/git-issue-1151.dfy.expect @@ -0,0 +1,5 @@ + +Dafny program verifier finished with 1 verified, 0 errors +M_Compile.D.D(M.T) +M_Compile.E.E(M.T, 45) +M_Compile.F.F(null, M.V) diff --git a/Test/git-issues/git-issue-1158.dfy b/Test/git-issues/git-issue-1158.dfy new file mode 100644 index 00000000000..e29b321e92c --- /dev/null +++ b/Test/git-issues/git-issue-1158.dfy @@ -0,0 +1,27 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +type Id(==) + +function F(s: set): int + +lemma Test(x: Id) +{ + var X := {x}; + var a := map i | i <= X :: F(i); + var b := map[{} := F({}), X := F(X)]; + + assert a.Keys == b.Keys by { // spurious error reported here + forall i + ensures i in a.Keys <==> i in b.Keys + { + calc { + i in a.Keys; + == + i <= X; + == { assert i <= X <==> i == {} || i == X; } + i in b.Keys; + } + } + } +} diff --git a/Test/git-issues/git-issue-1158.dfy.expect b/Test/git-issues/git-issue-1158.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/git-issues/git-issue-1158.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors diff --git a/Test/git-issues/git-issue-551.dfy.expect b/Test/git-issues/git-issue-551.dfy.expect index 5a61ba960d8..dcc6e5f97aa 100644 --- a/Test/git-issues/git-issue-551.dfy.expect +++ b/Test/git-issues/git-issue-551.dfy.expect @@ -1,2 +1,2 @@ -git-issue-551.dfy(27,15): Error: function calls are allowed only in specification contexts (consider declaring the function a 'function method') +git-issue-551.dfy(27,15): Error: predicate calls are allowed only in specification contexts (consider declaring the predicate a 'predicate method') 1 resolution/type errors detected in git-issue-551.dfy diff --git a/Test/git-issues/git-issue-615.dfy b/Test/git-issues/git-issue-615.dfy index 63328b4b2bb..85ce6862d60 100644 --- a/Test/git-issues/git-issue-615.dfy +++ b/Test/git-issues/git-issue-615.dfy @@ -3,6 +3,9 @@ class MyClass { ghost const repr: object + constructor (ghost r: object) { + repr := r; + } } datatype D1 = D1(o: MyClass) diff --git a/Test/git-issues/git-issue-615.dfy.expect b/Test/git-issues/git-issue-615.dfy.expect index 4eedb76d6b7..e700115a0bc 100644 --- a/Test/git-issues/git-issue-615.dfy.expect +++ b/Test/git-issues/git-issue-615.dfy.expect @@ -1,8 +1,8 @@ -git-issue-615.dfy(10,35): Error: insufficient reads clause to invoke function +git-issue-615.dfy(13,35): Error: insufficient reads clause to invoke function Execution trace: (0,0): anon0 -git-issue-615.dfy(21,13): Error: insufficient reads clause to invoke function +git-issue-615.dfy(24,13): Error: insufficient reads clause to invoke function Execution trace: (0,0): anon0 -Dafny program verifier finished with 2 verified, 2 errors +Dafny program verifier finished with 3 verified, 2 errors diff --git a/Test/git-issues/git-issue-MainE.dfy b/Test/git-issues/git-issue-MainE.dfy index 6f86a2584fe..041fe148297 100644 --- a/Test/git-issues/git-issue-MainE.dfy +++ b/Test/git-issues/git-issue-MainE.dfy @@ -11,6 +11,9 @@ // RUN: %dafny /noVerify /compile:4 /Main:K.Test "%s" >> "%t" // RUN: %dafny /noVerify /compile:4 /Main: "%s" >> "%t" // RUN: %dafny /noVerify /compile:4 /Main:- "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /Main:Tr.Instance "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /Main:Opaque.Static "%s" >> "%t" +// RUN: %dafny /noVerify /compile:4 /Main:Opaque.Instance "%s" >> "%t" // RUN: %diff "%s.expect" "%t" class A { @@ -20,7 +23,7 @@ class B { method Test() { print "Bad\n"; } } class C { - method Test() { print "Bad\n"; } + method Test() { print "OK-C\n"; } } class D { constructor() {} @@ -49,4 +52,30 @@ class Z { method Main() { print "Main\n"; } } +// Of the remaining methods, this file tests only the error cases. +// The cases that compile are tested in Test/comp/MainMethod.dfy. + +trait Tr { + static method Static() { print "OK-Tr\n"; } + method Instance() { print "Bad\n"; } +} + +datatype Dt = Dt0(int) | Dt1(real) { + static method Static() { print "OK-Dt: static\n"; } + method Instance() { print "OK-Dt: ", this, "\n"; } +} + +codatatype Co = CoMore(Co) { + static method Static() { print "OK-Co: static\n"; } + method Instance() { print "OK-Co: ", this, "\n"; } +} +newtype Nt = x | -0x8000_0000 <= x <= 0x8000_0000 { + static method Static() { print "OK-Nt: static\n"; } + method Instance() { print "OK-Nt: ", this, "\n"; } +} + +type {:extern "OpaqueX"} Opaque { + static method Static() { print "Bad\n"; } + method Instance() { print "Bad\n"; } +} diff --git a/Test/git-issues/git-issue-MainE.dfy.expect b/Test/git-issues/git-issue-MainE.dfy.expect index e9a29fef329..b0c51185417 100644 --- a/Test/git-issues/git-issue-MainE.dfy.expect +++ b/Test/git-issues/git-issue-MainE.dfy.expect @@ -1,17 +1,17 @@ -Dafny program verifier finished with 0 verified, 0 errors +Dafny program verifier finished with 1 verified, 0 errors Dafny program verifier did not attempt verification -git-issue-MainE.dfy(17,9): Error: The method "A.Test" is not permitted as a main method (the method has non-ghost parameters). +git-issue-MainE.dfy(20,9): Error: The method "A.Test" is not permitted as a main method (the method has non-ghost parameters). Dafny program verifier did not attempt verification -git-issue-MainE.dfy(20,9): Error: The method "B.Test" is not permitted as a main method (the method has type parameters). +git-issue-MainE.dfy(23,9): Error: The method "B.Test" is not permitted as a main method (the method has type parameters). Dafny program verifier did not attempt verification -git-issue-MainE.dfy(23,9): Error: The method "C.Test" is not permitted as a main method (the enclosing class has type parameters). +OK-C Dafny program verifier did not attempt verification -git-issue-MainE.dfy(27,9): Error: The method "D.Test" is not permitted as a main method (the method is not static and the enclosing class has constructors). +git-issue-MainE.dfy(30,9): Error: The method "D.Test" is not permitted as a main method (the method is not static and the enclosing class has constructors). Dafny program verifier did not attempt verification OK-E @@ -20,18 +20,27 @@ Dafny program verifier did not attempt verification OK-G Dafny program verifier did not attempt verification -git-issue-MainE.dfy(37,9): Error: The method "H.Test" is not permitted as a main method (the method has non-ghost out parameters). +git-issue-MainE.dfy(40,9): Error: The method "H.Test" is not permitted as a main method (the method has non-ghost out parameters). Dafny program verifier did not attempt verification OK-I Dafny program verifier did not attempt verification -git-issue-MainE.dfy(43,9): Error: The method "J.Test" is not permitted as a main method (the method has requires clauses). +git-issue-MainE.dfy(46,9): Error: The method "J.Test" is not permitted as a main method (the method has requires clauses). Dafny program verifier did not attempt verification -git-issue-MainE.dfy(46,9): Error: The method "K.Test" is not permitted as a main method (the method has modifies clauses). +git-issue-MainE.dfy(49,9): Error: The method "K.Test" is not permitted as a main method (the method has modifies clauses). Dafny program verifier did not attempt verification Main Dafny program verifier did not attempt verification + +Dafny program verifier did not attempt verification +git-issue-MainE.dfy(60,9): Error: The method "Tr.Instance" is not permitted as a main method (the method is not static and the enclosing type does not support auto-initialization). + +Dafny program verifier did not attempt verification +git-issue-MainE.dfy(79,16): Error: The method "Opaque.Static" is not permitted as a main method (the enclosing type is an opaque type). + +Dafny program verifier did not attempt verification +git-issue-MainE.dfy(80,9): Error: The method "Opaque.Instance" is not permitted as a main method (the enclosing type is an opaque type). diff --git a/Test/refman/Example-TwoState.dfy b/Test/refman/Example-TwoState.dfy new file mode 100644 index 00000000000..7a9cf0f3f8b --- /dev/null +++ b/Test/refman/Example-TwoState.dfy @@ -0,0 +1,18 @@ +// RUN: %dafny /verifyAllModules /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +include "../../docs/DafnyRef/examples/Example-TwoState-Increasing.dfy" +include "../../docs/DafnyRef/examples/Example-TwoState-Caller.dfy" +include "../../docs/DafnyRef/examples/Example-TwoState-Diff.dfy" +include "../../docs/DafnyRef/examples/Example-TwoState-DiffAgain.dfy" +include "../../docs/DafnyRef/examples/Example-TwoState-SeqSum.dfy" +include "../../docs/DafnyRef/examples/Example-TwoState-EtaExample.dfy" + +class Cell { + var data: int + constructor (x: int) + ensures data == x + { + data := x; + } +} diff --git a/Test/refman/Example-TwoState.dfy.expect b/Test/refman/Example-TwoState.dfy.expect new file mode 100644 index 00000000000..35e21539360 --- /dev/null +++ b/Test/refman/Example-TwoState.dfy.expect @@ -0,0 +1,8 @@ +Example-TwoState-Diff.dfy(11,25): Error: argument 1 ('d') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 +Example-TwoState-DiffAgain.dfy(10,27): Error: argument 0 ('c') must be allocated in the two-state function's previous state +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 9 verified, 2 errors diff --git a/Test/server/counterexample.transcript b/Test/server/counterexample.transcript index b13fc3d179a..c16db749060 100644 --- a/Test/server/counterexample.transcript +++ b/Test/server/counterexample.transcript @@ -1,6 +1,5 @@ # RUN: %server "%s" > "%t" # RUN: %diff "%s.expect" "%t" -# XFAIL: * counterexample eyJhcmdzIjpbXSwiZmlsZW5hbWUiOiJjOlxcREVWXFxEYWZueVxcYWJzLmRmeSIsInNvdXJjZSI6Im1ldGhvZCBBYnMoeDogaW50KSBcclxuICAgIHJldHVybnMgKHk6IGludClcclxuZW5zdXJlcyB5ID49IDAge1xyXG4gICAgcmV0dXJuIHg7XHJcbn0iLCJzb3VyY2VJc0ZpbGUiOmZhbHNlfQ== diff --git a/Test/server/counterexample.transcript.expect b/Test/server/counterexample.transcript.expect index ce8e8da2963..d78991f8c4f 100644 --- a/Test/server/counterexample.transcript.expect +++ b/Test/server/counterexample.transcript.expect @@ -6,6 +6,6 @@ c:\DEV\Dafny\abs.dfy(4,4): Error: A postcondition might not hold on this return c:\DEV\Dafny\abs.dfy(3,10): Related location: This is the postcondition that might not hold. Execution trace: (0,0): anon0 -COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END +COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END Verification completed successfully! [SUCCESS] [[DAFNY-SERVER: EOM]] diff --git a/Test/server/git-issue223.transcript b/Test/server/git-issue223.transcript index 8d27f829afa..ec96b373f1e 100644 --- a/Test/server/git-issue223.transcript +++ b/Test/server/git-issue223.transcript @@ -1,6 +1,5 @@ # RUN: %server "%s" > "%t" # RUN: %diff "%s.expect" "%t" -# XFAIL: * counterexample eyJhcmdzIjpbXSwiZmlsZW5hbWUiOiJjOlxcREVWXFxEYWZueVxcYWJzLmRmeSIsInNvdXJjZSI6Im1ldGhvZCBBYnMoeDogaW50KSBcclxuICAgIHJldHVybnMgKHk6IGludClcclxuZW5zdXJlcyB5ID49IDAge1xyXG4gICAgcmV0dXJuIHg7XHJcbn0iLCJzb3VyY2VJc0ZpbGUiOmZhbHNlfQ== diff --git a/Test/server/git-issue223.transcript.expect b/Test/server/git-issue223.transcript.expect index ec4de83f5aa..7ddac2bdba8 100644 --- a/Test/server/git-issue223.transcript.expect +++ b/Test/server/git-issue223.transcript.expect @@ -6,7 +6,7 @@ c:\DEV\Dafny\abs.dfy(4,4): Error: A postcondition might not hold on this return c:\DEV\Dafny\abs.dfy(3,10): Related location: This is the postcondition that might not hold. Execution trace: (0,0): anon0 -COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END +COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END Verification completed successfully! [SUCCESS] [[DAFNY-SERVER: EOM]] @@ -17,6 +17,6 @@ c:\DEV\Dafny\abs.dfy(4,4): Error: A postcondition might not hold on this return c:\DEV\Dafny\abs.dfy(3,10): Related location: This is the postcondition that might not hold. Execution trace: (0,0): anon0 -COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"(**y#0)","Name":"y","RealName":null,"Value":"(**y#0)"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END +COUNTEREXAMPLE_START {"States":[{"Column":0,"Line":0,"Name":"","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":15,"Line":3,"Name":"c:\\DEV\\Dafny\\abs.dfy(3,15): initial state","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"}]},{"Column":12,"Line":4,"Name":"c:\\DEV\\Dafny\\abs.dfy(4,12)","Variables":[{"CanonicalName":"((- 1))","Name":"x","RealName":null,"Value":"((- 1))"},{"CanonicalName":"((- 1))'1","Name":"y","RealName":null,"Value":"((- 1))'1"}]}]} COUNTEREXAMPLE_END Verification completed successfully! [SUCCESS] [[DAFNY-SERVER: EOM]] diff --git a/Test/traits/TraitResolution1.dfy b/Test/traits/TraitResolution1.dfy index 731cb82ab50..ecfdccafb5b 100644 --- a/Test/traits/TraitResolution1.dfy +++ b/Test/traits/TraitResolution1.dfy @@ -451,7 +451,7 @@ module ProvidingModule { const M := 100 ghost const N: BB } - datatype Dt = X | Y | More(u: int) { + datatype Dt = X | Y | More(u: int) { const M := 100 ghost const N: CC } diff --git a/Test/traits/TraitResolution1.dfy.expect b/Test/traits/TraitResolution1.dfy.expect index 12b4c0b2a52..d063bebbc0c 100644 --- a/Test/traits/TraitResolution1.dfy.expect +++ b/Test/traits/TraitResolution1.dfy.expect @@ -95,14 +95,14 @@ TraitResolution1.dfy(430,16): Error: the type of special parameter '_k' of least TraitResolution1.dfy(476,8): Error: class 'AAA' with fields without known initializers, like 'w' of type '(Y, Y)', must declare a constructor TraitResolution1.dfy(481,8): Error: class 'BBB' with fields without known initializers, like 'w' of type 'Forever', must declare a constructor TraitResolution1.dfy(513,24): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got Forever) -TraitResolution1.dfy(518,27): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got Y) +TraitResolution1.dfy(518,27): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 518 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) TraitResolution1.dfy(523,27): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got (Y, Y)) TraitResolution1.dfy(530,8): Error: set argument type must support equality (got X) (perhaps try declaring type parameter 'X' on line 529 as 'X(==)', which says it can only be instantiated with a type that supports equality) TraitResolution1.dfy(536,28): Error: set argument type must support equality (got Forever) TraitResolution1.dfy(537,41): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got Forever) TraitResolution1.dfy(538,41): Error: type parameter (X) passed to type RequiresZero must support auto-initialization (got Forever) TraitResolution1.dfy(504,18): Error: type parameter (Y) passed to type ClassRequiresZero must support auto-initialization (got Forever) -TraitResolution1.dfy(504,14): Error: type parameter (Y) passed to type ClassRequiresZero must support auto-initialization (got Forever) +TraitResolution1.dfy(504,18): Error: type parameter (Y) passed to type ClassRequiresZero must support auto-initialization (got Forever) TraitResolution1.dfy(507,44): Error: type parameter (Y) passed to type ClassRequiresZero must support auto-initialization (got Forever) TraitResolution1.dfy(543,18): Error: a trait can only extend traits (found 'object?') TraitResolution1.dfy(545,18): Error: a class can only extend traits (found 'object?') diff --git a/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy b/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy index 51db91c2908..ef3437f4f2d 100644 --- a/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy +++ b/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy @@ -5,7 +5,7 @@ // AST matches. This file also checks that triggers are reported exactly as // picked (that is, `x in s` yields `s[x]` for a multiset s), but matches as // they appear in the buffer text (that is, `x+1 in s` is not translated to -// s[x+1] when highlited as a cause for a potential matching loop. +// s[x+1] when highlighted as a cause for a potential matching loop. method M() { // This is an obvious loop @@ -14,3 +14,129 @@ method M() { // x in s loops with s[x+1] due to the way [x in s] is translated ghost var a := forall s: multiset, x: int :: x in s ==> s[x+1] > 0 && x+2 !in s; } + +// "in" expressions are often rewritten by the ExpressionTranslator. The following +// tests check that triggers are not selected from expressions that will be +// rewritten. + +method RewriteSet(s: set, t: set) { + // set union + ghost var u0 := forall x | x in s + t :: x < 200; // warning: no trigger + ghost var u1 := forall x | x in s || x in t :: x < 200; + ghost var u2 := set x | x in s + t; // warning: no trigger + ghost var u3 := set x | x in s + t && (x in s || x in t); + assert u0 == u1 && u2 == u3; + + // set intersection + ghost var i0 := forall x | x in s * t :: x < 200; // warning: no trigger + ghost var i1 := forall x | x in s * t && x in s && x in t :: x < 200; + assert i0 == i1; + + // set difference + ghost var d0 := forall x | x in s - t :: x < 200; // warning: no trigger + ghost var d1 := forall x | x in s - t && x in s && x !in t :: x < 200; + assert d0 == d1; + + // set display + ghost var c0 := forall x | x in {2, 3, 5} :: x < 200; // warning: no trigger + ghost var c1 := forall x | x in ({2, 3, 5}) :: x < 200; + assert c0 == c1; + + // set comprehension + ghost var h0 := forall x :: (x in set y | y in s) ==> x < 200; // warning: no trigger + ghost var h1 := forall x :: var S := set y | y in s; x in S ==> x < 200; // warning: no trigger + assert h0 == h1; + ghost var h2 := forall x :: var S := F(set y | y in s); x in S ==> x < 200; // warning: no trigger + ghost var h3 := forall x :: x in s ==> x < 200; + ghost var h4 := forall x :: x in F(s) ==> x < 200; +} + +function F(s: X): X { s } + +method RewriteMultiSet(s: multiset, t: multiset) { + // multiset union + ghost var u0 := forall x | x in s + t :: x < 200; // warning: no trigger + ghost var u1 := forall x | x in s || x in t :: x < 200; + assert u0 == u1; + + // multiset intersection + ghost var i0 := forall x | x in s * t :: x < 200; // warning: no trigger + ghost var i1 := forall x | x in s * t && x in s && x in t :: x < 200; + assert i0 == i1; + + // multiset difference + ghost var d0 := forall x | x in s - t :: x < 200; // fine (multiset difference is not rewritten) + ghost var d1 := forall x | x in s - t && x in s && s[x] > t[x] :: x < 200; + assert d0 == d1; + + // multiset display + ghost var c0 := forall x | x in multiset{2, 3, 5} :: x < 200; // warning: no trigger + ghost var c1 := forall x | x in (multiset{2, 3, 5}) :: x < 200; + assert c0 == c1; +} + +method RewriteSeq(s: seq, t: seq) { + // concat + ghost var u0 := forall x | x in s + t :: x < 200; // fine (seq + does is not rewritten) + ghost var u1 := forall x | x in s || x in t :: x < 200; + assert u0 == u1 by { + if u0 { + forall x | x in s || x in t + ensures x < 200 + { + assert x in s + t; + } + assert u1; + } + assert u1 ==> u0; + } + + // seq display + ghost var c0 := forall x | x in [2, 3, 5] :: x < 200; // fine (currently, "in seq-display" is not rewritten) + ghost var c1 := forall x | x in ([2, 3, 5]) :: x < 200; + assert c0 == c1; +} + +method RewriteMap(s: map, t: map, u: set) { + // map merge + ghost var u0 := forall x | x in s + t :: x < 200; // fine (map merge is not rewritten) + ghost var u1 := forall x | x in s || x in t :: x < 200; + assert u0 == u1; + + // map domain subtraction + ghost var d0 := forall x | x in s - u :: x < 200; // fine (map subtraction is not rewritten) + ghost var d1 := forall x | x in s && x !in u :: x < 200; + assert d0 == d1 by { + if d0 { + forall x | x in s && x !in u + ensures x < 200 + { + assert x in s - u; + } + assert d1; + } + assert d1 ==> d0; + } + + // map display + ghost var c0 := forall x | x in map[2 := 20, 3 := 30, 5 := 50] :: x < 200; // fine (map comprehension is not rewritten) + ghost var c1 := forall x | x in F(map[2 := 20, 3 := 30, 5 := 50]) :: x < 200; + assert c0 == c1; + + assert false; // error: sanity check +} + +method Orderings(s: set, ms: multiset, q: seq) { + var a0 := exists x :: x < s; + var a1 := exists x :: x <= s; + var a2 := exists x :: x >= s; + var a3 := exists x :: x > s; + + var b0 := exists x :: x < ms; + var b1 := exists x :: x <= ms; + var b2 := exists x :: x >= ms; + var b3 := exists x :: x > ms; + + var c0 := exists x :: x < q; // warning: no trigger + var c1 := exists x :: x <= q; // warning: no trigger +} diff --git a/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy.expect b/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy.expect index 90cbe7d1bb6..3f3d67e3dd9 100644 --- a/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy.expect +++ b/Test/triggers/some-terms-do-not-look-like-the-triggers-they-match.dfy.expect @@ -3,5 +3,89 @@ some-terms-do-not-look-like-the-triggers-they-match.dfy(15,17): Info: For expres Selected triggers: {s[_t#0], s[x]} some-terms-do-not-look-like-the-triggers-they-match.dfy(15,17): Info: For expression "x in s ==> _t#0 !in s": Selected triggers: {s[_t#0], s[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(24,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(25,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(26,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(27,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(31,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(32,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(36,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(37,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(41,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(42,18): Info: Selected triggers: {x in {2, 3, 5}} +some-terms-do-not-look-like-the-triggers-they-match.dfy(46,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(46,36): Info: Selected triggers: {y in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(47,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(47,39): Info: Selected triggers: {y in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(49,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(49,41): Info: Selected triggers: {y in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(50,18): Info: Selected triggers: {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(51,18): Info: Selected triggers: {x in F(s)} +some-terms-do-not-look-like-the-triggers-they-match.dfy(58,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(59,18): Info: Selected triggers: + {t[x]}, {s[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(63,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(64,18): Info: Selected triggers: + {t[x]}, {s[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(68,18): Info: Selected triggers: {(s - t)[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(69,18): Info: Selected triggers: + {t[x]}, {s[x]}, {(s - t)[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(73,18): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(74,18): Info: Selected triggers: {multiset{2, 3, 5}[x]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(80,18): Info: Selected triggers: {x in s + t} +some-terms-do-not-look-like-the-triggers-they-match.dfy(81,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(84,6): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(95,18): Info: Selected triggers: {x in [2, 3, 5]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(96,18): Info: Selected triggers: {x in [2, 3, 5]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(102,18): Info: Selected triggers: {x in s + t} +some-terms-do-not-look-like-the-triggers-they-match.dfy(103,18): Info: Selected triggers: + {x in t}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(107,18): Info: Selected triggers: {x in s - u} +some-terms-do-not-look-like-the-triggers-they-match.dfy(108,18): Info: Selected triggers: + {x in u}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(111,6): Info: Selected triggers: + {x in u}, {x in s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(122,18): Info: Selected triggers: {x in map[2 := 20, 3 := 30, 5 := 50]} +some-terms-do-not-look-like-the-triggers-they-match.dfy(123,18): Info: Selected triggers: {x in F(map[2 := 20, 3 := 30, 5 := 50])} +some-terms-do-not-look-like-the-triggers-they-match.dfy(130,12): Info: Selected triggers: {x < s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(131,12): Info: Selected triggers: {x <= s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(132,12): Info: Selected triggers: {x >= s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(133,12): Info: Selected triggers: {x > s} +some-terms-do-not-look-like-the-triggers-they-match.dfy(135,12): Info: Selected triggers: {x < ms} +some-terms-do-not-look-like-the-triggers-they-match.dfy(136,12): Info: Selected triggers: {x <= ms} +some-terms-do-not-look-like-the-triggers-they-match.dfy(137,12): Info: Selected triggers: {x >= ms} +some-terms-do-not-look-like-the-triggers-they-match.dfy(138,12): Info: Selected triggers: {x > ms} +some-terms-do-not-look-like-the-triggers-they-match.dfy(140,12): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(141,12): Warning: /!\ No terms found to trigger on. +some-terms-do-not-look-like-the-triggers-they-match.dfy(126,9): Error: assertion violation +Execution trace: + (0,0): anon0 + (0,0): anon35_Then + (0,0): anon36_Then + (0,0): anon3 + (0,0): anon37_Then + (0,0): anon38_Then + (0,0): anon39_Then + (0,0): anon8 + (0,0): anon40_Then + (0,0): anon41_Then + (0,0): anon11 + (0,0): anon42_Then + (0,0): anon43_Then + (0,0): anon44_Then + (0,0): anon16 + some-terms-do-not-look-like-the-triggers-they-match.dfy(109,3): anon45_Else + (0,0): anon50_Then + (0,0): anon51_Then + (0,0): anon31 + (0,0): anon52_Then + (0,0): anon53_Then + (0,0): anon34 -Dafny program verifier finished with 0 verified, 0 errors +Dafny program verifier finished with 3 verified, 1 error diff --git a/Test/wishlist/git-issue-Main5.dfy b/Test/wishlist/git-issue-Main5.dfy deleted file mode 100644 index 21649e88369..00000000000 --- a/Test/wishlist/git-issue-Main5.dfy +++ /dev/null @@ -1,28 +0,0 @@ -// XFAIL: * -// RUN: %dafny /compile:0 "%s" > "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:cs /Main:A.T.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:js /Main:A.T.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:go /Main:A.T.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:java /Main:A.T.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:cs /Main:A.D.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:js /Main:A.D.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:go /Main:A.D.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:java /Main:A.D.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:cs /Main:A.C.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:js /Main:A.C.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:go /Main:A.C.Test "%s" >> "%t" -// RUN: %dafny /noVerify /compile:4 /compileTarget:java /Main:A.C.Test "%s" >> "%t" -// RUN: %diff "%s.expect" "%t" - -module A { - trait T { - static method Test() { print "Test1\n"; } - } - datatype D = D1 | D2 { - static method Test() { print "Test2\n"; } - } - codatatype C = C1 { - static method Test() { print "Test3\n"; } - } -} - diff --git a/docs/Compilation/Cpp.md b/docs/Compilation/Cpp.md index a49ae6b9cd3..3affb87fecb 100644 --- a/docs/Compilation/Cpp.md +++ b/docs/Compilation/Cpp.md @@ -15,8 +15,6 @@ implementation. - Very limited support for higher order functions even for array init. Use extern definitions like newArrayFill (see extern.dfy) or similar. See also the example in `functions.dfy`. -- We currently only support tuples up to arity 5. A common place where you - might go over that limit is print statements, which tuple the arguments. - The current backend also assumes the use of C++17 in order to cleanly and performantly implement datatypes. diff --git a/docs/DafnyRef/DafnyRef.md b/docs/DafnyRef/DafnyRef.md index 728b8ca7583..fb8d209d152 100644 --- a/docs/DafnyRef/DafnyRef.md +++ b/docs/DafnyRef/DafnyRef.md @@ -54,32 +54,8 @@ user understand how to do proofs with Dafny. {% include_relative UserGuide.md %} -# 25. TODO --- const, static const - --- declarations - --- inference of array sizes - --- witness, ghost witness clauses - --- customizable error messages - --- opaque types - --- traits, object - --- non-null types - --- abstemious functions - --- labels (for program locations) - --- updates to shared destructors - --- labelled assertion statements, labelled preconditions {% include_relative SyntaxTests.md %} -# 27. References +# 26. References diff --git a/docs/DafnyRef/Expressions.md b/docs/DafnyRef/Expressions.md index 7aa6eda3bff..f5242cf2e3b 100644 --- a/docs/DafnyRef/Expressions.md +++ b/docs/DafnyRef/Expressions.md @@ -501,12 +501,12 @@ TODO: what about multi-dimensional arrays ## 20.17. Object Allocation ````grammar -ObjectAllocation_ = "new" Type [ "." ( Ident | digits ) ] +ObjectAllocation_ = "new" Type [ "." TypeNameOrCtorSuffix ] [ "(" [ Expressions ] ")" ] ```` This allocated a new object of a class type as explained -in section [Class Types](#sec-class-types)]. +in section [Class Types](#sec-class-types). ## 20.18. Havoc Right-Hand-Side ````grammar diff --git a/docs/DafnyRef/Grammar.md b/docs/DafnyRef/Grammar.md index 19331d1c775..7ad55804c59 100644 --- a/docs/DafnyRef/Grammar.md +++ b/docs/DafnyRef/Grammar.md @@ -470,8 +470,11 @@ MethodFunctionName = NoUSIdentOrDigits LabelName = NoUSIdentOrDigits AttributeName = NoUSIdent ExportId = NoUSIdentOrDigits +TypeNameOrCtorSuffix = NoUSIdentOrDigits ```` +Some parsing constexts + ### 2.6.3. Qualified Names ```grammar QualifiedModuleName = ModuleName { "." ModuleName } diff --git a/docs/DafnyRef/Modules.md b/docs/DafnyRef/Modules.md index e6ddc6ada2f..640216bec81 100644 --- a/docs/DafnyRef/Modules.md +++ b/docs/DafnyRef/Modules.md @@ -294,7 +294,7 @@ ModuleExport = | "extends" ExportId { "," ExportId } } -ExportSignature = IdentOrDigits [ "." IdentOrDigits ] +ExportSignature = TypeNameOrCtorSuffix [ "." TypeNameOrCtorSuffix ] ```` In some programming languages, keywords such as `public`, `private`, and `protected` diff --git a/docs/DafnyRef/Refinement.md b/docs/DafnyRef/Refinement.md index cd67bfb13d0..77b8a998985 100644 --- a/docs/DafnyRef/Refinement.md +++ b/docs/DafnyRef/Refinement.md @@ -62,7 +62,7 @@ Typically this is the presence of a `...` token. A refining export set declaration begins with the syntax ````grammar -"export" Ident "..." +"export" Ident ellipsis ```` but otherwise contains the same `provides`, `reveals` and `extends` sections, with the ellipsis indicating that it is a refining declaration. diff --git a/docs/DafnyRef/Statements.md b/docs/DafnyRef/Statements.md index fabdcb0a9b2..f7606879cc4 100644 --- a/docs/DafnyRef/Statements.md +++ b/docs/DafnyRef/Statements.md @@ -450,14 +450,14 @@ A RHS with a method call cannot be mixed with a RHS containing multiple expressi For example, the desugaring of ```dafny method m(Status r) returns (rr: Status) { - var j, k; - j, k :- r, 7; + var k; + k :- r, 7; ... } ``` is ```dafny -var j, k; +var k; var tmp; tmp, k := r, 7; if tmp.IsFailure() { @@ -607,7 +607,9 @@ VarDeclStatement = ) ";" -CasePatternLocal = "(" CasePattern { "," CasePattern } ")" // TODO +CasePatternLocal = ( [ Ident ] "(" CasePatternLocsl { "," CasePatternLocal } ")" + | LocalIdentTypeOptional + ) ```` A ``VarDeclStatement`` is used to declare one or more local variables in @@ -1008,10 +1010,10 @@ method Sum(x: Tree) returns (r: int) { match x { case Empty => r := 0; - case Node(t1, d, t2) => - var v1 := Sum(t1); - var v2 := Sum(t2); - r := v1 + d + v2; + case Node(t1, d, t2) => + var v1 := Sum(t1); + var v2 := Sum(t2); + r := v1 + d + v2; } } ``` diff --git a/docs/DafnyRef/SyntaxTests.md b/docs/DafnyRef/SyntaxTests.md index 41f163261da..2b27cf2a0d7 100644 --- a/docs/DafnyRef/SyntaxTests.md +++ b/docs/DafnyRef/SyntaxTests.md @@ -57,7 +57,7 @@ literal: true false null op: - ! ~ x -!~x op: a + b - c * d / e % f a+b-c*d/e%f op: <= >= < > == != b&&c || ==> <==> <== -# 26. !=# !! in !in +# 25. !=# !! in !in op: !in∆ !iné not op: !inx punc: . , :: | :| := ( ) [ ] { } diff --git a/docs/DafnyRef/Types.md b/docs/DafnyRef/Types.md index bdc33762e04..8286d586887 100644 --- a/docs/DafnyRef/Types.md +++ b/docs/DafnyRef/Types.md @@ -1608,8 +1608,8 @@ as explained below. MethodSignature_(isGhost, isExtreme) = [ GenericParameters ] [ KType ] // permitted only if isExtreme == true - Formals(allowGhostKeyword: !isGhost) - [ "returns" Formals(allowGhostKeyword: !isGhost) ] + Formals(allowGhostKeyword: !isGhost, allowNewKeyword: isTwostateLemma)) + [ "returns" Formals(allowGhostKeyword: !isGhost, allowNewKeyword: false) ] ```` A method signature specifies the method generic parameters, input parameters and return parameters. @@ -1810,7 +1810,97 @@ See [the Dafny Lemmas tutorial](http://rise4fun.com/Dafny/tutorial/Lemmas) for more examples and hints for using lemmas. ### 13.3.4. Two-state lemmas and functions {#sec-two-state} -TO BE WRITTEN - two-state lemmas; unchanged predicate + +The heap is an implicit parameter to every function, though a function is only allowed +to read those parts of the mutable heap that it admits to in its `reads` clause. +Sometimes, it is useful for a function to take two heap parameters, for example, so +the function can return the difference between the value of a field in the two heaps. +Such a _two-state function_ is declared by `twostate function` (or `twostate predicate`, +which is the same as a `twostate function` that returns a `bool`). A two-state function +is always ghost. It is appropriate to think of these two implicit heap parameters as +representing a "current" heap and an "old" heap. + +For example, the predicate +```dafny +{% include_relative examples/Example-TwoState-Increasing.dfy %} +``` +returns `true` if the value of `c.data` has not been reduced from the old state to the +current. Dereferences in the current heap are written as usual (e.g., `c.data`) and +must, as usual, be accounted for in the function's `reads` clause. Dereferences in the +old heap are enclosed by `old` (e.g., `old(c.data)`), just like when one dereferences +a method's initial heap. The function is allowed to read anything in the old heap; +the `reads` clause only declares dependencies on locations in the current heap. +Consequently, the frame axiom for a two-state function is sensitive to any change +in the old-heap parameter; in other words, the frame axiom says nothing about two +invocations of the two-state function with different old-heap parameters. + +At a call site, the two-state function's current-heap parameter is always passed in +as the caller's current heap. The two-state function's old-heap parameter is by +default passed in as the caller's old heap (that is, the initial heap if the caller +is a method and the old heap if the caller is a two-state function). While there is +never a choice in which heap gets passed as the current heap, the caller can use +any preceding heap as the argument to the two-state function's old-heap parameter. +This is done by labeling a state in the caller and passing in the label, just like +this is done with the built-in `old` function. + +For example, the following assertions all hold: +```dafny +{% include_relative examples/Example-TwoState-Caller.dfy %} +``` +The first call to `Increasing` uses `Caller`'s initial state as the old-heap parameter, +and so does the second call. The third call instead uses as the old-heap parameter +the heap at label `L`, which is why the third call returns `false`. +As shown in the example, an explicitly given old-heap parameter is given after +an `@`-sign (which follows the name of the function and any explicitly given type +parameters) and before the open parenthesis (after which the ordinary parameters are +given). + +A two-state function is allowed to be called only from a two-state context, which +means a method, a two-state lemma (see below), or another two-state function. +Just like a label used with an `old` expressions, any label used in a call to a +two-state function must denote a program point that _dominates_ the call. This means +that any control leading to the call must necessarily have passed through the labeled +program point. + +Any parameter (including the receiver parameter, if any) passed to a two-state function +must have been allocated already in the old state. For example, the second call to +`Diff` in method `M` is illegal, since `d` was not allocated on entry to `M`: +```dafny +{% include_relative examples/Example-TwoState-Diff.dfy %} +``` + +A two-state function can declare that it only assumes a parameter to be allocated +in the current heap. This is done by preceding the parameter with the `new` modifier, +as illustrated in the following example, where the first call to `DiffAgain` is legal: +```dafny +{% include_relative examples/Example-TwoState-DiffAgain.dfy %} +``` + +A _two-state lemma_ works in an analogous way. It is a lemma with both a current-heap +parameter and an old-heap parameter, it can use `old` expressions in its +specification (including in the precondition) and body, its parameters may +use the `new` modifier, and the old-heap parameter is by default passed in as +the caller's old heap, which can be changed by using an `@`-parameter. + +Here is an example of something useful that can be done with a two-state lemma: +```dafny +{% include_relative examples/Example-TwoState-SeqSum.dfy %} +``` + +A two-state function can be used as a first-class function value, where the receiver +(if any), type parameters (if any), and old-heap parameter are determined at the +time the first-class value is mentioned. While the receiver and type parameters can +be explicitly instantiated in such a use (for example, `p.F` for a two-state +instance function `F` that takes one type parameter), there is currently no syntactic +support for giving the old-heap parameter explicitly. A caller can work +around this restriction by using (fancy-word alert!) eta-expansion, meaning +wrapping a lambda expression around the call, as in `x => p.F@L(x)`. +The following example illustrates using such an eta-expansion: +```dafny +{% include_relative examples/Example-TwoState-EtaExample.dfy %} +``` + +TO BE WRITTEN - unchanged predicate ## 13.4. Function Declarations @@ -1819,14 +1909,19 @@ FunctionDecl(isWithinAbstractModule) = ( [ "twostate" ] "function" [ "method" ] { Attribute } MethodFunctionName FunctionSignatureOrEllipsis_(allowGhostKeyword: - ("method" present)) + ("method" present), + allowNewKeyword: + "twostate" present) | "predicate" [ "method" ] { Attribute } MethodFunctionName PredicateSignatureOrEllipsis_(allowGhostKeyword: - ("method" present)) + ("method" present), + allowNewKeyword: + "twostate" present) | ( "least" | "greatest" ) "predicate" { Attribute } MethodFunctionName - PredicateSignatureOrEllipsis_(allowGhostKeyword: false) + PredicateSignatureOrEllipsis_(allowGhostKeyword: false, + allowNewKeyword: "twostate" present)) ) FunctionSpec [ FunctionBody ] @@ -1834,15 +1929,22 @@ FunctionDecl(isWithinAbstractModule) = FunctionSignatureOrEllipsis_(allowGhostKeyword) = FunctionSignature_(allowGhostKeyword) | ellipsis -FunctionSignature_(allowGhostKeyword) = - [ GenericParameters ] Formals(allowGhostKeyword)i - ":" ( Type | "(" GIdentType ")" ) +FunctionSignature_(allowGhostKeyword, allowNewKeyword) = + [ GenericParameters ] + Formals(allowGhostKeyword, allowNewKeyword) + ":" + ( Type + | "(" GIdentType(allowGhostKeyword: false, + allowNewKeyword: false) + ")" + ) PredicateSignatureOrEllipsis_(allowGhostKeyword) = PredicateSignature_(allowGhostKeyword) | ellipsis PredicateSignature_(allowGhostKeyword) = - [ GenericParameters ] [ KType ] Formals(allowGhostKeyword) + [ GenericParameters ] [ KType ] Formals(allowGhostKeyword, + allowNewKeyword) FunctionBody = "{" Expression(allowLemma: true, allowLambda: true) "}" @@ -2368,8 +2470,8 @@ sequence. ````grammar IteratorDecl = "iterator" { Attribute } IteratorName ( [ GenericParameters ] - Formals(allowGhostKeyword: true) - [ "yields" Formals(allowGhostKeyword: true) ] + Formals(allowGhostKeyword: true, allowNewKeyword: false) + [ "yields" Formals(allowGhostKeyword: true, allowNewKeyword: false) ] | ellipsis ) IteratorSpec @@ -3296,4 +3398,3 @@ co-inductive proof in using a co-lemma with the inductive proof in using the lemma. Whereas the inductive proof is performing proofs for deeper and deeper equalities, the co-lemma can be understood as producing the infinite proof on demand. - diff --git a/docs/DafnyRef/UserGuide.md b/docs/DafnyRef/UserGuide.md index f59dc5c5823..5ee8ece8eb9 100644 --- a/docs/DafnyRef/UserGuide.md +++ b/docs/DafnyRef/UserGuide.md @@ -199,17 +199,24 @@ If more than one is found an error message is issued. Any abstract modules are not searched for candidate entry points, -but otherwise the entry point may be in any module or class. In addition -an entry point candidate must satisfy the following conditions: +but otherwise the entry point may be in any module or type. In addition, +an entry-point candidate must satisfy the following conditions: * The method takes no parameters or type parameters * The method is not a ghost method * The method has no requires or modifies clauses, unless it is marked `{:main}` -* If the method is an instance (that is, non-static) method in a class, - then the enclosing class must not declare any constructor. - In this case, the runtime - system will allocate an object of the enclosing class and will invoke - the entry point method on it. +* If the method is an instance (that is, non-static) method and the + enclosing type is a class, + then that class must not declare any constructor. + In this case, the runtime system will + allocate an object of the enclosing class and will invoke + the entry-point method on it. +* If the method is an instance (that is, non-static) method and the + enclosing type is not a class, + then the enclosing type must, when instantiated with auto-initializing + type parameters, be an auto-initialing type. + In this case, the runtime system will + invoke the entry-point method on a value of the enclosing type. Note, however, that the following are allowed: diff --git a/docs/DafnyRef/examples/Example-TwoState-Caller.dfy b/docs/DafnyRef/examples/Example-TwoState-Caller.dfy new file mode 100644 index 00000000000..3f57f0b6b33 --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-Caller.dfy @@ -0,0 +1,10 @@ +method Caller(c: Cell) + modifies c +{ + c.data := c.data + 10; + label L: + assert Increasing(c); + c.data := c.data - 2; + assert Increasing(c); + assert !Increasing@L(c); +} diff --git a/docs/DafnyRef/examples/Example-TwoState-Diff.dfy b/docs/DafnyRef/examples/Example-TwoState-Diff.dfy new file mode 100644 index 00000000000..3a47c419e6a --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-Diff.dfy @@ -0,0 +1,12 @@ +twostate function Diff(c: Cell, d: Cell): int + reads d +{ + d.data - old(c.data) +} + +method M(c: Cell) { + var d := new Cell(10); + label L: + ghost var x := Diff@L(c, d); + ghost var y := Diff(c, d); // error: d is not allocated in old state +} diff --git a/docs/DafnyRef/examples/Example-TwoState-DiffAgain.dfy b/docs/DafnyRef/examples/Example-TwoState-DiffAgain.dfy new file mode 100644 index 00000000000..b9d5a95ecb0 --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-DiffAgain.dfy @@ -0,0 +1,11 @@ +twostate function DiffAgain(c: Cell, new d: Cell): int + reads d +{ + d.data - old(c.data) +} + +method P(c: Cell) { + var d := new Cell(10); + ghost var x := DiffAgain(c, d); + ghost var y := DiffAgain(d, c); // error: d is not allocated in old state +} diff --git a/docs/DafnyRef/examples/Example-TwoState-EtaExample.dfy b/docs/DafnyRef/examples/Example-TwoState-EtaExample.dfy new file mode 100644 index 00000000000..f4971ca54d7 --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-EtaExample.dfy @@ -0,0 +1,8 @@ +class P { + twostate function F(x: X): X +} + +method EtaExample(p: P) returns (ghost f: int -> int) { + label L: + f := x => p.F@L(x); +} diff --git a/docs/DafnyRef/examples/Example-TwoState-Increasing.dfy b/docs/DafnyRef/examples/Example-TwoState-Increasing.dfy new file mode 100644 index 00000000000..5b9324e9da9 --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-Increasing.dfy @@ -0,0 +1,5 @@ +twostate predicate Increasing(c: Cell) + reads c +{ + old(c.data) <= c.data +} diff --git a/docs/DafnyRef/examples/Example-TwoState-SeqSum.dfy b/docs/DafnyRef/examples/Example-TwoState-SeqSum.dfy new file mode 100644 index 00000000000..26d540b3f7b --- /dev/null +++ b/docs/DafnyRef/examples/Example-TwoState-SeqSum.dfy @@ -0,0 +1,27 @@ +function SeqSum(s: seq): int + reads s +{ + if s == [] then 0 else s[0].data + SeqSum(s[1..]) +} + +twostate lemma IncSumDiff(s: seq) + requires forall c :: c in s ==> Increasing(c) + ensures old(SeqSum(s)) <= SeqSum(s) +{ + if s == [] { + } else { + calc { + old(SeqSum(s)); + == // def. SeqSum + old(s[0].data + SeqSum(s[1..])); + == // distribute old + old(s[0].data) + old(SeqSum(s[1..])); + <= { assert Increasing(s[0]); } + s[0].data + old(SeqSum(s[1..])); + <= { IncSumDiff(s[1..]); } + s[0].data + SeqSum(s[1..]); + == // def. SeqSum + SeqSum(s); + } + } +} diff --git a/docs/DafnyRef/out/DafnyRef.pdf b/docs/DafnyRef/out/DafnyRef.pdf index 437f341b67d02560bff2f5c03f77922ea49ba633..2e9d5630a19e16d2292c24c8bc86086a74282339 100644 GIT binary patch delta 312362 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

|J5HX~^mz1GduTBJQ{H4D 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 Jhn&WUyvY*}!N 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 L($b16N}&Ef`rc8f delta 313046 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%0A_Tx#`ym^>QQ22Udi6#o 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ƀXTigf#gLAUM%X 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�xoC(xf3DhUK1eb6z{k5w;d2 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
HDbNaZh}4kF+fnh;8uvc3^Z*RP2+(PZBVMXc(A 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 diff --git a/docs/OnlineTutorial/guide.md b/docs/OnlineTutorial/guide.md index 8127cda1d00..5a896573aad 100644 --- a/docs/OnlineTutorial/guide.md +++ b/docs/OnlineTutorial/guide.md @@ -76,7 +76,7 @@ The method body is the code contained within the braces, which until now has been cleverly represented as "`...`" (which is *not* Dafny syntax). The body consists of a series of *statements*, such as the familiar imperative -assignments, if statements, loops, other method calls, return statements, etc. +assignments, `if` statements, loops, other method calls, `return` statements, etc. For example, the `MultipleReturns` method may be implemented as: @@ -104,13 +104,13 @@ rather "`:=`". (In fact, as Dafny uses "`==`" for equality, there is no use of a single equals sign in Dafny expressions.) Simple statements must be followed by a semicolon, and whitespace and comments (`//` and `/**/`) are ignored. To return a value from a method, the value is assigned to one of the named return -values sometime before a return statement. In fact, the return values act very +values sometime before a `return` statement. In fact, the return values act very much like local variables, and can be assigned to more than once. The input -parameters, however, are read only. Return statements are used when one wants +parameters, however, are read only. `return` statements are used when one wants to return before reaching the end of the body block of the method. Return -statements can be just the return keyword (where the current value of the out +statements can be just the `return` keyword (where the current value of the out parameters are used), or they can take a list of values to return. There are -also compound statements, such as if statements. If statements do not require +also compound statements, such as `if` statements. `if` statements do not require parentheses around the boolean condition, and act as one would expect: ``` {.edit} @@ -153,7 +153,7 @@ non-negative, is an example of a postcondition: it is something that is true after the method returns. Postconditions, declared with the `ensures` keyword, are given as part of the method's declaration, after the return values (if present) and before the method body. The keyword is followed by the boolean -expression. Like an if or while +expression. Like an `if` or `while` condition and most specifications, a postcondition is always a boolean expression: something that can be *true* or *false*. In the case of the `Abs` method, a reasonable postcondition is the following: @@ -188,7 +188,7 @@ always at least zero. Sometimes there are multiple properties that we would like to establish about our code. In this case, we have two options. We can either -join the two conditions together with the boolean and operator (`&&`), or +join the two conditions together with the boolean "and" operator (`&&`), or we can write multiple `ensures` specifications. The latter is basically the same as the former, but it seperates distinct properties. For example, the return value names from the `MultipleReturns` @@ -236,7 +236,7 @@ method MultipleReturns(x: int, y: int) returns (more: int, less: int) because of the chaining comparison operator syntax in Dafny. (In general, most of the comparison operators can be chained, but only "in one -direction", i.e. not mixing greater than and less than. See the reference for +direction", i.e. not mixing "greater than" and "less than". See the reference for details.) The first way of expressing the postconditions separates @@ -284,10 +284,10 @@ method MultipleReturns(x: int, y: int) returns (more: int, less: int) ``` Like postconditions, multiple preconditions can be written -either with the boolean and operator (`&&`), or -by multiple `requires` keywords. Traditionally, requires -precede ensures in the source code, though this is not strictly necessary -(although the order of the requires and ensures annotations with respect to +either with the boolean "and" operator (`&&`), or +by multiple `requires` keywords. Traditionally, `requires` +precede `ensures` in the source code, though this is not strictly necessary +(although the order of the `requires` and `ensures` annotations with respect to others of the same type can sometimes matter, as we will see later). With the addition of this condition, Dafny now verifies the code as correct, because this assumption is all that is needed to guarantee the code in the method body @@ -299,7 +299,7 @@ is correct. verifies.* ``` {.editonly} -method Max(a: int, b:int) returns (c: int) +method Max(a: int, b: int) returns (c: int) // What postcondition should go here, so that the function operates as expected? // Hint: there are many ways to write this. { @@ -308,7 +308,7 @@ method Max(a: int, b:int) returns (c: int) ``` ``` -method Max(a: int, b:int) returns (c: int) +method Max(a: int, b: int) returns (c: int) ``` @@ -345,8 +345,8 @@ method Testing() } ``` -Dafny proves this method correct, as 2 is always less than -3. Asserts have several uses, but chief among them is checking whether your +Dafny proves this method correct, as `2` is always less than +`3`. Asserts have several uses, but chief among them is checking whether your expectations of what is true at various points is actually true. You can use this to check basic arithmetical facts, as above, but they can also be used in more complex situations. Assertions are a powerful tool for debugging annotations, @@ -728,7 +728,7 @@ which takes a single integer, and returns an integer (the second `int`). Unlike a method, which can have all sorts of statements in its body, a function body must consist of exactly one expression, with the correct type. Here our body must be an integer expression. In order to -implement the absolute value function, we need to use an *if expression*. An if +implement the absolute value function, we need to use an *`if` expression*. An `if` expression is like the ternary operator in other languages. ``` {.edit} @@ -765,8 +765,8 @@ postconditions that we did with the method (though functions can and do have pre- and postconditions in general). The limitations of functions are precisely what let Dafny do this. Unlike methods, Dafny does not forget the body of a function when considering other functions. So it can expand the -definition of abs in the above assertion and determine that the result is -actually 3. +definition of `abs` in the above assertion and determine that the result is +actually `3`. **Exercise 4.** *Write a **function** `max` that returns the larger of two given @@ -903,7 +903,7 @@ We haven't written the body yet, so Dafny will complain that our postcondition doesn't hold. We need an algorithm to calculate the `n`th Fibonacci number. The basic idea is to keep a counter, and repeatedly calculate adjacent pairs of Fibonacci numbers until the desired number is reached. To do this, we need a loop. In Dafny, this is done -via a *while loop*. A while loop looks like the following: +via a *`while` loop*. A while loop looks like the following: ``` {.editonly} method m(n: nat) @@ -929,7 +929,7 @@ the core of our loop to calculate Fibonacci numbers. ## Loop Invariants -While loops present a problem for Dafny. There is no way for +`while` loops present a problem for Dafny. There is no way for Dafny to know in advance how many times the code will go around the loop. But Dafny needs to consider all paths through a program, which could include going around the loop any number of times. To make it possible for Dafny to work with @@ -1339,16 +1339,16 @@ at some point, which gives us a stronger correctness guarantee ## Termination Dafny proves that code terminates, i.e. does not loop forever, by -using decreases annotations. For many things, Dafny is able to guess the right +using `decreases` annotations. For many things, Dafny is able to guess the right annotations, but sometimes it needs to be made explicit. In fact, for all of the code we have seen so far, Dafny has been able to do this proof on its own, -which is why we haven't seen the decreases annotation explicitly yet. There +which is why we haven't seen the `decreases` annotation explicitly yet. There are two places Dafny proves termination: loops and recursion. Both of these situations require either an explicit annotation or a correct guess by Dafny. -A decreases annotation, as its name suggests, gives Dafny +A `decreases` annotation, as its name suggests, gives Dafny and expression that decreases with every loop iteration or recursive call. -There are two conditions that Dafny needs to verify when using a decreases +There are two conditions that Dafny needs to verify when using a `decreases` expression: that the expression actually gets smaller, and that it is bounded. Many times, an integral value (natural or plain integer) is the quantity that decreases, but other things that can be used as well. (See the reference for @@ -1636,7 +1636,7 @@ method Find(a: array, key: int) returns (index: int) ``` As you can see, we have omitted the loop invariants on the -while loop, so Dafny gives us a verification error on one of the +`while` loop, so Dafny gives us a verification error on one of the postconditions. The reason we get an error is that Dafny does not know that the loop actually covers all the elements. In order to convince Dafny of this, we have to write an invariant that says that everything before the current @@ -1667,7 +1667,7 @@ This says that everything before, but excluding, the current index is not the key. Notice that upon entering the loop, `i` is zero, so the first part of the implication is always false, and thus the quantified property is always true. This common situation is known as -vacuous truth*: the +*vacuous truth*: the quantifier holds because it is quantifying over an empty set of objects. This means that it is true when entering the loop. We test the value of the array before we extend the non-key part of the array, so Dafny can prove that this @@ -1675,7 +1675,7 @@ invariant is preserved. One problem arises when we try to add this invariant: Dafny complains about the index being out of range for the array access within the invariant. -This is code does not verify because there is no invariant on `index`, so +This code does not verify because there is no invariant on `index`, so it could be greater than the length of the array. Then the bound variable, `k`, could exceed the length of the array. To fix this, we put the standard bounds on `index`, `0 <= index <= a.Length`. Note that because we say `k < index`, the @@ -1735,14 +1735,14 @@ is through a *predicate*. A predicate is a function which returns a boolean. It is a simple but powerful idea that occurs throughout Dafny programs. For example, we -define the *sorted +define the *`sorted` predicate* over arrays of integers as a function that takes an array as an argument, and returns `true` if and only if that array is sorted in increasing order. The use of predicates makes our code shorter, as we do not need to write out a long property over and over. It can also make our code easier to read by giving a common property a name. -There are a number of ways we could write the sorted +There are a number of ways we could write the `sorted` predicate, but the easiest is to use a quantifier over the indices of the array. We can write a quantifier that expresses the property, "if `x` is before `y` in the array, then `x <= y`," as a quantifier over two bound variables: @@ -1804,7 +1804,7 @@ predicate sorted(a: array) ... ``` -A reads annotation is not a boolean expression, like the +A `reads` annotation is not a boolean expression, like the other annotations we have seen, and can appear anywhere along with the pre- and postconditions. Instead of a property that should be true, it specifies a set of memory locations that the function is allowed to access. The name of an @@ -1819,14 +1819,14 @@ function that are not memory locations do not need to be declared. Frames also affect methods. As you might have guessed, they are not required to list the things they read, as we have written a method -which accesses an array with no reads annotation. Methods are allowed to read +which accesses an array with no `reads` annotation. Methods are allowed to read whatever memory they like, but they are required to list which parts of memory they modify, with a *modifies annotation*. They are almost identical to their `reads` cousins, except they say what can be changed, rather than what the value of the function depends on. In combination with reads, modification restrictions allow Dafny to prove properties of code that would otherwise be -very difficult or impossible. Reads and modifies are one of the tools that +very difficult or impossible. `reads` and `modifies` are one of the tools that allow Dafny to work on one method at a time, because they restrict what would otherwise be arbitrary modifications of memory to something that Dafny can reason about. @@ -1977,16 +1977,16 @@ method BinarySearch(a: array, value: int) returns (index: int) This is a fairly standard binary search implementation. First we declare our range to search over. This can be thought of as the remaining space where the key could possibly be. The range is -inclusive-exclusive, meaning it encompasses indices [`low`, `high`). The first +inclusive-exclusive, meaning it encompasses indices \[`low`, `high`). The first invariant expresses the fact that this range is within the array. The second says that the key is not anywhere outside of this range. In the first two -branches of the if chain, we find the element in the middle of our range is not +branches of the `if` chain, we find the element in the middle of our range is not the key, and so we move the range to exclude that element and all the other elements on the appropriate side of it. We need the addition of one when moving the lower end of the range because it is inclusive on the low side. If we do not add one, then the loop may continue forever when `mid == low`, which happens when `low + 1 == high`. We could change this to -say that the loop exits when low and high are one apart, but this would mean we +say that the loop exits when `low` and `high` are one apart, but this would mean we would need an extra check after the loop to determine if the key was found at the one remaining index. In the above formulation, this is unnecessary because when `low == high`, the loop exits. But this means that diff --git a/docs/QuickReference.md b/docs/QuickReference.md index 1ac63d80590..4dfef1d4579 100755 --- a/docs/QuickReference.md +++ b/docs/QuickReference.md @@ -83,7 +83,7 @@ This can be made clearer in the program text by declaring the method with `lemma Here is an example method that takes 3 integers as in-parameters and returns these in 3 out-parameters in sorted order: ``` -method Sort(a: int b: int, c: int) returns (x: int, y: int, z: int) +method Sort(a: int, b: int, c: int) returns (x: int, y: int, z: int) ensures x <= y <= z && multiset{a, b, c} == multiset{x, y, z} { x, y, z := a, b, c; @@ -324,7 +324,7 @@ Finally, to make a sequence from some elements, enclose them in square brackets. For example, `[x,y]` is the sequence consisting of the two elements `x` and `y` such that `[x,y][0] == x` and `[x,y][1] == y`, `[x]` is the singleton sequence whose only element is `x`, and `[]` is the empty sequence. -The if-then-else expression has the form: `if BoolExpr then Expr0 else Else1` +The if-then-else expression has the form: `if BoolExpr then Expr0 else Expr1` where Expr0 and Expr1 are any expressions of the same type. Unlike the if statement, the if-then-else expression uses the `then` keyword, and must include an explicit `else` branch. From 8917605ea17598504684e5f146e88e3002e3bd50 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 30 Mar 2021 14:39:24 -0400 Subject: [PATCH 380/573] Resolve compilation errors in the merged code --- Source/Dafny/DafnyAst.cs | 8 ++--- Source/Dafny/Printer.cs | 19 +++++++++++ Source/Dafny/Resolver.cs | 71 +++++++++++++++++++++------------------- 3 files changed, 58 insertions(+), 40 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index fe007a60166..fb06013497c 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6340,10 +6340,6 @@ public override bool IsMutable { } } - public void MakeGhost() { - Usage = Usage.Ghost; - } - public BoundVar(IToken tok, string name, Type type, Usage usage = Usage.Ordinary) : base(tok, name, type, usage) { Contract.Requires(tok != null); @@ -12796,8 +12792,8 @@ public ApplySuffix(IToken tok, IToken/*?*/ atLabel, Expression lhs, List args) - : this(tok, lhs, args.ConvertAll(e => new ApplySuffixArg { Inout = false, Expr = e })) + public ApplySuffix(IToken tok, IToken/*?*/ atLabel, Expression lhs, List args) + : this(tok, atLabel, lhs, args.ConvertAll(e => new ApplySuffixArg { Inout = false, Expr = e })) {} } diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index bfc2647bd96..feff8aa84dd 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -2826,6 +2826,25 @@ void PrintActualArguments(List args, string name, Bpl.IToken/*?*/ at wr.Write(")"); } + void PrintActualArguments(List args, string name, Bpl.IToken/*?*/ atLabel) { + Contract.Requires(args != null); + if (name != null && name.EndsWith("#")) { + Contract.Assert(atLabel == null); + wr.Write("["); + if (args[0].Inout) { + wr.Write("inout "); + } + PrintExpression(args[0].Expr, false); + wr.Write("]"); + args = new List(args.Skip(1)); + } else if (atLabel != null) { + wr.Write($"@{atLabel.val}"); + } + wr.Write("("); + PrintExpressionList(args, false); + wr.Write(")"); + } + void PrintActualArguments(List args, string name) { Contract.Requires(args != null); if (name != null && name.EndsWith("#")) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 75a6088b593..f868db2e435 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7846,7 +7846,7 @@ protected override bool VisitOneStmt(Statement stmt, ref bool inGhostContext) { Visit(s.Receiver, inGhostContext); Contract.Assert(s.Args.Count == s.Method.Ins.Count); for (var i = 0; i < s.Method.Ins.Count; i++) { - Visit(s.Args[i], inGhostContext || s.Method.Ins[i].IsGhost); + Visit(s.Args[i].Expr, inGhostContext || s.Method.Ins[i].IsGhost); } return false; } else if (stmt is ForallStmt) { @@ -8408,6 +8408,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } else if (stmt is AssignStmt) { var s = (AssignStmt)stmt; var lhs = s.Lhs.Resolved; + var isAutoGhost = AssignStmt.LhsIsToGhostOrAutoGhost(lhs); // Make an auto-ghost variable a ghost if the RHS is a ghost if (lhs.Resolved is AutoGhostIdentifierExpr && s.Rhs is ExprRhs) { @@ -8471,46 +8472,48 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable ((lhs as AutoGhostIdentifierExpr).Var as LocalVariable).MakeGhost(); madeGhost = true; } + } - if (!AssignStmt.LhsIsToGhost(lhs)) { + // REVIEW: From Dafny official. Still needed or superceded by checks below? + if (!AssignStmt.LhsIsToGhost(lhs)) { resolver.CheckIsCompilable(rhs.Expr); - } + } + + if (!madeGhost && !assumeRhsCompilable) { + resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + } - if (!madeGhost && !assumeRhsCompilable) { - resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + if (x != null && x.Var.IsLinear) { + // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? + if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { + Error(x, "variable must be unavailable before assignment"); } - if (x != null && x.Var.IsLinear) { - // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? - if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { - Error(x, "variable must be unavailable before assignment"); - } + usageContext.available[x.Var] = Available.Available; + } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { + Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); + } - usageContext.available[x.Var] = Available.Available; - } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { - Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); + } else if (s.Rhs is HavocRhs) { + // cool + } else { + var rhs = (TypeRhs) s.Rhs; + if (rhs.ArrayDimensions != null) { + rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); + if (rhs.ElementInit != null) { + resolver.CheckIsCompilable(rhs.ElementInit); } - } else if (s.Rhs is HavocRhs) { - // cool - } else { - var rhs = (TypeRhs) s.Rhs; - if (rhs.ArrayDimensions != null) { - rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); - if (rhs.ElementInit != null) { - resolver.CheckIsCompilable(rhs.ElementInit); - } - if (rhs.InitDisplay != null) { - rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); - } + if (rhs.InitDisplay != null) { + rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); } + } - if (rhs.InitCall != null) { - for (var i = 0; i < rhs.InitCall.Args.Count; i++) { - if (!rhs.InitCall.Method.Ins[i].IsGhost) { - resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, - rhs.InitCall.Method.Ins[i].Usage); - } + if (rhs.InitCall != null) { + for (var i = 0; i < rhs.InitCall.Args.Count; i++) { + if (!rhs.InitCall.Method.Ins[i].IsGhost) { + resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, + rhs.InitCall.Method.Ins[i].Usage); } } } @@ -15817,7 +15820,7 @@ void ResolveCasePattern(CasePattern pat, Type sourceType, ICodeContext c if (j < ctor.Formals.Count) { var formal = ctor.Formals[j]; Type st = SubstType(formal.Type, subst); - ResolveCasePattern(arg, st, new CodeContextWrapper(context, context.IsGhost || formal.IsGhost)); + ResolveCasePattern(arg, st, new CodeContextWrapper(context, context.IsGhost || formal.IsGhost), uOuter, formal.Usage); } j++; } @@ -16689,7 +16692,7 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a // do nothing else; error has been reported } else if (callee != null) { // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) - var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args, atLabel)); + var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args), atLabel); // resolve it here: rr.Function = callee; Contract.Assert(!(mse.Obj is StaticReceiverExpr) || callee.IsStatic); // this should have been checked already @@ -18353,7 +18356,7 @@ bool ReplaceOverload(ResolveOpts opts, Expression e, Type t, string overload, Li } if (u != null && !u.IsArrayType) { var f = new NameSegment(e.tok, "operator'" + overload + "?" + u.Name, null); - var apply = new ApplySuffix(e.tok, f, args); + var apply = new ApplySuffix(e.tok, null, f, args); ResolveApplySuffix(apply, opts, false); if (apply.ResolvedExpression != null) { e.PlaceholderReplacement = apply; From e61278bead64d5a715ac9400ff7f721301ce8b53 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 30 Mar 2021 13:14:15 -0700 Subject: [PATCH 381/573] Fix some merge breakages in Resolver for linear checker --- Source/Dafny/Resolver.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f868db2e435..5fecb0e5505 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8475,11 +8475,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } // REVIEW: From Dafny official. Still needed or superceded by checks below? - if (!AssignStmt.LhsIsToGhost(lhs)) { - resolver.CheckIsCompilable(rhs.Expr); - } - - if (!madeGhost && !assumeRhsCompilable) { + if (!AssignStmt.LhsIsToGhost(lhs) || (!madeGhost && !assumeRhsCompilable)) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } @@ -17248,7 +17244,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } if (!lhs.Vars.All(bv => bv.IsGhost) || e.Usage == Usage.Linear) { - CheckIsCompilable(ee); + CheckIsCompilable(ee, usageContext, e.Usage); } i++; } From 012499abc28198cfe6f1eea4de32b81469c0a901 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 30 Mar 2021 15:30:18 -0700 Subject: [PATCH 382/573] Fix some merge breakages in Resolver for linear checker --- Source/Dafny/Resolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5fecb0e5505..2963bbbdf09 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8475,7 +8475,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } // REVIEW: From Dafny official. Still needed or superceded by checks below? - if (!AssignStmt.LhsIsToGhost(lhs) || (!madeGhost && !assumeRhsCompilable)) { + if ((!AssignStmt.LhsIsToGhost(lhs) || !madeGhost) && !assumeRhsCompilable) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } From a087d4bbdd2e69ef64d4ff2344994a0c17881c1a Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 31 Mar 2021 18:15:44 +0200 Subject: [PATCH 383/573] add inout regression test --- Test/c++/inout/regression_inout_call.dfy | 7 +++++++ Test/c++/inout/regression_inout_call.dfy.expect | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 Test/c++/inout/regression_inout_call.dfy create mode 100644 Test/c++/inout/regression_inout_call.dfy.expect diff --git a/Test/c++/inout/regression_inout_call.dfy b/Test/c++/inout/regression_inout_call.dfy new file mode 100644 index 00000000000..349c348985f --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy @@ -0,0 +1,7 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Foo(linear inout s: seq) +method Bar(linear inout s: seq) { + Foo(inout s); +} diff --git a/Test/c++/inout/regression_inout_call.dfy.expect b/Test/c++/inout/regression_inout_call.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors From 56abb22a18636c64f02034552d3c7b37985f233a Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 31 Mar 2021 09:34:16 -0700 Subject: [PATCH 384/573] Fix parsing when using explicit "linear" or "ghost" in pattern cases --- Source/Dafny/Dafny.atg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 7c89ce98ee5..c36fac5914f 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -4113,7 +4113,7 @@ CasePattern<.out CasePattern pat.> usages = new List(); .) [ [ "linear" (. usage = Usage.Linear; .) - | "ghost" (. usage = Usage.Linear; .) + | "ghost" (. usage = Usage.Ghost; .) ] CasePattern (. arguments.Add(pat); usages.Add(usage); .) { "," (. usage = Usage.Ordinary; .) @@ -4166,12 +4166,12 @@ CasePatternLocal<.out CasePattern pat, Usage usage.> .) [ [ "linear" (. u = Usage.Linear; .) - | "ghost" (. u = Usage.Linear; .) + | "ghost" (. u = Usage.Ghost; .) ] CasePatternLocal (. arguments.Add(pat); usages.Add(u); .) { "," (. u = Usage.Ordinary; .) [ "linear" (. u = Usage.Linear; .) - | "ghost" (. u = Usage.Linear; .) + | "ghost" (. u = Usage.Ghost; .) ] CasePatternLocal (. arguments.Add(pat); usages.Add(u); .) } From 3464d3d620ebdc552f48a8650036052936c57f18 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 31 Mar 2021 18:15:44 +0200 Subject: [PATCH 385/573] add inout regression test --- Test/c++/inout/regression_inout_call.dfy | 7 +++++++ Test/c++/inout/regression_inout_call.dfy.expect | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 Test/c++/inout/regression_inout_call.dfy create mode 100644 Test/c++/inout/regression_inout_call.dfy.expect diff --git a/Test/c++/inout/regression_inout_call.dfy b/Test/c++/inout/regression_inout_call.dfy new file mode 100644 index 00000000000..349c348985f --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy @@ -0,0 +1,7 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Foo(linear inout s: seq) +method Bar(linear inout s: seq) { + Foo(inout s); +} diff --git a/Test/c++/inout/regression_inout_call.dfy.expect b/Test/c++/inout/regression_inout_call.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors From ab216bf78e4fbf481781406a21560346de5b2b24 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 13 Apr 2021 13:20:39 +0200 Subject: [PATCH 386/573] fixes #21: linear inout parameter causing crash in dafny --- Source/Dafny/Linear.cs | 10 +++++----- Test/c++/inout/regression_inout_issue_21_crash.dfy | 14 ++++++++++++++ .../regression_inout_issue_21_crash.dfy.expect | 2 ++ 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 Test/c++/inout/regression_inout_issue_21_crash.dfy create mode 100644 Test/c++/inout/regression_inout_issue_21_crash.dfy.expect diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 589257d88df..c31dfd955e5 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -385,17 +385,17 @@ public static void Rewrite(ModuleDefinition module) { method.Outs.RemoveAt(method.Outs.Count - 1); } - var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); + var inoutInArgs = method.Ins.Select((formal, inPos) => new { inPos, formal }).Where(x => x.formal.Inout).Select((x, outPos) => new { inPos = x.inPos, outPos }).ToList(); var inoutArgCount = inoutInArgs.Count; var inoutOutArgs = method.Outs.GetRange(method.Outs.Count - inoutArgCount, inoutArgCount); method.Outs.RemoveRange(method.Outs.Count - inoutArgCount, inoutArgCount); const String oldPrefix = "old_"; - foreach (var i in inoutInArgs) { - var arg = method.Ins[i]; + foreach (var a in inoutInArgs) { + var arg = method.Ins[a.inPos]; Contract.Assert(arg.Name.StartsWith(oldPrefix)); - var inoutArg = inoutOutArgs[i]; + var inoutArg = inoutOutArgs[a.outPos]; inoutArg.Inout = true; - method.Ins[i] = inoutArg; + method.Ins[a.inPos] = inoutArg; } if (inoutArgCount > 0) { method.Req.Clear(); diff --git a/Test/c++/inout/regression_inout_issue_21_crash.dfy b/Test/c++/inout/regression_inout_issue_21_crash.dfy new file mode 100644 index 00000000000..35b565cb77d --- /dev/null +++ b/Test/c++/inout/regression_inout_issue_21_crash.dfy @@ -0,0 +1,14 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +datatype A = A(a: int) +linear datatype B = B(b: int) + +// crashes +method SeqThenLinear(s: seq, linear inout b: B) +{} + +// crashes +method SharedThenLinear(shared b1: B, linear inout b2: B) +{} + diff --git a/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect b/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From d4fa6a12536c8311c1ce7f5c76170b12a54c4661 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 30 Mar 2021 14:39:24 -0400 Subject: [PATCH 387/573] Resolve compilation errors in the merged code --- Source/Dafny/DafnyAst.cs | 8 ++--- Source/Dafny/Printer.cs | 19 +++++++++++ Source/Dafny/Resolver.cs | 71 +++++++++++++++++++++------------------- 3 files changed, 58 insertions(+), 40 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index fe007a60166..fb06013497c 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6340,10 +6340,6 @@ public override bool IsMutable { } } - public void MakeGhost() { - Usage = Usage.Ghost; - } - public BoundVar(IToken tok, string name, Type type, Usage usage = Usage.Ordinary) : base(tok, name, type, usage) { Contract.Requires(tok != null); @@ -12796,8 +12792,8 @@ public ApplySuffix(IToken tok, IToken/*?*/ atLabel, Expression lhs, List args) - : this(tok, lhs, args.ConvertAll(e => new ApplySuffixArg { Inout = false, Expr = e })) + public ApplySuffix(IToken tok, IToken/*?*/ atLabel, Expression lhs, List args) + : this(tok, atLabel, lhs, args.ConvertAll(e => new ApplySuffixArg { Inout = false, Expr = e })) {} } diff --git a/Source/Dafny/Printer.cs b/Source/Dafny/Printer.cs index bfc2647bd96..feff8aa84dd 100644 --- a/Source/Dafny/Printer.cs +++ b/Source/Dafny/Printer.cs @@ -2826,6 +2826,25 @@ void PrintActualArguments(List args, string name, Bpl.IToken/*?*/ at wr.Write(")"); } + void PrintActualArguments(List args, string name, Bpl.IToken/*?*/ atLabel) { + Contract.Requires(args != null); + if (name != null && name.EndsWith("#")) { + Contract.Assert(atLabel == null); + wr.Write("["); + if (args[0].Inout) { + wr.Write("inout "); + } + PrintExpression(args[0].Expr, false); + wr.Write("]"); + args = new List(args.Skip(1)); + } else if (atLabel != null) { + wr.Write($"@{atLabel.val}"); + } + wr.Write("("); + PrintExpressionList(args, false); + wr.Write(")"); + } + void PrintActualArguments(List args, string name) { Contract.Requires(args != null); if (name != null && name.EndsWith("#")) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 75a6088b593..f868db2e435 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -7846,7 +7846,7 @@ protected override bool VisitOneStmt(Statement stmt, ref bool inGhostContext) { Visit(s.Receiver, inGhostContext); Contract.Assert(s.Args.Count == s.Method.Ins.Count); for (var i = 0; i < s.Method.Ins.Count; i++) { - Visit(s.Args[i], inGhostContext || s.Method.Ins[i].IsGhost); + Visit(s.Args[i].Expr, inGhostContext || s.Method.Ins[i].IsGhost); } return false; } else if (stmt is ForallStmt) { @@ -8408,6 +8408,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } else if (stmt is AssignStmt) { var s = (AssignStmt)stmt; var lhs = s.Lhs.Resolved; + var isAutoGhost = AssignStmt.LhsIsToGhostOrAutoGhost(lhs); // Make an auto-ghost variable a ghost if the RHS is a ghost if (lhs.Resolved is AutoGhostIdentifierExpr && s.Rhs is ExprRhs) { @@ -8471,46 +8472,48 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable ((lhs as AutoGhostIdentifierExpr).Var as LocalVariable).MakeGhost(); madeGhost = true; } + } - if (!AssignStmt.LhsIsToGhost(lhs)) { + // REVIEW: From Dafny official. Still needed or superceded by checks below? + if (!AssignStmt.LhsIsToGhost(lhs)) { resolver.CheckIsCompilable(rhs.Expr); - } + } + + if (!madeGhost && !assumeRhsCompilable) { + resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + } - if (!madeGhost && !assumeRhsCompilable) { - resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); + if (x != null && x.Var.IsLinear) { + // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? + if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { + Error(x, "variable must be unavailable before assignment"); } - if (x != null && x.Var.IsLinear) { - // TODO(andrea) with new assignment syntax, use this again to check correct rewriting for inout? - if (usageContext.available[x.Var] != Available.Consumed && !assumeRhsCompilable) { - Error(x, "variable must be unavailable before assignment"); - } + usageContext.available[x.Var] = Available.Available; + } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { + Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); + } - usageContext.available[x.Var] = Available.Available; - } else if (x != null && x.Var.IsShared && usageContext.Borrows()) { - Error(rhs.Expr, "cannot borrow variable because expression returns a shared result"); + } else if (s.Rhs is HavocRhs) { + // cool + } else { + var rhs = (TypeRhs) s.Rhs; + if (rhs.ArrayDimensions != null) { + rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); + if (rhs.ElementInit != null) { + resolver.CheckIsCompilable(rhs.ElementInit); } - } else if (s.Rhs is HavocRhs) { - // cool - } else { - var rhs = (TypeRhs) s.Rhs; - if (rhs.ArrayDimensions != null) { - rhs.ArrayDimensions.ForEach(resolver.CheckIsCompilable); - if (rhs.ElementInit != null) { - resolver.CheckIsCompilable(rhs.ElementInit); - } - if (rhs.InitDisplay != null) { - rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); - } + if (rhs.InitDisplay != null) { + rhs.InitDisplay.ForEach(resolver.CheckIsCompilable); } + } - if (rhs.InitCall != null) { - for (var i = 0; i < rhs.InitCall.Args.Count; i++) { - if (!rhs.InitCall.Method.Ins[i].IsGhost) { - resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, - rhs.InitCall.Method.Ins[i].Usage); - } + if (rhs.InitCall != null) { + for (var i = 0; i < rhs.InitCall.Args.Count; i++) { + if (!rhs.InitCall.Method.Ins[i].IsGhost) { + resolver.CheckIsCompilable(rhs.InitCall.Args[i].Expr, usageContext, + rhs.InitCall.Method.Ins[i].Usage); } } } @@ -15817,7 +15820,7 @@ void ResolveCasePattern(CasePattern pat, Type sourceType, ICodeContext c if (j < ctor.Formals.Count) { var formal = ctor.Formals[j]; Type st = SubstType(formal.Type, subst); - ResolveCasePattern(arg, st, new CodeContextWrapper(context, context.IsGhost || formal.IsGhost)); + ResolveCasePattern(arg, st, new CodeContextWrapper(context, context.IsGhost || formal.IsGhost), uOuter, formal.Usage); } j++; } @@ -16689,7 +16692,7 @@ MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolveOpts opts, bool a // do nothing else; error has been reported } else if (callee != null) { // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) - var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args, atLabel)); + var rr = new FunctionCallExpr(e.Lhs.tok, callee.Name, mse.Obj, e.tok, ApplySuffixArgListToExpressionList(e.Args), atLabel); // resolve it here: rr.Function = callee; Contract.Assert(!(mse.Obj is StaticReceiverExpr) || callee.IsStatic); // this should have been checked already @@ -18353,7 +18356,7 @@ bool ReplaceOverload(ResolveOpts opts, Expression e, Type t, string overload, Li } if (u != null && !u.IsArrayType) { var f = new NameSegment(e.tok, "operator'" + overload + "?" + u.Name, null); - var apply = new ApplySuffix(e.tok, f, args); + var apply = new ApplySuffix(e.tok, null, f, args); ResolveApplySuffix(apply, opts, false); if (apply.ResolvedExpression != null) { e.PlaceholderReplacement = apply; From bdfab950aa5cabb69c7c9c78d4a5000ed2d49073 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 30 Mar 2021 13:14:15 -0700 Subject: [PATCH 388/573] Fix some merge breakages in Resolver for linear checker --- Source/Dafny/Resolver.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f868db2e435..5fecb0e5505 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8475,11 +8475,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } // REVIEW: From Dafny official. Still needed or superceded by checks below? - if (!AssignStmt.LhsIsToGhost(lhs)) { - resolver.CheckIsCompilable(rhs.Expr); - } - - if (!madeGhost && !assumeRhsCompilable) { + if (!AssignStmt.LhsIsToGhost(lhs) || (!madeGhost && !assumeRhsCompilable)) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } @@ -17248,7 +17244,7 @@ Usage CheckIsCompilable(Expression expr, UsageContext usageContext, bool inoutUs } if (!lhs.Vars.All(bv => bv.IsGhost) || e.Usage == Usage.Linear) { - CheckIsCompilable(ee); + CheckIsCompilable(ee, usageContext, e.Usage); } i++; } From 23d593b1e749675e09097088b035ded19dc74448 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 31 Mar 2021 18:15:44 +0200 Subject: [PATCH 389/573] add inout regression test --- Test/c++/inout/regression_inout_call.dfy | 7 +++++++ Test/c++/inout/regression_inout_call.dfy.expect | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 Test/c++/inout/regression_inout_call.dfy create mode 100644 Test/c++/inout/regression_inout_call.dfy.expect diff --git a/Test/c++/inout/regression_inout_call.dfy b/Test/c++/inout/regression_inout_call.dfy new file mode 100644 index 00000000000..349c348985f --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy @@ -0,0 +1,7 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Foo(linear inout s: seq) +method Bar(linear inout s: seq) { + Foo(inout s); +} diff --git a/Test/c++/inout/regression_inout_call.dfy.expect b/Test/c++/inout/regression_inout_call.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/c++/inout/regression_inout_call.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors From a223c17a3f1e4100a0d082506577f23ea5c583f7 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 13 Apr 2021 13:20:39 +0200 Subject: [PATCH 390/573] fixes #21: linear inout parameter causing crash in dafny --- Source/Dafny/Linear.cs | 10 +++++----- Test/c++/inout/regression_inout_issue_21_crash.dfy | 14 ++++++++++++++ .../regression_inout_issue_21_crash.dfy.expect | 2 ++ 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 Test/c++/inout/regression_inout_issue_21_crash.dfy create mode 100644 Test/c++/inout/regression_inout_issue_21_crash.dfy.expect diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index 589257d88df..c31dfd955e5 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -385,17 +385,17 @@ public static void Rewrite(ModuleDefinition module) { method.Outs.RemoveAt(method.Outs.Count - 1); } - var inoutInArgs = method.Ins.Where(x => x.Inout).Select((_, i) => i).ToList(); + var inoutInArgs = method.Ins.Select((formal, inPos) => new { inPos, formal }).Where(x => x.formal.Inout).Select((x, outPos) => new { inPos = x.inPos, outPos }).ToList(); var inoutArgCount = inoutInArgs.Count; var inoutOutArgs = method.Outs.GetRange(method.Outs.Count - inoutArgCount, inoutArgCount); method.Outs.RemoveRange(method.Outs.Count - inoutArgCount, inoutArgCount); const String oldPrefix = "old_"; - foreach (var i in inoutInArgs) { - var arg = method.Ins[i]; + foreach (var a in inoutInArgs) { + var arg = method.Ins[a.inPos]; Contract.Assert(arg.Name.StartsWith(oldPrefix)); - var inoutArg = inoutOutArgs[i]; + var inoutArg = inoutOutArgs[a.outPos]; inoutArg.Inout = true; - method.Ins[i] = inoutArg; + method.Ins[a.inPos] = inoutArg; } if (inoutArgCount > 0) { method.Req.Clear(); diff --git a/Test/c++/inout/regression_inout_issue_21_crash.dfy b/Test/c++/inout/regression_inout_issue_21_crash.dfy new file mode 100644 index 00000000000..35b565cb77d --- /dev/null +++ b/Test/c++/inout/regression_inout_issue_21_crash.dfy @@ -0,0 +1,14 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +datatype A = A(a: int) +linear datatype B = B(b: int) + +// crashes +method SeqThenLinear(s: seq, linear inout b: B) +{} + +// crashes +method SharedThenLinear(shared b1: B, linear inout b2: B) +{} + diff --git a/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect b/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/c++/inout/regression_inout_issue_21_crash.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 247c461ba83668d2b3855577c48ff06f5bf60fd1 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 30 Mar 2021 15:30:18 -0700 Subject: [PATCH 391/573] Fix some merge breakages in Resolver for linear checker --- Source/Dafny/Resolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5fecb0e5505..2963bbbdf09 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -8475,7 +8475,7 @@ public void Visit(Statement stmt, bool mustBeErasable, bool assumeRhsCompilable } // REVIEW: From Dafny official. Still needed or superceded by checks below? - if (!AssignStmt.LhsIsToGhost(lhs) || (!madeGhost && !assumeRhsCompilable)) { + if ((!AssignStmt.LhsIsToGhost(lhs) || !madeGhost) && !assumeRhsCompilable) { resolver.CheckIsCompilable(rhs.Expr, usageContext, expectedUsage); } From 0ca8011c16748e31076a0924ac252631f3f8a903 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 31 Mar 2021 09:34:16 -0700 Subject: [PATCH 392/573] Fix parsing when using explicit "linear" or "ghost" in pattern cases --- Source/Dafny/Dafny.atg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 7c89ce98ee5..c36fac5914f 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -4113,7 +4113,7 @@ CasePattern<.out CasePattern pat.> usages = new List(); .) [ [ "linear" (. usage = Usage.Linear; .) - | "ghost" (. usage = Usage.Linear; .) + | "ghost" (. usage = Usage.Ghost; .) ] CasePattern (. arguments.Add(pat); usages.Add(usage); .) { "," (. usage = Usage.Ordinary; .) @@ -4166,12 +4166,12 @@ CasePatternLocal<.out CasePattern pat, Usage usage.> .) [ [ "linear" (. u = Usage.Linear; .) - | "ghost" (. u = Usage.Linear; .) + | "ghost" (. u = Usage.Ghost; .) ] CasePatternLocal (. arguments.Add(pat); usages.Add(u); .) { "," (. u = Usage.Ordinary; .) [ "linear" (. u = Usage.Linear; .) - | "ghost" (. u = Usage.Linear; .) + | "ghost" (. u = Usage.Ghost; .) ] CasePatternLocal (. arguments.Add(pat); usages.Add(u); .) } From fcb3d6b8d3b6b219e47587a2ceda1466e2671074 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 18 Apr 2021 11:58:57 -0400 Subject: [PATCH 393/573] Modify the parser and AST to accept module's with functor applications. Parsing succeeds on all of our tests. --- Source/Dafny/Dafny.atg | 90 ++++++++++++++++++++++++------ Source/Dafny/DafnyAst.cs | 55 +++++++++++++++++- Test/modules/ModuleApplication.dfy | 46 +++++++++++++++ Test/modules/Resolve.dfy | 36 ++++++++++++ Test/modules/Resolve2.dfy | 53 ++++++++++++++++++ Test/modules/Resolve3.dfy | 28 ++++++++++ Test/modules/ResolveBadRefine.dfy | 34 +++++++++++ 7 files changed, 322 insertions(+), 20 deletions(-) create mode 100644 Test/modules/ModuleApplication.dfy create mode 100644 Test/modules/Resolve.dfy create mode 100644 Test/modules/Resolve2.dfy create mode 100644 Test/modules/Resolve3.dfy create mode 100644 Test/modules/ResolveBadRefine.dfy diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 7e65c4c65e6..00f979814b3 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -987,25 +987,28 @@ ModuleDefinition(); List namedModuleDefaultClassMembers = new List();; - List idQualified = null; - List idRefined = null; + ModuleQualifiedId idRefined = null; ModuleDefinition module; submodule = null; // appease compiler bool isAbstract = dmod.IsAbstract; CheckDeclModifiers(dmod, "module", AllowedDeclModifiers.Abstract); + List formals = new List(); .) { Attribute } - ModuleQualifiedName - (. id = idQualified[idQualified.Count-1]; - prefixIds = idQualified.GetRange(0,idQualified.Count-1); - .) - + NoUSIdent /* We disallow prefix IDs. It adds unnecessary complexity. */ + [ ModuleFormals ] [ "refines" ModuleQualifiedName | Ident (. SemErr(la, $"expected either a '{{' or a 'refines' keyword here, found {iderr.val}"); .) ] - (. module = new ModuleDefinition(id, id.val, prefixIds, isAbstract, false, - idRefined == null ? null : new ModuleQualifiedId(idRefined), parent, attrs, - false, theVerifyThisFile, theCompileThisFile); + (. if (formals.Count == 0) { + module = new ModuleDefinition(id, id.val, prefixIds, isAbstract, false, + idRefined, parent, attrs, + false, theVerifyThisFile, theCompileThisFile); + } else { + module = new Functor(id, id.val, prefixIds, isAbstract, false, + idRefined, parent, attrs, + false, theVerifyThisFile, theCompileThisFile, formals); + } .) SYNC "{" (. module.BodyStartTok = t; .) @@ -1031,18 +1034,18 @@ ModuleImport ( IF(lookAhead == _singleeq) ModuleName "=" - QualifiedModuleExport - (. submodule = new AliasModuleDecl(new ModuleQualifiedId(idPath), + ModuleQualifiedName + (. submodule = new AliasModuleDecl(qID, id, parent, opened, idExports); .) | IF(lookAhead == _colon) ModuleName ":" - QualifiedModuleExport - (. submodule = new AbstractModuleDecl(new ModuleQualifiedId(idPath), + ModuleQualifiedName + (. submodule = new AbstractModuleDecl(qID, id, parent, opened, idExports); .) | QualifiedModuleExport - (. submodule = new AliasModuleDecl(new ModuleQualifiedId(idPath), + (. submodule = new AliasModuleDecl(new ModuleQualifiedId(idPath), idPath[idPath.Count-1], parent, opened, idExports); .) ) @@ -1108,21 +1111,72 @@ ExportSignature .) . +/*------------------------------------------------------------------------*/ + +ModuleFormal<.List formals.> += (. + IToken id; + ModuleQualifiedId type; + .) + + ( NoUSIdent ":" ModuleQualifiedName ) + (. formals.Add(new ModuleFormal(id, type)); .) + . + +ModuleFormals<.List formals.> += ( "(" ModuleFormal + { "," ModuleFormal } + ")" + ) . + +/*------------------------------------------------------------------------*/ +// A(B, C, D) +FunctorApplication += (. + IToken id = null; + ModuleQualifiedId param = null; + List moduleParams = new List(); + .) + ( + NoUSIdent + [ "(" ModuleQualifiedName (. moduleParams.Add(param); .) + { "," ModuleQualifiedName (. moduleParams.Add(param); .) } + ")" + ] + (. funcapp = new FunctorApplication(id, moduleParams); .) + ). + /*------------------------------------------------------------------------*/ ModuleName = NoUSIdent . -ModuleQualifiedName<.out List ids.> +ModuleQualifiedName<.out ModuleQualifiedId qID.> += (. IToken id; List ids = new List(); + .) + FunctorApplication + { "." ModuleName (. ids.Add(id); .) } + (. + if (funcapp.moduleParams.Count == 0) { + // No actual application here + ids.Insert(0, funcapp.tok); + funcapp = null; + } + qID = new ModuleQualifiedId(funcapp, ids); + .) + . + +/*------------------------------------------------------------------------*/ +QualifiedModuleId<.out List ids.> = (. IToken id; ids = new List(); .) ModuleName (. ids.Add(id); .) { "." ModuleName (. ids.Add(id); .) } . -/*------------------------------------------------------------------------*/ + QualifiedModuleExport<.out List idPath, out List exports.> = (. exports = new List(); .) - ModuleQualifiedName + QualifiedModuleId [ "`" ModuleExportSuffix ] . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 7d4b2428fde..c3cde6313ab 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4019,19 +4019,43 @@ public bool FindImport(string name, out ModuleDecl decl) { } } + public class FunctorApplication { + public readonly IToken tok; // Functor name + public readonly List moduleParams; // Functor args + + public FunctorApplication(IToken tok, List moduleParams) { + this.tok = tok; + this.moduleParams = moduleParams; + } + + public override string ToString() { + string result = tok.val; + if (moduleParams.Count > 0) { + result += "(" + Util.Comma(", ", moduleParams, exp => exp.ToString()) + ")"; + } + return result; + } + } + public class ModuleQualifiedId { - public readonly List Path; // Path != null && Path.Count > 0 + public readonly FunctorApplication Functor = null; + public readonly List Path; // Functor = null ==> Path != null && Path.Count > 0 public ModuleQualifiedId(List path) { Contract.Assert(path != null && path.Count > 0); this.Path = path; // note that the list is aliased -- not to be modified after construction } + public ModuleQualifiedId(FunctorApplication functor, List path) { + this.Functor = functor; + this.Path = path; + } + // Creates a clone, including a copy of the list; // if the argument is true, resolution information is included public ModuleQualifiedId Clone(bool includeResInfo) { List newlist = new List(Path); - ModuleQualifiedId cl = new ModuleQualifiedId(newlist); + ModuleQualifiedId cl = new ModuleQualifiedId(this.Functor, newlist); if (includeResInfo) { cl.Root = this.Root; cl.Decl = this.Decl; @@ -4388,6 +4412,33 @@ public bool IsEssentiallyEmptyModuleBody() { } } + public class ModuleFormal + { + public readonly IToken Name; + public readonly ModuleQualifiedId Type; + public readonly ModuleDefinition Parent; + //public ModuleDefinition ModDef = null; + + public ModuleFormal(IToken name, ModuleQualifiedId type) { + this.Name = name; + this.Type = type; + this.Parent = null; + } + } + + public class Functor : ModuleDefinition + { + public List Formals; + + public Functor(IToken tok, string name, List prefixIds, bool isAbstract, bool isFacade, + ModuleQualifiedId refinementQId, ModuleDefinition parent, Attributes attributes, bool isBuiltinName, + bool isToBeVerified, bool isToBeCompiled, List formals) : + base(tok, name, prefixIds, isAbstract, isFacade, refinementQId, parent, attributes, isBuiltinName, + isToBeVerified, isToBeCompiled) { + this.Formals = formals; + } + } + public class DefaultModuleDecl : ModuleDefinition { public DefaultModuleDecl() : base(Token.NoToken, "_module", new List(), false, false, null, null, null, true, true, true) { diff --git a/Test/modules/ModuleApplication.dfy b/Test/modules/ModuleApplication.dfy new file mode 100644 index 00000000000..a3b95693637 --- /dev/null +++ b/Test/modules/ModuleApplication.dfy @@ -0,0 +1,46 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module ABase { + type Key +} + +module InnocentA refines ABase { + type Key = int +} + +module SinisterA refines ABase { + type Key = bool +} + +abstract module P(A: ABase) { +} + +abstract module MissingParameter { + import P // Fails with: P expects 1 arguments +} + +abstract module B_good { + import P1 = P(InnocentA) + import P2 = P(InnocentA) + lemma foo(a: P1.A.Key, b: P2.A.Key) + ensures a == b // succeeds, as it should + { } +} + +abstract module B_bad_compare_to_abstract { + module Q refines ABase { } + import P1 = P(InnocentA) + lemma foo(a: Q.Key, b: P1.A.Key) + ensures a == b // Fails with: not-comparable types: Q.Key, P1.A.Key + { } +} + +abstract module B_bad { + import P1 = P(InnocentA) + import P2 = P(SinisterA) + lemma foo(a: P1.A.Key, b: P2.A.Key) + ensures a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key + { } +} + diff --git a/Test/modules/Resolve.dfy b/Test/modules/Resolve.dfy new file mode 100644 index 00000000000..4680efece84 --- /dev/null +++ b/Test/modules/Resolve.dfy @@ -0,0 +1,36 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module A { + datatype T = T +} + +module B refines A { +} + +abstract module C(a: A) { +} + +module D(a: A) refines C(a) { +} + +abstract module E(c: C) { +} + +abstract module F(e: E) { +} + +module G(a: A) refines E(C(a)) { +} + +abstract module H(a: A) refines F(G(a)) { + import X = a + import Y = e.c.a + import Z = G(a).a + import W = G(a).c.a + + lemma types_eq(x: X.T, y: Y.T, z: Z.T, w: W.T) + requires x == y == z == w + { + } +} diff --git a/Test/modules/Resolve2.dfy b/Test/modules/Resolve2.dfy new file mode 100644 index 00000000000..b38016e8e2d --- /dev/null +++ b/Test/modules/Resolve2.dfy @@ -0,0 +1,53 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module TotalOrder { + type K(==,!new) + predicate lt(a: K, b: K) +} + +module IntTotalOrder refines TotalOrder { + type K = int + + predicate lt(a: K, b: K) + { + a < b + } +} + +abstract module SortUtil(T: TotalOrder) { + predicate IsStrictlySorted(s: seq) + { + forall i, j | 0 <= i < j < |s| :: T.lt(s[i], s[j]) + } +} + +abstract module SortMethodUtil(T: TotalOrder) { + import S = SortUtil(T) + + method m(x: seq) returns (y: seq) + ensures S.IsStrictlySorted(y) + { + assume false; + } +} + +abstract module Stuff { + import T = IntTotalOrder + import W = SortMethodUtil(IntTotalOrder).S.T + + lemma same_types(x: T.K, y: W.K) + requires x == y == 0 + { + } +} + +abstract module ParameterizedStuff(T: TotalOrder) { + import W = SortMethodUtil(T).S.T + + lemma same_types(x: T.K, y: W.K) + requires x == y + { + } +} + diff --git a/Test/modules/Resolve3.dfy b/Test/modules/Resolve3.dfy new file mode 100644 index 00000000000..e0ca0f9ee47 --- /dev/null +++ b/Test/modules/Resolve3.dfy @@ -0,0 +1,28 @@ +abstract module L { +} + +abstract module U(l: L) { +} + +abstract module A(u: U(L)) { + import E = u.l +} + +module W(x: L) refines U(x) { +} + +module B(r: L) { + import D = W(r) +} + +module C refines L { + function the_int() : int { 5 } +} + +abstract module Stuff { + // This should resolve to C + import X = A(B(C).D).E + + lemma stuff() + ensures X.the_int() == 5 +} diff --git a/Test/modules/ResolveBadRefine.dfy b/Test/modules/ResolveBadRefine.dfy new file mode 100644 index 00000000000..91c0affbb6e --- /dev/null +++ b/Test/modules/ResolveBadRefine.dfy @@ -0,0 +1,34 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module TotalOrder { + type K(==,!new) +} + +abstract module IntTotalOrder refines TotalOrder { + type K = int +} + +abstract module MoreIntTotalOrder refines IntTotalOrder { + type B = bool +} + +abstract module AnyTotalOrderWillDo(T: TotalOrder) { +} + +abstract module IntOnly(I: IntTotalOrder) { +} + +abstract module Stuff { + import I = IntTotalOrder + import W = AnyTotalOrderWillDo(IntTotalOrder).T // This is okay + import X = IntOnly(I) // This is okay + import T = TotalOrder + import Z = IntOnly(T).I // This is not okay! + + import Y = AnyTotalOrderWillDo(MoreIntTotalOrder).T // This is okay + import Q = IntOnly(MoreIntTotalOrder) // This is okay + +} + + From 1b7ef243364cae93a8429d23a9c7f617d8fdef74 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 18 Apr 2021 13:09:00 -0400 Subject: [PATCH 394/573] Add some additional fields to keep track of resolved data. --- Source/Dafny/Dafny.atg | 10 ++++---- Source/Dafny/DafnyAst.cs | 53 ++++++++++++++++++++++++++++++++-------- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 00f979814b3..6670dbd18ae 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1135,15 +1135,15 @@ FunctorApplication = (. IToken id = null; ModuleQualifiedId param = null; - List moduleParams = new List(); + List moduleParamNames = new List(); .) ( NoUSIdent - [ "(" ModuleQualifiedName (. moduleParams.Add(param); .) - { "," ModuleQualifiedName (. moduleParams.Add(param); .) } + [ "(" ModuleQualifiedName (. moduleParamNames.Add(param); .) + { "," ModuleQualifiedName (. moduleParamNames.Add(param); .) } ")" ] - (. funcapp = new FunctorApplication(id, moduleParams); .) + (. funcapp = new FunctorApplication(id, moduleParamNames); .) ). /*------------------------------------------------------------------------*/ @@ -1155,7 +1155,7 @@ ModuleQualifiedName<.out ModuleQualifiedId qID.> FunctorApplication { "." ModuleName (. ids.Add(id); .) } (. - if (funcapp.moduleParams.Count == 0) { + if (funcapp.moduleParamNames.Count == 0) { // No actual application here ids.Insert(0, funcapp.tok); funcapp = null; diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index c3cde6313ab..8b3fa8a97ed 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4020,12 +4020,15 @@ public bool FindImport(string name, out ModuleDecl decl) { } public class FunctorApplication { - public readonly IToken tok; // Functor name - public readonly List moduleParams; // Functor args + public readonly IToken tok; // Functor name + public readonly List moduleParamNames; // Functor arg names (not yet resolved into actual module arguments) - public FunctorApplication(IToken tok, List moduleParams) { + public Functor functor; // Actual functor being applied. Filled in during resolution + public List moduleParams; // Actual module arguments to the functor. Filled in during resolution + + public FunctorApplication(IToken tok, List moduleParamNames) { this.tok = tok; - this.moduleParams = moduleParams; + this.moduleParamNames = moduleParamNames; } public override string ToString() { @@ -4035,6 +4038,27 @@ public override string ToString() { } return result; } + + public override bool Equals(object obj) { + if (obj is FunctorApplication fa) { + if (!functor.Equals(fa.functor)) { + return moduleParams.SequenceEqual(fa.moduleParams); + } else { + return false; + } + } else { + return false; + } + } + + public override int GetHashCode() { + var hash = new HashCode(); + hash.Add(functor.GetHashCode()); + foreach (var param in moduleParams) { + hash.Add(param.GetHashCode()); + } + return hash.ToHashCode(); + } } public class ModuleQualifiedId { @@ -4067,11 +4091,19 @@ public ModuleQualifiedId Clone(bool includeResInfo) { } public string rootName() { - return Path[0].val; + if (Functor != null) { + return Functor.ToString(); + } else { + return Path[0].val; + } } public IToken rootToken() { - return Path[0]; + if (Functor != null) { + return Functor.tok; + } else { + return Path[0]; + } } override public string ToString() { @@ -4104,7 +4136,7 @@ public void Set(ModuleDecl m) { // as it is needed to determine dependency relationships. // Then later the rest of the path is resolved, at which point all of the // ids in the path have been fully resolved - // Note also that the resolution of the root depends on the syntactice location + // Note also that the resolution of the root depends on the syntactic location // of the qualified id; the resolution of subsequent ids depends on the // default export set of the previous id. public ModuleDecl Root; // the module corresponding to Path[0].val @@ -4415,13 +4447,14 @@ public bool IsEssentiallyEmptyModuleBody() { public class ModuleFormal { public readonly IToken Name; - public readonly ModuleQualifiedId Type; - public readonly ModuleDefinition Parent; + public readonly ModuleQualifiedId TypeName; // The non-canonical (b/c it uses strings) name for this module "type" + public Functor Parent; // Functor that declares this formal. Filled in during resolution + public ModuleDefinition TypeDef; // The actual module "type" of the formal. Filled in during resolution //public ModuleDefinition ModDef = null; public ModuleFormal(IToken name, ModuleQualifiedId type) { this.Name = name; - this.Type = type; + this.TypeName = type; this.Parent = null; } } From 2ad2ed39a43079565bff0f0ecf7837186b9d0525 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 19 Apr 2021 09:57:30 -0400 Subject: [PATCH 395/573] Better naming --- Source/Dafny/DafnyAst.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 8b3fa8a97ed..02efc123dbf 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4023,7 +4023,7 @@ public class FunctorApplication { public readonly IToken tok; // Functor name public readonly List moduleParamNames; // Functor arg names (not yet resolved into actual module arguments) - public Functor functor; // Actual functor being applied. Filled in during resolution + public Functor functor = null; // Actual functor being applied. Filled in during resolution public List moduleParams; // Actual module arguments to the functor. Filled in during resolution public FunctorApplication(IToken tok, List moduleParamNames) { @@ -4062,7 +4062,7 @@ public override int GetHashCode() { } public class ModuleQualifiedId { - public readonly FunctorApplication Functor = null; + public readonly FunctorApplication FunctorApp = null; public readonly List Path; // Functor = null ==> Path != null && Path.Count > 0 public ModuleQualifiedId(List path) { @@ -4071,7 +4071,7 @@ public ModuleQualifiedId(List path) { } public ModuleQualifiedId(FunctorApplication functor, List path) { - this.Functor = functor; + this.FunctorApp = functor; this.Path = path; } From a3f24370edc784ea5ae954a723d5ff6cc6f07ef8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 19 Apr 2021 13:19:28 -0400 Subject: [PATCH 396/573] Temporary work on Resolver. Some of it needs to be rolled back. --- Source/Dafny/Resolver.cs | 63 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e371b86dd3b..31f9705ae59 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -22,6 +22,9 @@ public class Resolver { ErrorReporter reporter; ModuleSignature moduleInfo = null; + private Dictionary virtualModules = + new Dictionary(); + private bool RevealedInScope(Declaration d) { Contract.Requires(d != null); Contract.Requires(moduleInfo != null); @@ -1557,13 +1560,47 @@ private void BindModuleName_LiteralModuleDecl(LiteralModuleDecl litmod, } } + // TODO: This should take the graph as input and recursively add dependencies on the + // functors and arguments that it finds. We'll only resolve the functors' + // definitions at this time, not the result of applying the functor, + // since we're not yet far enough into resolution to have all of the necessary info. + // That means no reading/writing to this.virtualModules private bool ResolveQualifiedModuleIdRootRefines(ModuleDefinition context, ModuleBindings bindings, ModuleQualifiedId qid, out ModuleDecl result) { Contract.Assert(qid != null); - IToken root = qid.Path[0]; - result = null; - bool res = bindings.TryLookupFilter(root, out result, m => m.EnclosingModuleDefinition != context); - qid.Root = result; + if (qid.FunctorApp != null) { + if (qid.FunctorApp.functor == null) { + // Find the definition of this functor + ModuleDecl functorDecl = null; + bool res = bindings.TryLookupFilter(qid.FunctorApp.tok.val, out functorDecl, m => m.EnclosingModuleDefinition != context); + if (!res) { + return false; + } + + if (functorDecl is LiteralModuleDecl lmd && (lmd.ModuleDef is Functor f))) { + qid.FunctorApp.functor = f; + } else { + reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", qid.FunctorApp.tok.val); + } + + // Fill in the module params + qid.FunctorApp.moduleParams = new List(); + foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { + ModuleDecl moduleParamDecl; + bool res = ResolveQualifiedModuleIdRootRefines(context, bindings, id, out moduleParamDecl); + qid.FunctorApp.moduleParams.Add(); + } + + // Compute (and cache) the result of doing the functor application + } + qid.Root = this.virtualModules[qid.FunctorApp]; + } else { + IToken root = qid.Path[0]; + result = null; + bool res = bindings.TryLookupFilter(root, out result, m => m.EnclosingModuleDefinition != context); + qid.Root = result; + } + return res; } @@ -1611,6 +1648,24 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, } } + if (m is Functor f) { + foreach (ModuleFormal formal in f.Formals) { + // Might as well fill in parent information while we're here + formal.Parent = f; + + // Now add the formal's type as a dependency + ModuleDecl other = null; + bool res = ResolveQualifiedModuleIdRootRefines(((LiteralModuleDecl)decl).ModuleDef, bindings, formal.TypeName, out other); + if (!res) { + reporter.Error(MessageSource.Resolver, formal.TypeName.rootToken(), + $"module {formal.TypeName.ToString()} named as formal type does not exist"); + } else { + Contract.Assert(other != null); // follows from postcondition of TryGetValue + dependencies.AddEdge(decl, other); + } + } + } + foreach (var toplevel in m.TopLevelDecls) { if (toplevel is ModuleDecl) { var d = (ModuleDecl)toplevel; From fd638bd2dbde67a4cad1d4bd9ba9612caf4997b2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 19 Apr 2021 22:09:56 -0400 Subject: [PATCH 397/573] With some clean up, very simple functor definition test runs without crashing. --- Source/Dafny/DafnyAst.cs | 10 +++--- Source/Dafny/Resolver.cs | 69 ++++++++++++++++++++++------------------ Test/modules/Simple.dfy | 39 +++++++++++++++++++++++ 3 files changed, 82 insertions(+), 36 deletions(-) create mode 100644 Test/modules/Simple.dfy diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 02efc123dbf..c370248252f 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4079,7 +4079,7 @@ public ModuleQualifiedId(FunctorApplication functor, List path) { // if the argument is true, resolution information is included public ModuleQualifiedId Clone(bool includeResInfo) { List newlist = new List(Path); - ModuleQualifiedId cl = new ModuleQualifiedId(this.Functor, newlist); + ModuleQualifiedId cl = new ModuleQualifiedId(this.FunctorApp, newlist); if (includeResInfo) { cl.Root = this.Root; cl.Decl = this.Decl; @@ -4091,16 +4091,16 @@ public ModuleQualifiedId Clone(bool includeResInfo) { } public string rootName() { - if (Functor != null) { - return Functor.ToString(); + if (FunctorApp != null) { + return FunctorApp.ToString(); } else { return Path[0].val; } } public IToken rootToken() { - if (Functor != null) { - return Functor.tok; + if (FunctorApp != null) { + return FunctorApp.tok; } else { return Path[0]; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 31f9705ae59..e2f276ea03e 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1560,48 +1560,53 @@ private void BindModuleName_LiteralModuleDecl(LiteralModuleDecl litmod, } } - // TODO: This should take the graph as input and recursively add dependencies on the - // functors and arguments that it finds. We'll only resolve the functors' - // definitions at this time, not the result of applying the functor, - // since we're not yet far enough into resolution to have all of the necessary info. - // That means no reading/writing to this.virtualModules - private bool ResolveQualifiedModuleIdRootRefines(ModuleDefinition context, ModuleBindings bindings, ModuleQualifiedId qid, + private bool ResolveQualifiedModuleIdRootRefines(Graph dependencies, ModuleDecl source, ModuleDefinition context, ModuleBindings bindings, ModuleQualifiedId qid, out ModuleDecl result) { Contract.Assert(qid != null); + result = null; if (qid.FunctorApp != null) { - if (qid.FunctorApp.functor == null) { - // Find the definition of this functor - ModuleDecl functorDecl = null; - bool res = bindings.TryLookupFilter(qid.FunctorApp.tok.val, out functorDecl, m => m.EnclosingModuleDefinition != context); - if (!res) { - return false; - } - if (functorDecl is LiteralModuleDecl lmd && (lmd.ModuleDef is Functor f))) { - qid.FunctorApp.functor = f; - } else { - reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", qid.FunctorApp.tok.val); - } + // Find the definition of this functor. It should exist at this point, + // since functors are always LiteralModuleDecls; i.e., there are no virtual functors + ModuleDecl functorDecl = null; + bool res = bindings.TryLookupFilter(qid.FunctorApp.tok, out functorDecl, m => m.EnclosingModuleDefinition != context); + if (!res) { + result = null; + return false; + } - // Fill in the module params - qid.FunctorApp.moduleParams = new List(); - foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { - ModuleDecl moduleParamDecl; - bool res = ResolveQualifiedModuleIdRootRefines(context, bindings, id, out moduleParamDecl); - qid.FunctorApp.moduleParams.Add(); - } + if (functorDecl is LiteralModuleDecl lmd && (lmd.ModuleDef is Functor f)) { + qid.FunctorApp.functor = f; + // Caller will take care of adding the dependency for functorDecl, since we return it via result + result = functorDecl; + } else { + reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", qid.FunctorApp.tok.val); + return false; + } - // Compute (and cache) the result of doing the functor application + // Fill in the module params + qid.FunctorApp.moduleParams = new List(); + foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { + ModuleDecl moduleParamDecl; + res = ResolveQualifiedModuleIdRootRefines(dependencies, source, context, bindings, id, out moduleParamDecl); + if (moduleParamDecl is LiteralModuleDecl ld) { + qid.FunctorApp.moduleParams.Add(ld.ModuleDef); + // We take responsibility for adding edges to arguments + dependencies.AddEdge(source, moduleParamDecl); + } else { + reporter.Error(MessageSource.Resolver, qid.rootToken() , + "Could not resolve module argument to a literal module declaration: {0}", id.ToString()); + return false; + } } - qid.Root = this.virtualModules[qid.FunctorApp]; + return true; } else { IToken root = qid.Path[0]; result = null; bool res = bindings.TryLookupFilter(root, out result, m => m.EnclosingModuleDefinition != context); qid.Root = result; + return res; } - - return res; } // Find a matching module for the root of the QualifiedId, ignoring @@ -1633,9 +1638,10 @@ private bool ResolveQualifiedModuleIdRootAbstract(AbstractModuleDecl context, Mo private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, ModuleBindings bindings, Graph dependencies) { Contract.Assert(decl is LiteralModuleDecl); + Contract.Assert(((LiteralModuleDecl)decl).ModuleDef == m); if (m.RefinementQId != null) { ModuleDecl other; - bool res = ResolveQualifiedModuleIdRootRefines(((LiteralModuleDecl)decl).ModuleDef, bindings, m.RefinementQId, out other); + bool res = ResolveQualifiedModuleIdRootRefines(dependencies, decl, m, bindings, m.RefinementQId, out other); if (!res) { reporter.Error(MessageSource.Resolver, m.RefinementQId.rootToken(), $"module {m.RefinementQId.ToString()} named as refinement base does not exist"); @@ -1649,13 +1655,14 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, } if (m is Functor f) { + // We need to create dependencies on each formal's module type foreach (ModuleFormal formal in f.Formals) { // Might as well fill in parent information while we're here formal.Parent = f; // Now add the formal's type as a dependency ModuleDecl other = null; - bool res = ResolveQualifiedModuleIdRootRefines(((LiteralModuleDecl)decl).ModuleDef, bindings, formal.TypeName, out other); + bool res = ResolveQualifiedModuleIdRootRefines(dependencies, decl, m, bindings, formal.TypeName, out other); if (!res) { reporter.Error(MessageSource.Resolver, formal.TypeName.rootToken(), $"module {formal.TypeName.ToString()} named as formal type does not exist"); diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy new file mode 100644 index 00000000000..36be8b3aa57 --- /dev/null +++ b/Test/modules/Simple.dfy @@ -0,0 +1,39 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module ABase { + type Key +} + +abstract module P(A: ABase) { +} + +/* +abstract module MissingParameter { + import P // Fails with: P expects 1 arguments +} + +abstract module B_good { + import P1 = P(InnocentA) + import P2 = P(InnocentA) + lemma foo(a: P1.A.Key, b: P2.A.Key) + ensures a == b // succeeds, as it should + { } +} + +abstract module B_bad_compare_to_abstract { + module Q refines ABase { } + import P1 = P(InnocentA) + lemma foo(a: Q.Key, b: P1.A.Key) + ensures a == b // Fails with: not-comparable types: Q.Key, P1.A.Key + { } +} + +abstract module B_bad { + import P1 = P(InnocentA) + import P2 = P(SinisterA) + lemma foo(a: P1.A.Key, b: P2.A.Key) + ensures a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key + { } +} +*/ From b1695fa18d76c16968388dfb8137ca4afcae05d0 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 19 Apr 2021 22:29:24 -0400 Subject: [PATCH 398/573] Extend dependency processing to handle imports and abstracts too, factoring out the common steps in each. Simple.dfy passes. --- Source/Dafny/Resolver.cs | 116 ++++++++++++++++++++++----------------- Test/modules/Simple.dfy | 8 +++ 2 files changed, 74 insertions(+), 50 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e2f276ea03e..590eb4dd361 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1560,79 +1560,95 @@ private void BindModuleName_LiteralModuleDecl(LiteralModuleDecl litmod, } } - private bool ResolveQualifiedModuleIdRootRefines(Graph dependencies, ModuleDecl source, ModuleDefinition context, ModuleBindings bindings, ModuleQualifiedId qid, + private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, ModuleDecl source, + Func filter, ModuleBindings bindings, ModuleQualifiedId qid, out ModuleDecl result) { - Contract.Assert(qid != null); - result = null; - if (qid.FunctorApp != null) { + Contract.Assert(qid != null && qid.FunctorApp != null); - // Find the definition of this functor. It should exist at this point, - // since functors are always LiteralModuleDecls; i.e., there are no virtual functors - ModuleDecl functorDecl = null; - bool res = bindings.TryLookupFilter(qid.FunctorApp.tok, out functorDecl, m => m.EnclosingModuleDefinition != context); - if (!res) { - result = null; - return false; - } + // Find the definition of this functor. It should exist at this point, + // since functors are always LiteralModuleDecls; i.e., there are no virtual functors + ModuleDecl functorDecl = null; + bool res = bindings.TryLookupFilter(qid.FunctorApp.tok, out functorDecl, filter); + if (!res) { + result = null; + return false; + } - if (functorDecl is LiteralModuleDecl lmd && (lmd.ModuleDef is Functor f)) { - qid.FunctorApp.functor = f; - // Caller will take care of adding the dependency for functorDecl, since we return it via result - result = functorDecl; + if (functorDecl is LiteralModuleDecl lmd && (lmd.ModuleDef is Functor f)) { + qid.FunctorApp.functor = f; + // Caller will take care of adding the dependency for functorDecl, since we return it via result + result = functorDecl; + } else { + reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", + qid.FunctorApp.tok.val); + result = null; + return false; + } + + // Fill in the module params + qid.FunctorApp.moduleParams = new List(); + foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { + ModuleDecl moduleParamDecl; + res = ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, id, out moduleParamDecl); + if (moduleParamDecl is LiteralModuleDecl ld) { + qid.FunctorApp.moduleParams.Add(ld.ModuleDef); + // We take responsibility for adding edges to arguments + dependencies.AddEdge(source, moduleParamDecl); } else { - reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", qid.FunctorApp.tok.val); + reporter.Error(MessageSource.Resolver, qid.rootToken(), + "Could not resolve module argument to a literal module declaration: {0}", id.ToString()); + result = null; return false; } + } - // Fill in the module params - qid.FunctorApp.moduleParams = new List(); - foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { - ModuleDecl moduleParamDecl; - res = ResolveQualifiedModuleIdRootRefines(dependencies, source, context, bindings, id, out moduleParamDecl); - if (moduleParamDecl is LiteralModuleDecl ld) { - qid.FunctorApp.moduleParams.Add(ld.ModuleDef); - // We take responsibility for adding edges to arguments - dependencies.AddEdge(source, moduleParamDecl); - } else { - reporter.Error(MessageSource.Resolver, qid.rootToken() , - "Could not resolve module argument to a literal module declaration: {0}", id.ToString()); - return false; - } - } - return true; + return true; + } + + private bool ResolveQualifiedModuleIdRoot(Graph dependencies, ModuleDecl source, + Func filter, ModuleBindings bindings, ModuleQualifiedId qid, + out ModuleDecl result) { + if (qid.FunctorApp != null) { + return ResolveQualifiedModuleIdRootFunctor(dependencies, source, filter, bindings, qid, out result); } else { IToken root = qid.Path[0]; result = null; - bool res = bindings.TryLookupFilter(root, out result, m => m.EnclosingModuleDefinition != context); + bool res = bindings.TryLookupFilter(root, out result, filter); qid.Root = result; return res; } } + private bool ResolveQualifiedModuleIdRootRefines(Graph dependencies, ModuleDecl source, ModuleDefinition context, ModuleBindings bindings, ModuleQualifiedId qid, + out ModuleDecl result) { + Contract.Assert(qid != null); + result = null; + Func filter = m => m.EnclosingModuleDefinition != context; + return ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, qid, out result); + } + // Find a matching module for the root of the QualifiedId, ignoring // (a) the module (context) itself and (b) any local imports // The latter is so that if one writes 'import A`E import F = A`F' the second A does not // resolve to the alias produced by the first import - private bool ResolveQualifiedModuleIdRootImport(AliasModuleDecl context, ModuleBindings bindings, ModuleQualifiedId qid, + private bool ResolveQualifiedModuleIdRootImport(Graph dependencies, ModuleDecl source, AliasModuleDecl context, ModuleBindings bindings, ModuleQualifiedId qid, out ModuleDecl result) { Contract.Assert(qid != null); - IToken root = qid.Path[0]; - result = null; - bool res = bindings.TryLookupFilter(root, out result, - m => context != m && ((context.EnclosingModuleDefinition == m.EnclosingModuleDefinition && context.Exports.Count == 0) || m is LiteralModuleDecl)); - qid.Root = result; - return res; + Func filter = m => context != m && + ((context.EnclosingModuleDefinition == m.EnclosingModuleDefinition && + context.Exports.Count == 0) || + m is LiteralModuleDecl); + return ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, qid, out result); } - private bool ResolveQualifiedModuleIdRootAbstract(AbstractModuleDecl context, ModuleBindings bindings, ModuleQualifiedId qid, + private bool ResolveQualifiedModuleIdRootAbstract(Graph dependencies, ModuleDecl source, AbstractModuleDecl context, ModuleBindings bindings, ModuleQualifiedId qid, out ModuleDecl result) { Contract.Assert(qid != null); - IToken root = qid.Path[0]; - result = null; - bool res = bindings.TryLookupFilter(root, out result, - m => context != m && ((context.EnclosingModuleDefinition == m.EnclosingModuleDefinition && context.Exports.Count == 0) || m is LiteralModuleDecl)); - qid.Root = result; - return res; + Func filter = m => + context != m && + ((context.EnclosingModuleDefinition == m.EnclosingModuleDefinition && context.Exports.Count == 0) || + m is LiteralModuleDecl); + return ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, qid, out result); } private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, ModuleBindings bindings, @@ -1697,7 +1713,7 @@ private void ProcessDependencies(ModuleDecl moduleDecl, ModuleBindings bindings, ModuleDecl root; // TryLookupFilter works outward, looking for a match to the filter for // each enclosing module. - if (!ResolveQualifiedModuleIdRootImport(alias, bindings, alias.TargetQId, out root)) { + if (!ResolveQualifiedModuleIdRootImport(dependencies, moduleDecl, alias, bindings, alias.TargetQId, out root)) { // if (!bindings.TryLookupFilter(alias.TargetQId.rootToken(), out root, m => alias != m) reporter.Error(MessageSource.Resolver, alias.tok, ModuleNotFoundErrorMessage(0, alias.TargetQId.Path)); } else { @@ -1706,7 +1722,7 @@ private void ProcessDependencies(ModuleDecl moduleDecl, ModuleBindings bindings, } else if (moduleDecl is AbstractModuleDecl) { var abs = moduleDecl as AbstractModuleDecl; ModuleDecl root; - if (!ResolveQualifiedModuleIdRootAbstract(abs, bindings, abs.QId, out root)) { + if (!ResolveQualifiedModuleIdRootAbstract(dependencies, moduleDecl, abs, bindings, abs.QId, out root)) { //if (!bindings.TryLookupFilter(abs.QId.rootToken(), out root, // m => abs != m && (((abs.EnclosingModuleDefinition == m.EnclosingModuleDefinition) && (abs.Exports.Count == 0)) || m is LiteralModuleDecl))) reporter.Error(MessageSource.Resolver, abs.tok, ModuleNotFoundErrorMessage(0, abs.QId.Path)); diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 36be8b3aa57..6acbecd1cd2 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -8,6 +8,14 @@ module ABase { abstract module P(A: ABase) { } +abstract module B refines P(ABase) { +} + +abstract module C { + import X = P(ABase) +} + + /* abstract module MissingParameter { import P // Fails with: P expects 1 arguments From 2ecbfc919f5d581fd9b347d618dadd6b55ca0a66 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 19 Apr 2021 22:50:00 -0400 Subject: [PATCH 399/573] Fill in the Root and expand test case --- Source/Dafny/Resolver.cs | 1 + Test/modules/Simple.dfy | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 590eb4dd361..296634b6b92 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1578,6 +1578,7 @@ private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, qid.FunctorApp.functor = f; // Caller will take care of adding the dependency for functorDecl, since we return it via result result = functorDecl; + qid.Root = functorDecl; } else { reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, "Attempted to apply non-functor: {0}", qid.FunctorApp.tok.val); diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 6acbecd1cd2..e447097664f 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -8,11 +8,23 @@ module ABase { abstract module P(A: ABase) { } -abstract module B refines P(ABase) { +//abstract module B refines P(ABase) { +//} +// +//abstract module C { +// import X = P(ABase) +//} + +module InnocentA refines ABase { + type Key = int } -abstract module C { - import X = P(ABase) +abstract module B_good { + import P1 = P(InnocentA) + import P2 = P(InnocentA) + lemma foo(a: P1.A.Key, b: P2.A.Key) +// ensures a == b // succeeds, as it should +// { } } @@ -21,14 +33,6 @@ abstract module MissingParameter { import P // Fails with: P expects 1 arguments } -abstract module B_good { - import P1 = P(InnocentA) - import P2 = P(InnocentA) - lemma foo(a: P1.A.Key, b: P2.A.Key) - ensures a == b // succeeds, as it should - { } -} - abstract module B_bad_compare_to_abstract { module Q refines ABase { } import P1 = P(InnocentA) From e78dd71cdd96dd184c769858542c34d9a985c04c Mon Sep 17 00:00:00 2001 From: JackMenandCameron Date: Tue, 20 Apr 2021 13:26:10 -0400 Subject: [PATCH 400/573] Added support for editing linear datatypes with multiple constructors --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/datatypes.dfy | 56 ++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7fa1558a43d..6a122b4b460 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -516,7 +516,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr // This is a recursive destuctor, so return a pointer returnType = String.Format("std::shared_ptr<{0}>", returnType); } - using (var wDtor = ws.NewNamedBlock("{0} dtor_{1}()", returnType, + using (var wDtor = ws.NewNamedBlock("{0}& dtor_{1}()", returnType, arg.CompileName)) { if (dt.IsRecordType) { wDtor.WriteLine("return this.{0};", IdName(arg)); diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index f215cf69564..76981e6b545 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -167,7 +167,63 @@ method CarTest() { c.Free(); } +linear datatype Tree = Leaf(val: bool) | Node(linear left: Tree, linear right: Tree){ + linear method Free(){ + if this.Leaf?{ + linear var Leaf(_) := this; + } else { + linear var Node(left, right) := this; + left.Free(); + right.Free(); + } + } +} + + +method Show(linear shared lineTree: Tree){ + if lineTree.Leaf?{ + var temp := lineTree.val; + print "leaf (", temp, ")"; + } else { + print "node ("; + Show(lineTree.left); + print ", "; + Show(lineTree.right); + print ")"; + } +} + +method Flip(linear inout lineTree: Tree){ + if lineTree.Leaf?{ + if lineTree.val{ + inout lineTree.val := false; + } else { + inout lineTree.val := true; + } + } else { + Flip(inout lineTree.left); + Flip(inout lineTree.right); + } +} + +method TestMultCons(){ + linear var l1 := Leaf(false); + linear var l2 := Leaf(true); + linear var n1 := Node(l1, l2); + linear var l3 := Leaf(false); + linear var l4 := Leaf(true); + linear var n2 := Node(l3, l4); + linear var n3 := Node(n1,n2); + Show(n3); + print "\n"; + Flip(inout n3); + Show(n3); + print "\n"; + n3.Free(); +} + method Main() { + TestMultCons(); var e1 := Example1(22, false); var e2 := Ex2a(42); Callee(e2); From a89bd3431bf7ea9968e08689be3822406960436c Mon Sep 17 00:00:00 2001 From: JackMenandCameron Date: Tue, 20 Apr 2021 13:33:13 -0400 Subject: [PATCH 401/573] Updated datatypes.dfy.expect to reflect new tests --- Test/c++/datatypes.dfy.expect | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Test/c++/datatypes.dfy.expect b/Test/c++/datatypes.dfy.expect index ec681caa598..7aeb492554e 100644 --- a/Test/c++/datatypes.dfy.expect +++ b/Test/c++/datatypes.dfy.expect @@ -1,5 +1,7 @@ -Dafny program verifier finished with 10 verified, 0 errors +Dafny program verifier finished with 18 verified, 0 errors +node (node (leaf (0), leaf (1)), node (leaf (0), leaf (1))) +node (node (leaf (1), leaf (0)), node (leaf (1), leaf (0))) Case A: 42 Case B: 1 This is expected From 7abbc2802a2d2d8401f1ba46c50603ab675b93ec Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 22 Apr 2021 16:52:34 -0400 Subject: [PATCH 402/573] Fix some bit rot in our local C++ files --- Test/c++/LinearExtern.h | 16 ++++++++-------- Test/c++/Makefile | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Test/c++/LinearExtern.h b/Test/c++/LinearExtern.h index 9076adad4a4..3f762611f60 100644 --- a/Test/c++/LinearExtern.h +++ b/Test/c++/LinearExtern.h @@ -21,7 +21,7 @@ template A unwrap(maybe m) { return m.a; } template -maybe give(A a) { +maybe give(A a) { struct maybe m; m.a = a; return m; @@ -29,22 +29,22 @@ maybe give(A a) { template //maybe empty() { return maybe(get_default::call()); } -maybe empty() { +maybe empty() { struct maybe m; return m; // REVIEW: Safe, b/c !has ? -} +} template -Tuple0 discard(maybe m) { (void)m; Tuple0 ret; return ret; } +Tuple0 discard(maybe m) { (void)m; Tuple0 ret; return ret; } } template struct get_default> { - static LinearMaybe::maybe call() { + static LinearMaybe::maybe call() { struct LinearMaybe::maybe m; m.a = get_default::call(); - return m; + return m; } }; @@ -136,8 +136,8 @@ Tuple0 lseq_free_raw(lseq s) { } template -Tuple2, LinearMaybe::maybe> lseq_swap_raw_fun(lseq s1, uint64 i, LinearMaybe::maybe a1) { - Tuple2 ret(s1, s1[i]); +Tuple, LinearMaybe::maybe> lseq_swap_raw_fun(lseq s1, uint64 i, LinearMaybe::maybe a1) { + Tuple ret(s1, s1[i]); s1[i] = a1; return ret; } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 90a0d7af3a3..d6edd9a4879 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -4,10 +4,10 @@ CPPS=$(subst .dfy,.cpp,$(DAFNYS)) DOT_H_S=$(subst .dfy,.h,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY_DIR=../.. -DAFNY=$(DAFNY_DIR)/Binaries/dafny +DAFNY=$(DAFNY_DIR)/Scripts/dafny DAFNY_RUNTIME_DIR=$(DAFNY_DIR)/Binaries DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h -DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) +DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) From 66f6b69f9d71b1bfc5970e91d25b7b67f90c663b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 22 Apr 2021 16:52:45 -0400 Subject: [PATCH 403/573] Fix compilation of templated datatype methods --- Source/Dafny/Compiler-cpp.cs | 4 ++++ Test/c++/datatypes.dfy | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7fa1558a43d..aeb9b81b47f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -737,6 +737,10 @@ public void Finish() { } if (typeArgs.Count != 0) { var formalTypeParameters = TypeArgumentInstantiation.ToFormals(ForTypeParameters(typeArgs, m, lookasideBody)); + // Filter out type parameters we've already emitted at the class level, to avoid shadowing + // the class' template parameter (which C++ treats as an error) + formalTypeParameters = formalTypeParameters.Where(param => + m.EnclosingClass.TypeArgs == null || !m.EnclosingClass.TypeArgs.Contains(param)).ToList(); wdr.WriteLine(DeclareTemplate(formalTypeParameters)); wr.WriteLine(DeclareTemplate(formalTypeParameters)); } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index f215cf69564..77f2a06fb0b 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -167,6 +167,13 @@ method CarTest() { c.Free(); } +// Test generic datatype methods +datatype Foo = Foo(a: A) { + static method Alloc(a: A) returns (f: Foo) { + f := Foo(a); + } +} + method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); @@ -183,3 +190,4 @@ method Main() { var len := IntListLen(Cons(15, Cons(18, Cons(330, Nil)))); print len; } + From 37d7258914640088a4b35bbcb3fb96b6dce71a3c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 22 Apr 2021 17:26:54 -0400 Subject: [PATCH 404/573] Don't emit an extra template argument for templated extern structs --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/extern.dfy | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index aeb9b81b47f..fe48c37436f 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1119,7 +1119,7 @@ protected override string TypeName_Companion(Type type, TextWriter wr, Bpl.IToke // ----- Declarations ------------------------------------------------------------- protected override void DeclareExternType(OpaqueTypeDecl d, Expression compileTypeHint, TargetWriter wr) { if (compileTypeHint.AsStringLiteral() == "struct") { - modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1} {2};", DeclareTemplate(d.TypeArgs), d.Name, InstantiateTemplate(d.TypeArgs)); + modDeclWr.WriteLine("// Extern declaration of {1}\n{0} struct {1};", DeclareTemplate(d.TypeArgs), d.Name); } else if (compileTypeHint.AsStringLiteral() == "predefined") { // This type already exists, so no declaration needed } else { diff --git a/Test/c++/extern.dfy b/Test/c++/extern.dfy index cf78f7c88f7..0f1fcbfecf6 100644 --- a/Test/c++/extern.dfy +++ b/Test/c++/extern.dfy @@ -21,6 +21,10 @@ module {:extern "Extern"} Extern { module TestMod { import opened Extern + + // Test a templated extern declaration + type {:extern "struct"} DestructorFunction + class C { var s:state; From c39a89362bfa8408e1e502a11450e28bb133dcac Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 11:09:26 -0400 Subject: [PATCH 405/573] Fix: Special case the declaration of empty tuples --- Source/Dafny/Compiler-cpp.cs | 6 +++++- Test/c++/ExternDefs.h | 5 +++++ Test/c++/tuple.dfy | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index fe48c37436f..265c904a241 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1601,7 +1601,11 @@ protected override string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ memb } else if (Attributes.Contains(cl.Attributes, "extern")) { return IdProtect(cl.EnclosingModuleDefinition.CompileName) + "::" + IdProtect(cl.Name); } else if (cl is TupleTypeDecl) { - return "Tuple"; + if (udt.TypeArgs.Count > 0) { + return "Tuple"; + } else { + return "Tuple0"; // Need to special case this, as C++ won't infer the correct type arguments + } } else { return IdProtect(cl.EnclosingModuleDefinition.CompileName) + "::" + IdProtect(cl.CompileName); } diff --git a/Test/c++/ExternDefs.h b/Test/c++/ExternDefs.h index da7535fd79f..e2b9b126198 100644 --- a/Test/c++/ExternDefs.h +++ b/Test/c++/ExternDefs.h @@ -35,6 +35,11 @@ namespace Extern { ExternClass2(uint64 x) { (void)x; } }; + Tuple0 NoReturn(bool b) { + Tuple0 t; + (void)b; + return t; + } uint64 Caller(uint64 (*inc)(uint64), uint64 x) { return inc(x); diff --git a/Test/c++/tuple.dfy b/Test/c++/tuple.dfy index 1765ca987b6..7723cc4405f 100644 --- a/Test/c++/tuple.dfy +++ b/Test/c++/tuple.dfy @@ -8,6 +8,16 @@ method ReturnTuple() returns (x:(uint32,uint32)) return (1, 2); } +function method {:extern "Extern", "NoReturn"} NoReturn(b:bool) : () + +function method NoReturnCaller() : () { + NoReturn(true) +} + +function method Test() : (bool, bool) { + (false, true) +} + method Main() { var x := ReturnTuple(); var y := x.0; From 2b6ed303ae371312044fe90b558d5ce9616f0df5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 12:53:37 -0400 Subject: [PATCH 406/573] Fix: Use compile name for get_default type parameter --- Source/Dafny/Compiler-cpp.cs | 4 ++-- Test/c++/generic.dfy | 5 +++++ Test/c++/generic.dfy.expect | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 265c904a241..7a5895f7372 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1021,9 +1021,9 @@ protected override string TypeInitializationValue(Type type, TextWriter wr, Bpl. // Assume the external definition includes a default value return String.Format("{1}::get_{0}_default{2}()", IdProtect(udt.Name), udt.ResolvedClass.EnclosingModuleDefinition.CompileName, InstantiateTemplate(udt.TypeArgs)); } else if (usePlaceboValue && !udt.ResolvedParam.Characteristics.HasCompiledValue) { - return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); + return String.Format("get_default<{0}>::call()", IdProtect(udt.CompileName)); } else { - return String.Format("get_default<{0}>::call()", IdProtect(udt.Name)); + return String.Format("get_default<{0}>::call()", IdProtect(udt.CompileName)); } } var cl = udt.ResolvedClass; diff --git a/Test/c++/generic.dfy b/Test/c++/generic.dfy index 9168f743ff9..a83995728e4 100644 --- a/Test/c++/generic.dfy +++ b/Test/c++/generic.dfy @@ -28,6 +28,11 @@ method ErrTest() returns (e:Err) datatype Option = None | Some(value:V) +method GenericIO(a:A) returns (a':A) +{ + a' := a; +} + method Main() { var t := new Test(true); var u := new UseTest(); diff --git a/Test/c++/generic.dfy.expect b/Test/c++/generic.dfy.expect index ebe2328e072..ba00363fc08 100644 --- a/Test/c++/generic.dfy.expect +++ b/Test/c++/generic.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 2 verified, 0 errors +Dafny program verifier finished with 4 verified, 0 errors From 6fdbc67e9efb61fbea8b04ebe926739f200f52d6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 12:58:47 -0400 Subject: [PATCH 407/573] Fix tuple lit test --- Test/c++/tuple.dfy | 2 +- Test/c++/tuple.dfy.expect | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/c++/tuple.dfy b/Test/c++/tuple.dfy index 7723cc4405f..5260b62dad3 100644 --- a/Test/c++/tuple.dfy +++ b/Test/c++/tuple.dfy @@ -1,4 +1,4 @@ -// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp "%s" > "%t" +// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp ExternDefs.h "%s" > "%t" // RUN: %diff "%s.expect" "%t" newtype uint32 = i:int | 0 <= i < 0x100000000 diff --git a/Test/c++/tuple.dfy.expect b/Test/c++/tuple.dfy.expect index c169db40c9c..d3ba91d195a 100644 --- a/Test/c++/tuple.dfy.expect +++ b/Test/c++/tuple.dfy.expect @@ -1,3 +1,3 @@ -Dafny program verifier finished with 3 verified, 0 errors +Dafny program verifier finished with 4 verified, 0 errors 1 From 70315df86c22493cd9bd03dc711721c5a8a2976d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 13:28:45 -0400 Subject: [PATCH 408/573] Fix: Tuple accessor was previously failing when used on tuples of generic types. The fix is a truly bizarre C++-ism. --- Source/Dafny/Compiler-cpp.cs | 4 ++-- Test/c++/tuple.dfy | 20 ++++++++++++++++++++ Test/c++/tuple.dfy.expect | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 7a5895f7372..6d0b4c86777 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1217,7 +1217,7 @@ protected override void EmitOutParameterSplits(string outCollector, List EmitAssignment(actualOutParamNames[0], null, outCollector, null, wr); } else { for (var i = 0; i < actualOutParamNames.Count; i++) { - wr.WriteLine("{0} = {1}.get<{2}>();", actualOutParamNames[i], outCollector, i); + wr.WriteLine("{0} = {1}.template get<{2}>();", actualOutParamNames[i], outCollector, i); } } } @@ -1914,7 +1914,7 @@ protected override void EmitConstructorCheck(string source, DatatypeCtor ctor, T protected override void EmitDestructor(string source, Formal dtor, int formalNonGhostIndex, DatatypeCtor ctor, List typeArgs, Type bvType, TargetWriter wr) { if (ctor.EnclosingDatatype is TupleTypeDecl) { - wr.Write("({0}).get<{1}>()", source, formalNonGhostIndex); + wr.Write("({0}).template get<{1}>()", source, formalNonGhostIndex); } else { var dtorName = FormalName(dtor, formalNonGhostIndex); if (dtor.Type is UserDefinedType udt && udt.ResolvedClass == ctor.EnclosingDatatype) { diff --git a/Test/c++/tuple.dfy b/Test/c++/tuple.dfy index 5260b62dad3..f5b96766432 100644 --- a/Test/c++/tuple.dfy +++ b/Test/c++/tuple.dfy @@ -18,6 +18,26 @@ function method Test() : (bool, bool) { (false, true) } +method BoolCallee(a:bool) returns (a0:bool, a1:bool) +{ + return a, a; +} + +method BoolCaller(a:bool) +{ + var a0, a1 := BoolCallee(a); +} + +method GenericCallee(a:A) returns (a0:A, a1:A) +{ + return a, a; +} + +method GenericCaller(a:A) +{ + var a0, a1 := GenericCallee(a); +} + method Main() { var x := ReturnTuple(); var y := x.0; diff --git a/Test/c++/tuple.dfy.expect b/Test/c++/tuple.dfy.expect index d3ba91d195a..ad056416a8e 100644 --- a/Test/c++/tuple.dfy.expect +++ b/Test/c++/tuple.dfy.expect @@ -1,3 +1,3 @@ -Dafny program verifier finished with 4 verified, 0 errors +Dafny program verifier finished with 7 verified, 0 errors 1 From 78d03e6b00d1a75e6e7b96b9ab9d9531064c21c9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 13:40:22 -0400 Subject: [PATCH 409/573] Special case the handling of empty tuple values --- Source/Dafny/Compiler-cpp.cs | 7 ++++++- Test/c++/ExternDefs.h | 6 ------ Test/c++/tuple.dfy | 8 +++++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 6d0b4c86777..f868c7bea80 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1633,7 +1633,12 @@ void EmitDatatypeValue(DatatypeValue dtv, DatatypeCtor ctor, bool isCoCall, stri foreach (var arg in dtv.Arguments) { types.Add(arg.Type); } - wr.Write("Tuple{0}({1})", InstantiateTemplate(types), arguments); + + if (types.Count == 0) { + wr.Write("Tuple0()"); + } else { + wr.Write("Tuple{0}({1})", InstantiateTemplate(types), arguments); + } } else if (!isCoCall) { // Ordinary constructor (that is, one that does not guard any co-recursive calls) // Generate: Dt.create_Ctor(arguments) diff --git a/Test/c++/ExternDefs.h b/Test/c++/ExternDefs.h index e2b9b126198..c6ace7ec87e 100644 --- a/Test/c++/ExternDefs.h +++ b/Test/c++/ExternDefs.h @@ -35,12 +35,6 @@ namespace Extern { ExternClass2(uint64 x) { (void)x; } }; - Tuple0 NoReturn(bool b) { - Tuple0 t; - (void)b; - return t; - } - uint64 Caller(uint64 (*inc)(uint64), uint64 x) { return inc(x); } diff --git a/Test/c++/tuple.dfy b/Test/c++/tuple.dfy index f5b96766432..b103c88cf7e 100644 --- a/Test/c++/tuple.dfy +++ b/Test/c++/tuple.dfy @@ -8,10 +8,12 @@ method ReturnTuple() returns (x:(uint32,uint32)) return (1, 2); } -function method {:extern "Extern", "NoReturn"} NoReturn(b:bool) : () +function method EmptyTuple() : () { + () +} -function method NoReturnCaller() : () { - NoReturn(true) +function method GetEmptyTuple() : () { + EmptyTuple() } function method Test() : (bool, bool) { From 545483149848181e33f0bfca4d643c86338d85b9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 16:11:42 -0400 Subject: [PATCH 410/573] Fix: Don't emit type arguments for static method invocations --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/datatypes.dfy | 11 +++++++++++ Test/c++/datatypes.dfy.expect | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index f868c7bea80..800d75df113 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -821,7 +821,7 @@ public void Finish() { } } protected override void TypeArgDescriptorUse(bool isStatic, bool lookasideBody, TopLevelDeclWithMembers cl, out bool needsTypeParameter, out bool needsTypeDescriptor) { - needsTypeParameter = isStatic; + needsTypeParameter = !isStatic; needsTypeDescriptor = false; } diff --git a/Test/c++/datatypes.dfy b/Test/c++/datatypes.dfy index 77f2a06fb0b..77e5061f20e 100644 --- a/Test/c++/datatypes.dfy +++ b/Test/c++/datatypes.dfy @@ -174,6 +174,17 @@ datatype Foo = Foo(a: A) { } } +datatype Test = Test(a:A) | Empty +{ + static method Alloc() returns (t:Test) { + return Empty; + } + + static method Invoke() { + var a := Alloc(); + } +} + method Main() { var e1 := Example1(22, false); var e2 := Ex2a(42); diff --git a/Test/c++/datatypes.dfy.expect b/Test/c++/datatypes.dfy.expect index ec681caa598..03ae83d3953 100644 --- a/Test/c++/datatypes.dfy.expect +++ b/Test/c++/datatypes.dfy.expect @@ -1,5 +1,5 @@ -Dafny program verifier finished with 10 verified, 0 errors +Dafny program verifier finished with 16 verified, 0 errors Case A: 42 Case B: 1 This is expected From 6d062ba1396364d2a89681fd8e8b1a90d5a44dad Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 16:33:32 -0400 Subject: [PATCH 411/573] Fix: Filter typeArgs for functions as well. Turn off typeArgs even for non-static member invocations. --- Source/Dafny/Compiler-cpp.cs | 6 +++++- Test/c++/class.dfy | 1 - Test/c++/class.dfy.expect | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 800d75df113..352019c15fe 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -792,6 +792,10 @@ public void Finish() { } if (typeArgs.Count != 0) { var formalTypeParameters = TypeArgumentInstantiation.ToFormals(ForTypeParameters(typeArgs, member, lookasideBody)); + // Filter out type parameters we've already emitted at the class level, to avoid shadowing + // the class' template parameter (which C++ treats as an error) + formalTypeParameters = formalTypeParameters.Where(param => + !classArgs.Contains(param)).ToList(); wdr.WriteLine(DeclareTemplate(formalTypeParameters)); wr.WriteLine(DeclareTemplate(formalTypeParameters)); } @@ -821,7 +825,7 @@ public void Finish() { } } protected override void TypeArgDescriptorUse(bool isStatic, bool lookasideBody, TopLevelDeclWithMembers cl, out bool needsTypeParameter, out bool needsTypeDescriptor) { - needsTypeParameter = !isStatic; + needsTypeParameter = false; needsTypeDescriptor = false; } diff --git a/Test/c++/class.dfy b/Test/c++/class.dfy index dcacac034a4..6f53d08afd6 100644 --- a/Test/c++/class.dfy +++ b/Test/c++/class.dfy @@ -188,7 +188,6 @@ class GenericClass { } - method Main() { TestMyClass(); TestEquality(); diff --git a/Test/c++/class.dfy.expect b/Test/c++/class.dfy.expect index 08e4339faa8..dee8d3455f7 100644 --- a/Test/c++/class.dfy.expect +++ b/Test/c++/class.dfy.expect @@ -1,5 +1,5 @@ -Dafny program verifier finished with 16 verified, 0 errors +Dafny program verifier finished with 18 verified, 0 errors 1 1 0 103 102 102 106 105 105 203 17 0 18 8 9 69 70 From b06b685a78a6abb9a58d06b8b46c1c1e6e16a2a8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 17:16:56 -0400 Subject: [PATCH 412/573] Fix: Include module name when accessing constants --- Source/Dafny/Compiler-cpp.cs | 2 +- Test/c++/const.dfy | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 Test/c++/const.dfy diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 352019c15fe..321ca1359e6 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1718,7 +1718,7 @@ protected override ILvalue EmitMemberSelect(Action obj, Type objTy // This used to work, but now obj comes in wanting to use TypeName on the class, which results in (std::shared_ptr<_module::MyClass>)::c; //return SuffixLvalue(obj, "::{0}", member.CompileName); return SimpleLvalue(wr => { - wr.Write("{0}::{1}", IdProtect(member.EnclosingClass.CompileName) , IdProtect(member.CompileName)); + wr.Write("{0}::{1}::{2}", IdProtect(member.EnclosingClass.EnclosingModuleDefinition.CompileName), IdProtect(member.EnclosingClass.CompileName) , IdProtect(member.CompileName)); }); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { return SuffixLvalue(obj, ".get<{0}>()", dtor.Name); diff --git a/Test/c++/const.dfy b/Test/c++/const.dfy new file mode 100644 index 00000000000..b28f79cd48c --- /dev/null +++ b/Test/c++/const.dfy @@ -0,0 +1,12 @@ + +module Holder { + const x:bool := false +} + +module User { + import opened Holder + + method Use() { + var b := x; + } +} From bfe96a05152c008ffa17b77c23f6c510f8320a1b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 21:25:31 -0400 Subject: [PATCH 413/573] Simple declaration of a functor and trivial application work (see Simple.dfy). --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 13 ++++++++++++- Test/modules/Simple.dfy | 37 ++++++++++++++++++++++++++----------- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index c370248252f..93e0878c72a 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4180,7 +4180,7 @@ public string FullName { public List Includes; - public readonly List TopLevelDecls = new List(); // filled in by the parser; readonly after that, except for the addition of prefix-named modules, which happens in the resolver + public List TopLevelDecls = new List(); // filled in by the parser; readonly after that, except for the addition of prefix-named modules, which happens in the resolver public readonly List, LiteralModuleDecl>> PrefixNamedModules = new List, LiteralModuleDecl>>(); // filled in by the parser; emptied by the resolver public readonly Graph CallGraph = new Graph(); // filled in during resolution public int Height; // height in the topological sorting of modules; filled in during resolution diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 296634b6b92..17d66cea329 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -459,7 +459,7 @@ public void ResolveProgram(Program prog) { var compilationModuleClones = new Dictionary(); foreach (var decl in sortedDecls) { - if (decl is LiteralModuleDecl) { + if (decl is LiteralModuleDecl lmd) { // The declaration is a literal module, so it has members and such that we need // to resolve. First we do refinement transformation. Then we construct the signature // of the module. This is the public, externally visible signature. Then we add in @@ -1677,6 +1677,16 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, // Might as well fill in parent information while we're here formal.Parent = f; + + // Insert each of the functor's formals as an abstract decl, + // so the normal resolution will take place, and we can later + // update the formals with their actuals + + // REVIEW: What should the "exports" list (final argument) be? + f.TopLevelDecls.Add(new AliasModuleDecl(formal.TypeName, formal.Name, f, opened:false, new List())); + + + /* // Now add the formal's type as a dependency ModuleDecl other = null; bool res = ResolveQualifiedModuleIdRootRefines(dependencies, decl, m, bindings, formal.TypeName, out other); @@ -1687,6 +1697,7 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, Contract.Assert(other != null); // follows from postcondition of TryGetValue dependencies.AddEdge(decl, other); } + */ } } diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index e447097664f..b6914e8451f 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -5,7 +5,22 @@ module ABase { type Key } +abstract module P_normal { + import A : ABase + + method Test(a:A.Key) +} + +// Use an element of a formal parameter +// Morally equivalent to P_normal above abstract module P(A: ABase) { + method Test(a:A.Key) +} + +// Try simple functor application +abstract module Apply { + import Output = P(ABase) + } //abstract module B refines P(ABase) { @@ -15,17 +30,17 @@ abstract module P(A: ABase) { // import X = P(ABase) //} -module InnocentA refines ABase { - type Key = int -} - -abstract module B_good { - import P1 = P(InnocentA) - import P2 = P(InnocentA) - lemma foo(a: P1.A.Key, b: P2.A.Key) -// ensures a == b // succeeds, as it should -// { } -} +//module InnocentA refines ABase { +// type Key = int +//} +// +//abstract module B_good { +// import P1 = P(InnocentA) +// import P2 = P(InnocentA) +// lemma foo(a: P1.A.Key, b: P2.A.Key) +//// ensures a == b // succeeds, as it should +//// { } +//} /* From 7eca3f4d8e9917a0b68fa75b54f35eec405aa7d0 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 23 Apr 2021 22:23:55 -0400 Subject: [PATCH 414/573] Filled in a first approximation at Functor application in ResolveModuleQualifiedId. Need to get a signature for each module actual passed into the FunctorApplication. --- Source/Dafny/Resolver.cs | 78 ++++++++++++++++++++++++++++++++-------- Test/modules/Simple.dfy | 13 ++++--- 2 files changed, 72 insertions(+), 19 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 17d66cea329..c73e4d28ca7 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -22,8 +22,8 @@ public class Resolver { ErrorReporter reporter; ModuleSignature moduleInfo = null; - private Dictionary virtualModules = - new Dictionary(); + private Dictionary virtualModules = + new Dictionary(); private bool RevealedInScope(Declaration d) { Contract.Requires(d != null); @@ -2453,23 +2453,73 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qid, ErrorReporter reporter) { Contract.Requires(qid != null); - Contract.Requires(qid.Path.Count > 0); + Contract.Requires(qid.FunctorApp != null || qid.Path.Count > 0); List Path = qid.Path; ModuleDecl decl = root; - ModuleSignature p; - for (int k = 1; k < Path.Count; k++) { - if (decl is LiteralModuleDecl) { - p = ((LiteralModuleDecl)decl).DefaultExport; - if (p == null) { - reporter.Error(MessageSource.Resolver, Path[k], - ModuleNotFoundErrorMessage(k, Path, $" because {decl.Name} does not have a default export")); - return null; + ModuleSignature p = null; + int k = 1; + + if (qid.FunctorApp != null) { + k = 0; // Starting point in the Path iteration + if (!this.virtualModules.ContainsKey(qid.FunctorApp)) { + // Apply the functor + // 1) Clone the base module definition + // 2) For each formal, update the AliasModuleDecl we introduced + // to point at the actual module parameter + + // 1) + LiteralModuleDecl literalRoot = (LiteralModuleDecl) root; + ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); + ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); + + // 2) + //List staleAliasDecls = new List(); + + foreach (var pair in System.Linq.Enumerable.Zip(qid.FunctorApp.functor.Formals, qid.FunctorApp.moduleParams)) { + ModuleFormal formal = pair.Item1; + ModuleDefinition actual = pair.Item2; + + // Find the artificial alias decl we created, and update it with the actual + foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { + // REVIEW: Is the setting for useImports correct? + amd.Signature = RegisterTopLevelDecls(actual, useImports: true); + // TODO: Need this? + // amd.Signature.Refines = refinementTransformer.RefinedSig; + // or this? + // prog.ModuleSigs[m] = amd.Signature; + } + } } - } else { - p = decl.Signature; + + // 3) Compute the new signature + ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); + this.virtualModules[qid.FunctorApp] = sig; + // TODO: Need this? + // sig.Refines = refinementTransformer.RefinedSig; + // or this? + // prog.ModuleSigs[m] = sig; } + p = this.virtualModules[qid.FunctorApp]; + } + + + for (; k < Path.Count; k++) { + if (!(qid.FunctorApp != null && k == 0)) { + if (decl is LiteralModuleDecl) { + p = ((LiteralModuleDecl) decl).DefaultExport; + if (p == null) { + reporter.Error(MessageSource.Resolver, Path[k], + ModuleNotFoundErrorMessage(k, Path, $" because {decl.Name} does not have a default export")); + return null; + } + } else { + p = decl.Signature; + } + } // else we already computed the initial p when applying the Functor + var tld = p.TopLevels.GetValueOrDefault(Path[k].val, null); if (!(tld is ModuleDecl dd)) { if (decl.Signature.ModuleDef == null) { @@ -2496,7 +2546,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi public bool ResolveExport(ModuleDecl alias, ModuleDefinition parent, ModuleQualifiedId qid, List Exports, out ModuleSignature p, ErrorReporter reporter) { Contract.Requires(qid != null); - Contract.Requires(qid.Path.Count > 0); + Contract.Requires(qid.FunctorApp != null || qid.Path.Count > 0); Contract.Requires(Exports != null); ModuleDecl root = qid.Root; diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index b6914e8451f..96b088fb1d9 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -5,11 +5,11 @@ module ABase { type Key } -abstract module P_normal { - import A : ABase - - method Test(a:A.Key) -} +//abstract module P_normal { +// import A : ABase +// +// method Test(a:A.Key) +//} // Use an element of a formal parameter // Morally equivalent to P_normal above @@ -21,6 +21,9 @@ abstract module P(A: ABase) { abstract module Apply { import Output = P(ABase) + method More(a:Output.Key) { + P.Test(a); + } } //abstract module B refines P(ABase) { From 7e877eb98b4e4a33ae7763e9284c5b2466a77eed Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 24 Apr 2021 14:40:16 -0400 Subject: [PATCH 415/573] We have a reasonably credible functor application at this point, and we run to completion on Simple.dfy, but we hit: Error: module 'Output' does not declare a type 'Key' so more work is needed --- Source/Dafny/DafnyAst.cs | 4 ++-- Source/Dafny/Resolver.cs | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 93e0878c72a..d384b84afb3 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4024,7 +4024,7 @@ public class FunctorApplication { public readonly List moduleParamNames; // Functor arg names (not yet resolved into actual module arguments) public Functor functor = null; // Actual functor being applied. Filled in during resolution - public List moduleParams; // Actual module arguments to the functor. Filled in during resolution + public List moduleParams; // Actual module arguments to the functor. Filled in during resolution public FunctorApplication(IToken tok, List moduleParamNames) { this.tok = tok; @@ -4041,7 +4041,7 @@ public override string ToString() { public override bool Equals(object obj) { if (obj is FunctorApplication fa) { - if (!functor.Equals(fa.functor)) { + if (functor.Equals(fa.functor)) { return moduleParams.SequenceEqual(fa.moduleParams); } else { return false; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index c73e4d28ca7..7c222e66d96 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1587,17 +1587,17 @@ private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, } // Fill in the module params - qid.FunctorApp.moduleParams = new List(); + qid.FunctorApp.moduleParams = new List(); foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { ModuleDecl moduleParamDecl; res = ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, id, out moduleParamDecl); - if (moduleParamDecl is LiteralModuleDecl ld) { - qid.FunctorApp.moduleParams.Add(ld.ModuleDef); + if (res) { + qid.FunctorApp.moduleParams.Add(moduleParamDecl); // We take responsibility for adding edges to arguments dependencies.AddEdge(source, moduleParamDecl); } else { reporter.Error(MessageSource.Resolver, qid.rootToken(), - "Could not resolve module argument to a literal module declaration: {0}", id.ToString()); + "Could not resolve module argument {0} to a valid module declaration", id.ToString()); result = null; return false; } @@ -2474,17 +2474,14 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); // 2) - //List staleAliasDecls = new List(); - foreach (var pair in System.Linq.Enumerable.Zip(qid.FunctorApp.functor.Formals, qid.FunctorApp.moduleParams)) { ModuleFormal formal = pair.Item1; - ModuleDefinition actual = pair.Item2; + ModuleDecl actual = pair.Item2; // Find the artificial alias decl we created, and update it with the actual foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { - // REVIEW: Is the setting for useImports correct? - amd.Signature = RegisterTopLevelDecls(actual, useImports: true); + amd.Signature = actual.Signature; // TODO: Need this? // amd.Signature.Refines = refinementTransformer.RefinedSig; // or this? @@ -2500,6 +2497,12 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // sig.Refines = refinementTransformer.RefinedSig; // or this? // prog.ModuleSigs[m] = sig; + + // 4) Combine everything into a ModuleDecl we can return + LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, root.EnclosingModuleDefinition); + newDecl.Signature = sig; + newDecl.DefaultExport = sig; + decl = newDecl; } p = this.virtualModules[qid.FunctorApp]; From 058d6f5cb8417a0de313b7ce8f8fcc2b53741cd1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 25 Apr 2021 17:57:34 -0400 Subject: [PATCH 416/573] Improve test and add some extra module definition resolution. Now we've reached the point where Boogie names aren't lining up. --- Source/Dafny/Resolver.cs | 3 +++ Test/modules/Simple.dfy | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 7c222e66d96..ab6647d0021 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2497,6 +2497,9 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // sig.Refines = refinementTransformer.RefinedSig; // or this? // prog.ModuleSigs[m] = sig; + // REVIEW: Should isAnExport be true? + var b = ResolveModuleDefinition(newDef, sig, isAnExport:false); + Contract.Assert(b); // TODO: Better error handling // 4) Combine everything into a ModuleDecl we can return LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, root.EnclosingModuleDefinition); diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 96b088fb1d9..0bcd216a0e3 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -21,8 +21,8 @@ abstract module P(A: ABase) { abstract module Apply { import Output = P(ABase) - method More(a:Output.Key) { - P.Test(a); + method More(a:Output.A.Key) { + Output.Test(a); } } From f829481cba58f97595c0a03bc39ca6df58f625bb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 25 Apr 2021 21:58:56 -0400 Subject: [PATCH 417/573] Current prefix of Simple.dfy verifies! --- Source/Dafny/DafnyAst.cs | 2 ++ Source/Dafny/Resolver.cs | 10 ++++++---- Source/Dafny/Translator.cs | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index d384b84afb3..94027a845d9 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4228,6 +4228,8 @@ public VisibilityScope VisibilityScope { } return visibilityScope; } + + set { visibilityScope = value; } } public virtual bool IsDefaultModule { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index ab6647d0021..b28eea51145 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -22,7 +22,7 @@ public class Resolver { ErrorReporter reporter; ModuleSignature moduleInfo = null; - private Dictionary virtualModules = + public static Dictionary virtualModules = new Dictionary(); private bool RevealedInScope(Declaration d) { @@ -2462,7 +2462,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi if (qid.FunctorApp != null) { k = 0; // Starting point in the Path iteration - if (!this.virtualModules.ContainsKey(qid.FunctorApp)) { + if (!Resolver.virtualModules.ContainsKey(qid.FunctorApp)) { // Apply the functor // 1) Clone the base module definition // 2) For each formal, update the AliasModuleDecl we introduced @@ -2472,6 +2472,8 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi LiteralModuleDecl literalRoot = (LiteralModuleDecl) root; ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); + // Should have the same scope, not a clone, as cloning allocates new tokens + newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; // 2) foreach (var pair in System.Linq.Enumerable.Zip(qid.FunctorApp.functor.Formals, qid.FunctorApp.moduleParams)) { @@ -2492,7 +2494,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // 3) Compute the new signature ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); - this.virtualModules[qid.FunctorApp] = sig; + Resolver.virtualModules[qid.FunctorApp] = sig; // TODO: Need this? // sig.Refines = refinementTransformer.RefinedSig; // or this? @@ -2508,7 +2510,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi decl = newDecl; } - p = this.virtualModules[qid.FunctorApp]; + p = Resolver.virtualModules[qid.FunctorApp]; } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index d3c5caafe76..efcb51c8e06 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -810,11 +810,24 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { //translate us first List mods = program.RawModules().ToList(); + List virtual_mods = Resolver.virtualModules.Values.ToList().ConvertAll(s => s.ModuleDef); + mods.AddRange(virtual_mods); mods.Remove(forModule); + + if (forModule is Functor) { + // Remove all instantiations of this functor, to avoid generating duplicates in the Boogie code + mods.RemoveAll(def => def.CompileName == forModule.CompileName); + } else { + // Remove all functors, since we should only be referring to their instantiations at this point + mods.RemoveAll(def => def is Functor); + } + + mods.Insert(0, forModule); foreach (ModuleDefinition m in mods) { - foreach (TopLevelDecl d in m.TopLevelDecls.FindAll(VisibleInScope)) { + var visibleDecls = m.TopLevelDecls.FindAll(VisibleInScope); + foreach (TopLevelDecl d in visibleDecls) { currentDeclaration = d; if (d is OpaqueTypeDecl) { var dd = (OpaqueTypeDecl)d; From 2f73de0d7ceadbc6d597f30be04b5b181e77dcfe Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 10:30:02 -0400 Subject: [PATCH 418/573] Fix a bug in ResolveModuleQualifiedId so that virtual module lookup sets both the decl and sig. Now doing the same functor application twice seems to work. --- Source/Dafny/Resolver.cs | 10 +++++----- Test/modules/Simple.dfy | 21 +++++++++++++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index b28eea51145..9933f598484 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -22,8 +22,8 @@ public class Resolver { ErrorReporter reporter; ModuleSignature moduleInfo = null; - public static Dictionary virtualModules = - new Dictionary(); + public static Dictionary virtualModules = + new Dictionary(); private bool RevealedInScope(Declaration d) { Contract.Requires(d != null); @@ -2494,7 +2494,6 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // 3) Compute the new signature ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); - Resolver.virtualModules[qid.FunctorApp] = sig; // TODO: Need this? // sig.Refines = refinementTransformer.RefinedSig; // or this? @@ -2507,10 +2506,11 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, root.EnclosingModuleDefinition); newDecl.Signature = sig; newDecl.DefaultExport = sig; + Resolver.virtualModules[qid.FunctorApp] = newDecl; decl = newDecl; } - - p = Resolver.virtualModules[qid.FunctorApp]; + decl = Resolver.virtualModules[qid.FunctorApp]; + p = decl.Signature; } diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 0bcd216a0e3..41472680919 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -18,14 +18,27 @@ abstract module P(A: ABase) { } // Try simple functor application -abstract module Apply { - import Output = P(ABase) +//abstract module Apply { +// import Output = P(ABase) +// +// method More(a:Output.A.Key) { +// Output.Test(a); +// } +//} - method More(a:Output.A.Key) { - Output.Test(a); +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); } } + //abstract module B refines P(ABase) { //} // From edbf72a6a5ed40ea7576ad23b1f5ba5d8f3b257e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 10:37:34 -0400 Subject: [PATCH 419/573] Basic refinement argument test passes --- Test/modules/Simple.dfy | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 41472680919..d491740636c 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -27,17 +27,45 @@ abstract module P(A: ABase) { //} // Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } +//} + +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() +} + +abstract module ApplyRefinement { + import Output = P(B) + + method UseB() { + Output.A.BTest(); + } - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b + method KeyTest(b:Output.A.Key) { - Output1.Test(a); + Output.Test(b); } } +// Try passing module of the wrong type to a functor +//abstract module NoBase { +//} +// +//abstract module BadApplication { +// import ShouldFail = P(NoBase) +//} + + + //abstract module B refines P(ABase) { //} From d1429dd279e9444851c352cc0613e7203d44c744 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 11:00:34 -0400 Subject: [PATCH 420/573] Working on improving module argument checking --- Source/Dafny/Resolver.cs | 30 ++++++++++++++++++++++++ Test/modules/Simple.dfy | 50 ++++++++++++++++++++-------------------- 2 files changed, 55 insertions(+), 25 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 9933f598484..e7287481cef 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2447,6 +2447,24 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin } } + private bool EqualsOrRefines(ModuleDecl actual, ModuleDefinition formal) { + if (actual is LiteralModuleDecl lmd) { + if (lmd.ModuleDef == formal) { + return true; + } + } else if (actual is AliasModuleDecl amd) { + if (amd.Signature.ModuleDef == formal) { + return true; + } + } else if (actual is AbstractModuleDecl amd) { + if (amd.Signature.ModuleDef == formal) { + return true; + } + } // TODO: else if (actual is ModuleExportDecl med) { ... } + + + } + // Returns the resolved Module declaration corresponding to the qualified module id // Requires the root to have been resolved // Issues an error and returns null if the path is not valid @@ -2475,11 +2493,23 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // Should have the same scope, not a clone, as cloning allocates new tokens newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + if (qid.FunctorApp.functor.Formals.Count != qid.FunctorApp.moduleParams.Count) { + var msg = $"Module {decl.Name} expects {qid.FunctorApp.functor.Formals.Count} parameters, got {qid.FunctorApp.moduleParams.Count}"; + reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, msg); + return null; + } + // 2) foreach (var pair in System.Linq.Enumerable.Zip(qid.FunctorApp.functor.Formals, qid.FunctorApp.moduleParams)) { ModuleFormal formal = pair.Item1; ModuleDecl actual = pair.Item2; + if (!equalsOrRefines(actual, formal.TypeDef)) { + var msg = $"Module {decl.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; + reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, msg); + return null; + } + // Find the artificial alias decl we created, and update it with the actual foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index d491740636c..bf7450f3ba5 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -2,7 +2,7 @@ // RUN: %diff "%s.expect" "%t" module ABase { - type Key + type Key } //abstract module P_normal { @@ -17,7 +17,7 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -// Try simple functor application +//// Try simple functor application //abstract module Apply { // import Output = P(ABase) // @@ -26,7 +26,7 @@ abstract module P(A: ABase) { // } //} -// Make sure functors behave applicatively +//// Make sure functors behave applicatively //abstract module Apply2 { // import Output0 = P(ABase) // import Output1 = P(ABase) @@ -38,32 +38,32 @@ abstract module P(A: ABase) { // } //} -// Try passing a refinement to a functor -abstract module B refines ABase { - method BTest() -} - -abstract module ApplyRefinement { - import Output = P(B) - - method UseB() { - Output.A.BTest(); - } - - method KeyTest(b:Output.A.Key) - { - Output.Test(b); - } -} - -// Try passing module of the wrong type to a functor -//abstract module NoBase { +//// Try passing a refinement to a functor +//abstract module B refines ABase { +// method BTest() //} // -//abstract module BadApplication { -// import ShouldFail = P(NoBase) +//abstract module ApplyRefinement { +// import Output = P(B) +// +// method UseB() { +// Output.A.BTest(); +// } +// +// method KeyTest(b:Output.A.Key) +// { +// Output.Test(b); +// } //} +// Try passing module of the wrong type to a functor +abstract module NoBase { +} + +abstract module BadApplication { + import ShouldFail = P(NoBase) +} + From 7f67b5c9cefcf4969c0a6a9dd7c63544a953f09d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 14:31:46 -0400 Subject: [PATCH 421/573] Fix positive and negative checks for passing the right kinds of module arguments. Discovered a problem when we apply a functor with ABase and later with a refinement of ABase --- Source/Dafny/Resolver.cs | 30 +++++++++++++++++++- Test/modules/Simple.dfy | 60 ++++++++++++++++++++-------------------- 2 files changed, 59 insertions(+), 31 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e7287481cef..cb687ac6d7b 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2447,6 +2447,16 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin } } + private bool EqualsOrRefines(ModuleSignature actual, ModuleDefinition formal) { + if (actual == null) { + return false; + } else if (actual.ModuleDef == formal) { + return true; + } else { + return EqualsOrRefines(actual.Refines, formal); + } + } + /* private bool EqualsOrRefines(ModuleDecl actual, ModuleDefinition formal) { if (actual is LiteralModuleDecl lmd) { if (lmd.ModuleDef == formal) { @@ -2464,6 +2474,20 @@ private bool EqualsOrRefines(ModuleDecl actual, ModuleDefinition formal) { } + */ + + private ModuleDefinition GetDefFromDecl(ModuleDecl decl) { + if (decl is LiteralModuleDecl lmd) { + return lmd.ModuleDef; + } else if (decl is AliasModuleDecl amd) { + return amd.Signature.ModuleDef; + } else if (decl is AbstractModuleDecl am) { + return am.Signature.ModuleDef; + } else if (decl is ModuleExportDecl med) { + return med.Signature.ModuleDef; + } + return null; + } // Returns the resolved Module declaration corresponding to the qualified module id // Requires the root to have been resolved @@ -2504,7 +2528,11 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi ModuleFormal formal = pair.Item1; ModuleDecl actual = pair.Item2; - if (!equalsOrRefines(actual, formal.TypeDef)) { + if (formal.TypeDef == null) { + formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); + } + + if (!EqualsOrRefines(actual.Signature, formal.TypeDef)) { var msg = $"Module {decl.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, msg); return null; diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index bf7450f3ba5..bc3f4a6e5bf 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -17,14 +17,14 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -//// Try simple functor application -//abstract module Apply { -// import Output = P(ABase) -// -// method More(a:Output.A.Key) { -// Output.Test(a); -// } -//} +// Try simple functor application +abstract module Apply { + import Output = P(ABase) + + method More(a:Output.A.Key) { + Output.Test(a); + } +} //// Make sure functors behave applicatively //abstract module Apply2 { @@ -37,33 +37,33 @@ abstract module P(A: ABase) { // Output1.Test(a); // } //} - -//// Try passing a refinement to a functor -//abstract module B refines ABase { -// method BTest() -//} -// -//abstract module ApplyRefinement { -// import Output = P(B) // -// method UseB() { -// Output.A.BTest(); -// } -// -// method KeyTest(b:Output.A.Key) -// { -// Output.Test(b); -// } -//} - -// Try passing module of the wrong type to a functor -abstract module NoBase { +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() } -abstract module BadApplication { - import ShouldFail = P(NoBase) +abstract module ApplyRefinement { + import Output = P(B) + + method UseB() { + Output.A.BTest(); + } + + method KeyTest(b:Output.A.Key) + { + Output.Test(b); + } } +// Try passing module of the wrong type to a functor +//abstract module NoBase { +//} +// +//abstract module BadApplication { +// import ShouldFail = P(NoBase) +//} + From ca2868f45d17850eb0a32988de029cfd9f93b2e3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 17:38:59 -0400 Subject: [PATCH 422/573] Rolling back visibility scope duplication works surprisingly well. Main problem is the error message for a bad application is poor. --- Source/Dafny/Resolver.cs | 2 +- Test/modules/Simple.dfy | 41 ++++++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index cb687ac6d7b..05f527cdfac 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2515,7 +2515,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); // Should have the same scope, not a clone, as cloning allocates new tokens - newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; if (qid.FunctorApp.functor.Formals.Count != qid.FunctorApp.moduleParams.Count) { var msg = $"Module {decl.Name} expects {qid.FunctorApp.functor.Formals.Count} parameters, got {qid.FunctorApp.moduleParams.Count}"; diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index bc3f4a6e5bf..70d0dcad22d 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -19,44 +19,45 @@ abstract module P(A: ABase) { // Try simple functor application abstract module Apply { - import Output = P(ABase) + import OutputBase = P(ABase) - method More(a:Output.A.Key) { - Output.Test(a); + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); } } -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} -// // Try passing a refinement to a functor abstract module B refines ABase { method BTest() } abstract module ApplyRefinement { - import Output = P(B) + import OutputRefined = P(B) method UseB() { - Output.A.BTest(); + OutputRefined.A.BTest(); } - method KeyTest(b:Output.A.Key) + method KeyTest(b:OutputRefined.A.Key) { - Output.Test(b); + OutputRefined.Test(b); } } -// Try passing module of the wrong type to a functor + +//// Try passing module of the wrong type to a functor //abstract module NoBase { //} // From 846f4bab56b82f53a031ccefe41b6f7a7fb89a3f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 21:37:49 -0400 Subject: [PATCH 423/573] Fix what appears to be a bug in official Dafny. Now, all of Simple's (uncommented) positive and negative tests are passing! --- Source/Dafny/RefinementTransformer.cs | 1 + Test/modules/Simple.dfy | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/RefinementTransformer.cs b/Source/Dafny/RefinementTransformer.cs index 8132ad184e7..2f2d34f9970 100644 --- a/Source/Dafny/RefinementTransformer.cs +++ b/Source/Dafny/RefinementTransformer.cs @@ -109,6 +109,7 @@ internal override void PreResolve(ModuleDefinition m) { PreResolveWorker(m); } else { // do this also for non-refining modules + RefinedSig = null; // REVIEW: Why wasn't this done before? Without it, we assign a stale RefinedSig to later modules CheckSuperflousRefiningMarks(m.TopLevelDecls, new List()); } } diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 70d0dcad22d..17fa19ac7f5 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -17,6 +17,7 @@ abstract module P(A: ABase) { method Test(a:A.Key) } + // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -26,6 +27,7 @@ abstract module Apply { } } + // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -38,6 +40,7 @@ abstract module Apply2 { } } + // Try passing a refinement to a functor abstract module B refines ABase { method BTest() @@ -57,10 +60,10 @@ abstract module ApplyRefinement { } -//// Try passing module of the wrong type to a functor -//abstract module NoBase { -//} -// +// Try passing module of the wrong type to a functor +abstract module NoBase { +} + //abstract module BadApplication { // import ShouldFail = P(NoBase) //} From 1a8821b51c8368b66d3f2f97eb9575a00a107da3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:01:45 -0400 Subject: [PATCH 424/573] I think all of Simple's tests pass --- Source/Dafny/Resolver.cs | 10 ++- Test/modules/Simple.dfy | 133 ++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 66 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 05f527cdfac..eb6c70c379f 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1727,7 +1727,11 @@ private void ProcessDependencies(ModuleDecl moduleDecl, ModuleBindings bindings, // each enclosing module. if (!ResolveQualifiedModuleIdRootImport(dependencies, moduleDecl, alias, bindings, alias.TargetQId, out root)) { // if (!bindings.TryLookupFilter(alias.TargetQId.rootToken(), out root, m => alias != m) - reporter.Error(MessageSource.Resolver, alias.tok, ModuleNotFoundErrorMessage(0, alias.TargetQId.Path)); + if (alias.TargetQId.FunctorApp != null) { + reporter.Error(MessageSource.Resolver, alias.tok, "module " + alias.TargetQId.rootName() + " does not exist"); + } else { + reporter.Error(MessageSource.Resolver, alias.tok, ModuleNotFoundErrorMessage(0, alias.TargetQId.Path)); + } } else { dependencies.AddEdge(moduleDecl, root); } @@ -2569,6 +2573,10 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi } decl = Resolver.virtualModules[qid.FunctorApp]; p = decl.Signature; + } else if (root is LiteralModuleDecl lmd && lmd.ModuleDef is Functor functor) { + var msg = $"Functor {functor.Name} expects {functor.Formals.Count} arguments"; + reporter.Error(MessageSource.Resolver, root.tok, msg); + return null; } diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy index 17fa19ac7f5..83042e851e3 100644 --- a/Test/modules/Simple.dfy +++ b/Test/modules/Simple.dfy @@ -18,97 +18,100 @@ abstract module P(A: ABase) { } -// Try simple functor application -abstract module Apply { - import OutputBase = P(ABase) - - method More(a:OutputBase.A.Key) { - OutputBase.Test(a); - } -} - - -// Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) - - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b - { - Output1.Test(a); - } -} - - -// Try passing a refinement to a functor -abstract module B refines ABase { - method BTest() -} - -abstract module ApplyRefinement { - import OutputRefined = P(B) - - method UseB() { - OutputRefined.A.BTest(); - } - - method KeyTest(b:OutputRefined.A.Key) - { - OutputRefined.Test(b); - } -} - - -// Try passing module of the wrong type to a functor -abstract module NoBase { -} - +//// Try simple functor application +//abstract module Apply { +// import OutputBase = P(ABase) +// +// method More(a:OutputBase.A.Key) { +// OutputBase.Test(a); +// } +//} +// +// +//// Make sure functors behave applicatively +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } +//} +// +// +//// Try passing a refinement to a functor +//abstract module B refines ABase { +// method BTest() +//} +// +//abstract module ApplyRefinement { +// import OutputRefined = P(B) +// +// method UseB() { +// OutputRefined.A.BTest(); +// } +// +// method KeyTest(b:OutputRefined.A.Key) +// { +// OutputRefined.Test(b); +// } +//} +// +// +//// Try passing module of the wrong type to a functor +//abstract module NoBase { +//} +// //abstract module BadApplication { // import ShouldFail = P(NoBase) //} - -//abstract module B refines P(ABase) { -//} // -//abstract module C { -// import X = P(ABase) -//} - -//module InnocentA refines ABase { -// type Key = int +//abstract module FunctorAppRefiner refines P(ABase) { +// method MoreTest(x:A.Key) { +// Test(x); +// } //} // +// +module InnocentA refines ABase { + type Key = int +} +// //abstract module B_good { // import P1 = P(InnocentA) // import P2 = P(InnocentA) // lemma foo(a: P1.A.Key, b: P2.A.Key) -//// ensures a == b // succeeds, as it should -//// { } +// requires a == b // succeeds, as it should +// { } //} - -/* -abstract module MissingParameter { - import P // Fails with: P expects 1 arguments -} +// +//abstract module MissingParameter { +// import P // Fails with: P expects 1 arguments +//} abstract module B_bad_compare_to_abstract { module Q refines ABase { } import P1 = P(InnocentA) lemma foo(a: Q.Key, b: P1.A.Key) - ensures a == b // Fails with: not-comparable types: Q.Key, P1.A.Key + requires a == b // Fails with: not-comparable types: Q.Key, P1.A.Key { } } + +module SinisterA refines ABase { + type Key = bool +} + abstract module B_bad { import P1 = P(InnocentA) import P2 = P(SinisterA) lemma foo(a: P1.A.Key, b: P2.A.Key) - ensures a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key + requires a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key { } } -*/ From 119e45b490338e72594d1b673f2efc4d5ae3125d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:05:51 -0400 Subject: [PATCH 425/573] Split Simple into Good and Bad test cases. This facilitates testing the full pipeline in the Good cases, b/c the Bad cases bail out early. --- Test/modules/Simple.dfy | 117 ------------------------------------ Test/modules/SimpleBad.dfy | 49 +++++++++++++++ Test/modules/SimpleGood.dfy | 70 +++++++++++++++++++++ 3 files changed, 119 insertions(+), 117 deletions(-) delete mode 100644 Test/modules/Simple.dfy create mode 100644 Test/modules/SimpleBad.dfy create mode 100644 Test/modules/SimpleGood.dfy diff --git a/Test/modules/Simple.dfy b/Test/modules/Simple.dfy deleted file mode 100644 index 83042e851e3..00000000000 --- a/Test/modules/Simple.dfy +++ /dev/null @@ -1,117 +0,0 @@ -// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" -// RUN: %diff "%s.expect" "%t" - -module ABase { - type Key -} - -//abstract module P_normal { -// import A : ABase -// -// method Test(a:A.Key) -//} - -// Use an element of a formal parameter -// Morally equivalent to P_normal above -abstract module P(A: ABase) { - method Test(a:A.Key) -} - - -//// Try simple functor application -//abstract module Apply { -// import OutputBase = P(ABase) -// -// method More(a:OutputBase.A.Key) { -// OutputBase.Test(a); -// } -//} -// -// -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} -// -// -//// Try passing a refinement to a functor -//abstract module B refines ABase { -// method BTest() -//} -// -//abstract module ApplyRefinement { -// import OutputRefined = P(B) -// -// method UseB() { -// OutputRefined.A.BTest(); -// } -// -// method KeyTest(b:OutputRefined.A.Key) -// { -// OutputRefined.Test(b); -// } -//} -// -// -//// Try passing module of the wrong type to a functor -//abstract module NoBase { -//} -// -//abstract module BadApplication { -// import ShouldFail = P(NoBase) -//} - - - -// -//abstract module FunctorAppRefiner refines P(ABase) { -// method MoreTest(x:A.Key) { -// Test(x); -// } -//} -// -// -module InnocentA refines ABase { - type Key = int -} -// -//abstract module B_good { -// import P1 = P(InnocentA) -// import P2 = P(InnocentA) -// lemma foo(a: P1.A.Key, b: P2.A.Key) -// requires a == b // succeeds, as it should -// { } -//} - -// -//abstract module MissingParameter { -// import P // Fails with: P expects 1 arguments -//} - -abstract module B_bad_compare_to_abstract { - module Q refines ABase { } - import P1 = P(InnocentA) - lemma foo(a: Q.Key, b: P1.A.Key) - requires a == b // Fails with: not-comparable types: Q.Key, P1.A.Key - { } -} - - -module SinisterA refines ABase { - type Key = bool -} - -abstract module B_bad { - import P1 = P(InnocentA) - import P2 = P(SinisterA) - lemma foo(a: P1.A.Key, b: P2.A.Key) - requires a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key - { } -} diff --git a/Test/modules/SimpleBad.dfy b/Test/modules/SimpleBad.dfy new file mode 100644 index 00000000000..6b7c34d0ff1 --- /dev/null +++ b/Test/modules/SimpleBad.dfy @@ -0,0 +1,49 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module ABase { + type Key +} + +// Use an element of a formal parameter +// Morally equivalent to P_normal above +abstract module P(A: ABase) { + method Test(a:A.Key) +} + +// Try passing module of the wrong type to a functor +abstract module NoBase { +} + +abstract module BadApplication { + import ShouldFail = P(NoBase) +} + +module InnocentA refines ABase { + type Key = int +} + + +abstract module MissingParameter { + import P // Fails with: P expects 1 arguments +} + +abstract module B_bad_compare_to_abstract { + module Q refines ABase { } + import P1 = P(InnocentA) + lemma foo(a: Q.Key, b: P1.A.Key) + requires a == b // Fails with: not-comparable types: Q.Key, P1.A.Key + { } +} + +module SinisterA refines ABase { + type Key = bool +} + +abstract module B_bad { + import P1 = P(InnocentA) + import P2 = P(SinisterA) + lemma foo(a: P1.A.Key, b: P2.A.Key) + requires a == b // Fails with: mismatched types: P1.A.Key, P2.A.Key + { } +} diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy new file mode 100644 index 00000000000..92fa1176912 --- /dev/null +++ b/Test/modules/SimpleGood.dfy @@ -0,0 +1,70 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module ABase { + type Key +} + +abstract module P_normal { + import A : ABase + + method Test(a:A.Key) +} + +// Use an element of a formal parameter +// Morally equivalent to P_normal above +abstract module P(A: ABase) { + method Test(a:A.Key) +} + + +// Try simple functor application +abstract module Apply { + import OutputBase = P(ABase) + + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); + } +} + + +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() +} + +abstract module ApplyRefinement { + import OutputRefined = P(B) + + method UseB() { + OutputRefined.A.BTest(); + } + + method KeyTest(b:OutputRefined.A.Key) + { + OutputRefined.Test(b); + } +} + + +// Try refining the result of a functor application +abstract module FunctorAppRefiner refines P(ABase) { + method MoreTest(x:A.Key) { + Test(x); + } +} + + From 76afcdb06dc344215fd51bf9e120ba5d773ad169 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:07:00 -0400 Subject: [PATCH 426/573] Lit files --- Test/modules/SimpleBad.dfy.expect | 0 Test/modules/SimpleGood.dfy.expect | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Test/modules/SimpleBad.dfy.expect create mode 100644 Test/modules/SimpleGood.dfy.expect diff --git a/Test/modules/SimpleBad.dfy.expect b/Test/modules/SimpleBad.dfy.expect new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Test/modules/SimpleGood.dfy.expect b/Test/modules/SimpleGood.dfy.expect new file mode 100644 index 00000000000..e69de29bb2d From 19a08155c3a46f4e6d66405007feddfa905460b9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:09:20 -0400 Subject: [PATCH 427/573] Add lit files --- Test/modules/SimpleBad.dfy | 2 +- Test/modules/SimpleBad.dfy.expect | 5 +++++ Test/modules/SimpleGood.dfy | 2 +- Test/modules/SimpleGood.dfy.expect | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Test/modules/SimpleBad.dfy b/Test/modules/SimpleBad.dfy index 6b7c34d0ff1..ea79971fa1f 100644 --- a/Test/modules/SimpleBad.dfy +++ b/Test/modules/SimpleBad.dfy @@ -1,4 +1,4 @@ -// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %dafny /compile:0 /print:"%t.print" "%s" > "%t" // RUN: %diff "%s.expect" "%t" module ABase { diff --git a/Test/modules/SimpleBad.dfy.expect b/Test/modules/SimpleBad.dfy.expect index e69de29bb2d..52a7778bfd3 100644 --- a/Test/modules/SimpleBad.dfy.expect +++ b/Test/modules/SimpleBad.dfy.expect @@ -0,0 +1,5 @@ +SimpleBad.dfy(19,22): Error: Module P expects ABase, got NoBase +SimpleBad.dfy(10,16): Error: Functor P expects 1 arguments +SimpleBad.dfy(35,19): Error: arguments must have comparable types (got Q.Key and P1.A.Key) +SimpleBad.dfy(47,19): Error: arguments must have comparable types (got P1.A.Key and P2.A.Key) +4 resolution/type errors detected in SimpleBad.dfy diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 92fa1176912..df1f13c63e4 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -1,4 +1,4 @@ -// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %dafny /compile:0 /print:"%t.print" "%s" > "%t" // RUN: %diff "%s.expect" "%t" module ABase { diff --git a/Test/modules/SimpleGood.dfy.expect b/Test/modules/SimpleGood.dfy.expect index e69de29bb2d..e4e323ccb56 100644 --- a/Test/modules/SimpleGood.dfy.expect +++ b/Test/modules/SimpleGood.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 5 verified, 0 errors From dec0f63f8eaa9bed4a96996431e1d7966637c020 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:15:00 -0400 Subject: [PATCH 428/573] Fix up ToString conversion for ModuleQualifiedId and FunctorApplication --- Source/Dafny/DafnyAst.cs | 10 +++++----- Test/modules/SimpleGood.dfy | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 94027a845d9..0c1ca2c9447 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4033,8 +4033,8 @@ public FunctorApplication(IToken tok, List moduleParamNames) public override string ToString() { string result = tok.val; - if (moduleParams.Count > 0) { - result += "(" + Util.Comma(", ", moduleParams, exp => exp.ToString()) + ")"; + if (moduleParamNames.Count > 0) { + result += "(" + Util.Comma(", ", moduleParamNames, exp => exp.ToString()) + ")"; } return result; } @@ -4107,9 +4107,9 @@ public IToken rootToken() { } override public string ToString() { - string s = Path[0].val; - for (int i = 1; i < Path.Count; ++i) { - s = s + "." + Path[i].val; + string s = rootName(); + foreach (IToken tok in Path) { + s = s + "." + tok.val; } return s; diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index df1f13c63e4..92fa1176912 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -1,4 +1,4 @@ -// RUN: %dafny /compile:0 /print:"%t.print" "%s" > "%t" +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" // RUN: %diff "%s.expect" "%t" module ABase { From 1e04d5a97381e4861dae17d5981a8788de557455 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:16:33 -0400 Subject: [PATCH 429/573] ModuleApplication works --- Test/modules/ModuleApplication.dfy.expect | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Test/modules/ModuleApplication.dfy.expect diff --git a/Test/modules/ModuleApplication.dfy.expect b/Test/modules/ModuleApplication.dfy.expect new file mode 100644 index 00000000000..f10b7414e5b --- /dev/null +++ b/Test/modules/ModuleApplication.dfy.expect @@ -0,0 +1,4 @@ +ModuleApplication.dfy(16,16): Error: Functor P expects 1 arguments +ModuleApplication.dfy(35,18): Error: arguments must have comparable types (got Q.Key and P1.A.Key) +ModuleApplication.dfy(43,18): Error: arguments must have comparable types (got P1.A.Key and P2.A.Key) +3 resolution/type errors detected in ModuleApplication.dfy From f6ac115ade2cb0cc7d735b7bc6503d5d7dc019be Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 26 Apr 2021 22:21:14 -0400 Subject: [PATCH 430/573] Capture the next case to work on in SimpleGood --- Test/modules/SimpleGood.dfy | 111 ++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 92fa1176912..22d0c29995f 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -5,12 +5,12 @@ module ABase { type Key } -abstract module P_normal { - import A : ABase - - method Test(a:A.Key) -} - +//abstract module P_normal { +// import A : ABase +// +// method Test(a:A.Key) +//} +// // Use an element of a formal parameter // Morally equivalent to P_normal above abstract module P(A: ABase) { @@ -18,53 +18,56 @@ abstract module P(A: ABase) { } -// Try simple functor application -abstract module Apply { - import OutputBase = P(ABase) - - method More(a:OutputBase.A.Key) { - OutputBase.Test(a); - } -} - - -// Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) - - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b - { - Output1.Test(a); - } -} - - -// Try passing a refinement to a functor -abstract module B refines ABase { - method BTest() -} - -abstract module ApplyRefinement { - import OutputRefined = P(B) - - method UseB() { - OutputRefined.A.BTest(); - } - - method KeyTest(b:OutputRefined.A.Key) - { - OutputRefined.Test(b); - } +//// Try simple functor application +//abstract module Apply { +// import OutputBase = P(ABase) +// +// method More(a:OutputBase.A.Key) { +// OutputBase.Test(a); +// } +//} +// +// +//// Make sure functors behave applicatively +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } +//} +// +// +//// Try passing a refinement to a functor +//abstract module B refines ABase { +// method BTest() +//} +// +//abstract module ApplyRefinement { +// import OutputRefined = P(B) +// +// method UseB() { +// OutputRefined.A.BTest(); +// } +// +// method KeyTest(b:OutputRefined.A.Key) +// { +// OutputRefined.Test(b); +// } +//} +// +// +//// Try refining the result of a functor application +//abstract module FunctorAppRefiner refines P(ABase) { +// method MoreTest(x:A.Key) { +// Test(x); +// } +//} + +// Try refining a functor application applied to our formal argument +module FunctorAppParamRefiner(a: A) refines P(a) { } - -// Try refining the result of a functor application -abstract module FunctorAppRefiner refines P(ABase) { - method MoreTest(x:A.Key) { - Test(x); - } -} - - From 48dd550b044283716a77e33401bd0ae3aff687e4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 07:40:58 -0400 Subject: [PATCH 431/573] Fix ToString for non-functors --- Source/Dafny/DafnyAst.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 0c1ca2c9447..9226bcb9636 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4108,8 +4108,12 @@ public IToken rootToken() { override public string ToString() { string s = rootName(); - foreach (IToken tok in Path) { - s = s + "." + tok.val; + int i = 1; + if (FunctorApp != null) { + i = 0; + } + for (; i < Path.Count; ++i) { + s = s + "." + Path[i].val; } return s; From 0b89ac570247e5a40293d796b74aebd43366211d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 11:57:59 -0400 Subject: [PATCH 432/573] Still debugging the use of module formals in refines functor applications --- Source/Dafny/Resolver.cs | 42 ++++++++++++++++++++----------------- Test/modules/SimpleGood.dfy | 6 +++++- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index eb6c70c379f..ba25f747a38 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1403,7 +1403,7 @@ private void CheckModuleExportConsistency(ModuleDefinition m) { public class ModuleBindings { private ModuleBindings parent; - private Dictionary modules; + public Dictionary modules; private Dictionary bindings; public ModuleBindings(ModuleBindings p) { @@ -1656,20 +1656,6 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, Graph dependencies) { Contract.Assert(decl is LiteralModuleDecl); Contract.Assert(((LiteralModuleDecl)decl).ModuleDef == m); - if (m.RefinementQId != null) { - ModuleDecl other; - bool res = ResolveQualifiedModuleIdRootRefines(dependencies, decl, m, bindings, m.RefinementQId, out other); - if (!res) { - reporter.Error(MessageSource.Resolver, m.RefinementQId.rootToken(), - $"module {m.RefinementQId.ToString()} named as refinement base does not exist"); - } else if (other is LiteralModuleDecl && ((LiteralModuleDecl)other).ModuleDef == m) { - reporter.Error(MessageSource.Resolver, m.RefinementQId.rootToken(), "module cannot refine itself: {0}", - m.RefinementQId.ToString()); - } else { - Contract.Assert(other != null); // follows from postcondition of TryGetValue - dependencies.AddEdge(decl, other); - } - } if (m is Functor f) { // We need to create dependencies on each formal's module type @@ -1683,9 +1669,12 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, // update the formals with their actuals // REVIEW: What should the "exports" list (final argument) be? - f.TopLevelDecls.Add(new AliasModuleDecl(formal.TypeName, formal.Name, f, opened:false, new List())); - + AliasModuleDecl formalDecl = + new AliasModuleDecl(formal.TypeName, formal.Name, f, opened: false, new List()); + f.TopLevelDecls.Add(formalDecl); + // Extend the bindings to include formal parameters + bindings.modules.Add(formal.Name.val, formalDecl); /* // Now add the formal's type as a dependency ModuleDecl other = null; @@ -1701,6 +1690,21 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, } } + if (m.RefinementQId != null) { + ModuleDecl other; + bool res = ResolveQualifiedModuleIdRootRefines(dependencies, decl, m, bindings, m.RefinementQId, out other); + if (!res) { + reporter.Error(MessageSource.Resolver, m.RefinementQId.rootToken(), + $"module {m.RefinementQId.ToString()} named as refinement base does not exist"); + } else if (other is LiteralModuleDecl && ((LiteralModuleDecl)other).ModuleDef == m) { + reporter.Error(MessageSource.Resolver, m.RefinementQId.rootToken(), "module cannot refine itself: {0}", + m.RefinementQId.ToString()); + } else { + Contract.Assert(other != null); // follows from postcondition of TryGetValue + dependencies.AddEdge(decl, other); + } + } + foreach (var toplevel in m.TopLevelDecls) { if (toplevel is ModuleDecl) { var d = (ModuleDecl)toplevel; @@ -1718,7 +1722,7 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, private void ProcessDependencies(ModuleDecl moduleDecl, ModuleBindings bindings, Graph dependencies) { dependencies.AddVertex(moduleDecl); - if (moduleDecl is LiteralModuleDecl) { + if (moduleDecl is LiteralModuleDecl lmd) { ProcessDependenciesDefinition(moduleDecl, ((LiteralModuleDecl)moduleDecl).ModuleDef, bindings, dependencies); } else if (moduleDecl is AliasModuleDecl) { var alias = moduleDecl as AliasModuleDecl; @@ -2573,7 +2577,7 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi } decl = Resolver.virtualModules[qid.FunctorApp]; p = decl.Signature; - } else if (root is LiteralModuleDecl lmd && lmd.ModuleDef is Functor functor) { + } else if (qid.Root is LiteralModuleDecl lmd && lmd.ModuleDef is Functor functor) { var msg = $"Functor {functor.Name} expects {functor.Formals.Count} arguments"; reporter.Error(MessageSource.Resolver, root.tok, msg); return null; diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 22d0c29995f..5a4ab4baa60 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -68,6 +68,10 @@ abstract module P(A: ABase) { //} // Try refining a functor application applied to our formal argument -module FunctorAppParamRefiner(a: A) refines P(a) { +module FunctorAppParamRefiner(a: ABase) refines P(a) { } +//abstract module MissingParameter { +// import P // Fails with: P expects 1 arguments +//} + From 15f75bd597434a9e1db144eece27fb2fe3ebb180 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 12:18:06 -0400 Subject: [PATCH 433/573] Weaken filter for ModuleQualifiedId's in refinements. Simple* verify, now with FunctorAppParamRefiner passing. --- Source/Dafny/Resolver.cs | 6 ++- Test/modules/SimpleGood.dfy | 99 ++++++++++++++++++------------------- 2 files changed, 53 insertions(+), 52 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index ba25f747a38..df6a9470fa1 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1624,7 +1624,11 @@ private bool ResolveQualifiedModuleIdRootRefines(Graph dependencies, out ModuleDecl result) { Contract.Assert(qid != null); result = null; - Func filter = m => m.EnclosingModuleDefinition != context; + Func filter = m => + (m.EnclosingModuleDefinition != context + || (m.EnclosingModuleDefinition == context + && m.EnclosingModuleDefinition is Functor f + && f.Formals.ConvertAll(f => f.Name.val).Contains(m.Name))); return ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, qid, out result); } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 5a4ab4baa60..a85b42783c3 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -18,60 +18,57 @@ abstract module P(A: ABase) { } -//// Try simple functor application -//abstract module Apply { -// import OutputBase = P(ABase) -// -// method More(a:OutputBase.A.Key) { -// OutputBase.Test(a); -// } -//} -// -// -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} -// -// -//// Try passing a refinement to a functor -//abstract module B refines ABase { -// method BTest() -//} -// -//abstract module ApplyRefinement { -// import OutputRefined = P(B) -// -// method UseB() { -// OutputRefined.A.BTest(); -// } -// -// method KeyTest(b:OutputRefined.A.Key) -// { -// OutputRefined.Test(b); -// } -//} -// -// -//// Try refining the result of a functor application -//abstract module FunctorAppRefiner refines P(ABase) { -// method MoreTest(x:A.Key) { -// Test(x); -// } -//} +// Try simple functor application +abstract module Apply { + import OutputBase = P(ABase) + + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); + } +} + + +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() +} + +abstract module ApplyRefinement { + import OutputRefined = P(B) + + method UseB() { + OutputRefined.A.BTest(); + } + + method KeyTest(b:OutputRefined.A.Key) + { + OutputRefined.Test(b); + } +} + + +// Try refining the result of a functor application +abstract module FunctorAppRefiner refines P(ABase) { + method MoreTest(x:A.Key) { + Test(x); + } +} // Try refining a functor application applied to our formal argument module FunctorAppParamRefiner(a: ABase) refines P(a) { } -//abstract module MissingParameter { -// import P // Fails with: P expects 1 arguments -//} From 118a7c7fdfef0d2c07034b00f21639f78f8d2a76 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 14:37:13 -0400 Subject: [PATCH 434/573] Trying some variants of Resolve --- Test/modules/Resolve.dfy | 20 ++++++++++---------- Test/modules/SimpleGood.dfy | 33 ++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Test/modules/Resolve.dfy b/Test/modules/Resolve.dfy index 4680efece84..cebfefd8d47 100644 --- a/Test/modules/Resolve.dfy +++ b/Test/modules/Resolve.dfy @@ -5,13 +5,13 @@ abstract module A { datatype T = T } -module B refines A { -} +//module B refines A { +//} abstract module C(a: A) { } -module D(a: A) refines C(a) { +abstract module D(a_d: A) refines C(a_d) { } abstract module E(c: C) { @@ -20,16 +20,16 @@ abstract module E(c: C) { abstract module F(e: E) { } -module G(a: A) refines E(C(a)) { +abstract module G(a_g: A) refines E(C(a_g)) { } -abstract module H(a: A) refines F(G(a)) { - import X = a - import Y = e.c.a - import Z = G(a).a - import W = G(a).c.a +abstract module H(a_h: A) refines F(G(a_h)) { + import X = a_h + //import Y = e.c.a // Invalid: e is an argument to F, which has already been applied + import Z = G(a_h).a_g + import W = G(a_h).a - lemma types_eq(x: X.T, y: Y.T, z: Z.T, w: W.T) + lemma types_eq(x: X.T, /* y: Y.T, */ z: Z.T, w: W.T) requires x == y == z == w { } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index a85b42783c3..7dd787ec245 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -5,19 +5,19 @@ module ABase { type Key } -//abstract module P_normal { -// import A : ABase +abstract module P_normal { + import A : ABase + + method Test(a:A.Key) +} // +// Use an element of a formal parameter +// Morally equivalent to P_normal above +//abstract module P(A: ABase) { // method Test(a:A.Key) //} // -// Use an element of a formal parameter -// Morally equivalent to P_normal above -abstract module P(A: ABase) { - method Test(a:A.Key) -} - - +/* // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -66,9 +66,16 @@ abstract module FunctorAppRefiner refines P(ABase) { Test(x); } } - -// Try refining a functor application applied to our formal argument -module FunctorAppParamRefiner(a: ABase) refines P(a) { -} +*/ +//// Try refining a functor application applied to our formal argument +//module FunctorAppParamRefiner(abase: ABase) refines P(abase) { +// // Refer to the formal name of our refinement functor +// import X = A +//} +//// Dafny says this isn't okay +//module NormalRefinement refines P_normal { +// import A +// import X = A +//} From 1bbb315b70afab2867d6a3a76e70325b7fe29e3b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 16:58:52 -0400 Subject: [PATCH 435/573] Some experiments with Resolve2.dfy --- Test/modules/Resolve2.dfy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Test/modules/Resolve2.dfy b/Test/modules/Resolve2.dfy index b38016e8e2d..bc475fe5cbb 100644 --- a/Test/modules/Resolve2.dfy +++ b/Test/modules/Resolve2.dfy @@ -36,12 +36,12 @@ abstract module Stuff { import T = IntTotalOrder import W = SortMethodUtil(IntTotalOrder).S.T - lemma same_types(x: T.K, y: W.K) - requires x == y == 0 - { - } +// lemma same_types(x: T.K, y: W.K) +// requires x == y == 0 +// { +// } } - +/* abstract module ParameterizedStuff(T: TotalOrder) { import W = SortMethodUtil(T).S.T @@ -50,4 +50,4 @@ abstract module ParameterizedStuff(T: TotalOrder) { { } } - +*/ From 57ba51327176a7464699b9c662808456623f250a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Apr 2021 17:00:26 -0400 Subject: [PATCH 436/573] Another variant gives a different error --- Test/modules/Resolve2.dfy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Test/modules/Resolve2.dfy b/Test/modules/Resolve2.dfy index bc475fe5cbb..06ca147a34b 100644 --- a/Test/modules/Resolve2.dfy +++ b/Test/modules/Resolve2.dfy @@ -22,8 +22,8 @@ abstract module SortUtil(T: TotalOrder) { } } -abstract module SortMethodUtil(T: TotalOrder) { - import S = SortUtil(T) +abstract module SortMethodUtil(T: TotalOrder, S:SortUtil(T)) { + //import S = SortUtil(T) method m(x: seq) returns (y: seq) ensures S.IsStrictlySorted(y) @@ -34,7 +34,8 @@ abstract module SortMethodUtil(T: TotalOrder) { abstract module Stuff { import T = IntTotalOrder - import W = SortMethodUtil(IntTotalOrder).S.T + //import W = SortMethodUtil(IntTotalOrder).S.T + import W = SortMethodUtil(IntTotalOrder, SortUtil(IntTotalOrder)).S.T // lemma same_types(x: T.K, y: W.K) // requires x == y == 0 From d2ede02192a1d552c317661f0cf7ac1dc2b3ceb3 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Tue, 4 May 2021 22:46:13 +0200 Subject: [PATCH 437/573] disable subsequence sharing optimisation --- Binaries/DafnyRuntime.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index eadc7b2bb92..070619c1675 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -374,10 +374,8 @@ struct DafnySequence { // Returns the subsequence of values [lo..hi) DafnySequence subsequence(uint64 lo, uint64 hi) const { - DafnySequence ret; - ret.sptr = sptr; - ret.start = start + lo; - ret.len = hi - lo; + auto ret = DafnySequence(hi - lo); + std::copy(this->ptr() + lo, this->ptr() + hi, ret.ptr()); return ret; } From 6bbfb5d9be71955bd7663abbcc2dd73f17e2a96d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 11:20:53 -0400 Subject: [PATCH 438/573] Create a small test case of deep functor application (currently fails) --- Test/modules/SimpleGood.dfy | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 7dd787ec245..c03c0e3fab4 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -5,18 +5,18 @@ module ABase { type Key } -abstract module P_normal { - import A : ABase - - method Test(a:A.Key) -} +//abstract module P_normal { +// import A : ABase // -// Use an element of a formal parameter -// Morally equivalent to P_normal above -//abstract module P(A: ABase) { // method Test(a:A.Key) //} // +// Use an element of a formal parameter +// Morally equivalent to P_normal above +abstract module P(A: ABase) { + method Test(a:A.Key) +} + /* // Try simple functor application abstract module Apply { @@ -79,3 +79,20 @@ abstract module FunctorAppRefiner refines P(ABase) { // import A // import X = A //} + +// Try a functor that itself applies a functor +abstract module AnotherFunctor(AB: ABase) { + import P1 = P(AB) +} + +module AInt refines ABase { + type Key = int +} + +abstract module DeepApplication { + import AF = AnotherFunctor(AInt) + + method Test(x:int, y:AF.P1.A.Key) + requires x == y + +} From 387e1ff6a6df9e5e0e77f64fd3c0efa024772cfa Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 11:33:31 -0400 Subject: [PATCH 439/573] Start fleshing out deep functor app. Need to refactor functor app, so that we can recurse. --- Source/Dafny/Resolver.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index df6a9470fa1..057f124a726 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2521,6 +2521,8 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi // 1) Clone the base module definition // 2) For each formal, update the AliasModuleDecl we introduced // to point at the actual module parameter + // 3) Update any other functor applications in this module to use the new actual as well + // 4) Compute the signature for our newly created module // 1) LiteralModuleDecl literalRoot = (LiteralModuleDecl) root; @@ -2562,7 +2564,23 @@ public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qi } } - // 3) Compute the new signature + // 3) + // Update each module import that involves a functor (if any) + foreach (TopLevelDecl decl in newDef.TopLevelDecls) { + if (decl is AliasModuleDecl amd) { + if (amd.TargetQId.FunctorApp != null) { + var formalNames = qid.FunctorApp.functor.Formals.ConvertAll(f => f.Name); + foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { + if (actual in formalNames) { + // TODO: We need to reapply this functor too + } + } + } + } + } + // TODO: Update the refines for the functor too? + + // 4) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); // TODO: Need this? // sig.Refines = refinementTransformer.RefinedSig; From 60914f7808ebba30242def6ae938cc2b6dc5c1ba Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 12:07:29 -0400 Subject: [PATCH 440/573] Partway through recursive application --- Source/Dafny/DafnyAst.cs | 5 ++ Source/Dafny/Resolver.cs | 185 ++++++++++++++++++++++----------------- 2 files changed, 111 insertions(+), 79 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 9226bcb9636..1ce6a620646 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4031,6 +4031,11 @@ public FunctorApplication(IToken tok, List moduleParamNames) this.moduleParamNames = moduleParamNames; } + public FunctorApplication Clone() { + FunctorApplication ret = new FunctorApplication(tok, moduleParamNames); + ret.functor = functor; + } + public override string ToString() { string result = tok.val; if (moduleParamNames.Count > 0) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 057f124a726..3d7130d9b8d 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2501,103 +2501,130 @@ private ModuleDefinition GetDefFromDecl(ModuleDecl decl) { return null; } - // Returns the resolved Module declaration corresponding to the qualified module id - // Requires the root to have been resolved - // Issues an error and returns null if the path is not valid - public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qid, ErrorReporter reporter) { + private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { + if (!Resolver.virtualModules.ContainsKey(functorApp)) { + // Apply the functor + // 1) Clone the base module definition + // 2) For each formal, update the AliasModuleDecl we introduced + // to point at the actual module parameter + // 3) Update any other functor applications in this module to use the new actual as well + // 4) Compute the signature for our newly created module + + // 1) + ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); + ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); + // Should have the same scope, not a clone, as cloning allocates new tokens + //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + + if (functorApp.functor.Formals.Count != functorApp.moduleParams.Count) { + var msg = + $"Module {literalRoot.Name} expects {functorApp.functor.Formals.Count} parameters, got {functorApp.moduleParams.Count}"; + reporter.Error(MessageSource.Resolver, functorApp.tok, msg); + return null; + } - Contract.Requires(qid != null); - Contract.Requires(qid.FunctorApp != null || qid.Path.Count > 0); + // 2) + foreach (var pair in System.Linq.Enumerable.Zip(functorApp.functor.Formals, functorApp.moduleParams)) { + ModuleFormal formal = pair.Item1; + ModuleDecl actual = pair.Item2; - List Path = qid.Path; - ModuleDecl decl = root; - ModuleSignature p = null; - int k = 1; + if (formal.TypeDef == null) { + formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); + } - if (qid.FunctorApp != null) { - k = 0; // Starting point in the Path iteration - if (!Resolver.virtualModules.ContainsKey(qid.FunctorApp)) { - // Apply the functor - // 1) Clone the base module definition - // 2) For each formal, update the AliasModuleDecl we introduced - // to point at the actual module parameter - // 3) Update any other functor applications in this module to use the new actual as well - // 4) Compute the signature for our newly created module - - // 1) - LiteralModuleDecl literalRoot = (LiteralModuleDecl) root; - ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); - ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); - // Should have the same scope, not a clone, as cloning allocates new tokens - //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; - - if (qid.FunctorApp.functor.Formals.Count != qid.FunctorApp.moduleParams.Count) { - var msg = $"Module {decl.Name} expects {qid.FunctorApp.functor.Formals.Count} parameters, got {qid.FunctorApp.moduleParams.Count}"; - reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, msg); + if (!EqualsOrRefines(actual.Signature, formal.TypeDef)) { + var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; + reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; } - // 2) - foreach (var pair in System.Linq.Enumerable.Zip(qid.FunctorApp.functor.Formals, qid.FunctorApp.moduleParams)) { - ModuleFormal formal = pair.Item1; - ModuleDecl actual = pair.Item2; - - if (formal.TypeDef == null) { - formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); + // Find the artificial alias decl we created, and update it with the actual + foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { + amd.Signature = actual.Signature; + // TODO: Need this? + // amd.Signature.Refines = refinementTransformer.RefinedSig; + // or this? + // prog.ModuleSigs[m] = amd.Signature; } + } + } - if (!EqualsOrRefines(actual.Signature, formal.TypeDef)) { - var msg = $"Module {decl.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; - reporter.Error(MessageSource.Resolver, qid.FunctorApp.tok, msg); - return null; - } + // 3) + // Update each module import that involves a functor (if any) + foreach (TopLevelDecl decl in newDef.TopLevelDecls) { + if (decl is AliasModuleDecl amd) { + if (amd.TargetQId.FunctorApp != null) { + // TODO: Optimize to only do all of this if needed + var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); + var newFunctorApp = amd.TargetQId.FunctorApp.Clone(); + newFunctorApp.moduleParams = new List(); - // Find the artificial alias decl we created, and update it with the actual - foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { - amd.Signature = actual.Signature; - // TODO: Need this? - // amd.Signature.Refines = refinementTransformer.RefinedSig; - // or this? - // prog.ModuleSigs[m] = amd.Signature; + foreach (var pair in System.Linq.Enumerable.Zip(amd.TargetQId.FunctorApp.moduleParamNames, + amd.TargetQId.FunctorApp.moduleParams)) { + string actualName = pair.Item1.ToString(); + ModuleDecl oldActual = pair.Item2; + if (formalNames.Contains(actual.ToString())) { + newFunctorApp.moduleParams.Add(newActual); + } else { + newFunctorApp.moduleParams.Add(oldActual); + } } - } - } - // 3) - // Update each module import that involves a functor (if any) - foreach (TopLevelDecl decl in newDef.TopLevelDecls) { - if (decl is AliasModuleDecl amd) { - if (amd.TargetQId.FunctorApp != null) { - var formalNames = qid.FunctorApp.functor.Formals.ConvertAll(f => f.Name); - foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { - if (actual in formalNames) { - // TODO: We need to reapply this functor too - } + // TODO: Fix this up (see above) + foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { + if (formalNames.Contains(actual.ToString())) { + // We need to reapply this functor too + var newImportDecl = ApplyFunctor(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root); + amd.Signature = newImportDecl.Signature; } } } } - // TODO: Update the refines for the functor too? + } + // TODO: Update the refines for the functor too? + + // 4) + ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); + // TODO: Need this? + // sig.Refines = refinementTransformer.RefinedSig; + // or this? + // prog.ModuleSigs[m] = sig; + // REVIEW: Should isAnExport be true? + var b = ResolveModuleDefinition(newDef, sig, isAnExport: false); + Contract.Assert(b); // TODO: Better error handling + + // 4) Combine everything into a ModuleDecl we can return + LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, literalRoot.EnclosingModuleDefinition); + newDecl.Signature = sig; + newDecl.DefaultExport = sig; + Resolver.virtualModules[functorApp] = newDecl; + return newDecl; + } else { + return Resolver.virtualModules[functorApp]; + } + } - // 4) - ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); - // TODO: Need this? - // sig.Refines = refinementTransformer.RefinedSig; - // or this? - // prog.ModuleSigs[m] = sig; - // REVIEW: Should isAnExport be true? - var b = ResolveModuleDefinition(newDef, sig, isAnExport:false); - Contract.Assert(b); // TODO: Better error handling + // Returns the resolved Module declaration corresponding to the qualified module id + // Requires the root to have been resolved + // Issues an error and returns null if the path is not valid + public ModuleDecl ResolveModuleQualifiedId(ModuleDecl root, ModuleQualifiedId qid, ErrorReporter reporter) { - // 4) Combine everything into a ModuleDecl we can return - LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, root.EnclosingModuleDefinition); - newDecl.Signature = sig; - newDecl.DefaultExport = sig; - Resolver.virtualModules[qid.FunctorApp] = newDecl; - decl = newDecl; + Contract.Requires(qid != null); + Contract.Requires(qid.FunctorApp != null || qid.Path.Count > 0); + + List Path = qid.Path; + ModuleDecl decl = root; + ModuleSignature p = null; + int k = 1; + + if (qid.FunctorApp != null) { + k = 0; // Starting point in the Path iteration + + decl = ApplyFunctor(qid.FunctorApp, (LiteralModuleDecl) decl); + if (decl == null) { // Propagate any errors that arose during functor application + return null; } - decl = Resolver.virtualModules[qid.FunctorApp]; p = decl.Signature; } else if (qid.Root is LiteralModuleDecl lmd && lmd.ModuleDef is Functor functor) { var msg = $"Functor {functor.Name} expects {functor.Formals.Count} arguments"; From 9192246ac11ebd9d1a06a973fd10e6d963e3da44 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 13:49:46 -0400 Subject: [PATCH 441/573] Clean up and fixes so that recursive functor application works, at least enough for SimpleGood test --- Source/Dafny/DafnyAst.cs | 5 ++++- Source/Dafny/Resolver.cs | 46 ++++++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 1ce6a620646..28fc24a5232 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -14,6 +14,7 @@ using System.Linq; using Microsoft.Boogie; using System.Diagnostics; +using System.Reflection.Metadata.Ecma335; namespace Microsoft.Dafny { public class Program { @@ -4031,9 +4032,11 @@ public FunctorApplication(IToken tok, List moduleParamNames) this.moduleParamNames = moduleParamNames; } - public FunctorApplication Clone() { + // Does not clonse the moduleParams. Caller needs to handle that part. + public FunctorApplication ShallowClone() { FunctorApplication ret = new FunctorApplication(tok, moduleParamNames); ret.functor = functor; + return ret; } public override string ToString() { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3d7130d9b8d..054393f355c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2511,7 +2511,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 4) Compute the signature for our newly created module // 1) - ScopeCloner cloner = new ScopeCloner(literalRoot.DefaultExport.VisibilityScope); + ScopeCloner cloner = new ScopeCloner(literalRoot.Signature.VisibilityScope); ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); // Should have the same scope, not a clone, as cloning allocates new tokens //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; @@ -2524,9 +2524,11 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } // 2) + Dictionary formalActualPairs = new Dictionary(); foreach (var pair in System.Linq.Enumerable.Zip(functorApp.functor.Formals, functorApp.moduleParams)) { ModuleFormal formal = pair.Item1; ModuleDecl actual = pair.Item2; + formalActualPairs[formal.Name.val] = actual; if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); @@ -2555,29 +2557,37 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl foreach (TopLevelDecl decl in newDef.TopLevelDecls) { if (decl is AliasModuleDecl amd) { if (amd.TargetQId.FunctorApp != null) { - // TODO: Optimize to only do all of this if needed + // Do we need to update this functor? var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); - var newFunctorApp = amd.TargetQId.FunctorApp.Clone(); - newFunctorApp.moduleParams = new List(); - - foreach (var pair in System.Linq.Enumerable.Zip(amd.TargetQId.FunctorApp.moduleParamNames, - amd.TargetQId.FunctorApp.moduleParams)) { - string actualName = pair.Item1.ToString(); - ModuleDecl oldActual = pair.Item2; + bool update = false; + foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { if (formalNames.Contains(actual.ToString())) { - newFunctorApp.moduleParams.Add(newActual); - } else { - newFunctorApp.moduleParams.Add(oldActual); + // We need to reapply this functor + update = true; + break; } } - // TODO: Fix this up (see above) - foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { - if (formalNames.Contains(actual.ToString())) { - // We need to reapply this functor too - var newImportDecl = ApplyFunctor(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root); - amd.Signature = newImportDecl.Signature; + if (update) { + var newFunctorApp = amd.TargetQId.FunctorApp.ShallowClone(); + newFunctorApp.moduleParams = new List(); + + // Compute a new set of actual parameters, taking into account the outer functor's actuals + foreach (var pair in System.Linq.Enumerable.Zip(amd.TargetQId.FunctorApp.moduleParamNames, + amd.TargetQId.FunctorApp.moduleParams)) { + string actualName = pair.Item1.ToString(); + ModuleDecl oldActual = pair.Item2; + + if (formalActualPairs.ContainsKey(actualName)) { + newFunctorApp.moduleParams.Add(formalActualPairs[actualName]); + } else { + newFunctorApp.moduleParams.Add(oldActual); + } } + + // Compute the result of the new application + var newImportDecl = ApplyFunctor(newFunctorApp, (LiteralModuleDecl)amd.TargetQId.Root); + amd.Signature = newImportDecl.Signature; } } } From 3127b716470bb3b502d9105b339b326746fca429 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 13:52:10 -0400 Subject: [PATCH 442/573] Confirm the rest of the known tests still work --- Test/modules/SimpleGood.dfy | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index c03c0e3fab4..60318502246 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,7 +17,6 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -/* // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -66,14 +65,13 @@ abstract module FunctorAppRefiner refines P(ABase) { Test(x); } } -*/ + //// Try refining a functor application applied to our formal argument //module FunctorAppParamRefiner(abase: ABase) refines P(abase) { // // Refer to the formal name of our refinement functor // import X = A //} - - +// //// Dafny says this isn't okay //module NormalRefinement refines P_normal { // import A From 2d93223622e9813f374c7ecfbad8a33e8a1f6725 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 13:53:46 -0400 Subject: [PATCH 443/573] Resolve2.dfy now works too! --- Test/modules/Resolve2.dfy | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Test/modules/Resolve2.dfy b/Test/modules/Resolve2.dfy index 06ca147a34b..a43fad25394 100644 --- a/Test/modules/Resolve2.dfy +++ b/Test/modules/Resolve2.dfy @@ -22,8 +22,8 @@ abstract module SortUtil(T: TotalOrder) { } } -abstract module SortMethodUtil(T: TotalOrder, S:SortUtil(T)) { - //import S = SortUtil(T) +abstract module SortMethodUtil(T: TotalOrder) { + import S = SortUtil(T) method m(x: seq) returns (y: seq) ensures S.IsStrictlySorted(y) @@ -34,15 +34,14 @@ abstract module SortMethodUtil(T: TotalOrder, S:SortUtil(T)) { abstract module Stuff { import T = IntTotalOrder - //import W = SortMethodUtil(IntTotalOrder).S.T - import W = SortMethodUtil(IntTotalOrder, SortUtil(IntTotalOrder)).S.T + import W = SortMethodUtil(IntTotalOrder).S.T -// lemma same_types(x: T.K, y: W.K) -// requires x == y == 0 -// { -// } + lemma same_types(x: T.K, y: W.K) + requires x == y == 0 + { + } } -/* + abstract module ParameterizedStuff(T: TotalOrder) { import W = SortMethodUtil(T).S.T @@ -51,4 +50,3 @@ abstract module ParameterizedStuff(T: TotalOrder) { { } } -*/ From 61859c8bc0006062e39eae072977cae1d3bd7699 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 13:58:48 -0400 Subject: [PATCH 444/573] ResolveBadRefine also works. --- Test/modules/ResolveBadRefine.dfy.expect | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Test/modules/ResolveBadRefine.dfy.expect diff --git a/Test/modules/ResolveBadRefine.dfy.expect b/Test/modules/ResolveBadRefine.dfy.expect new file mode 100644 index 00000000000..7e4964d619f --- /dev/null +++ b/Test/modules/ResolveBadRefine.dfy.expect @@ -0,0 +1,2 @@ +ResolveBadRefine.dfy(27,13): Error: Module IntOnly expects IntTotalOrder, got T +1 resolution/type errors detected in ResolveBadRefine.dfy From 43822b344c404478bc1165bebf4e2ff2845ba9bd Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 16:05:44 -0400 Subject: [PATCH 445/573] Add an expect file for Resolve2.dfy which is now passing --- Test/modules/Resolve2.dfy.expect | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Test/modules/Resolve2.dfy.expect diff --git a/Test/modules/Resolve2.dfy.expect b/Test/modules/Resolve2.dfy.expect new file mode 100644 index 00000000000..ebe2328e072 --- /dev/null +++ b/Test/modules/Resolve2.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 2 verified, 0 errors From 313da003b5d741401fc4d26cf6aee20316627cd1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 16:39:00 -0400 Subject: [PATCH 446/573] Some comments on what's being attempted here --- Test/modules/Resolve.dfy | 6 +++--- Test/modules/Resolve3.dfy | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Test/modules/Resolve.dfy b/Test/modules/Resolve.dfy index cebfefd8d47..7a403a8153a 100644 --- a/Test/modules/Resolve.dfy +++ b/Test/modules/Resolve.dfy @@ -14,10 +14,10 @@ abstract module C(a: A) { abstract module D(a_d: A) refines C(a_d) { } -abstract module E(c: C) { +abstract module E(c: C) { // Invalid: C is a naked Functor. Can't allow this and disallow MissingParameter in ModuleApplication.dfy } -abstract module F(e: E) { +abstract module F(e: E) { // Invalid: E is a naked Functor. Can't allow this and disallow MissingParameter in ModuleApplication.dfy } abstract module G(a_g: A) refines E(C(a_g)) { @@ -25,7 +25,7 @@ abstract module G(a_g: A) refines E(C(a_g)) { abstract module H(a_h: A) refines F(G(a_h)) { import X = a_h - //import Y = e.c.a // Invalid: e is an argument to F, which has already been applied + //import Y = e.c.a // Invalid?: e is an argument to F, which has already been applied import Z = G(a_h).a_g import W = G(a_h).a diff --git a/Test/modules/Resolve3.dfy b/Test/modules/Resolve3.dfy index e0ca0f9ee47..925da57deb5 100644 --- a/Test/modules/Resolve3.dfy +++ b/Test/modules/Resolve3.dfy @@ -8,20 +8,22 @@ abstract module A(u: U(L)) { import E = u.l } -module W(x: L) refines U(x) { +abstract module W(x: L) refines U(x) { } -module B(r: L) { +abstract module B(r: L) { import D = W(r) } -module C refines L { +abstract module C refines L { function the_int() : int { 5 } } abstract module Stuff { - // This should resolve to C - import X = A(B(C).D).E + + // B(C).D = W(C), which refines U(C) + // Is U(C) <= U(L)? + import X = A(B(C).D).E // This should resolve to C lemma stuff() ensures X.the_int() == 5 From d3849a538cd63cca87ae3f24163a24c887af019e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 17:30:46 -0400 Subject: [PATCH 447/573] Try to do more sophisticated refines checking, despite difficult circumstances --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 47 ++++++++++- Test/modules/SimpleGood.dfy | 151 ++++++++++++++++++++---------------- 3 files changed, 128 insertions(+), 72 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 28fc24a5232..98ffb176612 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4032,7 +4032,7 @@ public FunctorApplication(IToken tok, List moduleParamNames) this.moduleParamNames = moduleParamNames; } - // Does not clonse the moduleParams. Caller needs to handle that part. + // Does not clone the moduleParams. Caller needs to handle that part. public FunctorApplication ShallowClone() { FunctorApplication ret = new FunctorApplication(tok, moduleParamNames); ret.functor = functor; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 054393f355c..8cb6b5b8875 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2459,11 +2459,52 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin } } - private bool EqualsOrRefines(ModuleSignature actual, ModuleDefinition formal) { + private bool EqualsOrRefines(ModuleSignature actual, ModuleFormal formal) { if (actual == null) { return false; - } else if (actual.ModuleDef == formal) { + } else if (actual.ModuleDef == formal.TypeDef) { return true; + } else if (actual.ModuleDef is Functor actualFunc && (formal.TypeName.Root is LiteralModuleDecl lmd) && lmd.ModuleDef is Functor formalFunc) { + // Check if the functor's are compatible and their arguments are compatible + if (actualFunc == formalFunc) { // We don't currently support functor refinement + // We don't have access to the arguments directly any more (they were held in the FunctorApplication), + // but we can (I think) reconstruct them from the module imports we inserted + List actualArgs = new List(); + List formalArgs = new List(); + + // Find the artificial alias decl we created + foreach (ModuleFormal aFormal in actualFunc.Formals) { + foreach (TopLevelDecl topLevelDecl in actualFunc.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == aFormal.Name.val) { + actualArgs.Add(amd.Signature); + } + } + } + + // Find the artificial alias decl we created + foreach (ModuleFormal fFormal in formalFunc.Formals) { + foreach (TopLevelDecl topLevelDecl in formalFunc.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == fFormal.Name.val) { + // Create a new "formal" for the purposes of EqualsOrRefines + var newFormal = new ModuleFormal(fFormal.Name, amd.TargetQId); + newFormal.TypeDef = amd.Signature.ModuleDef; + formalArgs.Add(newFormal); + } + } + } + + // Check that the arguments pairwise refine + foreach (var pair in System.Linq.Enumerable.Zip(actualArgs, formalArgs)) { + var actualArg = pair.Item1; + var formalArg = pair.Item2; + if (!EqualsOrRefines(actualArg, formalArg)) { + return false; + } + } + return true; + } else { + return false; + } } else { return EqualsOrRefines(actual.Refines, formal); } @@ -2534,7 +2575,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); } - if (!EqualsOrRefines(actual.Signature, formal.TypeDef)) { + if (!EqualsOrRefines(actual.Signature, formal)) { var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 60318502246..91c63482698 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,80 +17,95 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -// Try simple functor application -abstract module Apply { - import OutputBase = P(ABase) - - method More(a:OutputBase.A.Key) { - OutputBase.Test(a); - } -} - - -// Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) - - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b - { - Output1.Test(a); - } -} - - -// Try passing a refinement to a functor -abstract module B refines ABase { - method BTest() -} - -abstract module ApplyRefinement { - import OutputRefined = P(B) - - method UseB() { - OutputRefined.A.BTest(); - } - - method KeyTest(b:OutputRefined.A.Key) - { - OutputRefined.Test(b); - } -} - - -// Try refining the result of a functor application -abstract module FunctorAppRefiner refines P(ABase) { - method MoreTest(x:A.Key) { - Test(x); - } -} - -//// Try refining a functor application applied to our formal argument -//module FunctorAppParamRefiner(abase: ABase) refines P(abase) { -// // Refer to the formal name of our refinement functor -// import X = A +//// Try simple functor application +//abstract module Apply { +// import OutputBase = P(ABase) +// +// method More(a:OutputBase.A.Key) { +// OutputBase.Test(a); +// } //} // -//// Dafny says this isn't okay -//module NormalRefinement refines P_normal { -// import A -// import X = A +// +//// Make sure functors behave applicatively +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } +//} +// +// +//// Try passing a refinement to a functor +//abstract module B refines ABase { +// method BTest() +//} +// +//abstract module ApplyRefinement { +// import OutputRefined = P(B) +// +// method UseB() { +// OutputRefined.A.BTest(); +// } +// +// method KeyTest(b:OutputRefined.A.Key) +// { +// OutputRefined.Test(b); +// } +//} +// +// +//// Try refining the result of a functor application +//abstract module FunctorAppRefiner refines P(ABase) { +// method MoreTest(x:A.Key) { +// Test(x); +// } +//} +// +////// Try refining a functor application applied to our formal argument +////module FunctorAppParamRefiner(abase: ABase) refines P(abase) { +//// // Refer to the formal name of our refinement functor +//// import X = A +////} +//// +////// Dafny says this isn't okay +////module NormalRefinement refines P_normal { +//// import A +//// import X = A +////} +// +//// Try a functor that itself applies a functor +//abstract module AnotherFunctor(AB: ABase) { +// import P1 = P(AB) +//} +// +//module AInt refines ABase { +// type Key = int +//} +// +//abstract module DeepApplication { +// import AF = AnotherFunctor(AInt) +// +// method Test(x:int, y:AF.P1.A.Key) +// requires x == y +// //} -// Try a functor that itself applies a functor -abstract module AnotherFunctor(AB: ABase) { - import P1 = P(AB) -} +// Create a functor that takes an argument that is itself a functor application... +abstract module ComplexFormal(p: P(ABase)) { -module AInt refines ABase { - type Key = int } -abstract module DeepApplication { - import AF = AnotherFunctor(AInt) - - method Test(x:int, y:AF.P1.A.Key) - requires x == y +abstract module C refines ABase { + method CTest() +} +// ... and then try to instantiate it with the functor applied to a refinement +abstract module InstantiateComplex { + import CF = ComplexFormal(P(C)) } + From 13b389c7c33f42de30bdc409392126935b1acbcd Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 21:02:11 -0400 Subject: [PATCH 448/573] SimpleGood example seems to verify. Resolve3 still doesn't --- Test/modules/SimpleGood.dfy | 148 ++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 91c63482698..fad09cfd30c 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,84 +17,84 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -//// Try simple functor application -//abstract module Apply { -// import OutputBase = P(ABase) -// -// method More(a:OutputBase.A.Key) { -// OutputBase.Test(a); -// } -//} -// -// -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} -// -// -//// Try passing a refinement to a functor -//abstract module B refines ABase { -// method BTest() -//} -// -//abstract module ApplyRefinement { -// import OutputRefined = P(B) -// -// method UseB() { -// OutputRefined.A.BTest(); -// } -// -// method KeyTest(b:OutputRefined.A.Key) -// { -// OutputRefined.Test(b); -// } -//} -// -// -//// Try refining the result of a functor application -//abstract module FunctorAppRefiner refines P(ABase) { -// method MoreTest(x:A.Key) { -// Test(x); -// } -//} -// -////// Try refining a functor application applied to our formal argument -////module FunctorAppParamRefiner(abase: ABase) refines P(abase) { -//// // Refer to the formal name of our refinement functor -//// import X = A -////} -//// -////// Dafny says this isn't okay -////module NormalRefinement refines P_normal { -//// import A -//// import X = A -////} -// -//// Try a functor that itself applies a functor -//abstract module AnotherFunctor(AB: ABase) { -// import P1 = P(AB) -//} -// -//module AInt refines ABase { -// type Key = int +// Try simple functor application +abstract module Apply { + import OutputBase = P(ABase) + + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); + } +} + + +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() +} + +abstract module ApplyRefinement { + import OutputRefined = P(B) + + method UseB() { + OutputRefined.A.BTest(); + } + + method KeyTest(b:OutputRefined.A.Key) + { + OutputRefined.Test(b); + } +} + + +// Try refining the result of a functor application +abstract module FunctorAppRefiner refines P(ABase) { + method MoreTest(x:A.Key) { + Test(x); + } +} + +//// Try refining a functor application applied to our formal argument +//module FunctorAppParamRefiner(abase: ABase) refines P(abase) { +// // Refer to the formal name of our refinement functor +// import X = A //} // -//abstract module DeepApplication { -// import AF = AnotherFunctor(AInt) -// -// method Test(x:int, y:AF.P1.A.Key) -// requires x == y -// +//// Dafny says this isn't okay +//module NormalRefinement refines P_normal { +// import A +// import X = A //} +// Try a functor that itself applies a functor +abstract module AnotherFunctor(AB: ABase) { + import P1 = P(AB) +} + +module AInt refines ABase { + type Key = int +} + +abstract module DeepApplication { + import AF = AnotherFunctor(AInt) + + method Test(x:int, y:AF.P1.A.Key) + requires x == y + +} + // Create a functor that takes an argument that is itself a functor application... abstract module ComplexFormal(p: P(ABase)) { From 7f807dab3bc573531992f707f4d85fe04d34fa02 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 5 May 2021 21:56:59 -0400 Subject: [PATCH 449/573] Add an (unsuccessful) attempt at resolving B(C).D when used as a parameter. --- Source/Dafny/Resolver.cs | 27 ++++++++++++++++++++++++++- Test/modules/Resolve3.dfy | 5 ++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 8cb6b5b8875..2f83ad863e8 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1592,7 +1592,32 @@ private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, ModuleDecl moduleParamDecl; res = ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, id, out moduleParamDecl); if (res) { - qid.FunctorApp.moduleParams.Add(moduleParamDecl); + List Path = id.Path; + ModuleDecl decl = moduleParamDecl; + /* + ModuleSignature p = moduleParamDecl.Signature; + // Duplicates logic from ResolveModuleQualifiedId for chasing down the full ModuleQualifiedId path + for (int k=0; k < id.Path.Count; k++) { + var tld = p.TopLevels.GetValueOrDefault(Path[k].val, null); + if (!(tld is ModuleDecl dd)) { + if (decl.Signature.ModuleDef == null) { + reporter.Error(MessageSource.Resolver, Path[k], + ModuleNotFoundErrorMessage(k, Path, " because of previous error")); + } else { + reporter.Error(MessageSource.Resolver, Path[k], ModuleNotFoundErrorMessage(k, Path)); + } + return false; + } + + // Any aliases along the qualified path ought to be already resolved, + // else the modules are not being resolved in the right order + if (dd is AliasModuleDecl amd) { + Contract.Assert(amd.Signature != null); + } + decl = dd; + } + */ + qid.FunctorApp.moduleParams.Add(decl); // We take responsibility for adding edges to arguments dependencies.AddEdge(source, moduleParamDecl); } else { diff --git a/Test/modules/Resolve3.dfy b/Test/modules/Resolve3.dfy index 925da57deb5..e908a5256fc 100644 --- a/Test/modules/Resolve3.dfy +++ b/Test/modules/Resolve3.dfy @@ -23,7 +23,10 @@ abstract module Stuff { // B(C).D = W(C), which refines U(C) // Is U(C) <= U(L)? - import X = A(B(C).D).E // This should resolve to C + import Tmp = B(C).D // When we resolve this, we've applied B to C, and hence W to C (to get D) + // so it's not obvious that it should refine U(C) + import X = A(Tmp).E // This should resolve to C + //import X = A(B(C).D).E // This should resolve to C lemma stuff() ensures X.the_int() == 5 From aee1c3a9f2dafbd5e0130495ecbb3abd08ddb8bc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 6 May 2021 17:09:07 -0400 Subject: [PATCH 450/573] For now, we don't care about Resolve.dfy or Resolve3.dfy --- Test/modules/Resolve.dfy | 2 -- Test/modules/Resolve3.dfy | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/modules/Resolve.dfy b/Test/modules/Resolve.dfy index 7a403a8153a..70d6950c63f 100644 --- a/Test/modules/Resolve.dfy +++ b/Test/modules/Resolve.dfy @@ -1,5 +1,3 @@ -// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" -// RUN: %diff "%s.expect" "%t" abstract module A { datatype T = T diff --git a/Test/modules/Resolve3.dfy b/Test/modules/Resolve3.dfy index e908a5256fc..7f68d97e23e 100644 --- a/Test/modules/Resolve3.dfy +++ b/Test/modules/Resolve3.dfy @@ -5,6 +5,8 @@ abstract module U(l: L) { } abstract module A(u: U(L)) { +// Another option for declaring A: +//abstract module A(l:L, u: U(l)) { import E = u.l } From 53108281af30bfb84aafcf3fe04672f49bb2f28f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 6 May 2021 17:42:33 -0400 Subject: [PATCH 451/573] Somewhat convoluted solution to refinements of functors. Leads a new problem with CrashSafeSpec --- Source/Dafny/Resolver.cs | 88 ++++++++++-------- Test/modules/SimpleGood.dfy | 176 +++++++++++++++++++----------------- 2 files changed, 146 insertions(+), 118 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 2f83ad863e8..957614cb7d0 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2484,51 +2484,67 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin } } - private bool EqualsOrRefines(ModuleSignature actual, ModuleFormal formal) { - if (actual == null) { - return false; - } else if (actual.ModuleDef == formal.TypeDef) { - return true; - } else if (actual.ModuleDef is Functor actualFunc && (formal.TypeName.Root is LiteralModuleDecl lmd) && lmd.ModuleDef is Functor formalFunc) { - // Check if the functor's are compatible and their arguments are compatible - if (actualFunc == formalFunc) { // We don't currently support functor refinement - // We don't have access to the arguments directly any more (they were held in the FunctorApplication), - // but we can (I think) reconstruct them from the module imports we inserted - List actualArgs = new List(); - List formalArgs = new List(); - - // Find the artificial alias decl we created - foreach (ModuleFormal aFormal in actualFunc.Formals) { - foreach (TopLevelDecl topLevelDecl in actualFunc.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == aFormal.Name.val) { - actualArgs.Add(amd.Signature); - } + private bool EqualsOrRefinesFunctorApps(Functor actualFunc, Functor formalFunc) { + // Check if the functor's are compatible and their arguments are compatible + if (actualFunc == formalFunc) { // We don't currently support functor refinement + // We don't have access to the arguments directly any more (they were held in the FunctorApplication), + // but we can (I think) reconstruct them from the module imports we inserted + List actualArgs = new List(); + List formalArgs = new List(); + + // Find the artificial alias decl we created + foreach (ModuleFormal aFormal in actualFunc.Formals) { + foreach (TopLevelDecl topLevelDecl in actualFunc.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == aFormal.Name.val) { + actualArgs.Add(amd.Signature); } } + } - // Find the artificial alias decl we created - foreach (ModuleFormal fFormal in formalFunc.Formals) { - foreach (TopLevelDecl topLevelDecl in formalFunc.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == fFormal.Name.val) { - // Create a new "formal" for the purposes of EqualsOrRefines - var newFormal = new ModuleFormal(fFormal.Name, amd.TargetQId); - newFormal.TypeDef = amd.Signature.ModuleDef; - formalArgs.Add(newFormal); - } + // Find the artificial alias decl we created + foreach (ModuleFormal fFormal in formalFunc.Formals) { + foreach (TopLevelDecl topLevelDecl in formalFunc.TopLevelDecls) { + if (topLevelDecl is AliasModuleDecl amd && amd.Name == fFormal.Name.val) { + // Create a new "formal" for the purposes of EqualsOrRefines + var newFormal = new ModuleFormal(fFormal.Name, amd.TargetQId); + newFormal.TypeDef = amd.Signature.ModuleDef; + formalArgs.Add(newFormal); } } + } - // Check that the arguments pairwise refine - foreach (var pair in System.Linq.Enumerable.Zip(actualArgs, formalArgs)) { - var actualArg = pair.Item1; - var formalArg = pair.Item2; - if (!EqualsOrRefines(actualArg, formalArg)) { - return false; - } + // Check that the arguments pairwise refine + foreach (var pair in System.Linq.Enumerable.Zip(actualArgs, formalArgs)) { + var actualArg = pair.Item1; + var formalArg = pair.Item2; + if (!EqualsOrRefines(actualArg, formalArg)) { + return false; } + } + + return true; + } else { + return false; + } + } + + private bool EqualsOrRefines(ModuleSignature actual, ModuleFormal formal) { + if (actual == null) { + return false; + } else if (actual.ModuleDef == formal.TypeDef) { + return true; + } else if (actual.ModuleDef is Functor actualFunc && (formal.TypeName.Root is LiteralModuleDecl lmd) && lmd.ModuleDef is Functor formalFunc) { + bool directlyRefines = EqualsOrRefinesFunctorApps(actualFunc, formalFunc); + if (directlyRefines) { return true; + } else if (actual.ModuleDef.RefinementQId != null && + actual.ModuleDef.RefinementQId.Root is LiteralModuleDecl actualLmd && + actualLmd.ModuleDef is Functor actualFunc2) { + return EqualsOrRefinesFunctorApps(actualFunc2, formalFunc); + //} else if (actual.ModuleDef.RefinementQId != null) { + // return EqualsOrRefines(actual.ModuleDef.RefinementQId.Sig, formal); } else { - return false; + return EqualsOrRefines(actual.Refines, formal); } } else { return EqualsOrRefines(actual.Refines, formal); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index fad09cfd30c..f79c7ec9420 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,95 +17,107 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -// Try simple functor application -abstract module Apply { - import OutputBase = P(ABase) - - method More(a:OutputBase.A.Key) { - OutputBase.Test(a); - } -} - - -// Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) - - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b - { - Output1.Test(a); - } -} - - -// Try passing a refinement to a functor -abstract module B refines ABase { - method BTest() -} - -abstract module ApplyRefinement { - import OutputRefined = P(B) - - method UseB() { - OutputRefined.A.BTest(); - } - - method KeyTest(b:OutputRefined.A.Key) - { - OutputRefined.Test(b); - } -} - - -// Try refining the result of a functor application -abstract module FunctorAppRefiner refines P(ABase) { - method MoreTest(x:A.Key) { - Test(x); - } -} - -//// Try refining a functor application applied to our formal argument -//module FunctorAppParamRefiner(abase: ABase) refines P(abase) { -// // Refer to the formal name of our refinement functor -// import X = A +//// Try simple functor application +//abstract module Apply { +// import OutputBase = P(ABase) +// +// method More(a:OutputBase.A.Key) { +// OutputBase.Test(a); +// } //} // -//// Dafny says this isn't okay -//module NormalRefinement refines P_normal { -// import A -// import X = A +// +//// Make sure functors behave applicatively +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } //} - -// Try a functor that itself applies a functor -abstract module AnotherFunctor(AB: ABase) { - import P1 = P(AB) -} - -module AInt refines ABase { - type Key = int -} - -abstract module DeepApplication { - import AF = AnotherFunctor(AInt) - - method Test(x:int, y:AF.P1.A.Key) - requires x == y - -} - +// +// +//// Try passing a refinement to a functor +//abstract module B refines ABase { +// method BTest() +//} +// +//abstract module ApplyRefinement { +// import OutputRefined = P(B) +// +// method UseB() { +// OutputRefined.A.BTest(); +// } +// +// method KeyTest(b:OutputRefined.A.Key) +// { +// OutputRefined.Test(b); +// } +//} +// +// +//// Try refining the result of a functor application +//abstract module FunctorAppRefiner refines P(ABase) { +// method MoreTest(x:A.Key) { +// Test(x); +// } +//} +// +////// Try refining a functor application applied to our formal argument +////module FunctorAppParamRefiner(abase: ABase) refines P(abase) { +//// // Refer to the formal name of our refinement functor +//// import X = A +////} +//// +////// Dafny says this isn't okay +////module NormalRefinement refines P_normal { +//// import A +//// import X = A +////} +// +//// Try a functor that itself applies a functor +//abstract module AnotherFunctor(AB: ABase) { +// import P1 = P(AB) +//} +// +//module AInt refines ABase { +// type Key = int +//} +// +//abstract module DeepApplication { +// import AF = AnotherFunctor(AInt) +// +// method Test(x:int, y:AF.P1.A.Key) +// requires x == y +// +//} +// // Create a functor that takes an argument that is itself a functor application... -abstract module ComplexFormal(p: P(ABase)) { +//abstract module ComplexFormal(p: P(ABase)) { +// +//} +// +//abstract module C refines ABase { +// method CTest() +//} +// +//// ... and then try to instantiate it with the functor applied to a refinement +//abstract module InstantiateComplex { +// import CF = ComplexFormal(P(C)) +//} +// -} +abstract module ComplexFormalDependent(a:ABase, p: P(a)) { -abstract module C refines ABase { - method CTest() } -// ... and then try to instantiate it with the functor applied to a refinement -abstract module InstantiateComplex { - import CF = ComplexFormal(P(C)) +abstract module FunctorAppRefiner2(a:ABase) refines P(a) { } +// Try to instantiate a functor formal with an actual that refines that functor +abstract module FunctorRefinementInstantiation { + import Test = ComplexFormalDependent(ABase, FunctorAppRefiner2(ABase)) +} From 5d48637cc27b65e6ac769aea86fc79fefebf3141 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 6 May 2021 17:43:11 -0400 Subject: [PATCH 452/573] Add new test cases --- Test/modules/FunctorParty.s.dfy | 119 +++++++++++++++ Test/modules/StateMachineRefinement.dfy | 188 ++++++++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 Test/modules/FunctorParty.s.dfy create mode 100644 Test/modules/StateMachineRefinement.dfy diff --git a/Test/modules/FunctorParty.s.dfy b/Test/modules/FunctorParty.s.dfy new file mode 100644 index 00000000000..49e7914412f --- /dev/null +++ b/Test/modules/FunctorParty.s.dfy @@ -0,0 +1,119 @@ +abstract module UIfc { + type UIOp(==) +} + +abstract module UIStateMachine(Ifc:UIfc) { + type Vars(==, !new) + predicate Init(s:Vars) + predicate Next(s:Vars, s':Vars, uiop:Ifc.UIOp) +} + +// The "unwinding condition" necessary to prove the TLA expression: +// L.Init && []L.Next ==> H.Init && []H.Next +abstract module StateMachinesRefine(Ifc: UIfc, L:UIStateMachine(Ifc), H:UIStateMachine(Ifc)) { + + // Implementation must supply an interpretation function. + function I(s:L.Vars) : H.Vars + + // Implementation provides an invariant to support induction. + predicate Inv(s:L.Vars) + + lemma InterpPreservesInit(s:L.Vars) + requires L.Init(s) + ensures H.Init(I(s)) + + lemma InvInit(s:L.Vars) + requires L.Init(s) + ensures Inv(s) + + lemma InvNext(s:L.Vars, s':L.Vars, uiop:Ifc.UIOp) + requires Inv(s) + requires L.Next(s, s', uiop) + ensures Inv(s') + ensures H.Next(I(s), I(s'), uiop) +} + +// This module is just a type-template parameter placeholder. +abstract module BlockType { + type Block(==) +} + +abstract module BlockIfc(B : BlockType) { + type Addr(==) + datatype SingletonBlockOp = Read(a:Addr, b:B.Block) | Write(a:Addr, b:B.Block) + type BlockOp = seq + + // IOSystem demands that IOs be one-at-a-time to make room for crashes. + predicate SingleIO(dop:BlockOp) { |dop| == 1 } +} + +abstract module DiskProgram(Ifc : UIfc, B : BlockType) { + import BlockIfc = BlockIfc(B) + + type Vars(==, !new) + // TODO could we declare that type Vars has these predicates as namespace predicates? That'd be keen. + predicate Init(s:Vars) + predicate Next(s:Vars, s':Vars, uiop:Ifc.UIOp, dop:BlockIfc.BlockOp) +} + +abstract module Disk(B: BlockType) { + import BlockIfc = BlockIfc(B) + + type Vars + predicate Next(s:Vars, s':Vars, dop:BlockIfc.BlockOp) +} + +// TODOiscuss with chris: Having to cart around every parameter required by +// higher-level modules is tedious; it reeks of D, C> nonsense in +// templateland. Would some sort of module-synonym mechanism let us stop doing +// this? Or should we consider trying to mix these functors with "import :" +// type abstraction from Dafny (which still confuses me easily)? I mean, it +// SHOULD help, because instead of a takes-a relation, we'd use a has-a relation. +// Happy to try it, but suspicious we'll be unable to fill in those holes later +// to make them match other parameters. Try it with me? +// +// Solvable via module requires +abstract module IOSystem(IoIfc: UIfc, B: BlockType, Program : DiskProgram(IoIfc, B)) + refines UIStateMachine(IoIfc) +{ + import D = Disk(B) + + datatype Vars = Vars(p: Program.Vars, d: D.Vars) + + predicate Init(s:Vars) + { + && Program.Init(s.p) + //&& Program.Mkfs(s.d) + } + + predicate Next(s:Vars, s':Vars, uiop:Ifc.UIOp) + { + // XXX add crash steps + exists dop :: + && Program.BlockIfc.SingleIO(dop) + && Program.Next(s.p, s'.p, uiop, dop) + && D.Next(s.d, s'.d, dop) + } +} + + +// .s This is the climax of the system. Build system demands that it be instantiatied +// as a non-abstract module, hence supplying a proof. +abstract module SystemTheorem( + Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), CrashSafeSpec: UIStateMachine(Ifc), + Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), CrashSafeSpec)) +{ +} + +////////////////////////////////////////////////////////////////////////////// + +// XXX TODO As written above, nothing forces CrashSafeSpec to actually be +// CrashSafe(Map), nor does anything force P to be +// CachedStorageSystem(CacheClient = Betree, Cache = CrashSafeCache). Does +// that binding belong in a more-detailed theorem here in this .s, or is that a +// build-system constraint? +// +// Maybe the code above is a library .s file, and then another .s file would +// bring in Map and CrashSafe to provide the actual Theorem for our particular +// system. The build system would be what demands the match between the impl +// and whatever spec we're offering in impl (Betree + CrashSafeCache). diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy new file mode 100644 index 00000000000..b05bb511742 --- /dev/null +++ b/Test/modules/StateMachineRefinement.dfy @@ -0,0 +1,188 @@ +// explicit params + +abstract module Ifc { + type TransitionLabel(==,!new) +} + +module MapIfc refines Ifc { + datatype TransitionLabel = + | Query(k: int, value: int) + | Insert(k: int, value: int) +} + +abstract module StateMachine(ifc: Ifc) { + type Variables(==,!new) + predicate Init(s: Variables) + predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) +} + +module MapStateMachine refines StateMachine(MapIfc) +{ + type Variables = map + predicate Init(s: Variables) + { + s == map[] + } + predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) + { + && (l.Query? ==> l.k in s && l.v == s[k] && s' == s) + && (l.Insert? ==> s' == s[l.k := l.v]) + } +} + +abstract module StateMachineRefinement( + ifc: Ifc, + L: StateMachine(ifc), + H: StateMachine(ifc)) +{ + function I(s: L.Variables) : H.Variables + + lemma InitRefinement(s: L.Variables) + requires L.Init(s) + ensures H.Init(I(s)) + + lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) + requires L.Next(s, s', l) + ensures H.Next(I(s), I(s'), l) +} + +module ComposeRefinements( + ifc: Ifc, + P: StateMachine(ifc), + Q: StateMachine(ifc), + R: StateMachine(ifc), + Ref1: StateMachineRefinement(P, Q, ifc), + Ref2: StateMachineRefinement(Q, R, ifc) +) + refines StateMachineRefinement(ifc, P, R) +{ + function I(s: L.Variables) : H.Variables + { + Ref2.I(Ref1.I(s)) + } + + lemma InitRefinement(s: L.Variables) + requires L.Init(s) + ensures H.Init(I(s)) + { + Ref1.InitRefinement(s); + Ref2.InitRefinement(Ref1.I(s)); + } + + lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) + requires L.Next(s, s', l) + ensures H.Next(I(s), I(s'), l) + { + Ref1.NextRefinement(s, s', l); + Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); + } +} + +module MapStateMachine2 refines StateMachine(MapIfc) +{ + datatype Variables = X(m: map) + predicate Init(s: Variables) + { + s.m == map[] + } + predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) + { + && (l.Query? ==> l.k in s.m && l.v == s.m[k] && s.m' == s.m) + && (l.Insert? ==> s.m' == s.m[l.k := l.v]) + } +} + +module MapStateMachine3 refines StateMachine(MapIfc) +{ + datatype Variables = Y(n: map) + predicate Init(s: Variables) + { + s.n == map[] + } + predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) + { + && (l.Query? ==> l.k in s.n && l.v == s.n[k] && s.n' == s.n) + && (l.Insert? ==> s.n' == s.n[l.k := l.v]) + } +} + +module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, MapStateMachine2) +{ + function I(s: L.Variables) : H.Variables + { + H.Variables(s) + } + + lemma InitRefinement(s: L.Variables) + requires L.Init(s) + ensures H.Init(I(s)) + { + } + + lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) + requires L.Next(s, s', l) + ensures H.Next(I(s), I(s'), l) + { + } +} + +module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, MapStateMachine3) +{ + function I(s: L.Variables) : H.Variables + { + H.Variables(s.m) + } + + lemma InitRefinement(s: L.Variables) + requires L.Init(s) + ensures H.Init(I(s)) + { + } + + lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) + requires L.Next(s, s', l) + ensures H.Next(I(s), I(s'), l) + { + } +} + +module Final { + import BigRef = ComposeRefinements( + MapIfc, + MapStateMachine, + MapStateMachine2, + MapStateMachine3, + Refinement_1_2, + Refinement_2_3) + import A = MapStateMachine + import B = MapStateMachine3 + import MapIfc + + lemma stuff() { + var s : A.Variables := map[]; + assert BigRef.I(s) == B.Variables(map[]) + BigRef.InitRefinement(s); + + BigRef.NextRefinement( + map[1 := 2], + map[1 := 2], + MapIfc.Query(1, 2)); + } + + lemma names_for_same_type( + a: MapIfc.TransitionLabel, + b: A.ifc.TransitionLabel, + c: B.ifc.TransitionLabel, + d: BigRef.ifc.TransitionLabel, + e: BigRef.P.ifc.TransitionLabel, + f: BigRef.Q.ifc.TransitionLabel, + g: BigRef.R.ifc.TransitionLabel, + h: BigRef.Ref1.L.TransitionLabel, + i: BigRef.Ref1.H.TransitionLabel, + j: BigRef.Ref2.L.TransitionLabel, + k: BigRef.Ref2.H.TransitionLabel) + requires a == b == c == d == e == f + == g == h == i == j == k + { + } +} From de7743e805dad374d992a5f61e5e3f88d458f605 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 6 May 2021 21:14:38 -0400 Subject: [PATCH 453/573] Slight change in SystemTheorem signature is enough for FunctorParty to go through. --- Test/modules/FunctorParty.s.dfy | 7 +- Test/modules/SimpleGood.dfy | 178 ++++++++++++++++---------------- 2 files changed, 94 insertions(+), 91 deletions(-) diff --git a/Test/modules/FunctorParty.s.dfy b/Test/modules/FunctorParty.s.dfy index 49e7914412f..c7a7e764067 100644 --- a/Test/modules/FunctorParty.s.dfy +++ b/Test/modules/FunctorParty.s.dfy @@ -99,9 +99,12 @@ abstract module IOSystem(IoIfc: UIfc, B: BlockType, Program : DiskProgram(IoIfc, // .s This is the climax of the system. Build system demands that it be instantiatied // as a non-abstract module, hence supplying a proof. +//abstract module SystemTheorem( +// Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), CrashSafeSpec: UIStateMachine(Ifc), +// Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), CrashSafeSpec)) abstract module SystemTheorem( - Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), CrashSafeSpec: UIStateMachine(Ifc), - Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), CrashSafeSpec)) + Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), + Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), UIStateMachine(Ifc))) { } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index f79c7ec9420..32d662c4600 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,98 +17,98 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -//// Try simple functor application -//abstract module Apply { -// import OutputBase = P(ABase) -// -// method More(a:OutputBase.A.Key) { -// OutputBase.Test(a); -// } -//} -// -// -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} -// -// -//// Try passing a refinement to a functor -//abstract module B refines ABase { -// method BTest() -//} -// -//abstract module ApplyRefinement { -// import OutputRefined = P(B) -// -// method UseB() { -// OutputRefined.A.BTest(); -// } -// -// method KeyTest(b:OutputRefined.A.Key) -// { -// OutputRefined.Test(b); -// } -//} -// -// -//// Try refining the result of a functor application -//abstract module FunctorAppRefiner refines P(ABase) { -// method MoreTest(x:A.Key) { -// Test(x); -// } -//} -// -////// Try refining a functor application applied to our formal argument -////module FunctorAppParamRefiner(abase: ABase) refines P(abase) { -//// // Refer to the formal name of our refinement functor -//// import X = A -////} -//// -////// Dafny says this isn't okay -////module NormalRefinement refines P_normal { -//// import A -//// import X = A -////} -// -//// Try a functor that itself applies a functor -//abstract module AnotherFunctor(AB: ABase) { -// import P1 = P(AB) -//} -// -//module AInt refines ABase { -// type Key = int -//} -// -//abstract module DeepApplication { -// import AF = AnotherFunctor(AInt) -// -// method Test(x:int, y:AF.P1.A.Key) -// requires x == y -// -//} -// -// Create a functor that takes an argument that is itself a functor application... -//abstract module ComplexFormal(p: P(ABase)) { -// -//} -// -//abstract module C refines ABase { -// method CTest() +// Try simple functor application +abstract module Apply { + import OutputBase = P(ABase) + + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); + } +} + + +// Try passing a refinement to a functor +abstract module B refines ABase { + method BTest() +} + +abstract module ApplyRefinement { + import OutputRefined = P(B) + + method UseB() { + OutputRefined.A.BTest(); + } + + method KeyTest(b:OutputRefined.A.Key) + { + OutputRefined.Test(b); + } +} + + +// Try refining the result of a functor application +abstract module FunctorAppRefiner refines P(ABase) { + method MoreTest(x:A.Key) { + Test(x); + } +} + +//// Try refining a functor application applied to our formal argument +//module FunctorAppParamRefiner(abase: ABase) refines P(abase) { +// // Refer to the formal name of our refinement functor +// import X = A //} // -//// ... and then try to instantiate it with the functor applied to a refinement -//abstract module InstantiateComplex { -// import CF = ComplexFormal(P(C)) +//// Dafny says this isn't okay +//module NormalRefinement refines P_normal { +// import A +// import X = A //} -// + +// Try a functor that itself applies a functor +abstract module AnotherFunctor(AB: ABase) { + import P1 = P(AB) +} + +module AInt refines ABase { + type Key = int +} + +abstract module DeepApplication { + import AF = AnotherFunctor(AInt) + + method Test(x:int, y:AF.P1.A.Key) + requires x == y + +} + +// Create a functor that takes an argument that is itself a functor application... +abstract module ComplexFormal(p: P(ABase)) { + +} + +abstract module C refines ABase { + method CTest() +} + +// ... and then try to instantiate it with the functor applied to a refinement +abstract module InstantiateComplex { + import CF = ComplexFormal(P(C)) +} + abstract module ComplexFormalDependent(a:ABase, p: P(a)) { From 89e7fdfa5080a3a939b695d612f09fce4fd6073c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 6 May 2021 21:23:46 -0400 Subject: [PATCH 454/573] Use a more up-to-date version --- Test/modules/StateMachineRefinement.dfy | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index b05bb511742..9f2caa1f5bd 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -25,8 +25,8 @@ module MapStateMachine refines StateMachine(MapIfc) } predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) { - && (l.Query? ==> l.k in s && l.v == s[k] && s' == s) - && (l.Insert? ==> s' == s[l.k := l.v]) + && (l.Query? ==> l.k in s && l.value == s[l.k] && s' == s) + && (l.Insert? ==> s' == s[l.k := l.value]) } } @@ -51,8 +51,8 @@ module ComposeRefinements( P: StateMachine(ifc), Q: StateMachine(ifc), R: StateMachine(ifc), - Ref1: StateMachineRefinement(P, Q, ifc), - Ref2: StateMachineRefinement(Q, R, ifc) + Ref1: StateMachineRefinement(ifc, P, Q), + Ref2: StateMachineRefinement(ifc, Q, R) ) refines StateMachineRefinement(ifc, P, R) { @@ -87,8 +87,8 @@ module MapStateMachine2 refines StateMachine(MapIfc) } predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) { - && (l.Query? ==> l.k in s.m && l.v == s.m[k] && s.m' == s.m) - && (l.Insert? ==> s.m' == s.m[l.k := l.v]) + && (l.Query? ==> l.k in s.m && l.value == s.m[k] && s.m' == s.m) + && (l.Insert? ==> s.m' == s.m[l.k := l.value]) } } @@ -101,8 +101,8 @@ module MapStateMachine3 refines StateMachine(MapIfc) } predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) { - && (l.Query? ==> l.k in s.n && l.v == s.n[k] && s.n' == s.n) - && (l.Insert? ==> s.n' == s.n[l.k := l.v]) + && (l.Query? ==> l.k in s.n && l.value == s.n[k] && s.n' == s.n) + && (l.Insert? ==> s.n' == s.n[l.k := l.value]) } } @@ -160,7 +160,7 @@ module Final { lemma stuff() { var s : A.Variables := map[]; - assert BigRef.I(s) == B.Variables(map[]) + assert BigRef.I(s) == B.Variables(map[]); BigRef.InitRefinement(s); BigRef.NextRefinement( From 6e412eba62a9c4a4af37c567ca9e0c6ed4628bf1 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Fri, 7 May 2021 12:31:14 -0400 Subject: [PATCH 455/573] enable inout translations on method members of opaque types --- Source/Dafny/Linear.cs | 5 +-- Test/linear/InoutOld.dfy | 51 +++++++++++++++++++++++++++++++ Test/linear/InoutOld.dfy.expect | 9 ++++++ Test/linear/InoutOld2.dfy | 52 ++++++++++++++++++++++++++++++++ Test/linear/InoutOld2.dfy.expect | 9 ++++++ 5 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 Test/linear/InoutOld.dfy create mode 100644 Test/linear/InoutOld.dfy.expect create mode 100644 Test/linear/InoutOld2.dfy create mode 100644 Test/linear/InoutOld2.dfy.expect diff --git a/Source/Dafny/Linear.cs b/Source/Dafny/Linear.cs index c31dfd955e5..e2269c8b815 100644 --- a/Source/Dafny/Linear.cs +++ b/Source/Dafny/Linear.cs @@ -140,8 +140,9 @@ m is Lemma || } internal static IEnumerable<(TopLevelDecl, Method)> AllMethodMembers(ModuleDefinition module) { - foreach (var decl in module.TopLevelDecls) { - var topLevelDecl = ((decl as ClassDecl) as TopLevelDeclWithMembers) ?? ((decl as DatatypeDecl) as TopLevelDeclWithMembers); + foreach (var decl in module.TopLevelDecls) + { + var topLevelDecl = (decl as TopLevelDeclWithMembers); if (topLevelDecl != null) { foreach (var m in topLevelDecl.Members.Where(memberIsMethod)) { var method = (Method) m; diff --git a/Test/linear/InoutOld.dfy b/Test/linear/InoutOld.dfy new file mode 100644 index 00000000000..1aea4fec3b1 --- /dev/null +++ b/Test/linear/InoutOld.dfy @@ -0,0 +1,51 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" /autoTriggers:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module Ptrs { + // Non-atomic memory + + datatype PointsTo = PointsTo(ghost ptr: Ptr, ghost v: V) + datatype PointsToArray = PointsToArray(ghost ptr: Ptr, ghost s: seq) + + type {:extern} Ptr(!new,==) + + method {:extern} write(p: Ptr, linear inout d: PointsTo, v: V) + requires old_d.ptr == p + ensures d.ptr == p + ensures d.v == v + + method {:extern} read(p: Ptr, shared d: PointsTo) + returns (v: V) + requires d.ptr == p + ensures v == d.v + + method {:extern} index_write(p: Ptr, linear inout d: PointsToArray, i: int, v: V) + requires old_d.ptr == p + requires 0 <= i < |old_d.s| + ensures d == old_d.(s := old_d.s[i := v]) + + method {:extern} index_read(p: Ptr, shared d: PointsToArray, i: int) + returns (v: V) + requires d.ptr == p + requires 0 <= i < |d.s| + ensures v == d.s[i] + + const {:extern} nullptr : Ptr + + method test(p: Ptr, linear inout d: PointsToArray) + requires old_d.ptr == p + requires old_d.s == [1, 2] + { + index_write(p, inout d, 0, 5); + assert d.s == [5, 2]; + assert d.s == [4, 2]; // ERROR + } + + method test2(p: Ptr, linear inout d: PointsToArray) + requires old_d.ptr == p + requires old_d.s == [1, 2] + { + index_write(p, inout d, 6, 5); // ERROR (precondition) + } + +} diff --git a/Test/linear/InoutOld.dfy.expect b/Test/linear/InoutOld.dfy.expect new file mode 100644 index 00000000000..13986e7a633 --- /dev/null +++ b/Test/linear/InoutOld.dfy.expect @@ -0,0 +1,9 @@ +InoutOld.dfy(41,15): Error: assertion violation +Execution trace: + (0,0): anon0 +InoutOld.dfy(48,15): Error: A precondition for this call might not hold. +InoutOld.dfy(24,18): Related location: This is the precondition that might not hold. +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 2 verified, 2 errors diff --git a/Test/linear/InoutOld2.dfy b/Test/linear/InoutOld2.dfy new file mode 100644 index 00000000000..7ad212c547a --- /dev/null +++ b/Test/linear/InoutOld2.dfy @@ -0,0 +1,52 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" /autoTriggers:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module Ptrs { + // Non-atomic memory + + datatype PointsTo = PointsTo(ghost ptr: Ptr, ghost v: V) + datatype PointsToArray = PointsToArray(ghost ptr: Ptr, ghost s: seq) + + type {:extern} Ptr(!new,==) + { + method {:extern} write(linear inout d: PointsTo, v: V) + requires old_d.ptr == this + ensures d.ptr == this + ensures d.v == v + + method {:extern} read(shared d: PointsTo) + returns (v: V) + requires d.ptr == this + ensures v == d.v + + method {:extern} index_write(linear inout d: PointsToArray, i: int, v: V) + requires old_d.ptr == this + requires 0 <= i < |old_d.s| + ensures d == old_d.(s := old_d.s[i := v]) + + method {:extern} index_read(shared d: PointsToArray, i: int) + returns (v: V) + requires d.ptr == this + requires 0 <= i < |d.s| + ensures v == d.s[i] + } + + const {:extern} nullptr : Ptr + + method test(p: Ptr, linear inout d: PointsToArray) + requires old_d.ptr == p + requires old_d.s == [1, 2] + { + p.index_write(inout d, 0, 5); + assert d.s == [5, 2]; + assert d.s == [4, 2]; // ERROR + } + + method test2(p: Ptr, linear inout d: PointsToArray) + requires old_d.ptr == p + requires old_d.s == [1, 2] + { + p.index_write(inout d, 6, 5); // ERROR (precondition) + } + +} diff --git a/Test/linear/InoutOld2.dfy.expect b/Test/linear/InoutOld2.dfy.expect new file mode 100644 index 00000000000..07d4fb34e26 --- /dev/null +++ b/Test/linear/InoutOld2.dfy.expect @@ -0,0 +1,9 @@ +InoutOld2.dfy(42,15): Error: assertion violation +Execution trace: + (0,0): anon0 +InoutOld2.dfy(49,17): Error: A precondition for this call might not hold. +InoutOld2.dfy(24,20): Related location: This is the precondition that might not hold. +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 2 verified, 2 errors From 4c12de8b0a5fc8793ed0e87bba0c867bfed25e9a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 7 May 2021 16:35:32 -0400 Subject: [PATCH 456/573] Implement functor output origin tracking and improve propagation of refines clauses. FunctorParty now passes. --- Source/Dafny/DafnyAst.cs | 1 + Source/Dafny/Resolver.cs | 128 +++++++++++-------------- Test/modules/FunctorParty.s.dfy | 10 +- Test/modules/FunctorParty.s.dfy.expect | 2 + Test/modules/SimpleGood.dfy | 2 +- 5 files changed, 64 insertions(+), 79 deletions(-) create mode 100644 Test/modules/FunctorParty.s.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 98ffb176612..30974e6116e 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -3995,6 +3995,7 @@ public override string ToString() { public class ModuleSignature { public VisibilityScope VisibilityScope = null; + public FunctorApplication Origin; // Non-null if this signature came from a module that is the output of a functor public readonly Dictionary TopLevels = new Dictionary(); public readonly Dictionary ExportSets = new Dictionary(); public readonly Dictionary> Ctors = new Dictionary>(); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 957614cb7d0..1e3100d51da 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2484,91 +2484,45 @@ TopLevelDecl CloneDeclaration(VisibilityScope scope, TopLevelDecl d, ModuleDefin } } - private bool EqualsOrRefinesFunctorApps(Functor actualFunc, Functor formalFunc) { - // Check if the functor's are compatible and their arguments are compatible - if (actualFunc == formalFunc) { // We don't currently support functor refinement - // We don't have access to the arguments directly any more (they were held in the FunctorApplication), - // but we can (I think) reconstruct them from the module imports we inserted - List actualArgs = new List(); - List formalArgs = new List(); - // Find the artificial alias decl we created - foreach (ModuleFormal aFormal in actualFunc.Formals) { - foreach (TopLevelDecl topLevelDecl in actualFunc.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == aFormal.Name.val) { - actualArgs.Add(amd.Signature); - } - } - } + private bool EqualsOrRefinesFunctorApps(FunctorApplication actualFunc, FunctorApplication formalFunc) { + // Easy case + if (actualFunc == formalFunc) { return true; } - // Find the artificial alias decl we created - foreach (ModuleFormal fFormal in formalFunc.Formals) { - foreach (TopLevelDecl topLevelDecl in formalFunc.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == fFormal.Name.val) { - // Create a new "formal" for the purposes of EqualsOrRefines - var newFormal = new ModuleFormal(fFormal.Name, amd.TargetQId); - newFormal.TypeDef = amd.Signature.ModuleDef; - formalArgs.Add(newFormal); - } - } - } - - // Check that the arguments pairwise refine - foreach (var pair in System.Linq.Enumerable.Zip(actualArgs, formalArgs)) { + // Check if the functors are compatible and their arguments are compatible + if (actualFunc.functor == formalFunc.functor) { + foreach (var pair in System.Linq.Enumerable.Zip(actualFunc.moduleParams, formalFunc.moduleParams)) { var actualArg = pair.Item1; var formalArg = pair.Item2; - if (!EqualsOrRefines(actualArg, formalArg)) { + + if (!EqualsOrRefines(actualArg.Signature, formalArg.Signature)) { return false; } } return true; } else { + // We don't currently support functor refinement, so if the functors don't match, we fail return false; } } - private bool EqualsOrRefines(ModuleSignature actual, ModuleFormal formal) { - if (actual == null) { - return false; - } else if (actual.ModuleDef == formal.TypeDef) { - return true; - } else if (actual.ModuleDef is Functor actualFunc && (formal.TypeName.Root is LiteralModuleDecl lmd) && lmd.ModuleDef is Functor formalFunc) { - bool directlyRefines = EqualsOrRefinesFunctorApps(actualFunc, formalFunc); - if (directlyRefines) { - return true; - } else if (actual.ModuleDef.RefinementQId != null && - actual.ModuleDef.RefinementQId.Root is LiteralModuleDecl actualLmd && - actualLmd.ModuleDef is Functor actualFunc2) { - return EqualsOrRefinesFunctorApps(actualFunc2, formalFunc); - //} else if (actual.ModuleDef.RefinementQId != null) { - // return EqualsOrRefines(actual.ModuleDef.RefinementQId.Sig, formal); - } else { - return EqualsOrRefines(actual.Refines, formal); - } - } else { - return EqualsOrRefines(actual.Refines, formal); - } - } - /* - private bool EqualsOrRefines(ModuleDecl actual, ModuleDefinition formal) { - if (actual is LiteralModuleDecl lmd) { - if (lmd.ModuleDef == formal) { - return true; - } - } else if (actual is AliasModuleDecl amd) { - if (amd.Signature.ModuleDef == formal) { - return true; - } - } else if (actual is AbstractModuleDecl amd) { - if (amd.Signature.ModuleDef == formal) { - return true; - } - } // TODO: else if (actual is ModuleExportDecl med) { ... } + private bool EqualsOrRefines(ModuleSignature actual, ModuleSignature formal) { + // Two easy cases first + if (actual == null) { return false; } + if (actual.ModuleDef == formal.ModuleDef) { return true; } + + // Check for refinement-based match + bool eq = EqualsOrRefines(actual.Refines, formal); + if (eq) { return true; } + if (actual.Origin != null && formal.Origin != null) { + return EqualsOrRefinesFunctorApps(actual.Origin, formal.Origin); + } + // REVIEW: Is there any hope left if one has an origin but the other doesn't? + return false; } - */ private ModuleDefinition GetDefFromDecl(ModuleDecl decl) { if (decl is LiteralModuleDecl lmd) { @@ -2583,6 +2537,19 @@ private ModuleDefinition GetDefFromDecl(ModuleDecl decl) { return null; } + private ModuleSignature GetSigFromDecl(ModuleDecl decl) { + if (decl is LiteralModuleDecl lmd) { + return lmd.Signature; + } else if (decl is AliasModuleDecl amd) { + return amd.Signature; + } else if (decl is AbstractModuleDecl am) { + return am.Signature; + } else if (decl is ModuleExportDecl med) { + return med.Signature; + } + return null; + } + private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor @@ -2607,16 +2574,25 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) Dictionary formalActualPairs = new Dictionary(); - foreach (var pair in System.Linq.Enumerable.Zip(functorApp.functor.Formals, functorApp.moduleParams)) { - ModuleFormal formal = pair.Item1; - ModuleDecl actual = pair.Item2; + for (int i = 0; i < functorApp.functor.Formals.Count; i++) { + ModuleFormal formal = functorApp.functor.Formals[i]; + ModuleDecl actual = functorApp.moduleParams[i]; + FunctorApplication actualFunctor = functorApp.moduleParamNames[i].FunctorApp; + + if (actualFunctor != null) { + // We want the result of the application, not the unevaluated form + actual = ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root); + } + formalActualPairs[formal.Name.val] = actual; if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); } - if (!EqualsOrRefines(actual.Signature, formal)) { + var formalSig = GetSigFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); + + if (!EqualsOrRefines(actual.Signature, formalSig)) { var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; @@ -2678,10 +2654,16 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 4) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); + sig.Origin = functorApp; + + + sig.Refines = literalRoot.Signature.Refines; // TODO: Need this? // sig.Refines = refinementTransformer.RefinedSig; - // or this? + + // TODO: Need this? // prog.ModuleSigs[m] = sig; + // REVIEW: Should isAnExport be true? var b = ResolveModuleDefinition(newDef, sig, isAnExport: false); Contract.Assert(b); // TODO: Better error handling diff --git a/Test/modules/FunctorParty.s.dfy b/Test/modules/FunctorParty.s.dfy index c7a7e764067..b9b3c118514 100644 --- a/Test/modules/FunctorParty.s.dfy +++ b/Test/modules/FunctorParty.s.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module UIfc { type UIOp(==) } @@ -99,12 +102,9 @@ abstract module IOSystem(IoIfc: UIfc, B: BlockType, Program : DiskProgram(IoIfc, // .s This is the climax of the system. Build system demands that it be instantiatied // as a non-abstract module, hence supplying a proof. -//abstract module SystemTheorem( -// Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), CrashSafeSpec: UIStateMachine(Ifc), -// Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), CrashSafeSpec)) abstract module SystemTheorem( - Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), - Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), UIStateMachine(Ifc))) + Ifc: UIfc, B: BlockType, P: DiskProgram(Ifc, B), CrashSafeSpec: UIStateMachine(Ifc), + Proof : StateMachinesRefine(Ifc, IOSystem(Ifc, B, P), CrashSafeSpec)) { } diff --git a/Test/modules/FunctorParty.s.dfy.expect b/Test/modules/FunctorParty.s.dfy.expect new file mode 100644 index 00000000000..ebe2328e072 --- /dev/null +++ b/Test/modules/FunctorParty.s.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 2 verified, 0 errors diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 32d662c4600..d8dfda2e694 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -109,7 +109,6 @@ abstract module InstantiateComplex { import CF = ComplexFormal(P(C)) } - abstract module ComplexFormalDependent(a:ABase, p: P(a)) { } @@ -121,3 +120,4 @@ abstract module FunctorAppRefiner2(a:ABase) refines P(a) { abstract module FunctorRefinementInstantiation { import Test = ComplexFormalDependent(ABase, FunctorAppRefiner2(ABase)) } + From 0df426fcba8dfdb325e2b6c930af005ae44c5ec3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 7 May 2021 17:38:02 -0400 Subject: [PATCH 457/573] Created a small example of refinement type confusion --- Test/modules/SimpleGood.dfy | 43 +++++++++++++++++++++---- Test/modules/StateMachineRefinement.dfy | 23 ++++++------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index d8dfda2e694..237f5bd3203 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -16,7 +16,7 @@ module ABase { abstract module P(A: ABase) { method Test(a:A.Key) } - +/* // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -109,15 +109,46 @@ abstract module InstantiateComplex { import CF = ComplexFormal(P(C)) } -abstract module ComplexFormalDependent(a:ABase, p: P(a)) { +// Try to instantiate a functor formal with an actual that refines that functor +abstract module ComplexFormalDependent(a:ABase, p: P(a)) { } + +abstract module FunctorAppRefiner2(a:ABase) refines P(a) { } +abstract module FunctorRefinementInstantiation { + import Test = ComplexFormalDependent(ABase, FunctorAppRefiner2(ABase)) } -abstract module FunctorAppRefiner2(a:ABase) refines P(a) { +// Make sure we can call methods from our parent when refining +abstract module Q(A: ABase) { + predicate Valid(a:A.Key) + + method Test(a:A.Key) + requires Valid(a) } -// Try to instantiate a functor formal with an actual that refines that functor -abstract module FunctorRefinementInstantiation { - import Test = ComplexFormalDependent(ABase, FunctorAppRefiner2(ABase)) +abstract module FunctorAppRefiner3(a:ABase) refines Q(a) { + method MyTest(a:A.Key) + requires Valid(a) + { + Test(a); + } +} +*/ + +// Try refining a functor application that includes a method from the parent +abstract module T(A: ABase) { + predicate Valid(a:A.Key) + + method Test(a:A.Key) + requires Valid(a) + + method DoIt(a:A.Key) + requires Valid(a) } +abstract module FunctorAppRefiner3(someA:ABase) refines T(someA) { + method Test(a:someA.Key) + { + DoIt(a); + } +} diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 9f2caa1f5bd..701201802e1 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -47,14 +47,14 @@ abstract module StateMachineRefinement( } module ComposeRefinements( - ifc: Ifc, - P: StateMachine(ifc), - Q: StateMachine(ifc), - R: StateMachine(ifc), - Ref1: StateMachineRefinement(ifc, P, Q), - Ref2: StateMachineRefinement(ifc, Q, R) + crIfc: Ifc, + P: StateMachine(crIfc), + Q: StateMachine(crIfc), + R: StateMachine(crIfc), + Ref1: StateMachineRefinement(crIfc, P, Q), + Ref2: StateMachineRefinement(crIfc, Q, R) ) - refines StateMachineRefinement(ifc, P, R) + refines StateMachineRefinement(crIfc, P, R) { function I(s: L.Variables) : H.Variables { @@ -62,22 +62,18 @@ module ComposeRefinements( } lemma InitRefinement(s: L.Variables) - requires L.Init(s) - ensures H.Init(I(s)) { Ref1.InitRefinement(s); Ref2.InitRefinement(Ref1.I(s)); } - lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) - requires L.Next(s, s', l) - ensures H.Next(I(s), I(s'), l) + lemma NextRefinement(s: L.Variables, s': L.Variables, l: crIfc.TransitionLabel) { Ref1.NextRefinement(s, s', l); Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); } } - +/* module MapStateMachine2 refines StateMachine(MapIfc) { datatype Variables = X(m: map) @@ -186,3 +182,4 @@ module Final { { } } +*/ From f0144278a8478684b9675dfeee3e53b6e4377c4f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 8 May 2021 15:39:31 -0400 Subject: [PATCH 458/573] Deal with some of StateMachineRefinement's complaints about misnamed parameters and resolution failures. --- Source/Dafny/Resolver.cs | 4 ++++ Test/modules/SimpleGood.dfy | 3 ++- Test/modules/StateMachineRefinement.dfy | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 1e3100d51da..bf13ea387b3 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2665,8 +2665,12 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // prog.ModuleSigs[m] = sig; // REVIEW: Should isAnExport be true? + var errCount = reporter.Count(ErrorLevel.Error); var b = ResolveModuleDefinition(newDef, sig, isAnExport: false); Contract.Assert(b); // TODO: Better error handling + if (b && reporter.Count(ErrorLevel.Error) == errCount) { + newDef.SuccessfullyResolved = true; + } // 4) Combine everything into a ModuleDecl we can return LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, literalRoot.EnclosingModuleDefinition); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 237f5bd3203..0c52bf26c69 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -147,7 +147,8 @@ abstract module T(A: ABase) { } abstract module FunctorAppRefiner3(someA:ABase) refines T(someA) { - method Test(a:someA.Key) + //method Test(a:someA.Key) // Fails + method Test(a:A.Key) // Succeeds when using parent name { DoIt(a); } diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 701201802e1..036573f1134 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -67,7 +67,7 @@ module ComposeRefinements( Ref2.InitRefinement(Ref1.I(s)); } - lemma NextRefinement(s: L.Variables, s': L.Variables, l: crIfc.TransitionLabel) + lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) { Ref1.NextRefinement(s, s', l); Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); From 6d317db7a1fde5ec755fed59cbc3341469686d92 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 8 May 2021 15:55:28 -0400 Subject: [PATCH 459/573] Make ComposeRefinements abstract --- Test/modules/StateMachineRefinement.dfy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 036573f1134..891f72e57af 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -46,7 +46,7 @@ abstract module StateMachineRefinement( ensures H.Next(I(s), I(s'), l) } -module ComposeRefinements( +abstract module ComposeRefinements( crIfc: Ifc, P: StateMachine(crIfc), Q: StateMachine(crIfc), From 1ab216b13b298d7c60f456b48ea28bb70de3591f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 8 May 2021 22:10:51 -0400 Subject: [PATCH 460/573] Add a hack to deduplicate translated types that may have been induced by functor instantiation --- Source/Dafny/Translator.cs | 19 ++++++++++++++++++- Test/modules/SimpleGood.dfy | 12 ++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index efcb51c8e06..26d3494bfc0 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -735,6 +735,17 @@ public Bpl.IdentifierExpr TrVar(IToken tok, IVariable var) { return new Bpl.IdentifierExpr(tok, var.AssignUniqueName(currentDeclaration.IdGenerator), TrType(var.Type)); } + class VirtualModuleComparer : IEqualityComparer { + public bool Equals(ModuleDefinition x, ModuleDefinition y) { + return x == y || x.CompileName == y.CompileName; + } + + public int GetHashCode(ModuleDefinition mod) { + if (Object.ReferenceEquals(mod, null)) return 0; + return mod.CompileName.GetHashCode(); + } + } + private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { program = p; Type.EnableScopes(); @@ -811,12 +822,16 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { //translate us first List mods = program.RawModules().ToList(); List virtual_mods = Resolver.virtualModules.Values.ToList().ConvertAll(s => s.ModuleDef); + // De-duplicate functor instantiations + //virtual_mods = virtual_mods.Distinct(new VirtualModuleComparer()).ToList(); + mods.AddRange(virtual_mods); mods.Remove(forModule); if (forModule is Functor) { // Remove all instantiations of this functor, to avoid generating duplicates in the Boogie code mods.RemoveAll(def => def.CompileName == forModule.CompileName); + // mods.RemoveAll(def => def is Functor); // REVIEW: Shouldn't we remove these here too? } else { // Remove all functors, since we should only be referring to their instantiations at this point mods.RemoveAll(def => def is Functor); @@ -824,11 +839,13 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { mods.Insert(0, forModule); - + HashSet translatedDecls = new HashSet(); foreach (ModuleDefinition m in mods) { var visibleDecls = m.TopLevelDecls.FindAll(VisibleInScope); foreach (TopLevelDecl d in visibleDecls) { currentDeclaration = d; + if(translatedDecls.Contains(d.FullCompileName)) { continue; } // Skip duplicates that may have been induced by functor instantiation + translatedDecls.Add(d.FullCompileName); if (d is OpaqueTypeDecl) { var dd = (OpaqueTypeDecl)d; AddTypeDecl(dd); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 0c52bf26c69..254bfea8457 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -135,6 +135,8 @@ abstract module FunctorAppRefiner3(a:ABase) refines Q(a) { } */ +/* + // Try refining a functor application that includes a method from the parent abstract module T(A: ABase) { predicate Valid(a:A.Key) @@ -153,3 +155,13 @@ abstract module FunctorAppRefiner3(someA:ABase) refines T(someA) { DoIt(a); } } +*/ + +abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) refines P(MyA) +{ + method MyTest(a:A.Key) { + assert 3 > 2; + PA0.Test(a); + PA1.Test(a); + } +} From 2cd2f5a4675c759fb668025e1c3f25a0f09a37ef Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 10 May 2021 17:13:32 -0400 Subject: [PATCH 461/573] Confirm that lit tests still pass --- Test/modules/SimpleGood.dfy | 8 ++------ Test/modules/SimpleGood.dfy.expect | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 254bfea8457..503943608fa 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -16,7 +16,7 @@ module ABase { abstract module P(A: ABase) { method Test(a:A.Key) } -/* + // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -133,9 +133,6 @@ abstract module FunctorAppRefiner3(a:ABase) refines Q(a) { Test(a); } } -*/ - -/* // Try refining a functor application that includes a method from the parent abstract module T(A: ABase) { @@ -148,14 +145,13 @@ abstract module T(A: ABase) { requires Valid(a) } -abstract module FunctorAppRefiner3(someA:ABase) refines T(someA) { +abstract module FunctorAppRefiner4(someA:ABase) refines T(someA) { //method Test(a:someA.Key) // Fails method Test(a:A.Key) // Succeeds when using parent name { DoIt(a); } } -*/ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) refines P(MyA) { diff --git a/Test/modules/SimpleGood.dfy.expect b/Test/modules/SimpleGood.dfy.expect index e4e323ccb56..ee799665b59 100644 --- a/Test/modules/SimpleGood.dfy.expect +++ b/Test/modules/SimpleGood.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 5 verified, 0 errors +Dafny program verifier finished with 8 verified, 0 errors From 4320af820c02c0ae6fa021b1801857bc4fcfd364 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 9 May 2021 17:19:32 -0400 Subject: [PATCH 462/573] Fix some bugs in StateMachineRefinement.dfy. Uncomment to the point where we're hitting complaints about concrete and abstract modules. --- Test/modules/StateMachineRefinement.dfy | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 891f72e57af..ac9a538a5ee 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -73,7 +73,7 @@ abstract module ComposeRefinements( Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); } } -/* + module MapStateMachine2 refines StateMachine(MapIfc) { datatype Variables = X(m: map) @@ -83,8 +83,8 @@ module MapStateMachine2 refines StateMachine(MapIfc) } predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) { - && (l.Query? ==> l.k in s.m && l.value == s.m[k] && s.m' == s.m) - && (l.Insert? ==> s.m' == s.m[l.k := l.value]) + && (l.Query? ==> l.k in s.m && l.value == s.m[l.k] && s'.m == s.m) + && (l.Insert? ==> s'.m == s.m[l.k := l.value]) } } @@ -97,8 +97,8 @@ module MapStateMachine3 refines StateMachine(MapIfc) } predicate Next(s: Variables, s': Variables, l: ifc.TransitionLabel) { - && (l.Query? ==> l.k in s.n && l.value == s.n[k] && s.n' == s.n) - && (l.Insert? ==> s.n' == s.n[l.k := l.value]) + && (l.Query? ==> l.k in s.n && l.value == s.n[l.k] && s'.n == s.n) + && (l.Insert? ==> s'.n == s.n[l.k := l.value]) } } @@ -110,18 +110,15 @@ module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, Ma } lemma InitRefinement(s: L.Variables) - requires L.Init(s) - ensures H.Init(I(s)) { } lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) - requires L.Next(s, s', l) - ensures H.Next(I(s), I(s'), l) { } } +/* module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, MapStateMachine3) { function I(s: L.Variables) : H.Variables From aa92a5e9779da5072d3d30839f8d1ba4c5e99d82 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 10 May 2021 17:41:19 -0400 Subject: [PATCH 463/573] Implemented policy that output of abstract functor is abstract, and output of concrete functor with any abstract arguments is also abstract --- Source/Dafny/Resolver.cs | 9 +++++++++ Test/modules/SimpleGood.dfy | 20 +++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index bf13ea387b3..2baf60ba99a 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2574,6 +2574,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) Dictionary formalActualPairs = new Dictionary(); + bool allArgumentsConcrete = true; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; ModuleDecl actual = functorApp.moduleParams[i]; @@ -2585,6 +2586,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } formalActualPairs[formal.Name.val] = actual; + allArgumentsConcrete &= !actual.Signature.IsAbstract; if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); @@ -2656,6 +2658,13 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); sig.Origin = functorApp; + // Update the abstractness of the new module + if (!literalRoot.Signature.IsAbstract && allArgumentsConcrete) { + sig.IsAbstract = false; + } else { + // The functor itself is abstract and the produced module should inherits that, or an argument is abstract + sig.IsAbstract = true; + } sig.Refines = literalRoot.Signature.Refines; // TODO: Need this? diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 503943608fa..81ecdeaee5c 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -16,7 +16,7 @@ module ABase { abstract module P(A: ABase) { method Test(a:A.Key) } - +/* // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -161,3 +161,21 @@ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) r PA1.Test(a); } } +*/ + +// Test abstract vs. concrete module rules +module AInt refines ABase { + type Key = int +} + +module AConsumer(a:ABase, b:P(a)) { + method MyTest(a:b.A.Key) { + b.Test(a); + } +} + +//module Pconcrete refines AConsumer(AInt, P(AInt)) { +//// method Test(a:A.Key) { +//// var x:int := a; +//// } +//} From 0167d31470526c30fefb6ab7bcdc12b15e4ae177 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 11 May 2021 00:12:00 -0400 Subject: [PATCH 464/573] Working through abstract/concrete issues --- Source/Dafny/Cloner.cs | 4 ++++ Source/Dafny/Resolver.cs | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index d8132efac50..c70fe6094bc 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -18,6 +18,10 @@ public virtual ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string ModuleDefinition nw; if (m is DefaultModuleDecl) { nw = new DefaultModuleDecl(); + } else if (m is Functor f) { + nw = new Functor(Tok(m.tok), name, m.PrefixIds, m.IsAbstract, m.IsFacade, + m.RefinementQId, m.EnclosingModule, CloneAttributes(m.Attributes), + true, m.IsToBeVerified, m.IsToBeCompiled, new List(f.Formals)); } else { nw = new ModuleDefinition(Tok(m.tok), name, m.PrefixIds, m.IsAbstract, m.IsFacade, m.RefinementQId, m.EnclosingModule, CloneAttributes(m.Attributes), diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 2baf60ba99a..0795ff6f237 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -21,6 +21,7 @@ public class Resolver { ErrorReporter reporter; ModuleSignature moduleInfo = null; + private bool resolvingFunctor = false; public static Dictionary virtualModules = new Dictionary(); @@ -998,6 +999,8 @@ private bool ResolveModuleDefinition(ModuleDefinition m, ModuleSignature sig, bo // resolve var oldModuleInfo = moduleInfo; + var oldResolvingFunctor = resolvingFunctor; + resolvingFunctor = m is Functor; moduleInfo = MergeSignature(sig, systemNameInfo); Type.PushScope(moduleInfo.VisibilityScope); ResolveOpenedImports(moduleInfo, m, useCompileSignatures, this); // opened imports do not persist @@ -1016,6 +1019,7 @@ private bool ResolveModuleDefinition(ModuleDefinition m, ModuleSignature sig, bo Type.PopScope(moduleInfo.VisibilityScope); moduleInfo = oldModuleInfo; + resolvingFunctor = oldResolvingFunctor; return true; } @@ -2883,7 +2887,7 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur ResolveIteratorSignature((IteratorDecl)d); } else if (d is ModuleDecl) { var decl = (ModuleDecl)d; - if (!def.IsAbstract && decl is AliasModuleDecl am && decl.Signature.IsAbstract) { + if (!def.IsAbstract && decl is AliasModuleDecl am && decl.Signature.IsAbstract && !(def is Functor)) { reporter.Error(MessageSource.Resolver, am.TargetQId.rootToken(), "a compiled module ({0}) is not allowed to import an abstract module ({1})", def.Name, am.TargetQId.ToString()); } } else if (d is DatatypeDecl) { @@ -16482,7 +16486,7 @@ Resolver_IdentifierExpr CreateResolver_IdentifierExpr(IToken tok, string name, L if (!moduleInfo.IsAbstract) { var md = decl as ModuleDecl; - if (md != null && md.Signature.IsAbstract) { + if (md != null && md.Signature.IsAbstract && !resolvingFunctor) { reporter.Error(MessageSource.Resolver, tok, "a compiled module is not allowed to use an abstract module ({0})", decl.Name); } } From 1b7dfc21d3f7d4d1b51cac12105c31f2a7b3da04 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 15 May 2021 20:36:45 -0400 Subject: [PATCH 465/573] Problematic example from Rob --- Test/modules/parser.dfy | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Test/modules/parser.dfy diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy new file mode 100644 index 00000000000..2d6dfc8931b --- /dev/null +++ b/Test/modules/parser.dfy @@ -0,0 +1,44 @@ +// Int stuff + +// Simplifying the example to use int instead of NativeTypes.byte makes the problem disappear +module NativeTypes { + newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 +} + +abstract module NativePackedInt { + import opened NativeTypes + + type Integer + + function unpack(s: seq) : Integer +} + +module NativePackedUint32 refines NativePackedInt { + type Integer = int +} + +// Marshalling + +abstract module Marshalling { + import opened NativeTypes + + type UnmarshalledType + + function parse(data: seq) : UnmarshalledType +} + +// Integer marshalling + +abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { + type UnmarshalledType = Int.Integer + + function parse(data: seq) : UnmarshalledType + { + Int.unpack(data) + } +} + +module Uint32Marshalling refines IntegerMarshalling(NativePackedUint32) { + // ERR: + // module-test.dfy[Uint32Marshalling](36,15): Error: type mismatch for argument (function expects seq, got seq) (covariant type parameter would require byte <: byte) +} From 46714c9d87fdffe1e7050bb3bc4e304c74f696aa Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 18 May 2021 07:22:24 -0400 Subject: [PATCH 466/573] Fix timeLimitMultiplier by having it generate internal annotations, rather than overwrite the original timeLimitMultiplier annotation. Closes #1224. --- Source/Dafny/Rewriter.cs | 17 +++++++++++------ Source/Dafny/Translator.cs | 14 +++++++++++++- Test/git-issues/git-issue-1224.dfy | 8 ++++++++ Test/git-issues/git-issue-1224.dfy.expect | 2 ++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 Test/git-issues/git-issue-1224.dfy create mode 100644 Test/git-issues/git-issue-1224.dfy.expect diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index c96c5570611..fda06b8942d 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -1511,16 +1511,21 @@ internal override void PreResolve(ModuleDefinition m) { var arg = attr.Args[0] as LiteralExpr; System.Numerics.BigInteger value = (System.Numerics.BigInteger)arg.Value; if (value.Sign > 0) { + int current_limit = 0; + string name = ""; if (DafnyOptions.O.ResourceLimit > 0) { // Interpret this as multiplying the resource limit - int current_limit = DafnyOptions.O.ResourceLimit; - attr.Args[0] = new LiteralExpr(attr.Args[0].tok, value * current_limit); - attr.Name = "rlimit"; + current_limit = DafnyOptions.O.ResourceLimit; + name = "rlimit"; } else { // Interpret this as multiplying the time limit - int current_limit = DafnyOptions.O.TimeLimit > 0 ? DafnyOptions.O.TimeLimit : 10; // Default to 10 seconds - attr.Args[0] = new LiteralExpr(attr.Args[0].tok, value * current_limit); - attr.Name = "timeLimit"; + current_limit = DafnyOptions.O.TimeLimit > 0 ? DafnyOptions.O.TimeLimit : 10; // Default to 10 seconds + name = "timeLimit"; + } + Expression newArg = new LiteralExpr(attr.Args[0].tok, value * current_limit); + member.Attributes = new Attributes("_" + name, new List() { newArg }, attrs); + if (Attributes.Contains(attrs, name)) { + reporter.Warning(MessageSource.Rewriter, member.tok, "timeLimitMultiplier annotation overrides " + name + " annotation"); } } } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index d3c5caafe76..c13e53cb2f3 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -16637,11 +16637,16 @@ public static bool RewriteInExpr(Expression s, bool aggressive) { public Bpl.QKeyValue TrAttributes(Attributes attrs, string skipThisAttribute) { Bpl.QKeyValue kv = null; + bool hasNewTimeLimit = Attributes.Contains(attrs, "_timeLimit"); + bool hasNewRLimit = Attributes.Contains(attrs, "_rlimit"); foreach (var attr in attrs.AsEnumerable()) { if (attr.Name == skipThisAttribute || attr.Name == "axiom" // Dafny's axiom attribute clashes with Boogie's axiom keyword || attr.Name == "fuel" // Fuel often uses function names as arguments, which adds extra axioms unnecessarily || (DafnyOptions.O.DisallowExterns && (attr.Name == "extern" || attr.Name == "dllimport")) // omit the extern attribute when /noExterns option is specified. + || attr.Name == "timeLimitMultiplier" // This is a Dafny-specific attribute + || (attr.Name == "timeLimit" && hasNewTimeLimit) + || (attr.Name == "rlimit" && hasNewRLimit) ) { continue; } @@ -16657,7 +16662,14 @@ public Bpl.QKeyValue TrAttributes(Attributes attrs, string skipThisAttribute) { parms.Add(e); } } - kv = new Bpl.QKeyValue(Token.NoToken, attr.Name, parms, kv); + + var name = attr.Name; + if (name == "_timeLimit") { + name = "timeLimit"; + } else if (name == "_rlimit") { + name = "rlimit"; + } + kv = new Bpl.QKeyValue(Token.NoToken, name, parms, kv); } return kv; } diff --git a/Test/git-issues/git-issue-1224.dfy b/Test/git-issues/git-issue-1224.dfy new file mode 100644 index 00000000000..1bd77933647 --- /dev/null +++ b/Test/git-issues/git-issue-1224.dfy @@ -0,0 +1,8 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module SlowPoke { + lemma {:timeLimitMultiplier 4} SlowLemma() +} + +module SlowChild refines SlowPoke { } diff --git a/Test/git-issues/git-issue-1224.dfy.expect b/Test/git-issues/git-issue-1224.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/git-issues/git-issue-1224.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 2c810aa9cfa1ff413a7eb34730e71b722e6443d7 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Wed, 19 May 2021 00:27:19 +0200 Subject: [PATCH 467/573] Revert "disable subsequence sharing optimisation" This reverts commit d2ede02192a1d552c317661f0cf7ac1dc2b3ceb3. --- Binaries/DafnyRuntime.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index 070619c1675..eadc7b2bb92 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -374,8 +374,10 @@ struct DafnySequence { // Returns the subsequence of values [lo..hi) DafnySequence subsequence(uint64 lo, uint64 hi) const { - auto ret = DafnySequence(hi - lo); - std::copy(this->ptr() + lo, this->ptr() + hi, ret.ptr()); + DafnySequence ret; + ret.sptr = sptr; + ret.start = start + lo; + ret.len = hi - lo; return ret; } From 2bd88bcae8fc3ac382256dfb5e47bea01c7e51f3 Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Tue, 18 May 2021 17:11:29 -0700 Subject: [PATCH 468/573] Disable multi-assignment to linear variables --- Source/Dafny/Resolver.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e371b86dd3b..e9b4771f8d9 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -12655,6 +12655,15 @@ private void ResolveUpdateStmt(UpdateStmt update, ICodeContext codeContext, int } else if (reporter.Count(ErrorLevel.Error) == errorCountBeforeCheckingLhs) { // add the statements here in a sequence, but don't use that sequence later for translation (instead, should translate properly as multi-assignment) for (int i = 0; i < update.Lhss.Count; i++) { + IVariable x = update.Lhss[i].Resolved as IVariable; + if (update.Lhss[i].Resolved is IdentifierExpr id) { + x = id.Var; + } + if (x != null && update.Lhss.Count > 1) { + if (x.Usage != Usage.Ghost && x.Usage != Usage.Ordinary) { + reporter.Error(MessageSource.Resolver, update, "multi-assignment not supported for linear variables"); + } + } var a = new AssignStmt(update.Tok, update.EndTok, update.Lhss[i].Resolved, update.Rhss[i]); if (i == 0 && update.InoutAssignTarget.HasValue) { var (_, inoutAssignTargetExpr) = update.InoutAssignTarget.Value; From 826620a5ce25e6774f16df148f20689650f4f66f Mon Sep 17 00:00:00 2001 From: Chris Hawblitzel Date: Wed, 19 May 2021 08:02:36 -0700 Subject: [PATCH 469/573] In linear/README.dfy, restrict peek to non-empty types --- Test/linear/README.dfy | 20 ++++++++++---------- docs/Linear/Library.md | 34 +++++++++++++++++----------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Test/linear/README.dfy b/Test/linear/README.dfy index 18c682ca4b0..1188800ae5d 100644 --- a/Test/linear/README.dfy +++ b/Test/linear/README.dfy @@ -277,14 +277,14 @@ method seq_free(linear s:seq) type maybe predicate has(m:maybe) -function read(m:maybe):A -function method peek(shared m:maybe):(shared a:A) +function read(m:maybe):A +function method peek(shared m:maybe):(shared a:A) requires has(m) ensures a == read(m) -function method take(linear m:maybe):(linear a:A) +function method take(linear m:maybe):(linear a:A) requires has(m) ensures a == read(m) -function method give(linear a:A):(linear m:maybe) +function method give(linear a:A):(linear m:maybe) ensures has(m) ensures read(m) == a ensures forall x:maybe {:trigger give(read(x))} | has(x) && a == read(x) :: m == x @@ -321,7 +321,7 @@ function{:inline true} operator(| |)(s:lseq):nat |lseqs(s)| } -function{:inline true} operator([])(s:lseq, i:nat):A +function{:inline true} operator([])(s:lseq, i:nat):A requires i < |s| { read(lseqs(s)[i]) @@ -333,7 +333,7 @@ function{:inline true} operator(in)(s:lseq, i:nat):bool has(lseqs(s)[i]) } -function method lseq_peek(shared s:lseq, i:nat):(shared a:A) +function method lseq_peek(shared s:lseq, i:nat):(shared a:A) requires i < |s| requires i in s ensures a == s[i] @@ -341,7 +341,7 @@ function method lseq_peek(shared s:lseq, i:nat):(shared a:A) peek(lseq_share(s, i)) } -method lseq_take(linear s1:lseq, i:nat) returns(linear s2:lseq, linear a:A) +method lseq_take(linear s1:lseq, i:nat) returns(linear s2:lseq, linear a:A) requires i < |s1| requires i in s1 ensures a == s1[i] @@ -353,7 +353,7 @@ method lseq_take(linear s1:lseq, i:nat) returns(linear s2:lseq, linear a := take(x2); } -method lseq_give(linear s1:lseq, i:nat, linear a:A) returns(linear s2:lseq) +method lseq_give(linear s1:lseq, i:nat, linear a:A) returns(linear s2:lseq) requires i < |s1| requires i !in s1 ensures lseqs(s2) == lseqs(s1)[i := give(a)] @@ -433,7 +433,7 @@ In addition, expressions in arguments to method calls may also call Borrow as lo the called method has no modifies clause and no shared return values. These restrictions ensure that Swap cannot be called while using the shared value returned from Borrow. */ -class MaybeLinear +class MaybeLinear { var box:BoxedLinear>; function Has():bool @@ -486,7 +486,7 @@ class MaybeLinear } } -method MaybeLinearExample(linear a_in:A) returns(linear a:A) +method MaybeLinearExample(linear a_in:A) returns(linear a:A) { a := a_in; var box1 := new MaybeLinear(a); diff --git a/docs/Linear/Library.md b/docs/Linear/Library.md index af5da385ad2..2db2254345d 100644 --- a/docs/Linear/Library.md +++ b/docs/Linear/Library.md @@ -205,13 +205,13 @@ are identical. ```dafny type lseq -function LSeqs(l: lseq): (s: seq) // contents of an lseq, as ghost seq +function LSeqs(l: lseq): (s: seq) // contents of an lseq, as ghost seq ensures rank_is_less_than(s, l) -function LSeqHas(l: lseq): (s: seq) +function LSeqHas(l: lseq): (s: seq) ensures |s| == |LSeqs(l)| -lemma LSeqsExtensional(l1: lseq, l2: lseq) +lemma LSeqsExtensional(l1: lseq, l2: lseq) requires LSeqs(l1) == LSeqs(l2) requires LSeqHas(l1) == LSeqHas(l2) ensures l1 == l2 @@ -223,12 +223,12 @@ the `| |` operator, the `[]` operator, and the `in` operator for `lseq` interfere with Dafny's trigger selection for quantifiers): ```dafny -function{:inline true} operator(| |)(s: lseq): nat +function{:inline true} operator(| |)(s: lseq): nat { |LSeqs(s)| } -function{:inline true} operator([])(s: lseq, i: nat): A +function{:inline true} operator([])(s: lseq, i: nat): A requires i < |s| { LSeqs(s)[i] @@ -236,7 +236,7 @@ function{:inline true} operator([])(s: lseq, i: nat): A // Note: it might make more sense to define this as i < |s| && LSeqHas(s)[i], // but {:inline true} can't yet handle this. -function{:inline true} operator(in)(s: lseq, i: nat): bool +function{:inline true} operator(in)(s: lseq, i: nat): bool requires i < |s| { LSeqHas(s)[i] @@ -247,11 +247,11 @@ All elements of newly allocated `lseq` values are absent. To free an `lseq`, all elements must be absent so that no linear element values are discarded: ```dafny -method LSeqAlloc(length: nat) returns(linear s: lseq) +method LSeqAlloc(length: nat) returns(linear s: lseq) ensures |s| == length ensures forall i: nat | i < length :: i !in s -method LSeqFree(linear s: lseq) +method LSeqFree(linear s: lseq) requires forall i: nat | i < |LSeqs(s)| :: i !in s ``` @@ -259,10 +259,10 @@ The following readonly functions can get the length, as an ordinary integer, or borrow an element, as a shared value: ```dafny -function method LSeqLength(shared s: lseq): (n: nat) +function method LSeqLength<(00)A>(shared s: lseq): (n: nat) ensures n == |s| -function method LSeqGet(shared s: lseq, i: nat): (shared a: A) +function method LSeqGet(shared s: lseq, i: nat): (shared a: A) requires i < |s| && i in s ensures a == s[i] ``` @@ -272,18 +272,18 @@ Giving an element to the `lseq` sets the corresponding `LSeqHas` to true, making the element present, while taking sets it to `false`, making the element absent: ```dafny -method LSeqGive(inout linear s: lseq, i: nat, linear a: A) +method LSeqGive(inout linear s: lseq, i: nat, linear a: A) requires i < |old_s| && i !in old_s ensures LSeqHas(s) == LSeqHas(old_s)[i := true] ensures LSeqs(s) == LSeqs(old_s)[i := a] -method LSeqTake(linear inout s: lseq, i: nat) returns(linear a: A) +method LSeqTake(linear inout s: lseq, i: nat) returns(linear a: A) requires i < |old_s| && i in old_s ensures LSeqHas(s) == LSeqHas(old_s)[i := false] ensures LSeqs(s) == LSeqs(old_s) ensures a == old_s[i] -method LSeqSwap(inout linear s: lseq, i: nat, linear a1: A) returns(linear a2: A) +method LSeqSwap(inout linear s: lseq, i: nat, linear a1: A) returns(linear a2: A) requires i < |old_s| && i in old_s ensures a2 == LSeqs(old_s)[i] ensures LSeqs(s) == LSeqs(old_s)[i := a1] @@ -292,7 +292,7 @@ method LSeqSwap(inout linear s: lseq, i: nat, linear a1: A) returns(linear The following example shows both mutation and readonly operations on `lseq` values: ```dafny -method LSeqExample(linear inout s: lseq>) returns(linear lens: seq) +method LSeqExample(linear inout s: lseq>) returns(linear lens: seq) requires forall i: nat | i < |old_s| :: i in old_s ensures s == old_s ensures |lens| == |s| @@ -340,7 +340,7 @@ The linear data in the object is only usable via a Swap method that swaps one linear value for another: ```dafny -class SwapLinear +class SwapLinear { function Read(): A reads this @@ -396,7 +396,7 @@ The following definition adds a `Borrow` function method that returns a shared `A`: ```dafny -class SwapLinear +class SwapLinear { function Inv(): (A) -> bool reads this @@ -455,7 +455,7 @@ hides the `Swap` operation in favor of `Take` and `Give` methods: ```dafny linear datatype LOption = LNone | LSome(linear a: A) -class BoxedLinear +class BoxedLinear { var data: SwapLinear>; From f6a0d73385d6228fd22a7a0743ded4ee533850cd Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 24 May 2021 11:46:29 -0400 Subject: [PATCH 470/573] Look for timeLimitMultiplier in inductive datatypes too, not just in classes. --- Source/Dafny/Rewriter.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Rewriter.cs b/Source/Dafny/Rewriter.cs index fda06b8942d..8f5ef71cd09 100644 --- a/Source/Dafny/Rewriter.cs +++ b/Source/Dafny/Rewriter.cs @@ -1498,9 +1498,15 @@ public TimeLimitRewriter(ErrorReporter reporter) internal override void PreResolve(ModuleDefinition m) { foreach (var d in m.TopLevelDecls) { - if (d is ClassDecl) { - var c = (ClassDecl)d; - foreach (MemberDecl member in c.Members) { + List members = null; + if (d is ClassDecl c) { + members = c.Members; + } else if (d is IndDatatypeDecl dt) { + members = dt.Members; + } + + if (members != null) { + foreach (MemberDecl member in members) { if (member is Function || member is Method) { // Check for the timeLimitMultiplier attribute if (Attributes.Contains(member.Attributes, "timeLimitMultiplier")) { From 4b9aa6146f72d48b4cd871ebbbe29bd2b621adb6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 26 May 2021 13:43:06 -0400 Subject: [PATCH 471/573] Manually clone the CompileSignature field, so that Rob's parser example will go through. --- Source/Dafny/Resolver.cs | 14 ++++++++++++++ Test/modules/parser.dfy | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 0795ff6f237..9b2b2f93cbb 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2554,6 +2554,18 @@ private ModuleSignature GetSigFromDecl(ModuleDecl decl) { return null; } + private void CloneCompileSignatures(ModuleDefinition src, ModuleDefinition dst) { + foreach (var pair in System.Linq.Enumerable.Zip(src.TopLevelDecls, dst.TopLevelDecls)) { + var srcDecl = pair.Item1; + var dstDecl = pair.Item2; + if (srcDecl is ModuleDecl srcMD && dstDecl is ModuleDecl dstMD) { + if (srcMD.Signature != null) { + dstMD.Signature.CompileSignature = srcMD.Signature.CompileSignature; + } + } + } + } + private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor @@ -2566,6 +2578,8 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 1) ScopeCloner cloner = new ScopeCloner(literalRoot.Signature.VisibilityScope); ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); + // Cloner doesn't propagate the compile signature, so we do so ourselves + CloneCompileSignatures(literalRoot.ModuleDef, newDef); // Should have the same scope, not a clone, as cloning allocates new tokens //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 2d6dfc8931b..d3fb97c675c 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -42,3 +42,10 @@ module Uint32Marshalling refines IntegerMarshalling(NativePackedUint32) { // ERR: // module-test.dfy[Uint32Marshalling](36,15): Error: type mismatch for argument (function expects seq, got seq) (covariant type parameter would require byte <: byte) } + +/* +// Works on normal Dafny +module Uint32Marshalling refines IntegerMarshalling { + import Int = NativePackedUint32 +} +*/ From 6b2c121e07b5fce53cf3c0ff2f5190c23ae22e71 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 26 May 2021 13:44:55 -0400 Subject: [PATCH 472/573] Add lit header and expect file --- Test/modules/parser.dfy | 3 ++- Test/modules/parser.dfy.expect | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Test/modules/parser.dfy.expect diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index d3fb97c675c..ef00c2a7eac 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -1,4 +1,5 @@ -// Int stuff +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" // Simplifying the example to use int instead of NativeTypes.byte makes the problem disappear module NativeTypes { diff --git a/Test/modules/parser.dfy.expect b/Test/modules/parser.dfy.expect new file mode 100644 index 00000000000..ebe2328e072 --- /dev/null +++ b/Test/modules/parser.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 2 verified, 0 errors From 96802deeba96acc87bd42e0fdfd4cd09f04d192f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 26 May 2021 17:38:00 -0400 Subject: [PATCH 473/573] Try declaring that Functors are abstract for compilation purposes. --- Source/Dafny/Resolver.cs | 2 +- Test/modules/SimpleGood.dfy | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 9b2b2f93cbb..439e0d362fb 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -515,7 +515,7 @@ public void ResolveProgram(Program prog) { } Type.PopScope(tempVis); - if (reporter.Count(ErrorLevel.Error) == errorCount && !m.IsAbstract) { + if (reporter.Count(ErrorLevel.Error) == errorCount && !m.IsAbstract && !(m is Functor)) { // Functors are effectively abstract? // compilation should only proceed if everything is good, including the signature (which preResolveErrorCount does not include); CompilationCloner cloner = new CompilationCloner(compilationModuleClones); var nw = cloner.CloneModuleDefinition(m, m.CompileName + "_Compile"); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 81ecdeaee5c..8b5cbc0006d 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -164,15 +164,21 @@ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) r */ // Test abstract vs. concrete module rules -module AInt refines ABase { - type Key = int -} +//module AInt refines ABase { +// type Key = int +//} module AConsumer(a:ABase, b:P(a)) { - method MyTest(a:b.A.Key) { - b.Test(a); + method MyTest(x:b.A.Key) { + b.Test(x); } } +//// Simplified +//module AConsumer(b:P(ABase)) { +// method MyTest(x:b.A.Key) { +// b.Test(x); +// } +//} //module Pconcrete refines AConsumer(AInt, P(AInt)) { //// method Test(a:A.Key) { From c9e998739c80f0ac1b092bbd4c1072271b2e6a49 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 27 May 2021 12:32:40 -0400 Subject: [PATCH 474/573] Exploring translation problem --- Test/modules/SimpleGood.dfy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 8b5cbc0006d..66c406c17c0 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -16,7 +16,7 @@ module ABase { abstract module P(A: ABase) { method Test(a:A.Key) } -/* + // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -26,7 +26,7 @@ abstract module Apply { } } - +/* // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -161,7 +161,6 @@ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) r PA1.Test(a); } } -*/ // Test abstract vs. concrete module rules //module AInt refines ABase { @@ -185,3 +184,4 @@ module AConsumer(a:ABase, b:P(a)) { //// var x:int := a; //// } //} +*/ From 5dc72eace31984abbb43680eaa5dd93b8ccb37c3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 16:48:28 -0400 Subject: [PATCH 475/573] Allow callers to decide whether to preserve Functor status. Explicitly do not do so when doing ApplyFunctor. Solves the basic SimpleGood test. --- Source/Dafny/Cloner.cs | 12 ++++++------ Source/Dafny/Resolver.cs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index c70fe6094bc..fcd3a7abeab 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -14,11 +14,11 @@ class Cloner { - public virtual ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name) { + public virtual ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name, bool preserveFunctors=true) { ModuleDefinition nw; if (m is DefaultModuleDecl) { nw = new DefaultModuleDecl(); - } else if (m is Functor f) { + } else if (m is Functor f && preserveFunctors) { nw = new Functor(Tok(m.tok), name, m.PrefixIds, m.IsAbstract, m.IsFacade, m.RefinementQId, m.EnclosingModule, CloneAttributes(m.Attributes), true, m.IsToBeVerified, m.IsToBeCompiled, new List(f.Formals)); @@ -892,8 +892,8 @@ private bool VisibleInScope(Declaration d) { return d.IsVisibleInScope(scope); } - public override ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name) { - var basem = base.CloneModuleDefinition(m, name); + public override ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name, bool preserveFunctors=true) { + var basem = base.CloneModuleDefinition(m, name, preserveFunctors); //Merge signatures for imports which point to the same module @@ -1013,8 +1013,8 @@ public AbstractSignatureCloner(VisibilityScope scope) : base(scope) { } - public override ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name) { - var basem = base.CloneModuleDefinition(m, name); + public override ModuleDefinition CloneModuleDefinition(ModuleDefinition m, string name, bool preserveFunctors=true) { + var basem = base.CloneModuleDefinition(m, name, preserveFunctors); basem.TopLevelDecls.RemoveAll(t => t is ModuleExportDecl); return basem; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 439e0d362fb..177f12699dc 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2577,7 +2577,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 1) ScopeCloner cloner = new ScopeCloner(literalRoot.Signature.VisibilityScope); - ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name); + ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name, preserveFunctors:false); // Cloner doesn't propagate the compile signature, so we do so ourselves CloneCompileSignatures(literalRoot.ModuleDef, newDef); // Should have the same scope, not a clone, as cloning allocates new tokens From 0d397a3d595f0b5a028a6281816d9458323aa06f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 16:50:29 -0400 Subject: [PATCH 476/573] All lit tests, including full SimpleGood, are passing. --- Test/modules/SimpleGood.dfy | 2 -- Test/modules/SimpleGood.dfy.expect | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 66c406c17c0..fd7cceae7ab 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -26,7 +26,6 @@ abstract module Apply { } } -/* // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -184,4 +183,3 @@ module AConsumer(a:ABase, b:P(a)) { //// var x:int := a; //// } //} -*/ diff --git a/Test/modules/SimpleGood.dfy.expect b/Test/modules/SimpleGood.dfy.expect index ee799665b59..0825601cd97 100644 --- a/Test/modules/SimpleGood.dfy.expect +++ b/Test/modules/SimpleGood.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 8 verified, 0 errors +Dafny program verifier finished with 9 verified, 0 errors From 73bede1a77217cbd8a1bc9618345807e5324127a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 17:21:33 -0400 Subject: [PATCH 477/573] Resolve the issue with SimpleGood's abstract test. StateMachine still failing --- Source/Dafny/Resolver.cs | 24 ++++++++++++++++-------- Test/modules/SimpleGood.dfy | 27 +++++++++++---------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 177f12699dc..e09c0299d75 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2592,6 +2592,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) Dictionary formalActualPairs = new Dictionary(); + Dictionary formalActualIdPairs = new Dictionary(); bool allArgumentsConcrete = true; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; @@ -2604,6 +2605,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } formalActualPairs[formal.Name.val] = actual; + formalActualIdPairs[formal.Name.val] = functorApp.moduleParamNames[i]; allArgumentsConcrete &= !actual.Signature.IsAbstract; if (formal.TypeDef == null) { @@ -2647,22 +2649,28 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } if (update) { - var newFunctorApp = amd.TargetQId.FunctorApp.ShallowClone(); - newFunctorApp.moduleParams = new List(); + List moduleParams = new List(); + List moduleParamNames = new List(); // Compute a new set of actual parameters, taking into account the outer functor's actuals - foreach (var pair in System.Linq.Enumerable.Zip(amd.TargetQId.FunctorApp.moduleParamNames, - amd.TargetQId.FunctorApp.moduleParams)) { - string actualName = pair.Item1.ToString(); - ModuleDecl oldActual = pair.Item2; + for (int i = 0; i < amd.TargetQId.FunctorApp.moduleParamNames.Count; i++) { + string actualName = amd.TargetQId.FunctorApp.moduleParamNames[i].ToString(); + ModuleDecl oldActual = amd.TargetQId.FunctorApp.moduleParams[i]; + ModuleQualifiedId oldActualName = amd.TargetQId.FunctorApp.moduleParamNames[i]; if (formalActualPairs.ContainsKey(actualName)) { - newFunctorApp.moduleParams.Add(formalActualPairs[actualName]); + moduleParams.Add(formalActualPairs[actualName]); + moduleParamNames.Add(formalActualIdPairs[actualName]); } else { - newFunctorApp.moduleParams.Add(oldActual); + moduleParams.Add(oldActual); + moduleParamNames.Add(oldActualName); } } + FunctorApplication newFunctorApp = new FunctorApplication(amd.TargetQId.FunctorApp.tok, moduleParamNames); + newFunctorApp.functor = amd.TargetQId.FunctorApp.functor; + newFunctorApp.moduleParams = moduleParams; + // Compute the result of the new application var newImportDecl = ApplyFunctor(newFunctorApp, (LiteralModuleDecl)amd.TargetQId.Root); amd.Signature = newImportDecl.Signature; diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index fd7cceae7ab..7684990c622 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -13,10 +13,10 @@ module ABase { // // Use an element of a formal parameter // Morally equivalent to P_normal above -abstract module P(A: ABase) { +module P(A: ABase) { method Test(a:A.Key) } - +/* // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -160,26 +160,21 @@ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) r PA1.Test(a); } } +*/ // Test abstract vs. concrete module rules -//module AInt refines ABase { -// type Key = int -//} +module AInt refines ABase { + type Key = int +} module AConsumer(a:ABase, b:P(a)) { method MyTest(x:b.A.Key) { b.Test(x); } } -//// Simplified -//module AConsumer(b:P(ABase)) { -// method MyTest(x:b.A.Key) { -// b.Test(x); -// } -//} -//module Pconcrete refines AConsumer(AInt, P(AInt)) { -//// method Test(a:A.Key) { -//// var x:int := a; -//// } -//} +module Pconcrete refines AConsumer(AInt, P(AInt)) { +// method Test(a:A.Key) { +// var x:int := a; +// } +} From 3c720fd4fd62c04fb1022b470d5546fa11abb0c2 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 17:44:08 -0400 Subject: [PATCH 478/573] Modify tests --- Test/modules/SimpleGood.dfy | 2 +- Test/modules/StateMachineRefinement.dfy | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 7684990c622..073f74bba55 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -13,7 +13,7 @@ module ABase { // // Use an element of a formal parameter // Morally equivalent to P_normal above -module P(A: ABase) { +abstract module P(A: ABase) { method Test(a:A.Key) } /* diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index ac9a538a5ee..dc0959b6f51 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -46,7 +46,8 @@ abstract module StateMachineRefinement( ensures H.Next(I(s), I(s'), l) } -abstract module ComposeRefinements( +/* +module ComposeRefinements( crIfc: Ifc, P: StateMachine(crIfc), Q: StateMachine(crIfc), @@ -72,7 +73,7 @@ abstract module ComposeRefinements( Ref1.NextRefinement(s, s', l); Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); } -} +}*/ module MapStateMachine2 refines StateMachine(MapIfc) { @@ -87,7 +88,7 @@ module MapStateMachine2 refines StateMachine(MapIfc) && (l.Insert? ==> s'.m == s.m[l.k := l.value]) } } - +/* module MapStateMachine3 refines StateMachine(MapIfc) { datatype Variables = Y(n: map) @@ -101,7 +102,7 @@ module MapStateMachine3 refines StateMachine(MapIfc) && (l.Insert? ==> s'.n == s.n[l.k := l.value]) } } - +*/ module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, MapStateMachine2) { function I(s: L.Variables) : H.Variables From 91bec1664761acd3f7a20fd75a8e05c4c7dc248b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 20:26:38 -0400 Subject: [PATCH 479/573] Track the fake AliasModuleDecls that we added, so that we only update them once during ApplyFunctor. This suffices to let StateMachineRefinement pass (after fixing some bugs in StateMachineRefinement). --- Source/Dafny/Resolver.cs | 5 +++++ Test/modules/StateMachineRefinement.dfy | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e09c0299d75..1fe1880fbc1 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2593,6 +2593,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) Dictionary formalActualPairs = new Dictionary(); Dictionary formalActualIdPairs = new Dictionary(); + HashSet fakeAliasDecls = new HashSet(); bool allArgumentsConcrete = true; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; @@ -2623,6 +2624,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // Find the artificial alias decl we created, and update it with the actual foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { + fakeAliasDecls.Add(topLevelDecl); amd.Signature = actual.Signature; // TODO: Need this? // amd.Signature.Refines = refinementTransformer.RefinedSig; @@ -2635,6 +2637,9 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 3) // Update each module import that involves a functor (if any) foreach (TopLevelDecl decl in newDef.TopLevelDecls) { + if (fakeAliasDecls.Contains(decl)) { + continue; // Don't duplicate work + } if (decl is AliasModuleDecl amd) { if (amd.TargetQId.FunctorApp != null) { // Do we need to update this functor? diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index dc0959b6f51..84c04e5c8a1 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -107,7 +107,7 @@ module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, Ma { function I(s: L.Variables) : H.Variables { - H.Variables(s) + H.X(s) } lemma InitRefinement(s: L.Variables) @@ -124,7 +124,7 @@ module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, M { function I(s: L.Variables) : H.Variables { - H.Variables(s.m) + H.Variables[s.m] } lemma InitRefinement(s: L.Variables) From fec34a2e08ad5eaae44b733675f82896076e4e41 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 20:28:04 -0400 Subject: [PATCH 480/573] StateMachineRefinement first half back in a working state --- Test/modules/StateMachineRefinement.dfy | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 84c04e5c8a1..ae73e0183ff 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -46,7 +46,6 @@ abstract module StateMachineRefinement( ensures H.Next(I(s), I(s'), l) } -/* module ComposeRefinements( crIfc: Ifc, P: StateMachine(crIfc), @@ -73,7 +72,7 @@ module ComposeRefinements( Ref1.NextRefinement(s, s', l); Ref2.NextRefinement(Ref1.I(s), Ref1.I(s'), l); } -}*/ +} module MapStateMachine2 refines StateMachine(MapIfc) { @@ -88,7 +87,7 @@ module MapStateMachine2 refines StateMachine(MapIfc) && (l.Insert? ==> s'.m == s.m[l.k := l.value]) } } -/* + module MapStateMachine3 refines StateMachine(MapIfc) { datatype Variables = Y(n: map) @@ -102,7 +101,7 @@ module MapStateMachine3 refines StateMachine(MapIfc) && (l.Insert? ==> s'.n == s.n[l.k := l.value]) } } -*/ + module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, MapStateMachine2) { function I(s: L.Variables) : H.Variables From 68ac238f08240dd1978af65ff2fb440a688f44f7 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 20:30:05 -0400 Subject: [PATCH 481/573] More of StateMachineRefinement passes --- Test/modules/StateMachineRefinement.dfy | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index ae73e0183ff..aa156a4646a 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -118,27 +118,23 @@ module Refinement_1_2 refines StateMachineRefinement(MapIfc, MapStateMachine, Ma } } -/* module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, MapStateMachine3) { function I(s: L.Variables) : H.Variables { - H.Variables[s.m] + H.Y(s.m) } lemma InitRefinement(s: L.Variables) - requires L.Init(s) - ensures H.Init(I(s)) { } lemma NextRefinement(s: L.Variables, s': L.Variables, l: ifc.TransitionLabel) - requires L.Next(s, s', l) - ensures H.Next(I(s), I(s'), l) { } } +/* module Final { import BigRef = ComposeRefinements( MapIfc, From 40b6ad548c86a53ae9e9ef1bde977fd26098cb52 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 28 May 2021 20:33:26 -0400 Subject: [PATCH 482/573] Final module in StateMachineRefinement still needs some work. --- Test/modules/StateMachineRefinement.dfy | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index aa156a4646a..95519134221 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -134,7 +134,6 @@ module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, M } } -/* module Final { import BigRef = ComposeRefinements( MapIfc, @@ -149,15 +148,15 @@ module Final { lemma stuff() { var s : A.Variables := map[]; - assert BigRef.I(s) == B.Variables(map[]); - BigRef.InitRefinement(s); - - BigRef.NextRefinement( - map[1 := 2], - map[1 := 2], - MapIfc.Query(1, 2)); + assert BigRef.I(s) == B.Y(map[]); +// BigRef.InitRefinement(s); +// +// BigRef.NextRefinement( +// map[1 := 2], +// map[1 := 2], +// MapIfc.Query(1, 2)); } - +/* lemma names_for_same_type( a: MapIfc.TransitionLabel, b: A.ifc.TransitionLabel, @@ -174,5 +173,5 @@ module Final { == g == h == i == j == k { } -} */ +} From 3e57ba3c07bd1138ac53eca3e98a474d6300306c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 29 May 2021 14:08:10 -0400 Subject: [PATCH 483/573] Another failing case from Rob's parser --- Test/modules/parser.dfy | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index ef00c2a7eac..880773baf82 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -5,12 +5,9 @@ module NativeTypes { newtype{:nativeType "byte"} byte = i:int | 0 <= i < 0x100 } - abstract module NativePackedInt { import opened NativeTypes - type Integer - function unpack(s: seq) : Integer } @@ -19,34 +16,34 @@ module NativePackedUint32 refines NativePackedInt { } // Marshalling - abstract module Marshalling { import opened NativeTypes - type UnmarshalledType - function parse(data: seq) : UnmarshalledType } // Integer marshalling - abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { type UnmarshalledType = Int.Integer - function parse(data: seq) : UnmarshalledType { Int.unpack(data) } } -module Uint32Marshalling refines IntegerMarshalling(NativePackedUint32) { - // ERR: - // module-test.dfy[Uint32Marshalling](36,15): Error: type mismatch for argument (function expects seq, got seq) (covariant type parameter would require byte <: byte) +// Sequence marshalling +abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { + type Element = ElementMarshalling.UnmarshalledType + type UnmarshalledType = seq } -/* -// Works on normal Dafny -module Uint32Marshalling refines IntegerMarshalling { - import Int = NativePackedUint32 +abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { + function parse_prefix(data: seq) : (result: UnmarshalledType) + ensures result == [ elementMarshalling.parse(data) ] +} + +abstract module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { + // ERR: + // module-example.dfy(35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) + // module-example.dfy[IntegerSeqMarshalling](35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) } -*/ From 60700584422a893d7e42330afa3b9f7381a6614b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 30 May 2021 21:31:21 -0400 Subject: [PATCH 484/573] A version of Dafny that is successful on refine.dfy and parser.dfy. But more work is needed to generalize to possible future instances. --- Source/Dafny/Resolver.cs | 40 ++++++++++++++++++++++++++++++++++++++-- Test/modules/parser.dfy | 6 ++++-- Test/modules/refine.dfy | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 Test/modules/refine.dfy diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 1fe1880fbc1..5114e03bdea 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2573,7 +2573,8 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) For each formal, update the AliasModuleDecl we introduced // to point at the actual module parameter // 3) Update any other functor applications in this module to use the new actual as well - // 4) Compute the signature for our newly created module + // 4) Update the functor's refinement target, if needed + // 5) Compute the signature for our newly created module // 1) ScopeCloner cloner = new ScopeCloner(literalRoot.Signature.VisibilityScope); @@ -2683,9 +2684,44 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } } } - // TODO: Update the refines for the functor too? // 4) + if (literalRoot.Signature.Refines != null && literalRoot.Signature.Refines.Origin != null) { + // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated + FunctorApplication refFunctorApplication = literalRoot.Signature.Refines.Origin; + + // Do we need to update this functor? + var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); + bool update = false; + foreach (ModuleQualifiedId actual in refFunctorApplication.moduleParamNames) { + if (formalNames.Contains(actual.ToString())) { + // We need to reapply this functor + update = true; + break; + } + } + + if (update) { + for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { + ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; + var refActualName = refFunctorApplication.moduleParamNames[i]; + + foreach (TopLevelDecl decl in newDef.TopLevelDecls) { + if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { + // This is a fake alias we inserted for the functor we're refining, + // which was then merged into this new module's definition. Update it. + amd.Signature = formalActualPairs[refActualName.ToString()].Signature; + } + } + } + } + + // TODO: But this module might itself have some refines, so we need to recurse + // TODO: Do we need to reapply any functors we find in the refining module too? + } + + + // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); sig.Origin = functorApp; diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 880773baf82..ce5b4228014 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -37,12 +37,14 @@ abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshall type UnmarshalledType = seq } -abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { +abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) + refines SeqMarshalling(elementMarshalling) { function parse_prefix(data: seq) : (result: UnmarshalledType) ensures result == [ elementMarshalling.parse(data) ] } -abstract module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { +abstract module IntegerSeqMarshalling(Int: NativePackedInt) + refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { // ERR: // module-example.dfy(35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) // module-example.dfy[IntegerSeqMarshalling](35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) diff --git a/Test/modules/refine.dfy b/Test/modules/refine.dfy new file mode 100644 index 00000000000..7bd0b502562 --- /dev/null +++ b/Test/modules/refine.dfy @@ -0,0 +1,34 @@ +abstract module NativePackedInt { + type Integer +} + +module NativePackedUint32 refines NativePackedInt { + type Integer = int +} + +// Marshalling +abstract module Marshalling { + type UnmarshalledType +} + +// Integer marshalling +abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { + type UnmarshalledType = Int.Integer +} + +// Sequence marshalling +abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { + type Element = ElementMarshalling.UnmarshalledType + type UnmarshalledType = Element +} + +abstract module Uniform(elementMarshalling: Marshalling) + refines SeqMarshalling(elementMarshalling) { + predicate parse_prefix(x:elementMarshalling.UnmarshalledType, y: UnmarshalledType) + requires x == y +} + +abstract module IntegerSeqMarshalling(Int: NativePackedInt) { + import B = Uniform(IntegerMarshalling(Int)) +} + From b18fa8837b1131c0ca25dde80de140149787eecf Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 30 May 2021 21:56:20 -0400 Subject: [PATCH 485/573] Refactor refinement updates, so we can recurse if needed. Still need to think more about what happens when we refine a module that includes regular module imports that are themselves functors. All lit tests pass. --- Source/Dafny/Resolver.cs | 70 +++++++++++++++++----------------- Test/modules/SimpleGood.dfy | 14 ++++--- Test/modules/parser.dfy.expect | 2 +- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5114e03bdea..bfd3818a738 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2566,6 +2566,41 @@ private void CloneCompileSignatures(ModuleDefinition src, ModuleDefinition dst) } } + // refiningSig: The signature that the current module refines + // topLevelDecls: The decls in the functor that does the refining + // formalAcutalPairs: Map from formal names to the actual arguments + private void UpdateRefinment(ModuleSignature refiningSig, List topLevelDecls, Dictionary formalActualPairs) { + if (refiningSig != null && refiningSig.Refines != null && refiningSig.Refines.Origin != null) { + // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated + FunctorApplication refFunctorApplication = refiningSig.Refines.Origin; + + // Construct a map from this functor's formals to actuals, in case we need to recurse + Dictionary newMap = new Dictionary(); + for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { + ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; + var refActualName = refFunctorApplication.moduleParamNames[i]; + + foreach (TopLevelDecl decl in topLevelDecls) { + if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { + // This is a fake alias we inserted for the functor we're refining, + // which was then merged into this new module's definition. Update it. + ModuleDecl actualDecl = formalActualPairs[refActualName.ToString()]; + amd.Signature = actualDecl.Signature; + newMap[refFormal.Name.val] = actualDecl; + } + } + } + + // This module might itself have some refines, so we need to recurse + if (refFunctorApplication.functor.RefinementQId != null) { + UpdateRefinment(refFunctorApplication.functor.RefinementQId.Decl.Signature, topLevelDecls, newMap); + } + + // TODO: Do we need to reapply any functors we find in the refining module too? + } + } + + private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor @@ -2686,40 +2721,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } // 4) - if (literalRoot.Signature.Refines != null && literalRoot.Signature.Refines.Origin != null) { - // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated - FunctorApplication refFunctorApplication = literalRoot.Signature.Refines.Origin; - - // Do we need to update this functor? - var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); - bool update = false; - foreach (ModuleQualifiedId actual in refFunctorApplication.moduleParamNames) { - if (formalNames.Contains(actual.ToString())) { - // We need to reapply this functor - update = true; - break; - } - } - - if (update) { - for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { - ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; - var refActualName = refFunctorApplication.moduleParamNames[i]; - - foreach (TopLevelDecl decl in newDef.TopLevelDecls) { - if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { - // This is a fake alias we inserted for the functor we're refining, - // which was then merged into this new module's definition. Update it. - amd.Signature = formalActualPairs[refActualName.ToString()].Signature; - } - } - } - } - - // TODO: But this module might itself have some refines, so we need to recurse - // TODO: Do we need to reapply any functors we find in the refining module too? - } - + UpdateRefinment(literalRoot.Signature, newDef.TopLevelDecls, formalActualPairs); // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 073f74bba55..d176baced3f 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -16,7 +16,7 @@ module ABase { abstract module P(A: ABase) { method Test(a:A.Key) } -/* + // Try simple functor application abstract module Apply { import OutputBase = P(ABase) @@ -160,20 +160,24 @@ abstract module SameFunctorRefinmentWithArg(MyA:ABase, PA0:P(MyA), PA1:P(MyA)) r PA1.Test(a); } } -*/ // Test abstract vs. concrete module rules -module AInt refines ABase { + +module Pconcrete(A: ABase) { + method Test(a:A.Key) +} + +module AIntAgain refines ABase { type Key = int } -module AConsumer(a:ABase, b:P(a)) { +module AConsumer(a:ABase, b:Pconcrete(a)) { method MyTest(x:b.A.Key) { b.Test(x); } } -module Pconcrete refines AConsumer(AInt, P(AInt)) { +module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { // method Test(a:A.Key) { // var x:int := a; // } diff --git a/Test/modules/parser.dfy.expect b/Test/modules/parser.dfy.expect index ebe2328e072..00a51f822da 100644 --- a/Test/modules/parser.dfy.expect +++ b/Test/modules/parser.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 2 verified, 0 errors +Dafny program verifier finished with 3 verified, 0 errors From d2dc2b414a54a8e00d0f5822a7832647c8034057 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 30 May 2021 22:32:57 -0400 Subject: [PATCH 486/573] Minor changes --- Test/modules/StateMachineRefinement.dfy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index 95519134221..f87381c1981 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -148,7 +148,9 @@ module Final { lemma stuff() { var s : A.Variables := map[]; - assert BigRef.I(s) == B.Y(map[]); + assert BigRef.I(s) // H.Variables = MapStateMachine3.Variables + == + B.Y(map[]); // MapStateMachine3.Variables // BigRef.InitRefinement(s); // // BigRef.NextRefinement( From 02e1c640fabde30e61dcc463b9f1a4cd1c258eba Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 31 May 2021 21:53:56 -0400 Subject: [PATCH 487/573] Improvements to UpdateRefinement, and a refactoring of UpdateFunctorApp so that Rob's parser example no longer crashes. Instead it complains about comparable types. --- Source/Dafny/Resolver.cs | 85 +++++++++++++++++++++++++--------------- Test/modules/parser.dfy | 15 ++++--- 2 files changed, 61 insertions(+), 39 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index bfd3818a738..3e7d0289084 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2566,41 +2566,86 @@ private void CloneCompileSignatures(ModuleDefinition src, ModuleDefinition dst) } } + private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModuleDecl literalRoot, + Dictionary formalActualPairs, Dictionary formalActualIdPairs, + out FunctorApplication newFunctorApp) { + List moduleParams = new List(); + List moduleParamNames = new List(); + + // Compute a new set of actual parameters, taking into account the outer functor's actuals + for (int i = 0; i < functorApp.moduleParamNames.Count; i++) { + string actualName = functorApp.moduleParamNames[i].ToString(); + ModuleDecl oldActual = functorApp.moduleParams[i]; + ModuleQualifiedId oldActualName = functorApp.moduleParamNames[i]; + + if (formalActualPairs.ContainsKey(actualName)) { + moduleParams.Add(formalActualPairs[actualName]); + moduleParamNames.Add(formalActualIdPairs[actualName]); + } else { + moduleParams.Add(oldActual); + moduleParamNames.Add(oldActualName); + } + } + + newFunctorApp = new FunctorApplication(functorApp.tok, moduleParamNames); + newFunctorApp.functor = functorApp.functor; + newFunctorApp.moduleParams = moduleParams; + + // Compute the result of the new application + ModuleDecl newImportDecl = ApplyFunctor(newFunctorApp, literalRoot); + return newImportDecl; + } + // refiningSig: The signature that the current module refines // topLevelDecls: The decls in the functor that does the refining // formalAcutalPairs: Map from formal names to the actual arguments - private void UpdateRefinment(ModuleSignature refiningSig, List topLevelDecls, Dictionary formalActualPairs) { + private void UpdateRefinment(ModuleSignature refiningSig, List topLevelDecls, + Dictionary formalActualPairs, Dictionary formalActualIdPairs) { if (refiningSig != null && refiningSig.Refines != null && refiningSig.Refines.Origin != null) { // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated FunctorApplication refFunctorApplication = refiningSig.Refines.Origin; // Construct a map from this functor's formals to actuals, in case we need to recurse Dictionary newMap = new Dictionary(); + Dictionary newIdMap = new Dictionary(); for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; - var refActualName = refFunctorApplication.moduleParamNames[i]; + ModuleQualifiedId refActualName = refFunctorApplication.moduleParamNames[i]; foreach (TopLevelDecl decl in topLevelDecls) { if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { // This is a fake alias we inserted for the functor we're refining, // which was then merged into this new module's definition. Update it. - ModuleDecl actualDecl = formalActualPairs[refActualName.ToString()]; + ModuleDecl actualDecl; + ModuleQualifiedId actualId; + if (formalActualPairs.ContainsKey(refActualName.ToString())) { + actualDecl = formalActualPairs[refActualName.ToString()]; + actualId = formalActualIdPairs[refActualName.ToString()]; + } else { + Contract.Assert(refActualName.FunctorApp != null); + // The actual is a functor that needs to be recomputed + FunctorApplication newFunctorApp; + actualDecl = UpdateFunctorApp(refActualName.FunctorApp, (LiteralModuleDecl) refActualName.Root, + formalActualPairs, formalActualIdPairs, out newFunctorApp); + actualId = new ModuleQualifiedId(newFunctorApp, refActualName.Path); + } + amd.Signature = actualDecl.Signature; newMap[refFormal.Name.val] = actualDecl; + newIdMap[refFormal.Name.val] = actualId; } } } // This module might itself have some refines, so we need to recurse if (refFunctorApplication.functor.RefinementQId != null) { - UpdateRefinment(refFunctorApplication.functor.RefinementQId.Decl.Signature, topLevelDecls, newMap); + UpdateRefinment(refFunctorApplication.functor.RefinementQId.Decl.Signature, topLevelDecls, newMap, newIdMap); } // TODO: Do we need to reapply any functors we find in the refining module too? } } - private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor @@ -2690,38 +2735,16 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } if (update) { - List moduleParams = new List(); - List moduleParamNames = new List(); - - // Compute a new set of actual parameters, taking into account the outer functor's actuals - for (int i = 0; i < amd.TargetQId.FunctorApp.moduleParamNames.Count; i++) { - string actualName = amd.TargetQId.FunctorApp.moduleParamNames[i].ToString(); - ModuleDecl oldActual = amd.TargetQId.FunctorApp.moduleParams[i]; - ModuleQualifiedId oldActualName = amd.TargetQId.FunctorApp.moduleParamNames[i]; - - if (formalActualPairs.ContainsKey(actualName)) { - moduleParams.Add(formalActualPairs[actualName]); - moduleParamNames.Add(formalActualIdPairs[actualName]); - } else { - moduleParams.Add(oldActual); - moduleParamNames.Add(oldActualName); - } - } - - FunctorApplication newFunctorApp = new FunctorApplication(amd.TargetQId.FunctorApp.tok, moduleParamNames); - newFunctorApp.functor = amd.TargetQId.FunctorApp.functor; - newFunctorApp.moduleParams = moduleParams; - - // Compute the result of the new application - var newImportDecl = ApplyFunctor(newFunctorApp, (LiteralModuleDecl)amd.TargetQId.Root); - amd.Signature = newImportDecl.Signature; + FunctorApplication newFunctorApp; // Not currently used + amd.Signature = UpdateFunctorApp(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root, + formalActualPairs, formalActualIdPairs, out newFunctorApp).Signature; } } } } // 4) - UpdateRefinment(literalRoot.Signature, newDef.TopLevelDecls, formalActualPairs); + UpdateRefinment(literalRoot.Signature, newDef.TopLevelDecls, formalActualPairs, formalActualIdPairs); // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index ce5b4228014..abd319fd273 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -31,21 +31,20 @@ abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { } } + // Sequence marshalling abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { type Element = ElementMarshalling.UnmarshalledType type UnmarshalledType = seq } - -abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) - refines SeqMarshalling(elementMarshalling) { +abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { function parse_prefix(data: seq) : (result: UnmarshalledType) ensures result == [ elementMarshalling.parse(data) ] } +abstract module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { +} -abstract module IntegerSeqMarshalling(Int: NativePackedInt) - refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { - // ERR: - // module-example.dfy(35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) - // module-example.dfy[IntegerSeqMarshalling](35,49): Error: arguments must have comparable types (got ElementMarshalling.UnmarshalledType and UnmarshalledType) +abstract module Uint32SeqMarshalling refines IntegerSeqMarshalling(NativePackedUint32) { + // CRASH! } + From 50f206dbed52bb39054e66218965a2e162b08f49 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 31 May 2021 22:57:12 -0400 Subject: [PATCH 488/573] Fixes the recursion in UpdateRefinment, so that parser.dfy will pass, assuming the last module is made abstract. --- Source/Dafny/Resolver.cs | 77 ++++++++++++++++++++-------------------- Test/modules/parser.dfy | 1 - 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3e7d0289084..88b6ca561a6 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2599,51 +2599,47 @@ private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModule // refiningSig: The signature that the current module refines // topLevelDecls: The decls in the functor that does the refining // formalAcutalPairs: Map from formal names to the actual arguments - private void UpdateRefinment(ModuleSignature refiningSig, List topLevelDecls, + private void UpdateRefinment(FunctorApplication refFunctorApplication, List topLevelDecls, Dictionary formalActualPairs, Dictionary formalActualIdPairs) { - if (refiningSig != null && refiningSig.Refines != null && refiningSig.Refines.Origin != null) { - // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated - FunctorApplication refFunctorApplication = refiningSig.Refines.Origin; - - // Construct a map from this functor's formals to actuals, in case we need to recurse - Dictionary newMap = new Dictionary(); - Dictionary newIdMap = new Dictionary(); - for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { - ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; - ModuleQualifiedId refActualName = refFunctorApplication.moduleParamNames[i]; - - foreach (TopLevelDecl decl in topLevelDecls) { - if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { - // This is a fake alias we inserted for the functor we're refining, - // which was then merged into this new module's definition. Update it. - ModuleDecl actualDecl; - ModuleQualifiedId actualId; - if (formalActualPairs.ContainsKey(refActualName.ToString())) { - actualDecl = formalActualPairs[refActualName.ToString()]; - actualId = formalActualIdPairs[refActualName.ToString()]; - } else { - Contract.Assert(refActualName.FunctorApp != null); - // The actual is a functor that needs to be recomputed - FunctorApplication newFunctorApp; - actualDecl = UpdateFunctorApp(refActualName.FunctorApp, (LiteralModuleDecl) refActualName.Root, - formalActualPairs, formalActualIdPairs, out newFunctorApp); - actualId = new ModuleQualifiedId(newFunctorApp, refActualName.Path); - } - amd.Signature = actualDecl.Signature; - newMap[refFormal.Name.val] = actualDecl; - newIdMap[refFormal.Name.val] = actualId; + // Construct a map from this functor's formals to actuals, in case we need to recurse + Dictionary newMap = new Dictionary(); + Dictionary newIdMap = new Dictionary(); + for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { + ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; + ModuleQualifiedId refActualName = refFunctorApplication.moduleParamNames[i]; + + foreach (TopLevelDecl decl in topLevelDecls) { + if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { + // This is a fake alias we inserted for the functor we're refining, + // which was then merged into this new module's definition. Update it. + ModuleDecl actualDecl; + ModuleQualifiedId actualId; + if (formalActualPairs.ContainsKey(refActualName.ToString())) { + actualDecl = formalActualPairs[refActualName.ToString()]; + actualId = formalActualIdPairs[refActualName.ToString()]; + } else { + Contract.Assert(refActualName.FunctorApp != null); + // The actual is a functor that needs to be recomputed + FunctorApplication newFunctorApp; + actualDecl = UpdateFunctorApp(refActualName.FunctorApp, (LiteralModuleDecl) refActualName.Root, + formalActualPairs, formalActualIdPairs, out newFunctorApp); + actualId = new ModuleQualifiedId(newFunctorApp, refActualName.Path); } - } - } - // This module might itself have some refines, so we need to recurse - if (refFunctorApplication.functor.RefinementQId != null) { - UpdateRefinment(refFunctorApplication.functor.RefinementQId.Decl.Signature, topLevelDecls, newMap, newIdMap); + amd.Signature = actualDecl.Signature; + newMap[refFormal.Name.val] = actualDecl; + newIdMap[refFormal.Name.val] = actualId; + } } + } - // TODO: Do we need to reapply any functors we find in the refining module too? + // This module might itself have some refines, so we need to recurse + if (refFunctorApplication.functor.RefinementQId != null && refFunctorApplication.functor.RefinementQId.FunctorApp != null) { + UpdateRefinment(refFunctorApplication.functor.RefinementQId.FunctorApp, topLevelDecls, newMap, newIdMap); } + + // TODO: Do we need to reapply any functors we find in the refining module too? } private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { @@ -2744,7 +2740,10 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } // 4) - UpdateRefinment(literalRoot.Signature, newDef.TopLevelDecls, formalActualPairs, formalActualIdPairs); + if (literalRoot.Signature.Refines != null && literalRoot.Signature.Refines.Origin != null) { + // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated + UpdateRefinment(literalRoot.Signature.Refines.Origin, newDef.TopLevelDecls, formalActualPairs, formalActualIdPairs); + } // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index abd319fd273..8f3ff132fbe 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -45,6 +45,5 @@ abstract module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSized } abstract module Uint32SeqMarshalling refines IntegerSeqMarshalling(NativePackedUint32) { - // CRASH! } From 03b28f856d77798ecb27c003ddb239c01e792b89 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 1 Jun 2021 16:22:36 -0400 Subject: [PATCH 489/573] Treat functor formals as a form of concrete module. A version of parser.dfy passes --- Source/Dafny/Resolver.cs | 1 + Test/modules/parser.dfy | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 88b6ca561a6..fef1d9827ea 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2703,6 +2703,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { fakeAliasDecls.Add(topLevelDecl); amd.Signature = actual.Signature; + amd.Signature.IsAbstract = false; // Functor formals are considered concrete, since they will always eventually be concretely instantiated // TODO: Need this? // amd.Signature.Refines = refinementTransformer.RefinedSig; // or this? diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 8f3ff132fbe..35de7d28086 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -23,7 +23,7 @@ abstract module Marshalling { } // Integer marshalling -abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { +module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { type UnmarshalledType = Int.Integer function parse(data: seq) : UnmarshalledType { @@ -41,9 +41,15 @@ abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Mars function parse_prefix(data: seq) : (result: UnmarshalledType) ensures result == [ elementMarshalling.parse(data) ] } -abstract module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { +module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { } -abstract module Uint32SeqMarshalling refines IntegerSeqMarshalling(NativePackedUint32) { +// Works +module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32) { + import X = IntegerSeqMarshalling(NativePackedUint32) } +// Creates a type mismatch, presumably due to _Compile issues +//module Uint32SeqMarshalling2 refines IntegerSeqMarshalling(NativePackedUint32) { +// +//} From b521bde73d8840d9ad3a92cba0a09bfed2d8f2aa Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:12:04 -0400 Subject: [PATCH 490/573] Always generate _Compile versions of Functor modules, and try harder to propagate CompileSignatures. Together, this enables our new Compile test to pass. Previously, it failed with a mysterious type-mismatch error, which boiled down to comparing ABase.Key with ABase_Compile.Key --- Source/Dafny/Resolver.cs | 5 ++++- Test/modules/Compile.dfy | 16 ++++++++++++++++ Test/modules/Compile.dfy.expect | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Test/modules/Compile.dfy create mode 100644 Test/modules/Compile.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index fef1d9827ea..402a070db22 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -515,10 +515,12 @@ public void ResolveProgram(Program prog) { } Type.PopScope(tempVis); - if (reporter.Count(ErrorLevel.Error) == errorCount && !m.IsAbstract && !(m is Functor)) { // Functors are effectively abstract? + if (reporter.Count(ErrorLevel.Error) == errorCount && (!m.IsAbstract || m is Functor)) { // compilation should only proceed if everything is good, including the signature (which preResolveErrorCount does not include); CompilationCloner cloner = new CompilationCloner(compilationModuleClones); var nw = cloner.CloneModuleDefinition(m, m.CompileName + "_Compile"); + // Cloner doesn't propagate the compile signature, so we do so ourselves + CloneCompileSignatures(m, nw); compilationModuleClones.Add(m, nw); var oldErrorsOnly = reporter.ErrorsOnly; reporter.ErrorsOnly = true; // turn off warning reporting for the clone @@ -2749,6 +2751,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); sig.Origin = functorApp; + sig.CompileSignature = literalRoot.Signature.CompileSignature; // Update the abstractness of the new module if (!literalRoot.Signature.IsAbstract && allArgumentsConcrete) { diff --git a/Test/modules/Compile.dfy b/Test/modules/Compile.dfy new file mode 100644 index 00000000000..4c5a229d9bc --- /dev/null +++ b/Test/modules/Compile.dfy @@ -0,0 +1,16 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module ABase { + type Key +} + +abstract module P(A: ABase) { + method Test(a:A.Key) +} + +module AConsumer(b:P(ABase)) { + method MyTest(x:b.A.Key) { + b.Test(x); + } +} diff --git a/Test/modules/Compile.dfy.expect b/Test/modules/Compile.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/modules/Compile.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors From 93de589f3cafb9b59c6fb7dc94c1217bada24b94 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:18:54 -0400 Subject: [PATCH 491/573] Simplify parser example down to four modules --- Test/modules/parser.dfy | 45 +++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 35de7d28086..5e21a1a6f69 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -7,47 +7,48 @@ module NativeTypes { } abstract module NativePackedInt { import opened NativeTypes - type Integer + //type Integer function unpack(s: seq) : Integer } -module NativePackedUint32 refines NativePackedInt { - type Integer = int -} +//module NativePackedUint32 refines NativePackedInt { +// type Integer = int +//} // Marshalling abstract module Marshalling { import opened NativeTypes - type UnmarshalledType - function parse(data: seq) : UnmarshalledType + //type UnmarshalledType + //function parse(data: seq) : bool } // Integer marshalling module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { - type UnmarshalledType = Int.Integer - function parse(data: seq) : UnmarshalledType + //type UnmarshalledType = Int.Integer + function parse(data: seq) : bool { - Int.unpack(data) + var x := Int.unpack(data); + true } } // Sequence marshalling -abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { - type Element = ElementMarshalling.UnmarshalledType - type UnmarshalledType = seq -} -abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { - function parse_prefix(data: seq) : (result: UnmarshalledType) - ensures result == [ elementMarshalling.parse(data) ] -} -module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { -} +//abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { +// type Element = ElementMarshalling.UnmarshalledType +// type UnmarshalledType = seq +//} +//abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { +// function parse_prefix(data: seq) : (result: UnmarshalledType) +// ensures result == [ elementMarshalling.parse(data) ] +//} +//module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { +//} // Works -module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32) { - import X = IntegerSeqMarshalling(NativePackedUint32) -} +//module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32) { +// import X = IntegerSeqMarshalling(NativePackedUint32) +//} // Creates a type mismatch, presumably due to _Compile issues //module Uint32SeqMarshalling2 refines IntegerSeqMarshalling(NativePackedUint32) { From 092a2c8d35ee0b8615d51d4f91b69a52e237d9fc Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:20:29 -0400 Subject: [PATCH 492/573] Fix the simplification --- Test/modules/parser.dfy | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 5e21a1a6f69..5dcae346857 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -8,7 +8,7 @@ module NativeTypes { abstract module NativePackedInt { import opened NativeTypes //type Integer - function unpack(s: seq) : Integer + function unpack(s: seq) : bool } //module NativePackedUint32 refines NativePackedInt { @@ -27,8 +27,7 @@ module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { //type UnmarshalledType = Int.Integer function parse(data: seq) : bool { - var x := Int.unpack(data); - true + Int.unpack(data) } } From e56afdd1da2e7f20ac5b0a6060fcf55e4d14ca6d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:38:29 -0400 Subject: [PATCH 493/573] Create _Compile versions of everything. With this change, simplified parser verifies. --- Source/Dafny/Resolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 402a070db22..cd367c00d4b 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -515,7 +515,7 @@ public void ResolveProgram(Program prog) { } Type.PopScope(tempVis); - if (reporter.Count(ErrorLevel.Error) == errorCount && (!m.IsAbstract || m is Functor)) { + if (reporter.Count(ErrorLevel.Error) == errorCount) { // && (!m.IsAbstract || m is Functor)) { // compilation should only proceed if everything is good, including the signature (which preResolveErrorCount does not include); CompilationCloner cloner = new CompilationCloner(compilationModuleClones); var nw = cloner.CloneModuleDefinition(m, m.CompileName + "_Compile"); From 23791e7e00596ce585f3b5e1a4a69ca0c36a2e5a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:39:24 -0400 Subject: [PATCH 494/573] Full parser works too --- Test/modules/parser.dfy | 44 ++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 5dcae346857..35de7d28086 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -7,25 +7,25 @@ module NativeTypes { } abstract module NativePackedInt { import opened NativeTypes - //type Integer - function unpack(s: seq) : bool + type Integer + function unpack(s: seq) : Integer } -//module NativePackedUint32 refines NativePackedInt { -// type Integer = int -//} +module NativePackedUint32 refines NativePackedInt { + type Integer = int +} // Marshalling abstract module Marshalling { import opened NativeTypes - //type UnmarshalledType - //function parse(data: seq) : bool + type UnmarshalledType + function parse(data: seq) : UnmarshalledType } // Integer marshalling module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { - //type UnmarshalledType = Int.Integer - function parse(data: seq) : bool + type UnmarshalledType = Int.Integer + function parse(data: seq) : UnmarshalledType { Int.unpack(data) } @@ -33,21 +33,21 @@ module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { // Sequence marshalling -//abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { -// type Element = ElementMarshalling.UnmarshalledType -// type UnmarshalledType = seq -//} -//abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { -// function parse_prefix(data: seq) : (result: UnmarshalledType) -// ensures result == [ elementMarshalling.parse(data) ] -//} -//module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { -//} +abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { + type Element = ElementMarshalling.UnmarshalledType + type UnmarshalledType = seq +} +abstract module UniformSizedElementSeqMarshallingCommon(elementMarshalling: Marshalling) refines SeqMarshalling(elementMarshalling) { + function parse_prefix(data: seq) : (result: UnmarshalledType) + ensures result == [ elementMarshalling.parse(data) ] +} +module IntegerSeqMarshalling(Int: NativePackedInt) refines UniformSizedElementSeqMarshallingCommon(IntegerMarshalling(Int)) { +} // Works -//module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32) { -// import X = IntegerSeqMarshalling(NativePackedUint32) -//} +module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32) { + import X = IntegerSeqMarshalling(NativePackedUint32) +} // Creates a type mismatch, presumably due to _Compile issues //module Uint32SeqMarshalling2 refines IntegerSeqMarshalling(NativePackedUint32) { From c7794ad8de5bef4e7e646a4f9c03235c99efb05f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 16:40:14 -0400 Subject: [PATCH 495/573] Even fuller parser --- Test/modules/parser.dfy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Test/modules/parser.dfy b/Test/modules/parser.dfy index 35de7d28086..6725b7002d7 100644 --- a/Test/modules/parser.dfy +++ b/Test/modules/parser.dfy @@ -50,6 +50,6 @@ module Uint32SeqMarshalling { //refines IntegerSeqMarshalling(NativePackedUint32 } // Creates a type mismatch, presumably due to _Compile issues -//module Uint32SeqMarshalling2 refines IntegerSeqMarshalling(NativePackedUint32) { -// -//} +module Uint32SeqMarshalling2 refines IntegerSeqMarshalling(NativePackedUint32) { + +} From ee6a104f545f104f3138475fe20e4dbeb0b6aa88 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 2 Jun 2021 17:36:22 -0400 Subject: [PATCH 496/573] Debugging SimpleGood case. --- Test/modules/SimpleGood.dfy | 51 +++++++++++++------------ Test/modules/StateMachineRefinement.dfy | 9 +++-- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index d176baced3f..8ae0817b907 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -17,26 +17,26 @@ abstract module P(A: ABase) { method Test(a:A.Key) } -// Try simple functor application -abstract module Apply { - import OutputBase = P(ABase) - - method More(a:OutputBase.A.Key) { - OutputBase.Test(a); - } -} - -// Make sure functors behave applicatively -abstract module Apply2 { - import Output0 = P(ABase) - import Output1 = P(ABase) - - method More(a:Output0.A.Key, b:Output1.A.Key) - requires a == b - { - Output1.Test(a); - } -} +//// Try simple functor application +//abstract module Apply { +// import OutputBase = P(ABase) +// +// method More(a:OutputBase.A.Key) { +// OutputBase.Test(a); +// } +//} +// +//// Make sure functors behave applicatively +//abstract module Apply2 { +// import Output0 = P(ABase) +// import Output1 = P(ABase) +// +// method More(a:Output0.A.Key, b:Output1.A.Key) +// requires a == b +// { +// Output1.Test(a); +// } +//} // Try passing a refinement to a functor @@ -51,13 +51,13 @@ abstract module ApplyRefinement { OutputRefined.A.BTest(); } - method KeyTest(b:OutputRefined.A.Key) - { - OutputRefined.Test(b); - } +// method KeyTest(b:OutputRefined.A.Key) +// { +// OutputRefined.Test(b); +// } } - +/* // Try refining the result of a functor application abstract module FunctorAppRefiner refines P(ABase) { method MoreTest(x:A.Key) { @@ -182,3 +182,4 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { // var x:int := a; // } } +*/ diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index f87381c1981..ae7b7d0ff27 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -134,7 +134,7 @@ module Refinement_2_3 refines StateMachineRefinement(MapIfc, MapStateMachine2, M } } -module Final { +abstract module Final { import BigRef = ComposeRefinements( MapIfc, MapStateMachine, @@ -148,9 +148,10 @@ module Final { lemma stuff() { var s : A.Variables := map[]; - assert BigRef.I(s) // H.Variables = MapStateMachine3.Variables - == - B.Y(map[]); // MapStateMachine3.Variables + var BigRefIs := BigRef.I(s); +// assert BigRef.I(s) // H.Variables = MapStateMachine3.Variables +// == +// B.Y(map[]); // MapStateMachine3.Variables // BigRef.InitRefinement(s); // // BigRef.NextRefinement( From c9410b7f2109c848ecffb08f07b6f2db3b814ed5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 3 Jun 2021 14:35:39 -0400 Subject: [PATCH 497/573] Refactored the code that handles _Compile modules into a separate procedure that we can call explicitly in ApplyFunctor. This seems to have solved the immediate problem with SimpleGood --- Source/Dafny/Resolver.cs | 59 +++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index cd367c00d4b..28e4328461c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -382,6 +382,38 @@ void CheckDupModuleNames(Program prog) { } } + public void CreateCompileModule(ModuleDefinition m, ModuleSignature sig, Program prog = null, Dictionary compilationModuleClones = null) { + CompilationCloner cloner = new CompilationCloner(compilationModuleClones); + var nw = cloner.CloneModuleDefinition(m, m.CompileName + "_Compile"); + // Cloner doesn't propagate the compile signature, so we do so ourselves + CloneCompileSignatures(m, nw); + if (compilationModuleClones != null) { + compilationModuleClones.Add(m, nw); + } + var oldErrorsOnly = reporter.ErrorsOnly; + reporter.ErrorsOnly = true; // turn off warning reporting for the clone + // Next, compute the compile signature + Contract.Assert(!useCompileSignatures); + useCompileSignatures = true; // set Resolver-global flag to indicate that Signatures should be followed to their CompiledSignature + Type.DisableScopes(); + var compileSig = RegisterTopLevelDecls(nw, true); + compileSig.Refines = refinementTransformer.RefinedSig; + sig.CompileSignature = compileSig; + foreach (var exportDecl in sig.ExportSets.Values) { + exportDecl.Signature.CompileSignature = cloner.CloneModuleSignature(exportDecl.Signature, compileSig); + } + // Now we're ready to resolve the cloned module definition, using the compile signature + ResolveModuleDefinition(nw, compileSig); + + if (prog != null) { + prog.CompileModules.Add(nw); + } + + useCompileSignatures = false; // reset the flag + Type.EnableScopes(); + reporter.ErrorsOnly = oldErrorsOnly; + } + public void ResolveProgram(Program prog) { Contract.Requires(prog != null); Type.ResetScopes(); @@ -517,30 +549,7 @@ public void ResolveProgram(Program prog) { if (reporter.Count(ErrorLevel.Error) == errorCount) { // && (!m.IsAbstract || m is Functor)) { // compilation should only proceed if everything is good, including the signature (which preResolveErrorCount does not include); - CompilationCloner cloner = new CompilationCloner(compilationModuleClones); - var nw = cloner.CloneModuleDefinition(m, m.CompileName + "_Compile"); - // Cloner doesn't propagate the compile signature, so we do so ourselves - CloneCompileSignatures(m, nw); - compilationModuleClones.Add(m, nw); - var oldErrorsOnly = reporter.ErrorsOnly; - reporter.ErrorsOnly = true; // turn off warning reporting for the clone - // Next, compute the compile signature - Contract.Assert(!useCompileSignatures); - useCompileSignatures = true; // set Resolver-global flag to indicate that Signatures should be followed to their CompiledSignature - Type.DisableScopes(); - var compileSig = RegisterTopLevelDecls(nw, true); - compileSig.Refines = refinementTransformer.RefinedSig; - sig.CompileSignature = compileSig; - foreach (var exportDecl in sig.ExportSets.Values) { - exportDecl.Signature.CompileSignature = cloner.CloneModuleSignature(exportDecl.Signature, compileSig); - } - // Now we're ready to resolve the cloned module definition, using the compile signature - - ResolveModuleDefinition(nw, compileSig); - prog.CompileModules.Add(nw); - useCompileSignatures = false; // reset the flag - Type.EnableScopes(); - reporter.ErrorsOnly = oldErrorsOnly; + CreateCompileModule(m, sig, prog, compilationModuleClones); } } else if (decl is AliasModuleDecl alias) { // resolve the path @@ -2751,7 +2760,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); sig.Origin = functorApp; - sig.CompileSignature = literalRoot.Signature.CompileSignature; + CreateCompileModule(newDef, sig); // Update the abstractness of the new module if (!literalRoot.Signature.IsAbstract && allArgumentsConcrete) { From 49d07307dd762d844aed15a890bf45be3ebb2da9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 3 Jun 2021 14:39:14 -0400 Subject: [PATCH 498/573] Restore rest of SimpleGood --- Test/modules/SimpleGood.dfy | 52 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 8ae0817b907..651e155c61c 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -10,33 +10,33 @@ module ABase { // // method Test(a:A.Key) //} -// + // Use an element of a formal parameter // Morally equivalent to P_normal above abstract module P(A: ABase) { method Test(a:A.Key) } -//// Try simple functor application -//abstract module Apply { -// import OutputBase = P(ABase) -// -// method More(a:OutputBase.A.Key) { -// OutputBase.Test(a); -// } -//} -// -//// Make sure functors behave applicatively -//abstract module Apply2 { -// import Output0 = P(ABase) -// import Output1 = P(ABase) -// -// method More(a:Output0.A.Key, b:Output1.A.Key) -// requires a == b -// { -// Output1.Test(a); -// } -//} +// Try simple functor application +abstract module Apply { + import OutputBase = P(ABase) + + method More(a:OutputBase.A.Key) { + OutputBase.Test(a); + } +} + +// Make sure functors behave applicatively +abstract module Apply2 { + import Output0 = P(ABase) + import Output1 = P(ABase) + + method More(a:Output0.A.Key, b:Output1.A.Key) + requires a == b + { + Output1.Test(a); + } +} // Try passing a refinement to a functor @@ -51,13 +51,12 @@ abstract module ApplyRefinement { OutputRefined.A.BTest(); } -// method KeyTest(b:OutputRefined.A.Key) -// { -// OutputRefined.Test(b); -// } + method KeyTest(b:OutputRefined.A.Key) + { + OutputRefined.Test(b); + } } -/* // Try refining the result of a functor application abstract module FunctorAppRefiner refines P(ABase) { method MoreTest(x:A.Key) { @@ -182,4 +181,3 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { // var x:int := a; // } } -*/ From f4dc8d4582551888fc5c0b6b0586d9547ff7df27 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 3 Jun 2021 14:40:12 -0400 Subject: [PATCH 499/573] One more minor extra test --- Test/modules/SimpleGood.dfy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 651e155c61c..1dfd385fcf0 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -177,7 +177,7 @@ module AConsumer(a:ABase, b:Pconcrete(a)) { } module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { -// method Test(a:A.Key) { -// var x:int := a; -// } + method Test(y:a.Key) { + var x:int := y; + } } From 2a597fc5254d53469a1a621cac7f683117297d2a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 3 Jun 2021 14:53:31 -0400 Subject: [PATCH 500/573] Full StateMachineRefinement passes! --- Test/modules/StateMachineRefinement.dfy | 35 ++++++++++--------- .../modules/StateMachineRefinement.dfy.expect | 2 ++ 2 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 Test/modules/StateMachineRefinement.dfy.expect diff --git a/Test/modules/StateMachineRefinement.dfy b/Test/modules/StateMachineRefinement.dfy index ae7b7d0ff27..f772c67c50d 100644 --- a/Test/modules/StateMachineRefinement.dfy +++ b/Test/modules/StateMachineRefinement.dfy @@ -1,4 +1,5 @@ -// explicit params +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" abstract module Ifc { type TransitionLabel(==,!new) @@ -149,17 +150,17 @@ abstract module Final { lemma stuff() { var s : A.Variables := map[]; var BigRefIs := BigRef.I(s); -// assert BigRef.I(s) // H.Variables = MapStateMachine3.Variables -// == -// B.Y(map[]); // MapStateMachine3.Variables -// BigRef.InitRefinement(s); -// -// BigRef.NextRefinement( -// map[1 := 2], -// map[1 := 2], -// MapIfc.Query(1, 2)); - } -/* + assert BigRef.I(s) // H.Variables = MapStateMachine3.Variables + == + B.Y(map[]); // MapStateMachine3.Variables + BigRef.InitRefinement(s); + + BigRef.NextRefinement( + map[1 := 2], + map[1 := 2], + MapIfc.Query(1, 2)); + } + lemma names_for_same_type( a: MapIfc.TransitionLabel, b: A.ifc.TransitionLabel, @@ -168,13 +169,13 @@ abstract module Final { e: BigRef.P.ifc.TransitionLabel, f: BigRef.Q.ifc.TransitionLabel, g: BigRef.R.ifc.TransitionLabel, - h: BigRef.Ref1.L.TransitionLabel, - i: BigRef.Ref1.H.TransitionLabel, - j: BigRef.Ref2.L.TransitionLabel, - k: BigRef.Ref2.H.TransitionLabel) + h: BigRef.Ref1.L.ifc.TransitionLabel, + i: BigRef.Ref1.H.ifc.TransitionLabel, + j: BigRef.Ref2.L.ifc.TransitionLabel, + k: BigRef.Ref2.H.ifc.TransitionLabel) requires a == b == c == d == e == f == g == h == i == j == k { } -*/ + } diff --git a/Test/modules/StateMachineRefinement.dfy.expect b/Test/modules/StateMachineRefinement.dfy.expect new file mode 100644 index 00000000000..ccc01c35f48 --- /dev/null +++ b/Test/modules/StateMachineRefinement.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 11 verified, 0 errors From 47619817adceda4f9c44efb78d376d5652a1d86b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 8 Jun 2021 16:05:54 -0400 Subject: [PATCH 501/573] PCM bugs reported by Travis --- Test/modules/PCM1.dfy | 32 ++++++++++++++++++++++++++++++++ Test/modules/PCM2.dfy | 30 ++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 Test/modules/PCM1.dfy create mode 100644 Test/modules/PCM2.dfy diff --git a/Test/modules/PCM1.dfy b/Test/modules/PCM1.dfy new file mode 100644 index 00000000000..23de1e029a9 --- /dev/null +++ b/Test/modules/PCM1.dfy @@ -0,0 +1,32 @@ +module GhostLoc { + datatype Loc = + | BaseLoc(ghost t: nat) + | ExtLoc(ghost s: nat, ghost base_loc: Loc) +} +abstract module PCM { + import opened GhostLoc + type M(!new) +} +module Tokens(pcm: PCM) { + import opened GhostLoc + type {:extern} Token(!new) { + function {:extern} loc() : Loc + function {:extern} get() : pcm.M + } +} +abstract module PCMExt(Base: PCM) refines PCM { + type B = Base.M + type F = M +} +module PCMExtMethods(Base: PCM, Ext: PCMExt(Base)) { + type B = Base.M + type F = Ext.M + import BaseTokens = Tokens(Base) + import ExtTokens = Tokens(Ext) + function method {:extern} ext_init( + linear b: BaseTokens.Token, + ghost f': F) + : (linear f_out: ExtTokens.Token) + ensures f_out.loc().ExtLoc? && f_out.loc().base_loc == b.loc() + ensures f_out.get() == f' +} diff --git a/Test/modules/PCM2.dfy b/Test/modules/PCM2.dfy new file mode 100644 index 00000000000..373d601cb52 --- /dev/null +++ b/Test/modules/PCM2.dfy @@ -0,0 +1,30 @@ +module GhostLoc { + datatype Loc = + | BaseLoc(ghost t: nat) + | ExtLoc(ghost s: nat, ghost base_loc: Loc) +} +abstract module PCM { + import opened GhostLoc + type M(!new) + predicate transition(a: M, b: M) + least predicate reachable(a: M, b: M) { + a == b || (exists z :: reachable(a, z) && transition(z, b)) + } +} +module Tokens(pcm: PCM) { + import opened GhostLoc + type {:extern} Token(!new) { + function {:extern} loc() : Loc + function {:extern} get() : pcm.M + } +} +abstract module PCMExt(Base: PCM) refines PCM { + type B = Base.M + type F = M +} +module PCMExtMethods(Base: PCM, Ext: PCMExt(Base)) { + type B = Base.M + type F = Ext.M + import BaseTokens = Tokens(Base) + import ExtTokens = Tokens(Ext) +} From 1e1c85820c1049b079baada3805ffd63d4af85af Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 10 Jun 2021 17:41:03 -0400 Subject: [PATCH 502/573] Try disabling translation of virtual modules --- Source/Dafny/Translator.cs | 6 +++--- Test/modules/SimpleGood.dfy | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 26d3494bfc0..58bfa20a36d 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -825,9 +825,9 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { // De-duplicate functor instantiations //virtual_mods = virtual_mods.Distinct(new VirtualModuleComparer()).ToList(); - mods.AddRange(virtual_mods); + //mods.AddRange(virtual_mods); mods.Remove(forModule); - +/* if (forModule is Functor) { // Remove all instantiations of this functor, to avoid generating duplicates in the Boogie code mods.RemoveAll(def => def.CompileName == forModule.CompileName); @@ -836,7 +836,7 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { // Remove all functors, since we should only be referring to their instantiations at this point mods.RemoveAll(def => def is Functor); } - +*/ mods.Insert(0, forModule); HashSet translatedDecls = new HashSet(); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 1dfd385fcf0..5c34e33f8c6 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -25,7 +25,7 @@ abstract module Apply { OutputBase.Test(a); } } - +/* // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -181,3 +181,4 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } +*/ From 06384fb9127f6b9c63823429e459e653515daf02 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 11 Jun 2021 11:57:31 -0400 Subject: [PATCH 503/573] Increase visibilityScopes The following tests succeed but verify a lot more: Compile.dfy (13 vs 1) Resolve2.dfy (27 vs 2) parser.dfy (61 vs 3) SimpleGood (99 vs 9) PCM2 Still failing: FunctorParty StateMachineRefinement PCM1 --- Source/Dafny/Resolver.cs | 6 +++--- Source/Dafny/Translator.cs | 4 +++- Test/modules/SimpleGood.dfy | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 28e4328461c..d64fe73942c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2669,7 +2669,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // Cloner doesn't propagate the compile signature, so we do so ourselves CloneCompileSignatures(literalRoot.ModuleDef, newDef); // Should have the same scope, not a clone, as cloning allocates new tokens - //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; if (functorApp.functor.Formals.Count != functorApp.moduleParams.Count) { var msg = @@ -2954,10 +2954,10 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur sig.VisibilityScope.Augment(decl.AccessibleSignature().VisibilityScope); } } - /*if (sig.Refines != null) { + if (sig.Refines != null) { moduleInfo.VisibilityScope.Augment(sig.Refines.VisibilityScope); sig.VisibilityScope.Augment(sig.Refines.VisibilityScope); - }*/ + } var typeRedirectionDependencies = new Graph(); // this concerns the type directions, not their constraints (which are checked for cyclic dependencies later) foreach (TopLevelDecl d in ModuleDefinition.AllDeclarationsAndNonNullTypeDecls(declarations)) { diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 58bfa20a36d..619bb1f3c0f 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -134,7 +134,9 @@ private void EstablishModuleScope(ModuleDefinition systemModule, ModuleDefinitio foreach (var decl in m.TopLevelDecls) { if (decl is ModuleDecl && !(decl is ModuleExportDecl)) { var mdecl = (ModuleDecl)decl; - currentScope.Augment(mdecl.AccessibleSignature().VisibilityScope); + var scope = mdecl.AccessibleSignature().VisibilityScope; + currentScope.Augment(scope); + verificationScope.Augment(scope); } } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 5c34e33f8c6..b02cbdfef5c 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -25,7 +25,7 @@ abstract module Apply { OutputBase.Test(a); } } -/* + // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -181,4 +181,4 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } -*/ + From 845ecf446451e1e8dbcd9bbb7cb258025173f8be Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Jun 2021 12:57:10 -0400 Subject: [PATCH 504/573] Try filtering _System out of scopes, so that we don't try to verify _System members. We still have failing files: modules/FunctorParty.s.dfy modules/Resolve2.dfy modules/StateMachineRefinement.dfy modules/parser.dfy Two (parser and Resolve2) are due to mismatches in the number verified. That's because they keep reverifying things like NativeTypes.byte. --- Source/Dafny/DafnyAst.cs | 8 ++++++++ Source/Dafny/Resolver.cs | 8 +++++++- Source/Dafny/Translator.cs | 6 +++++- Test/modules/SimpleGood.dfy | 2 -- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 30974e6116e..fae1e5d2513 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -728,6 +728,14 @@ public void Augment(VisibilityScope other) { } } + public void Remove(VisibilityScope other) { + if (other != null) { + scopeTokens.ExceptWith(other.scopeTokens); + scopeIds.ExceptWith(other.scopeIds); + cached.Clear(); + } + } + public VisibilityScope(string name) { scopeTokens.Add(maxScopeID); scopeIds.Add(name); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index d64fe73942c..bce328a36aa 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2696,7 +2696,13 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl formalActualPairs[formal.Name.val] = actual; formalActualIdPairs[formal.Name.val] = functorApp.moduleParamNames[i]; allArgumentsConcrete &= !actual.Signature.IsAbstract; - +/* + // Augument our visibility with actual's refinement chain + // REVIEW: Need to recurse all the way along the chain? + if (actual.Signature.Refines != null) { + newDef.VisibilityScope.Augment(actual.Signature.Refines.VisibilityScope); + } +*/ if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 619bb1f3c0f..bdc05e9cfd8 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -136,7 +136,11 @@ private void EstablishModuleScope(ModuleDefinition systemModule, ModuleDefinitio var mdecl = (ModuleDecl)decl; var scope = mdecl.AccessibleSignature().VisibilityScope; currentScope.Augment(scope); - verificationScope.Augment(scope); + // Remove system scope before augmenting verificationScope, or else we'll try to re-verify System code + var vScope = new VisibilityScope(); + vScope.Augment(scope); + vScope.Remove(systemModule.VisibilityScope); + verificationScope.Augment(vScope); } } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index b02cbdfef5c..cd0185162ae 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -38,7 +38,6 @@ abstract module Apply2 { } } - // Try passing a refinement to a functor abstract module B refines ABase { method BTest() @@ -181,4 +180,3 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } - From f5f7199a0435c14fd1c58cbeff79acaa7cd39ea9 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Jun 2021 15:16:51 -0400 Subject: [PATCH 505/573] Revert "Try filtering _System out of scopes, so that we don't try to verify" This reverts commit 845ecf446451e1e8dbcd9bbb7cb258025173f8be. --- Source/Dafny/DafnyAst.cs | 8 -------- Source/Dafny/Resolver.cs | 8 +------- Source/Dafny/Translator.cs | 6 +----- Test/modules/SimpleGood.dfy | 2 ++ 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index fae1e5d2513..30974e6116e 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -728,14 +728,6 @@ public void Augment(VisibilityScope other) { } } - public void Remove(VisibilityScope other) { - if (other != null) { - scopeTokens.ExceptWith(other.scopeTokens); - scopeIds.ExceptWith(other.scopeIds); - cached.Clear(); - } - } - public VisibilityScope(string name) { scopeTokens.Add(maxScopeID); scopeIds.Add(name); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index bce328a36aa..d64fe73942c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2696,13 +2696,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl formalActualPairs[formal.Name.val] = actual; formalActualIdPairs[formal.Name.val] = functorApp.moduleParamNames[i]; allArgumentsConcrete &= !actual.Signature.IsAbstract; -/* - // Augument our visibility with actual's refinement chain - // REVIEW: Need to recurse all the way along the chain? - if (actual.Signature.Refines != null) { - newDef.VisibilityScope.Augment(actual.Signature.Refines.VisibilityScope); - } -*/ + if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index bdc05e9cfd8..619bb1f3c0f 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -136,11 +136,7 @@ private void EstablishModuleScope(ModuleDefinition systemModule, ModuleDefinitio var mdecl = (ModuleDecl)decl; var scope = mdecl.AccessibleSignature().VisibilityScope; currentScope.Augment(scope); - // Remove system scope before augmenting verificationScope, or else we'll try to re-verify System code - var vScope = new VisibilityScope(); - vScope.Augment(scope); - vScope.Remove(systemModule.VisibilityScope); - verificationScope.Augment(vScope); + verificationScope.Augment(scope); } } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index cd0185162ae..b02cbdfef5c 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -38,6 +38,7 @@ abstract module Apply2 { } } + // Try passing a refinement to a functor abstract module B refines ABase { method BTest() @@ -180,3 +181,4 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } + From cb0c91cf7bdacf4e860068506fdc64470b0fe5f5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Jun 2021 15:17:01 -0400 Subject: [PATCH 506/573] Revert "Increase visibilityScopes" This reverts commit 06384fb9127f6b9c63823429e459e653515daf02. --- Source/Dafny/Resolver.cs | 6 +++--- Source/Dafny/Translator.cs | 4 +--- Test/modules/SimpleGood.dfy | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index d64fe73942c..28e4328461c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2669,7 +2669,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // Cloner doesn't propagate the compile signature, so we do so ourselves CloneCompileSignatures(literalRoot.ModuleDef, newDef); // Should have the same scope, not a clone, as cloning allocates new tokens - newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; if (functorApp.functor.Formals.Count != functorApp.moduleParams.Count) { var msg = @@ -2954,10 +2954,10 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur sig.VisibilityScope.Augment(decl.AccessibleSignature().VisibilityScope); } } - if (sig.Refines != null) { + /*if (sig.Refines != null) { moduleInfo.VisibilityScope.Augment(sig.Refines.VisibilityScope); sig.VisibilityScope.Augment(sig.Refines.VisibilityScope); - } + }*/ var typeRedirectionDependencies = new Graph(); // this concerns the type directions, not their constraints (which are checked for cyclic dependencies later) foreach (TopLevelDecl d in ModuleDefinition.AllDeclarationsAndNonNullTypeDecls(declarations)) { diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 619bb1f3c0f..58bfa20a36d 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -134,9 +134,7 @@ private void EstablishModuleScope(ModuleDefinition systemModule, ModuleDefinitio foreach (var decl in m.TopLevelDecls) { if (decl is ModuleDecl && !(decl is ModuleExportDecl)) { var mdecl = (ModuleDecl)decl; - var scope = mdecl.AccessibleSignature().VisibilityScope; - currentScope.Augment(scope); - verificationScope.Augment(scope); + currentScope.Augment(mdecl.AccessibleSignature().VisibilityScope); } } diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index b02cbdfef5c..5c34e33f8c6 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -25,7 +25,7 @@ abstract module Apply { OutputBase.Test(a); } } - +/* // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -181,4 +181,4 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } - +*/ From 1396b29c8c2acc1f32f4a3e46a060043745d8a78 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Jun 2021 15:17:26 -0400 Subject: [PATCH 507/573] Revert "Try disabling translation of virtual modules" This reverts commit 1e1c85820c1049b079baada3805ffd63d4af85af. --- Source/Dafny/Translator.cs | 6 +++--- Test/modules/SimpleGood.dfy | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 58bfa20a36d..26d3494bfc0 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -825,9 +825,9 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { // De-duplicate functor instantiations //virtual_mods = virtual_mods.Distinct(new VirtualModuleComparer()).ToList(); - //mods.AddRange(virtual_mods); + mods.AddRange(virtual_mods); mods.Remove(forModule); -/* + if (forModule is Functor) { // Remove all instantiations of this functor, to avoid generating duplicates in the Boogie code mods.RemoveAll(def => def.CompileName == forModule.CompileName); @@ -836,7 +836,7 @@ private Bpl.Program DoTranslation(Program p, ModuleDefinition forModule) { // Remove all functors, since we should only be referring to their instantiations at this point mods.RemoveAll(def => def is Functor); } -*/ + mods.Insert(0, forModule); HashSet translatedDecls = new HashSet(); diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 5c34e33f8c6..1dfd385fcf0 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -25,7 +25,7 @@ abstract module Apply { OutputBase.Test(a); } } -/* + // Make sure functors behave applicatively abstract module Apply2 { import Output0 = P(ABase) @@ -181,4 +181,3 @@ module PconcreteRefiner refines AConsumer(AIntAgain, Pconcrete(AIntAgain)) { var x:int := y; } } -*/ From 221f65bd86ca67f67abee7974bc96701c695b1d4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 15 Jun 2021 15:17:42 -0400 Subject: [PATCH 508/573] Try alternate formulation of PCM1. That works. PCM2 still has issues. --- Test/modules/PCM1.dfy | 12 ++++++------ Test/modules/PCM2.dfy | 7 +++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Test/modules/PCM1.dfy b/Test/modules/PCM1.dfy index 23de1e029a9..97fb48767dc 100644 --- a/Test/modules/PCM1.dfy +++ b/Test/modules/PCM1.dfy @@ -9,10 +9,10 @@ abstract module PCM { } module Tokens(pcm: PCM) { import opened GhostLoc - type {:extern} Token(!new) { - function {:extern} loc() : Loc - function {:extern} get() : pcm.M - } + type {:extern} Token(!new) + + function {:extern} loc(t:Token) : Loc + function {:extern} get(t:Token) : pcm.M } abstract module PCMExt(Base: PCM) refines PCM { type B = Base.M @@ -27,6 +27,6 @@ module PCMExtMethods(Base: PCM, Ext: PCMExt(Base)) { linear b: BaseTokens.Token, ghost f': F) : (linear f_out: ExtTokens.Token) - ensures f_out.loc().ExtLoc? && f_out.loc().base_loc == b.loc() - ensures f_out.get() == f' + ensures ExtTokens.loc(f_out).ExtLoc? && ExtTokens.loc(f_out).base_loc == BaseTokens.loc(b) + ensures ExtTokens.get(f_out) == f' } diff --git a/Test/modules/PCM2.dfy b/Test/modules/PCM2.dfy index 373d601cb52..6c10a643bf7 100644 --- a/Test/modules/PCM2.dfy +++ b/Test/modules/PCM2.dfy @@ -13,10 +13,9 @@ abstract module PCM { } module Tokens(pcm: PCM) { import opened GhostLoc - type {:extern} Token(!new) { - function {:extern} loc() : Loc - function {:extern} get() : pcm.M - } + type {:extern} Token(!new) + function {:extern} loc(t:Token) : Loc + function {:extern} get(t:Token) : pcm.M } abstract module PCMExt(Base: PCM) refines PCM { type B = Base.M From 99648c3ebb55cbb3b868ce70e03aa75ec9666679 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 16 Jun 2021 11:08:01 -0400 Subject: [PATCH 509/573] Simplify PCM2 some more --- Test/modules/PCM2.dfy | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/Test/modules/PCM2.dfy b/Test/modules/PCM2.dfy index 6c10a643bf7..3a27d163a75 100644 --- a/Test/modules/PCM2.dfy +++ b/Test/modules/PCM2.dfy @@ -1,29 +1,11 @@ -module GhostLoc { - datatype Loc = - | BaseLoc(ghost t: nat) - | ExtLoc(ghost s: nat, ghost base_loc: Loc) -} abstract module PCM { - import opened GhostLoc type M(!new) - predicate transition(a: M, b: M) least predicate reachable(a: M, b: M) { - a == b || (exists z :: reachable(a, z) && transition(z, b)) + a == b || (exists z :: reachable(a, z)) } } -module Tokens(pcm: PCM) { - import opened GhostLoc - type {:extern} Token(!new) - function {:extern} loc(t:Token) : Loc - function {:extern} get(t:Token) : pcm.M -} abstract module PCMExt(Base: PCM) refines PCM { - type B = Base.M - type F = M } module PCMExtMethods(Base: PCM, Ext: PCMExt(Base)) { type B = Base.M - type F = Ext.M - import BaseTokens = Tokens(Base) - import ExtTokens = Tokens(Ext) } From a81391b9f1b6bb871fafbf1b08781d81f104adb1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 17 Jun 2021 22:57:12 -0400 Subject: [PATCH 510/573] Clone more resolution info and have the later portions of resolution apply to virtual module defintiions too. With this change, PCM2.dfy passes. --- Source/Dafny/Cloner.cs | 5 ++++- Source/Dafny/Resolver.cs | 47 ++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index fcd3a7abeab..ec733748f5b 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -784,7 +784,10 @@ public virtual Function CloneFunction(Function f, string newName = null) { } else if (f is TwoStateFunction) { return new TwoStateFunction(Tok(f.tok), newName, f.HasStaticKeyword, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); - } else { + } else if (f is PrefixPredicate p) { + return new PrefixPredicate(Tok(f.tok), newName, f.HasStaticKeyword, tps, CloneFormal(p.K), formals, req, reads, ens, decreases, + body, CloneAttributes(f.Attributes), p.ExtremePred); + }else { return new Function(Tok(f.tok), newName, f.HasStaticKeyword, f.Usage, tps, formals, f.Result == null ? null : CloneFormal(f.Result), CloneType(f.ResultType), req, reads, ens, decreases, body, CloneAttributes(f.Attributes), null); } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 28e4328461c..f7490999d03 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -592,8 +592,10 @@ public void ResolveProgram(Program prog) { return; } + IEnumerable virtualDefs = virtualModules.Values.Select((decl, index) => decl.ModuleDef); + // compute IsRecursive bit for mutually recursive functions and methods - foreach (var module in prog.Modules()) { + foreach (var module in prog.Modules().Concat(virtualDefs)) { foreach (var clbl in ModuleDefinition.AllCallables(module.TopLevelDecls)) { if (clbl is Function) { var fn = (Function)clbl; @@ -631,7 +633,7 @@ public void ResolveProgram(Program prog) { // fill in default decreases clauses: for functions and methods, and for loops FillInDefaultDecreasesClauses(prog); - foreach (var module in prog.Modules()) { + foreach (var module in prog.Modules().Concat(virtualDefs)) { foreach (var clbl in ModuleDefinition.AllItersAndCallables(module.TopLevelDecls)) { Statement body = null; if (clbl is Method) { @@ -653,14 +655,14 @@ public void ResolveProgram(Program prog) { } } - foreach (var module in prog.Modules()) { + foreach (var module in prog.Modules().Concat(virtualDefs)) { foreach (var r in rewriters) { r.PostDecreasesResolve(module); } } // fill in other additional information - foreach (var module in prog.Modules()) { + foreach (var module in prog.Modules().Concat(virtualDefs)) { foreach (var clbl in ModuleDefinition.AllItersAndCallables(module.TopLevelDecls)) { Statement body = null; if (clbl is ExtremeLemma) { @@ -679,7 +681,7 @@ public void ResolveProgram(Program prog) { } // Determine, for each function, whether someone tries to adjust its fuel parameter - foreach (var module in prog.Modules()) { + foreach (var module in prog.Modules().Concat(virtualDefs)) { CheckForFuelAdjustments(module.tok, module.Attributes, module); foreach (var clbl in ModuleDefinition.AllItersAndCallables(module.TopLevelDecls)) { Statement body = null; @@ -2577,6 +2579,34 @@ private void CloneCompileSignatures(ModuleDefinition src, ModuleDefinition dst) } } + private void CloneRecursionInfo(Cloner cloner, ModuleDefinition src, ModuleDefinition dst) { + foreach (var pair in System.Linq.Enumerable.Zip(src.TopLevelDecls, dst.TopLevelDecls)) { + var srcDecl = pair.Item1; + var dstDecl = pair.Item2; + if (srcDecl is TopLevelDeclWithMembers srcClass && dstDecl is TopLevelDeclWithMembers dstClass) { + foreach (var memberPair in System.Linq.Enumerable.Zip(srcClass.Members, dstClass.Members)) { + MemberDecl srcMember = memberPair.First; + MemberDecl dstMember = memberPair.Second; + + if (srcMember is Function srcFunc && dstMember is Function dstFunc) { + dstFunc.IsRecursive = srcFunc.IsRecursive; + dstFunc.IsFueled = srcFunc.IsFueled; + + if (srcFunc is ExtremePredicate srcPred && dstFunc is ExtremePredicate dstPred && srcPred.PrefixPredicate != null) { + dstPred.PrefixPredicate = (PrefixPredicate) cloner.CloneFunction(srcPred.PrefixPredicate); + dstPred.PrefixPredicate.IsRecursive = srcPred.PrefixPredicate.IsRecursive; + dstPred.PrefixPredicate.IsFueled = srcPred.PrefixPredicate.IsFueled; + dstPred.Uses.AddRange(srcPred.Uses); + } + } else if (srcMember is Method srcMethod && dstMember is Method dstMethod) { + dstMethod.IsRecursive = srcMethod.IsRecursive; + dstMethod.IsTailRecursive = srcMethod.IsTailRecursive; + } + } + } + } + } + private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModuleDecl literalRoot, Dictionary formalActualPairs, Dictionary formalActualIdPairs, out FunctorApplication newFunctorApp) { @@ -2668,6 +2698,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, literalRoot.Name, preserveFunctors:false); // Cloner doesn't propagate the compile signature, so we do so ourselves CloneCompileSignatures(literalRoot.ModuleDef, newDef); + CloneRecursionInfo(cloner, literalRoot.ModuleDef, newDef); // Should have the same scope, not a clone, as cloning allocates new tokens //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; @@ -2774,8 +2805,10 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // TODO: Need this? // sig.Refines = refinementTransformer.RefinedSig; - // TODO: Need this? - // prog.ModuleSigs[m] = sig; + // TODO: Need this? Tried it an it creates a: + // System.ArgumentException: An item with the same key has already been added. Key: PCMExt + // in Dafny.DafnyDriver.ProcessFiles + //this.Prog.ModuleSigs[newDef] = sig; // REVIEW: Should isAnExport be true? var errCount = reporter.Count(ErrorLevel.Error); From 3945644e844c8de617826c014d10d24dc1226799 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 17 Jun 2021 23:01:38 -0400 Subject: [PATCH 511/573] Add PCM files to lit --- Test/modules/PCM1.dfy | 3 +++ Test/modules/PCM2.dfy | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Test/modules/PCM1.dfy b/Test/modules/PCM1.dfy index 97fb48767dc..9b38ef1dd8d 100644 --- a/Test/modules/PCM1.dfy +++ b/Test/modules/PCM1.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + module GhostLoc { datatype Loc = | BaseLoc(ghost t: nat) diff --git a/Test/modules/PCM2.dfy b/Test/modules/PCM2.dfy index 3a27d163a75..a7ab22a36d5 100644 --- a/Test/modules/PCM2.dfy +++ b/Test/modules/PCM2.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module PCM { type M(!new) least predicate reachable(a: M, b: M) { From 839d95b05462b2265c6d2ac2c164763fa728548e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 18 Jun 2021 14:57:54 -0400 Subject: [PATCH 512/573] Give Functor outputs unique names. This doesn't seem to break existing tests, causes the new PCM3 test to go through, and allows the original formulation of PCM1 --- Source/Dafny/DafnyAst.cs | 8 ++++++++ Source/Dafny/Resolver.cs | 6 +++++- Test/modules/PCM1.dfy | 12 ++++++------ Test/modules/PCM1.dfy.expect | 2 ++ Test/modules/PCM2.dfy.expect | 2 ++ Test/modules/PCM3.dfy | 32 ++++++++++++++++++++++++++++++++ Test/modules/PCM3.dfy.expect | 2 ++ Test/modules/SimpleGood.dfy | 1 - 8 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 Test/modules/PCM1.dfy.expect create mode 100644 Test/modules/PCM2.dfy.expect create mode 100644 Test/modules/PCM3.dfy create mode 100644 Test/modules/PCM3.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 30974e6116e..5a175d2733c 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4048,6 +4048,14 @@ public override string ToString() { return result; } + public string ToUniqueName(uint uniqueId) { + string result = tok.val + "_" + uniqueId; + if (moduleParamNames.Count > 0) { + result += "#" + Util.Comma("_", moduleParamNames, exp => exp.ToString()) + "#"; + } + return result; + } + public override bool Equals(object obj) { if (obj is FunctorApplication fa) { if (functor.Equals(fa.functor)) { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index f7490999d03..750cea733a8 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2683,6 +2683,8 @@ private void UpdateRefinment(FunctorApplication refFunctorApplication, List "%t" +// RUN: %diff "%s.expect" "%t" + +module GhostLoc { + datatype Loc = + | BaseLoc(ghost t: nat) + | ExtLoc(ghost s: nat, ghost base_loc: Loc) +} +abstract module PCM { + import opened GhostLoc + type M(!new) +} +module Tokens(pcm: PCM) { + import opened GhostLoc + datatype Token = Token(loc: Loc, val: pcm.M) +} +abstract module PCMExt(Base: PCM) refines PCM { + type B = Base.M + type F = M +} +module PCMExtMethods(Base: PCM, Ext: PCMExt(Base)) { + type B = Base.M + type F = Ext.M + import BaseTokens = Tokens(Base) + import ExtTokens = Tokens(Ext) + function method {:extern} ext_init( + linear b: BaseTokens.Token, + ghost f': F) + : (linear f_out: ExtTokens.Token) + ensures f_out.loc.ExtLoc? && f_out.loc.base_loc == b.loc + ensures f_out.val == f' +} diff --git a/Test/modules/PCM3.dfy.expect b/Test/modules/PCM3.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/modules/PCM3.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors diff --git a/Test/modules/SimpleGood.dfy b/Test/modules/SimpleGood.dfy index 1dfd385fcf0..cd0185162ae 100644 --- a/Test/modules/SimpleGood.dfy +++ b/Test/modules/SimpleGood.dfy @@ -38,7 +38,6 @@ abstract module Apply2 { } } - // Try passing a refinement to a functor abstract module B refines ABase { method BTest() From 34af35f5664db456c364996dc3519717cceaaed8 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 15 Jul 2021 21:50:26 -0400 Subject: [PATCH 513/573] Bug report #33 from Travis --- Test/modules/git-issue-33.dfy | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Test/modules/git-issue-33.dfy diff --git a/Test/modules/git-issue-33.dfy b/Test/modules/git-issue-33.dfy new file mode 100644 index 00000000000..843ad0b524f --- /dev/null +++ b/Test/modules/git-issue-33.dfy @@ -0,0 +1,53 @@ +abstract module PCM { +} + +abstract module BasicPCM refines PCM { +} + +module Tokens(pcm: PCM) { + datatype Token = Token(loc: nat, val: nat) + + function method get_unit(loc: nat) : Token +} + +abstract module PCMExt(base: PCM) refines PCM { +} + +abstract module PCMWrap refines PCM { + function singleton_loc(): nat +} + +module PCMWrapTokens(pcm: PCMWrap) { + import T = Tokens(pcm) +} + +module ExtTokens(base: PCM, ext: PCMExt(base)) { + import ExtTokens = Tokens(ext) + import BaseTokens = Tokens(base) + + function ext_init(b: BaseTokens.Token) : (f_out: ExtTokens.Token) +} + +abstract module RW { +} + +module RW_PCMWrap(rw: RW) refines PCMWrap { +} + +module RW_PCMExt(rw: RW) refines PCMExt(RW_PCMWrap(rw)) { +} + +module RWTokens(rw: RW) { + import Wrap = RW_PCMWrap(rw) + import MyBaseTokens = Tokens(RW_PCMWrap(rw)) + + import T = Tokens(RW_PCMExt(rw)) + import ET = ExtTokens(Wrap, RW_PCMExt(rw)) + + method init() + returns (t: T.Token) + { + ghost var base_loc := Wrap.singleton_loc(); + t := ET.ext_init(MyBaseTokens.get_unit(base_loc)); + } +} From c68c26a241f21b6947108628e88f3aa10e97414a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 15 Jul 2021 21:54:26 -0400 Subject: [PATCH 514/573] Small simplifications --- Test/modules/git-issue-33.dfy | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Test/modules/git-issue-33.dfy b/Test/modules/git-issue-33.dfy index 843ad0b524f..aa5ddce3b4a 100644 --- a/Test/modules/git-issue-33.dfy +++ b/Test/modules/git-issue-33.dfy @@ -5,16 +5,15 @@ abstract module BasicPCM refines PCM { } module Tokens(pcm: PCM) { - datatype Token = Token(loc: nat, val: nat) + datatype Token = Token() - function method get_unit(loc: nat) : Token + function method get_unit() : Token } abstract module PCMExt(base: PCM) refines PCM { } abstract module PCMWrap refines PCM { - function singleton_loc(): nat } module PCMWrapTokens(pcm: PCMWrap) { @@ -44,10 +43,8 @@ module RWTokens(rw: RW) { import T = Tokens(RW_PCMExt(rw)) import ET = ExtTokens(Wrap, RW_PCMExt(rw)) - method init() - returns (t: T.Token) - { - ghost var base_loc := Wrap.singleton_loc(); - t := ET.ext_init(MyBaseTokens.get_unit(base_loc)); + method init() returns (t: T.Token) { + ghost var r := ET.ext_init(MyBaseTokens.get_unit()); + //t := r; } } From a87c33ea0137b5f4d27ec0adc72979b3fa413bf3 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 16 Jul 2021 14:55:14 -0400 Subject: [PATCH 515/573] Create a custom hasher and equality tester for FunctorApplication for use with the virtualModules dictionary. In particular, we ensure that any arguments that are themselves Functors are applied, and we follow AliasModuleDecl pointers to their actual targets before hashing or checking for equality. Closes #33 --- Source/Dafny/DafnyAst.cs | 21 ----------- Source/Dafny/Resolver.cs | 71 ++++++++++++++++++++++++++++++++++- Test/modules/git-issue-33.dfy | 8 ++-- 3 files changed, 73 insertions(+), 27 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 5a175d2733c..76a06d40baa 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4055,27 +4055,6 @@ public string ToUniqueName(uint uniqueId) { } return result; } - - public override bool Equals(object obj) { - if (obj is FunctorApplication fa) { - if (functor.Equals(fa.functor)) { - return moduleParams.SequenceEqual(fa.moduleParams); - } else { - return false; - } - } else { - return false; - } - } - - public override int GetHashCode() { - var hash = new HashCode(); - hash.Add(functor.GetHashCode()); - foreach (var param in moduleParams) { - hash.Add(param.GetHashCode()); - } - return hash.ToHashCode(); - } } public class ModuleQualifiedId { diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 750cea733a8..5349d47d79a 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -23,8 +23,7 @@ public class Resolver { ModuleSignature moduleInfo = null; private bool resolvingFunctor = false; - public static Dictionary virtualModules = - new Dictionary(); + public static Dictionary virtualModules = null; private bool RevealedInScope(Declaration d) { Contract.Requires(d != null); @@ -245,6 +244,8 @@ enum ValuetypeVariety { public Resolver(Program prog) { Contract.Requires(prog != null); + Resolver.virtualModules = new Dictionary(new FunctorAppComparer(this)); + builtIns = prog.BuiltIns; reporter = prog.reporter; @@ -2683,6 +2684,72 @@ private void UpdateRefinment(FunctorApplication refFunctorApplication, List + { + private Resolver resolver; + + public FunctorAppComparer(Resolver resolver) { + this.resolver = resolver; + } + + private List normalizeModuleParams(FunctorApplication functorApp) { + List ret = new List(); + + for (int i = 0; i < functorApp.moduleParams.Count; i++) { + ModuleDecl param = functorApp.moduleParams[i]; + FunctorApplication actualFunctor = functorApp.moduleParamNames[i].FunctorApp; + + if (actualFunctor != null) { + // We want the result of the application, not the unevaluated form + param = resolver.ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root); + } + + if (param is LiteralModuleDecl) { + ret.Add(param); + } else if (param is AliasModuleDecl amd) { + var target = param; + while (target is AliasModuleDecl target_amd) { + // We want to hash what the alias it points to, not the alias itself + target = resolver.ResolveModuleQualifiedId(target_amd.TargetQId.Root, target_amd.TargetQId, resolver.reporter); + /* + if (target_amd.TargetQId.Decl != null) { + target = target_amd.TargetQId.Decl; + } else if (target_amd.TargetQId.FunctorApp != null) { + target = resolver.ApplyFunctor(target_amd.TargetQId.FunctorApp, (LiteralModuleDecl) target_amd.TargetQId.Root); + } else { + throw new Exception("Module param " + target_amd + " is an alias but TargetQId doesn't contain anything useful, see: " + target_amd.TargetQId); + } + */ + } + ret.Add(target); + } else { + throw new Exception("Wasn't expecting other types of ModuleDecls here in normalizeModuleParams. Got " + param); + } + } + return ret; + } + + public override int GetHashCode(FunctorApplication functorApp) { + var hash = new HashCode(); + hash.Add(functorApp.functor.GetHashCode()); + var normalizedParams = normalizeModuleParams(functorApp); + foreach (var param in normalizedParams) { + hash.Add(param.GetHashCode()); + } + return hash.ToHashCode(); + } + + public override bool Equals(FunctorApplication f1, FunctorApplication f2) { + if (f1.functor.Equals(f2.functor)) { + var normalizedParams1 = normalizeModuleParams(f1); + var normalizedParams2 = normalizeModuleParams(f2); + return normalizedParams1.SequenceEqual(normalizedParams2); + } else { + return false; + } + } + } + private uint FunctorNameCtr = 0; private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { diff --git a/Test/modules/git-issue-33.dfy b/Test/modules/git-issue-33.dfy index aa5ddce3b4a..816de4371f5 100644 --- a/Test/modules/git-issue-33.dfy +++ b/Test/modules/git-issue-33.dfy @@ -22,9 +22,9 @@ module PCMWrapTokens(pcm: PCMWrap) { module ExtTokens(base: PCM, ext: PCMExt(base)) { import ExtTokens = Tokens(ext) - import BaseTokens = Tokens(base) + import BaseTokens = Tokens(base) // = Tokens(Wrap) == Tokens(RW_PCMWrap(rw)) - function ext_init(b: BaseTokens.Token) : (f_out: ExtTokens.Token) + function method ext_init(b: BaseTokens.Token) : (f_out: ExtTokens.Token) } abstract module RW { @@ -44,7 +44,7 @@ module RWTokens(rw: RW) { import ET = ExtTokens(Wrap, RW_PCMExt(rw)) method init() returns (t: T.Token) { - ghost var r := ET.ext_init(MyBaseTokens.get_unit()); - //t := r; + var r := ET.ext_init(MyBaseTokens.get_unit()); + t := r; } } From 6f1d4db3c563bb54b859f69c5e08be4e1c68bc4f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Fri, 16 Jul 2021 17:18:41 -0400 Subject: [PATCH 516/573] Fixes SimpleGood, but FunctorParty still fails --- Source/Dafny/Resolver.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5349d47d79a..82969f80bb8 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2896,7 +2896,9 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl Resolver.virtualModules[functorApp] = newDecl; return newDecl; } else { - return Resolver.virtualModules[functorApp]; + var mod = Resolver.virtualModules[functorApp]; + mod.Signature.Origin = functorApp; // equal FunctorApplications may use different names for the same argument + return mod; } } From c1e72cab8b1a24f0d7cd7f540f5a4ab7194990a4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 20 Jul 2021 17:32:59 -0400 Subject: [PATCH 517/573] Refactor the .Origin field from Signature to LiteralModuleDecl. This allows us to associate origins with the environment that has the relevant definitions for names in the origin's functor app. All unit tests now pass. --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 68 +++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 76a06d40baa..e4802feb498 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -3833,6 +3833,7 @@ public class LiteralModuleDecl : ModuleDecl { public readonly ModuleDefinition ModuleDef; public ModuleSignature DefaultExport; // the default export set of the module. fill in by the resolver. + public FunctorApplication Origin; // Non-null if this decl came from the output of a functor private ModuleSignature emptySignature; public override ModuleSignature AccessibleSignature(bool ignoreExports) { @@ -3995,7 +3996,6 @@ public override string ToString() { public class ModuleSignature { public VisibilityScope VisibilityScope = null; - public FunctorApplication Origin; // Non-null if this signature came from a module that is the output of a functor public readonly Dictionary TopLevels = new Dictionary(); public readonly Dictionary ExportSets = new Dictionary(); public readonly Dictionary> Ctors = new Dictionary>(); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 82969f80bb8..431c75cc2d2 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2510,10 +2510,10 @@ private bool EqualsOrRefinesFunctorApps(FunctorApplication actualFunc, FunctorAp // Check if the functors are compatible and their arguments are compatible if (actualFunc.functor == formalFunc.functor) { foreach (var pair in System.Linq.Enumerable.Zip(actualFunc.moduleParams, formalFunc.moduleParams)) { - var actualArg = pair.Item1; - var formalArg = pair.Item2; + LiteralModuleDecl actualArg = normalizeDecl(pair.Item1); + LiteralModuleDecl formalArg = normalizeDecl(pair.Item2); - if (!EqualsOrRefines(actualArg.Signature, formalArg.Signature)) { + if (!EqualsOrRefines(actualArg, formalArg)) { return false; } } @@ -2525,13 +2525,14 @@ private bool EqualsOrRefinesFunctorApps(FunctorApplication actualFunc, FunctorAp } } - private bool EqualsOrRefines(ModuleSignature actual, ModuleSignature formal) { + private bool EqualsOrRefines(LiteralModuleDecl actual, LiteralModuleDecl formal) { // Two easy cases first if (actual == null) { return false; } - if (actual.ModuleDef == formal.ModuleDef) { return true; } + if (actual == formal) { return true; } // Check for refinement-based match - bool eq = EqualsOrRefines(actual.Refines, formal); + var actual_parent = actual.ModuleDef.RefinementQId?.Decl; + bool eq = EqualsOrRefines((LiteralModuleDecl)actual_parent, formal); if (eq) { return true; } if (actual.Origin != null && formal.Origin != null) { @@ -2554,7 +2555,7 @@ private ModuleDefinition GetDefFromDecl(ModuleDecl decl) { } return null; } - +/* private ModuleSignature GetSigFromDecl(ModuleDecl decl) { if (decl is LiteralModuleDecl lmd) { return lmd.Signature; @@ -2567,7 +2568,7 @@ private ModuleSignature GetSigFromDecl(ModuleDecl decl) { } return null; } - +*/ private void CloneCompileSignatures(ModuleDefinition src, ModuleDefinition dst) { foreach (var pair in System.Linq.Enumerable.Zip(src.TopLevelDecls, dst.TopLevelDecls)) { var srcDecl = pair.Item1; @@ -2684,6 +2685,21 @@ private void UpdateRefinment(FunctorApplication refFunctorApplication, List { private Resolver resolver; @@ -2704,27 +2720,7 @@ private List normalizeModuleParams(FunctorApplication functorApp) { param = resolver.ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root); } - if (param is LiteralModuleDecl) { - ret.Add(param); - } else if (param is AliasModuleDecl amd) { - var target = param; - while (target is AliasModuleDecl target_amd) { - // We want to hash what the alias it points to, not the alias itself - target = resolver.ResolveModuleQualifiedId(target_amd.TargetQId.Root, target_amd.TargetQId, resolver.reporter); - /* - if (target_amd.TargetQId.Decl != null) { - target = target_amd.TargetQId.Decl; - } else if (target_amd.TargetQId.FunctorApp != null) { - target = resolver.ApplyFunctor(target_amd.TargetQId.FunctorApp, (LiteralModuleDecl) target_amd.TargetQId.Root); - } else { - throw new Exception("Module param " + target_amd + " is an alias but TargetQId doesn't contain anything useful, see: " + target_amd.TargetQId); - } - */ - } - ret.Add(target); - } else { - throw new Exception("Wasn't expecting other types of ModuleDecls here in normalizeModuleParams. Got " + param); - } + ret.Add(resolver.normalizeDecl(param)); } return ret; } @@ -2803,9 +2799,10 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); } - var formalSig = GetSigFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); + var formalDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); + var actualLiteral = normalizeDecl(actual); // Move through any intervening aliases - if (!EqualsOrRefines(actual.Signature, formalSig)) { + if (!EqualsOrRefines(actualLiteral, (LiteralModuleDecl) formalDecl)) { var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; @@ -2854,14 +2851,13 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } // 4) - if (literalRoot.Signature.Refines != null && literalRoot.Signature.Refines.Origin != null) { + if (literalRoot.ModuleDef.RefinementQId != null && literalRoot.ModuleDef.RefinementQId.FunctorApp != null) { // We refined a functor application, so we need to check whether any of that functor's arguments need to be updated - UpdateRefinment(literalRoot.Signature.Refines.Origin, newDef.TopLevelDecls, formalActualPairs, formalActualIdPairs); + UpdateRefinment(literalRoot.ModuleDef.RefinementQId.FunctorApp, newDef.TopLevelDecls, formalActualPairs, formalActualIdPairs); } // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); - sig.Origin = functorApp; CreateCompileModule(newDef, sig); // Update the abstractness of the new module @@ -2889,15 +2885,15 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl newDef.SuccessfullyResolved = true; } - // 4) Combine everything into a ModuleDecl we can return + // Combine everything into a ModuleDecl we can return LiteralModuleDecl newDecl = new LiteralModuleDecl(newDef, literalRoot.EnclosingModuleDefinition); + newDecl.Origin = functorApp; newDecl.Signature = sig; newDecl.DefaultExport = sig; Resolver.virtualModules[functorApp] = newDecl; return newDecl; } else { var mod = Resolver.virtualModules[functorApp]; - mod.Signature.Origin = functorApp; // equal FunctorApplications may use different names for the same argument return mod; } } From 316a48df54d001172fb9968dd310a61509662a29 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Jul 2021 09:09:16 -0400 Subject: [PATCH 518/573] Add git issue 33 to lit --- Test/modules/git-issue-33.dfy | 3 +++ Test/modules/git-issue-33.dfy.expect | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 Test/modules/git-issue-33.dfy.expect diff --git a/Test/modules/git-issue-33.dfy b/Test/modules/git-issue-33.dfy index 816de4371f5..628003009fc 100644 --- a/Test/modules/git-issue-33.dfy +++ b/Test/modules/git-issue-33.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module PCM { } diff --git a/Test/modules/git-issue-33.dfy.expect b/Test/modules/git-issue-33.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-33.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 302a91c0422a73eb81c38eb359f3f6c6f99f3963 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Jul 2021 09:53:14 -0400 Subject: [PATCH 519/573] Add an extra check for module parameters that are actually functors missing their arguments. Closes #31. --- Source/Dafny/Resolver.cs | 6 ++++++ Test/modules/git-issue-31.dfy | 13 +++++++++++++ Test/modules/git-issue-31.dfy.expect | 2 ++ 3 files changed, 21 insertions(+) create mode 100644 Test/modules/git-issue-31.dfy create mode 100644 Test/modules/git-issue-31.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 431c75cc2d2..3b0b8b7409f 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2802,6 +2802,12 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl var formalDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); var actualLiteral = normalizeDecl(actual); // Move through any intervening aliases + if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { + var msg = $"Module {actualLiteral.Name} expects {af.Formals.Count} arguments but didn't receive any!"; + reporter.Error(MessageSource.Resolver, functorApp.moduleParamNames[i].rootToken(), msg); + return null; + } + if (!EqualsOrRefines(actualLiteral, (LiteralModuleDecl) formalDecl)) { var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); diff --git a/Test/modules/git-issue-31.dfy b/Test/modules/git-issue-31.dfy new file mode 100644 index 00000000000..c3fbf076a0f --- /dev/null +++ b/Test/modules/git-issue-31.dfy @@ -0,0 +1,13 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module SSM { } +abstract module PCM { } + +module Tokens(pcm: PCM) { } + +module SSM_PCM(ssm: SSM) refines PCM { } + +module SSMTokens(ssm: SSM) { + import Tokens = Tokens(SSM_PCM) // ERROR: SSM_PCM requires an argument +} diff --git a/Test/modules/git-issue-31.dfy.expect b/Test/modules/git-issue-31.dfy.expect new file mode 100644 index 00000000000..28375648e8e --- /dev/null +++ b/Test/modules/git-issue-31.dfy.expect @@ -0,0 +1,2 @@ +git-issue-31.dfy(12,25): Error: Module SSM_PCM expects 1 arguments but didn't receive any! +1 resolution/type errors detected in git-issue-31.dfy From bd8f3e7bf8aa84c5925c44bcf1b91282047baea6 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Jul 2021 10:05:29 -0400 Subject: [PATCH 520/573] Partial fix for the problem identified in Git issue #34. Full solution would recursively explore a full alias chain. --- Source/Dafny/DafnyAst.cs | 6 ++++- Test/modules/git-issue-34.dfy | 33 ++++++++++++++++++++++++++++ Test/modules/git-issue-34.dfy.expect | 2 ++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 Test/modules/git-issue-34.dfy create mode 100644 Test/modules/git-issue-34.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index e4802feb498..ecc22ae6175 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4126,7 +4126,11 @@ public void Set(ModuleDecl m) { this.Sig = null; } else { this.Decl = m; - this.Def = ((LiteralModuleDecl)m).ModuleDef; + if (m is LiteralModuleDecl lmd) { + this.Def = lmd.ModuleDef; + } else { + this.Def = ((LiteralModuleDecl) (((AliasModuleDecl) m).TargetQId.Root)).ModuleDef; + } this.Sig = m.Signature; } } diff --git a/Test/modules/git-issue-34.dfy b/Test/modules/git-issue-34.dfy new file mode 100644 index 00000000000..f47e4ff5d56 --- /dev/null +++ b/Test/modules/git-issue-34.dfy @@ -0,0 +1,33 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module InputOutputIfc { +} + +module AsyncIfc(Ifc: InputOutputIfc) refines Ifc { +} + +// +// Original Repro +// +// abstract module Ifc { +// type Op +// } +// +// abstract module StateMachine(Ifc: Ifc) { +// type Variables +// predicate Init(s: Variables) +// predicate Next(s: Variables, s': Variables, op: Ifc.Op) +// } +// +// // Async state machines +// +// abstract module InputOutputIfc refines Ifc { +// type Input +// type Output +// +// datatype Op = Op(input: Input, output: Output) +// } +// +// module AsyncIfc(Ifc: InputOutputIfc) refines Ifc { +// } diff --git a/Test/modules/git-issue-34.dfy.expect b/Test/modules/git-issue-34.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-34.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From ecacfab750def6f7f55073948a69f6e170c83b3e Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Jul 2021 12:16:48 -0400 Subject: [PATCH 521/573] When calling ApplyFunctor, always attempt to update any aliases that involve functors, and when updating a functor, check whether the arguments are themselves functors and update them as well. Closes #35 --- Source/Dafny/Resolver.cs | 12 +++++++- Test/modules/git-issue-35.dfy | 42 ++++++++++++++++++++++++++++ Test/modules/git-issue-35.dfy.expect | 2 ++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 Test/modules/git-issue-35.dfy create mode 100644 Test/modules/git-issue-35.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 3b0b8b7409f..2038614c71c 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2625,6 +2625,14 @@ private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModule moduleParams.Add(formalActualPairs[actualName]); moduleParamNames.Add(formalActualIdPairs[actualName]); } else { + if (oldActualName.FunctorApp != null) { + // The actual is itself a FunctorApp, so we may need to update it as well + FunctorApplication newActualApp; + oldActual = UpdateFunctorApp(oldActualName.FunctorApp, (LiteralModuleDecl)oldActualName.Root, formalActualPairs, formalActualIdPairs, + out newActualApp); + oldActualName = new ModuleQualifiedId(newActualApp, oldActualName.Path); + } + moduleParams.Add(oldActual); moduleParamNames.Add(oldActualName); } @@ -2836,6 +2844,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } if (decl is AliasModuleDecl amd) { if (amd.TargetQId.FunctorApp != null) { + /* // Do we need to update this functor? var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); bool update = false; @@ -2848,10 +2857,11 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } if (update) { + */ FunctorApplication newFunctorApp; // Not currently used amd.Signature = UpdateFunctorApp(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root, formalActualPairs, formalActualIdPairs, out newFunctorApp).Signature; - } + //} } } } diff --git a/Test/modules/git-issue-35.dfy b/Test/modules/git-issue-35.dfy new file mode 100644 index 00000000000..339cc11d128 --- /dev/null +++ b/Test/modules/git-issue-35.dfy @@ -0,0 +1,42 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module PCM { + type M +} + +module Tokens(pcm: PCM) { + datatype Token = Token(loc: nat, val: pcm.M) +} + +abstract module PCMExt(base: PCM) refines PCM { +} + +abstract module PCMWrap refines PCM { +} + +abstract module RW { + type M +} + +module RW_PCMWrap(rw: RW) refines PCMWrap { +} + +module RW_PCMExt(rw: RW) refines PCMExt(RW_PCMWrap(rw)) { + type M = rw.M +} + +module RWTokens(rw: RW) { + import T1 = Tokens(RW_PCMExt(rw)) + + method init(x: rw.M) + returns (t: T1.Token) + ensures t.val == x // type error is on this line +} + +module Y refines RW { +} + +module X { + import T2 = RWTokens(Y) // but type error only occurs if this import exists +} diff --git a/Test/modules/git-issue-35.dfy.expect b/Test/modules/git-issue-35.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-35.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 821326f4202ad7b072d3bb45cd1458bff12f9a9d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 27 Jul 2021 12:20:05 -0400 Subject: [PATCH 522/573] Remove some tests we decided not to support --- Test/modules/Resolve.dfy | 34 ---------------------------------- Test/modules/Resolve3.dfy | 35 ----------------------------------- 2 files changed, 69 deletions(-) delete mode 100644 Test/modules/Resolve.dfy delete mode 100644 Test/modules/Resolve3.dfy diff --git a/Test/modules/Resolve.dfy b/Test/modules/Resolve.dfy deleted file mode 100644 index 70d6950c63f..00000000000 --- a/Test/modules/Resolve.dfy +++ /dev/null @@ -1,34 +0,0 @@ - -abstract module A { - datatype T = T -} - -//module B refines A { -//} - -abstract module C(a: A) { -} - -abstract module D(a_d: A) refines C(a_d) { -} - -abstract module E(c: C) { // Invalid: C is a naked Functor. Can't allow this and disallow MissingParameter in ModuleApplication.dfy -} - -abstract module F(e: E) { // Invalid: E is a naked Functor. Can't allow this and disallow MissingParameter in ModuleApplication.dfy -} - -abstract module G(a_g: A) refines E(C(a_g)) { -} - -abstract module H(a_h: A) refines F(G(a_h)) { - import X = a_h - //import Y = e.c.a // Invalid?: e is an argument to F, which has already been applied - import Z = G(a_h).a_g - import W = G(a_h).a - - lemma types_eq(x: X.T, /* y: Y.T, */ z: Z.T, w: W.T) - requires x == y == z == w - { - } -} diff --git a/Test/modules/Resolve3.dfy b/Test/modules/Resolve3.dfy deleted file mode 100644 index 7f68d97e23e..00000000000 --- a/Test/modules/Resolve3.dfy +++ /dev/null @@ -1,35 +0,0 @@ -abstract module L { -} - -abstract module U(l: L) { -} - -abstract module A(u: U(L)) { -// Another option for declaring A: -//abstract module A(l:L, u: U(l)) { - import E = u.l -} - -abstract module W(x: L) refines U(x) { -} - -abstract module B(r: L) { - import D = W(r) -} - -abstract module C refines L { - function the_int() : int { 5 } -} - -abstract module Stuff { - - // B(C).D = W(C), which refines U(C) - // Is U(C) <= U(L)? - import Tmp = B(C).D // When we resolve this, we've applied B to C, and hence W to C (to get D) - // so it's not obvious that it should refine U(C) - import X = A(Tmp).E // This should resolve to C - //import X = A(B(C).D).E // This should resolve to C - - lemma stuff() - ensures X.the_int() == 5 -} From ba60b45e40826c73e015491023a0417a1d18e3eb Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 28 Jul 2021 08:54:54 -0400 Subject: [PATCH 523/573] Remove another unused test --- Test/modules/refine.dfy | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 Test/modules/refine.dfy diff --git a/Test/modules/refine.dfy b/Test/modules/refine.dfy deleted file mode 100644 index 7bd0b502562..00000000000 --- a/Test/modules/refine.dfy +++ /dev/null @@ -1,34 +0,0 @@ -abstract module NativePackedInt { - type Integer -} - -module NativePackedUint32 refines NativePackedInt { - type Integer = int -} - -// Marshalling -abstract module Marshalling { - type UnmarshalledType -} - -// Integer marshalling -abstract module IntegerMarshalling(Int: NativePackedInt) refines Marshalling { - type UnmarshalledType = Int.Integer -} - -// Sequence marshalling -abstract module SeqMarshalling(ElementMarshalling: Marshalling) refines Marshalling { - type Element = ElementMarshalling.UnmarshalledType - type UnmarshalledType = Element -} - -abstract module Uniform(elementMarshalling: Marshalling) - refines SeqMarshalling(elementMarshalling) { - predicate parse_prefix(x:elementMarshalling.UnmarshalledType, y: UnmarshalledType) - requires x == y -} - -abstract module IntegerSeqMarshalling(Int: NativePackedInt) { - import B = Uniform(IntegerMarshalling(Int)) -} - From 8cda8ad240e4c18141574a65b27e57ab8bf9a4a7 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 29 Jul 2021 22:19:16 -0400 Subject: [PATCH 524/573] Bug with abstract --- Test/modules/git-issue-36.dfy | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Test/modules/git-issue-36.dfy diff --git a/Test/modules/git-issue-36.dfy b/Test/modules/git-issue-36.dfy new file mode 100644 index 00000000000..63836a8751d --- /dev/null +++ b/Test/modules/git-issue-36.dfy @@ -0,0 +1,17 @@ +abstract module Rw { } + +module RwTokens(rw: Rw) { } + +abstract module StoredTypeModule { } + +module RwLock(stm: StoredTypeModule) refines Rw { } + +module RwLockTokens(stm: StoredTypeModule) { + import rwlock = RwLock(stm) + import T = RwTokens(RwLock(stm)) +} + +module RwLockImpl(stm: StoredTypeModule) { + import RwLock = RwLock(stm) + import RwLockTokens = RwLockTokens(stm) +} From dff789c454c814f933e453bee07b4a57907d9a44 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 29 Jul 2021 22:33:16 -0400 Subject: [PATCH 525/573] Add another condition where we won't worry about abstract modules. Closes #36 --- Source/Dafny/Resolver.cs | 2 +- Test/modules/git-issue-36.dfy | 3 +++ Test/modules/git-issue-36.dfy.expect | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 Test/modules/git-issue-36.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 2038614c71c..12c3f2c0d23 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -3105,7 +3105,7 @@ public void ResolveTopLevelDecls_Signatures(ModuleDefinition def, ModuleSignatur ResolveIteratorSignature((IteratorDecl)d); } else if (d is ModuleDecl) { var decl = (ModuleDecl)d; - if (!def.IsAbstract && decl is AliasModuleDecl am && decl.Signature.IsAbstract && !(def is Functor)) { + if (!def.IsAbstract && decl is AliasModuleDecl am && decl.Signature.IsAbstract && !(def is Functor) && am.TargetQId.FunctorApp == null) { reporter.Error(MessageSource.Resolver, am.TargetQId.rootToken(), "a compiled module ({0}) is not allowed to import an abstract module ({1})", def.Name, am.TargetQId.ToString()); } } else if (d is DatatypeDecl) { diff --git a/Test/modules/git-issue-36.dfy b/Test/modules/git-issue-36.dfy index 63836a8751d..4b0737335a3 100644 --- a/Test/modules/git-issue-36.dfy +++ b/Test/modules/git-issue-36.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module Rw { } module RwTokens(rw: Rw) { } diff --git a/Test/modules/git-issue-36.dfy.expect b/Test/modules/git-issue-36.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-36.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From a6f319551c884212be324e4b8ed5a69c5d943a51 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 12:04:23 -0400 Subject: [PATCH 526/573] New issues. --- Test/modules/compilation-1.dfy | 49 ++++++++++++++++++++++++++++++++++ Test/modules/git-issue-37.dfy | 23 ++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 Test/modules/compilation-1.dfy create mode 100644 Test/modules/git-issue-37.dfy diff --git a/Test/modules/compilation-1.dfy b/Test/modules/compilation-1.dfy new file mode 100644 index 00000000000..aa9cac7b8ae --- /dev/null +++ b/Test/modules/compilation-1.dfy @@ -0,0 +1,49 @@ +abstract module TotalOrder { + type V + predicate le(a: V, b: V) + lemma le_self(a: V) + ensures le(a, a) + lemma le_transitive(a: V, b: V, c: V) + ensures le(a, b) && le(b, c) ==> le(a, c) +} +abstract module TotalOrderImpl(to: TotalOrder) { + method compute_le(x: to.V, y: to.V) + returns (b: bool) + ensures b == to.le(x, y) +} +module IntTotalOrder refines TotalOrder { + type V = int + predicate le(a: V, b: V) { a <= b } + lemma le_self(a: V) { } + lemma le_transitive(a: V, b: V, c: V) { } +} +module IntTotalOrderImpl refines TotalOrderImpl(IntTotalOrder) { + method compute_le(x: to.V, y: to.V) + returns (b: bool) + ensures b == to.le(x, y) + { + b := x <= y; + } +} +module TotalOrderUtils(to: TotalOrder, toi: TotalOrderImpl(to)) { + method get_max(x: to.V, y: to.V) + returns (z: to.V) + { + var b := toi.compute_le(x, y); + if b { + return y; + } else { + return x; + } + } +} +import ITOI = IntTotalOrderImpl +import IntTOU = TotalOrderUtils(IntTotalOrder, IntTotalOrderImpl) +method Main() { + var x := 5; + var y := 7; + var b := ITOI.compute_le(x, y); + print b, "\n"; + var z := IntTOU.get_max(x, y); + print z, "\n"; +} diff --git a/Test/modules/git-issue-37.dfy b/Test/modules/git-issue-37.dfy new file mode 100644 index 00000000000..159f014b9f0 --- /dev/null +++ b/Test/modules/git-issue-37.dfy @@ -0,0 +1,23 @@ +abstract module Rw { } + +module RwTokens(rw: Rw) { + datatype Token = Tok +} + +abstract module StoredTypeModule { } + +module RwLock(stm: StoredTypeModule) refines Rw { } + +module RwLockTokens(stm: StoredTypeModule) { + import rwlock = RwLock(stm) + import T1 = RwTokens(RwLock(stm)) + + type Token = T1.Token +} + +module RwLockImpl(stm: StoredTypeModule) { + import rwlock = RwLock(stm) + import T2 = RwLockTokens(stm) + + type Token = T2.Token +} From 7359dcaacf1b2c2280a2f9474bb9967808918706 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 12:05:33 -0400 Subject: [PATCH 527/573] Rename --- Test/modules/{compilation-1.dfy => Compile2.dfy} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Test/modules/{compilation-1.dfy => Compile2.dfy} (100%) diff --git a/Test/modules/compilation-1.dfy b/Test/modules/Compile2.dfy similarity index 100% rename from Test/modules/compilation-1.dfy rename to Test/modules/Compile2.dfy From 3748f6c60957fa1d2a8daa6af23b617be67f879f Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 12:16:52 -0400 Subject: [PATCH 528/573] Fix complaints about use of int --- Test/modules/Compile2.dfy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Test/modules/Compile2.dfy b/Test/modules/Compile2.dfy index aa9cac7b8ae..83004b2112b 100644 --- a/Test/modules/Compile2.dfy +++ b/Test/modules/Compile2.dfy @@ -1,3 +1,4 @@ + abstract module TotalOrder { type V predicate le(a: V, b: V) @@ -12,7 +13,8 @@ abstract module TotalOrderImpl(to: TotalOrder) { ensures b == to.le(x, y) } module IntTotalOrder refines TotalOrder { - type V = int + newtype uint32 = i:int | 0 <= i < 0x100000000 + type V = uint32 predicate le(a: V, b: V) { a <= b } lemma le_self(a: V) { } lemma le_transitive(a: V, b: V, c: V) { } From 183116ca7b8147f9d096b46f971d7526c5ab24a4 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 14:53:20 -0400 Subject: [PATCH 529/573] With some bug fixes, our first compilation test succeeds. --- Source/Dafny/Compiler.cs | 4 ++++ Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 6 ++++-- Test/modules/Compile2.dfy | 2 ++ Test/modules/Makefile | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 Test/modules/Makefile diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 131fc198c88..44c29151d3d 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -1120,6 +1120,10 @@ public void Compile(Program program, TargetWriter wrx) { // the purpose of an abstract module is to skip compilation continue; } + if (m is Functor) { + // We will only compile the results of functor application, not the functors themselves + continue; + } if (!m.IsToBeCompiled) { continue; } diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index ecc22ae6175..8cc3fd26711 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4051,7 +4051,7 @@ public override string ToString() { public string ToUniqueName(uint uniqueId) { string result = tok.val + "_" + uniqueId; if (moduleParamNames.Count > 0) { - result += "#" + Util.Comma("_", moduleParamNames, exp => exp.ToString()) + "#"; + result += "_ON_" + Util.Comma("_", moduleParamNames, exp => exp.ToString()) + "_"; } return result; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 12c3f2c0d23..ff36727ac41 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -20,6 +20,7 @@ public class Resolver { readonly BuiltIns builtIns; ErrorReporter reporter; + Program prog = null; ModuleSignature moduleInfo = null; private bool resolvingFunctor = false; @@ -417,6 +418,7 @@ public void CreateCompileModule(ModuleDefinition m, ModuleSignature sig, Program public void ResolveProgram(Program prog) { Contract.Requires(prog != null); + this.prog = prog; Type.ResetScopes(); Type.EnableScopes(); @@ -2767,7 +2769,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 5) Compute the signature for our newly created module // 1) - ScopeCloner cloner = new ScopeCloner(literalRoot.Signature.VisibilityScope); + Cloner cloner = new DeepModuleSignatureCloner(); // literalRoot.Name + FunctorNameCtr ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, functorApp.ToUniqueName(FunctorNameCtr), preserveFunctors:false); FunctorNameCtr += 1; @@ -2874,7 +2876,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 5) ModuleSignature sig = RegisterTopLevelDecls(newDef, useImports: true); - CreateCompileModule(newDef, sig); + CreateCompileModule(newDef, sig, this.prog); // Update the abstractness of the new module if (!literalRoot.Signature.IsAbstract && allArgumentsConcrete) { diff --git a/Test/modules/Compile2.dfy b/Test/modules/Compile2.dfy index 83004b2112b..7fc797423e7 100644 --- a/Test/modules/Compile2.dfy +++ b/Test/modules/Compile2.dfy @@ -1,3 +1,5 @@ +// RUN: %dafny /compile:4 /compileTarget:cpp /spillTargetCode:3 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" abstract module TotalOrder { type V diff --git a/Test/modules/Makefile b/Test/modules/Makefile new file mode 100644 index 00000000000..84de30fc4c4 --- /dev/null +++ b/Test/modules/Makefile @@ -0,0 +1,37 @@ + +DAFNYS=$(wildcard *.dfy) +CPPS=$(subst .dfy,.cpp,$(DAFNYS)) +DOT_H_S=$(subst .dfy,.h,$(DAFNYS)) +EXECS=$(subst .dfy,,$(DAFNYS)) +DAFNY_DIR=../.. +DAFNY=$(DAFNY_DIR)/Scripts/dafny +DAFNY_RUNTIME_DIR=$(DAFNY_DIR)/Binaries +DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h +DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) +TEST_LOG=tests.log + +CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) + +.SECONDARY: $(CPPS) + +all:$(EXECS) + +vars: + echo $(DAFNYS) + echo $(CPPS) + echo $(EXECS) + +%.cpp: %.dfy $(DAFNY) $(DAFNY_DEPS) + $(DAFNY) /timeLimit:10 /compile:0 /spillTargetCode:3 /compileTarget:cpp $< + +%.cs: %.dfy $(DAFNY) $(DAFNY_DEPS) + $(DAFNY) /noVerify /compile:0 /spillTargetCode:3 /compileTarget:cs $< + +$(EXECS): % : %.cpp $(DAFNY_RUNTIME_CPP) + $(CXX) $(CXXFLAGS) -o $@ $< + +test: $(EXECS) + python run_cpp_tests.py $(EXECS) + +clean: + rm -f *.cpp *cs $(DOT_H_S) $(EXECS) $(TEST_LOG) From 2fb97ad1a31cb63282d0d5f9401be1240b605983 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 17:24:22 -0400 Subject: [PATCH 530/573] Try to treat functor arguments as concrete too --- Source/Dafny/Resolver.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index ff36727ac41..63c79ceaf72 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2803,7 +2803,6 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl formalActualPairs[formal.Name.val] = actual; formalActualIdPairs[formal.Name.val] = functorApp.moduleParamNames[i]; - allArgumentsConcrete &= !actual.Signature.IsAbstract; if (formal.TypeDef == null) { formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); @@ -2812,6 +2811,20 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl var formalDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); var actualLiteral = normalizeDecl(actual); // Move through any intervening aliases + // Check if the actual corresponds to a functor argument. If so, we treat it as concrete, since it will + // have to eventually be concretized + bool isFunctorArg = false; + if (actual.EnclosingModuleDefinition is Functor enclosingFunctor) { + foreach (var arg in enclosingFunctor.Formals) { + if (arg.TypeName.Root == actualLiteral) { + // Found a match + isFunctorArg = true; + break; + } + } + } + allArgumentsConcrete &= (!actual.Signature.IsAbstract || isFunctorArg); + if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { var msg = $"Module {actualLiteral.Name} expects {af.Formals.Count} arguments but didn't receive any!"; reporter.Error(MessageSource.Resolver, functorApp.moduleParamNames[i].rootToken(), msg); From b951f6fb2621890884730bee04b371d5b0ab17cd Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Wed, 4 Aug 2021 20:51:48 -0400 Subject: [PATCH 531/573] Test case from git issue #37 --- Test/modules/git-issue-37.dfy | 3 +++ Test/modules/git-issue-37.dfy.expect | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 Test/modules/git-issue-37.dfy.expect diff --git a/Test/modules/git-issue-37.dfy b/Test/modules/git-issue-37.dfy index 159f014b9f0..5a48f2fb096 100644 --- a/Test/modules/git-issue-37.dfy +++ b/Test/modules/git-issue-37.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module Rw { } module RwTokens(rw: Rw) { diff --git a/Test/modules/git-issue-37.dfy.expect b/Test/modules/git-issue-37.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-37.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 349e0e74620664c5c54f15cd85660e63e2a52793 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 5 Aug 2021 22:13:48 -0400 Subject: [PATCH 532/573] Add a missing .expect file --- Test/modules/Compile2.dfy.expect | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Test/modules/Compile2.dfy.expect diff --git a/Test/modules/Compile2.dfy.expect b/Test/modules/Compile2.dfy.expect new file mode 100644 index 00000000000..689e2c9b72a --- /dev/null +++ b/Test/modules/Compile2.dfy.expect @@ -0,0 +1,4 @@ + +Dafny program verifier finished with 6 verified, 0 errors +1 +7 From 809efccec2d221bbea9c1b1e0c99b2061732b039 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 5 Aug 2021 22:15:21 -0400 Subject: [PATCH 533/573] Revamp handling of module formal and actuals. We now explicitly keep track of whether an actual argument in a functor application corresponds to a formal argument of the enclosing functor, and we also track which aliases are fake via a new Formal member. As a result, we can move away from the janky use of name strings for matching formals and actuals. --- Source/Dafny/Cloner.cs | 4 +- Source/Dafny/DafnyAst.cs | 92 ++++++++++++++++++++++- Source/Dafny/Resolver.cs | 157 ++++++++++++++++++++------------------- 3 files changed, 171 insertions(+), 82 deletions(-) diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs index ec733748f5b..2908d67511f 100644 --- a/Source/Dafny/Cloner.cs +++ b/Source/Dafny/Cloner.cs @@ -115,7 +115,9 @@ public virtual TopLevelDecl CloneDeclaration(TopLevelDecl d, ModuleDefinition m) return new LiteralModuleDecl(((LiteralModuleDecl)d).ModuleDef, m); } else if (d is AliasModuleDecl) { var a = (AliasModuleDecl)d; - return new AliasModuleDecl(a.TargetQId?.Clone(false), a.tok, m, a.Opened, a.Exports); + var new_a = new AliasModuleDecl(a.TargetQId?.Clone(false), a.tok, m, a.Opened, a.Exports); + new_a.Formal = a.Formal; + return new_a; } else if (d is AbstractModuleDecl) { var a = (AbstractModuleDecl)d; return new AbstractModuleDecl(a.QId?.Clone(false), a.tok, m, a.Opened, a.Exports); diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 8cc3fd26711..473ab47a968 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -3864,6 +3864,7 @@ public class AliasModuleDecl : ModuleDecl public readonly ModuleQualifiedId TargetQId; // generated by the parser, this is looked up public readonly List Exports; // list of exports sets public bool ShadowsLiteralModule; // initialized early during Resolution (and used not long after that); true for "import opened A = A" where "A" is a literal module in the same scope + public ModuleFormal Formal; // Non-null if this is a fake alias representing a functor's formal argument public AliasModuleDecl(ModuleQualifiedId path, IToken name, ModuleDefinition parent, bool opened, List exports) : base(name, name.val, parent, opened, false) { @@ -4021,12 +4022,83 @@ public bool FindImport(string name, out ModuleDecl decl) { } } + // An actual argument passed to a functor + public abstract class ModuleActual { + public abstract override bool Equals(Object obj); + + public abstract override int GetHashCode(); + } + + // The actual is a module declaration + public class ModuleActualDecl : ModuleActual { + public ModuleDecl decl; + + public ModuleActualDecl(ModuleDecl decl) { + this.decl = decl; + } + + public override bool Equals(Object obj) { + if (obj == null || ! (obj is ModuleActualDecl)) + return false; + else + return decl == ((ModuleActualDecl) obj).decl; + } + + public override int GetHashCode() { + return decl.GetHashCode(); + } + + public static bool operator ==(ModuleActualDecl lhs, ModuleActualDecl rhs) { + if (lhs is null) { + if (rhs is null) { + return true; + } + return false; + } + return lhs.Equals(rhs); + } + + public static bool operator !=(ModuleActualDecl lhs, ModuleActualDecl rhs) => !(lhs == rhs); + } + + // The actual is a formal argument to the enclosing functor + public class ModuleActualFormal : ModuleActual { + public ModuleFormal formal; + + public ModuleActualFormal(ModuleFormal formal) { + this.formal = formal; + } + + public override bool Equals(Object obj) { + if (obj == null || ! (obj is ModuleActualFormal)) + return false; + else + return formal == ((ModuleActualFormal) obj).formal; + } + + public override int GetHashCode() { + return formal.GetHashCode(); + } + + public static bool operator ==(ModuleActualFormal lhs, ModuleActualFormal rhs) { + if (lhs is null) { + if (rhs is null) { + return true; + } + return false; + } + return lhs.Equals(rhs); + } + + public static bool operator !=(ModuleActualFormal lhs, ModuleActualFormal rhs) => !(lhs == rhs); + } + public class FunctorApplication { public readonly IToken tok; // Functor name public readonly List moduleParamNames; // Functor arg names (not yet resolved into actual module arguments) public Functor functor = null; // Actual functor being applied. Filled in during resolution - public List moduleParams; // Actual module arguments to the functor. Filled in during resolution + public List moduleParams; // Actual module arguments to the functor. Filled in during resolution public FunctorApplication(IToken tok, List moduleParamNames) { this.tok = tok; @@ -4455,14 +4527,28 @@ public class ModuleFormal public readonly IToken Name; public readonly ModuleQualifiedId TypeName; // The non-canonical (b/c it uses strings) name for this module "type" public Functor Parent; // Functor that declares this formal. Filled in during resolution - public ModuleDefinition TypeDef; // The actual module "type" of the formal. Filled in during resolution - //public ModuleDefinition ModDef = null; + public ModuleDecl TypeDecl; // The actual module "type" of the formal. Filled in during resolution public ModuleFormal(IToken name, ModuleQualifiedId type) { this.Name = name; this.TypeName = type; this.Parent = null; } + + public override bool Equals(Object obj) { + if (obj == null || !(obj is ModuleFormal)) { + return false; + } else { + var other = (ModuleFormal) obj; + return Name == other.Name && + TypeName == other.TypeName && + Parent == other.Parent; + } + } + + public override int GetHashCode() { + return Name.GetHashCode(); + } } public class Functor : ModuleDefinition diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 63c79ceaf72..8d135da834e 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -1607,7 +1607,7 @@ private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, } // Fill in the module params - qid.FunctorApp.moduleParams = new List(); + qid.FunctorApp.moduleParams = new List(); foreach (ModuleQualifiedId id in qid.FunctorApp.moduleParamNames) { ModuleDecl moduleParamDecl; res = ResolveQualifiedModuleIdRoot(dependencies, source, filter, bindings, id, out moduleParamDecl); @@ -1637,7 +1637,12 @@ private bool ResolveQualifiedModuleIdRootFunctor(Graph dependencies, decl = dd; } */ - qid.FunctorApp.moduleParams.Add(decl); + if (decl is AliasModuleDecl amd && amd.Formal != null) { + qid.FunctorApp.moduleParams.Add(new ModuleActualFormal(amd.Formal)); + } else { + qid.FunctorApp.moduleParams.Add(new ModuleActualDecl(decl)); + } + // We take responsibility for adding edges to arguments dependencies.AddEdge(source, moduleParamDecl); } else { @@ -1720,6 +1725,7 @@ private void ProcessDependenciesDefinition(ModuleDecl decl, ModuleDefinition m, // REVIEW: What should the "exports" list (final argument) be? AliasModuleDecl formalDecl = new AliasModuleDecl(formal.TypeName, formal.Name, f, opened: false, new List()); + formalDecl.Formal = formal; f.TopLevelDecls.Add(formalDecl); // Extend the bindings to include formal parameters @@ -2512,8 +2518,8 @@ private bool EqualsOrRefinesFunctorApps(FunctorApplication actualFunc, FunctorAp // Check if the functors are compatible and their arguments are compatible if (actualFunc.functor == formalFunc.functor) { foreach (var pair in System.Linq.Enumerable.Zip(actualFunc.moduleParams, formalFunc.moduleParams)) { - LiteralModuleDecl actualArg = normalizeDecl(pair.Item1); - LiteralModuleDecl formalArg = normalizeDecl(pair.Item2); + LiteralModuleDecl actualArg = normalizeDecl(GetDeclFromModuleActual(pair.Item1)); + LiteralModuleDecl formalArg = normalizeDecl(GetDeclFromModuleActual(pair.Item2)); if (!EqualsOrRefines(actualArg, formalArg)) { return false; @@ -2612,26 +2618,27 @@ private void CloneRecursionInfo(Cloner cloner, ModuleDefinition src, ModuleDefin } private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModuleDecl literalRoot, - Dictionary formalActualPairs, Dictionary formalActualIdPairs, + Dictionary formalActualPairs, Dictionary formalActualIdPairs, out FunctorApplication newFunctorApp) { - List moduleParams = new List(); + List moduleParams = new List(); List moduleParamNames = new List(); // Compute a new set of actual parameters, taking into account the outer functor's actuals for (int i = 0; i < functorApp.moduleParamNames.Count; i++) { - string actualName = functorApp.moduleParamNames[i].ToString(); - ModuleDecl oldActual = functorApp.moduleParams[i]; + ModuleActual oldActual = functorApp.moduleParams[i]; ModuleQualifiedId oldActualName = functorApp.moduleParamNames[i]; - if (formalActualPairs.ContainsKey(actualName)) { - moduleParams.Add(formalActualPairs[actualName]); - moduleParamNames.Add(formalActualIdPairs[actualName]); + if (oldActual is ModuleActualFormal maf && formalActualPairs.ContainsKey(maf.formal)) { + // This actual is really a formal from the surrounding functor, + // so we need to use the updated value supplied by our caller + moduleParams.Add(formalActualPairs[maf.formal]); + moduleParamNames.Add(formalActualIdPairs[maf.formal]); } else { if (oldActualName.FunctorApp != null) { // The actual is itself a FunctorApp, so we may need to update it as well FunctorApplication newActualApp; - oldActual = UpdateFunctorApp(oldActualName.FunctorApp, (LiteralModuleDecl)oldActualName.Root, formalActualPairs, formalActualIdPairs, - out newActualApp); + oldActual = new ModuleActualDecl(UpdateFunctorApp(oldActualName.FunctorApp, (LiteralModuleDecl)oldActualName.Root, formalActualPairs, formalActualIdPairs, + out newActualApp)); oldActualName = new ModuleQualifiedId(newActualApp, oldActualName.Path); } @@ -2649,40 +2656,42 @@ private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModule return newImportDecl; } - // refiningSig: The signature that the current module refines + // refFunctorApplication: The FunctorApp that the current module refines // topLevelDecls: The decls in the functor that does the refining - // formalAcutalPairs: Map from formal names to the actual arguments + // formalAcutalPairs: Map from formal functor arguments to the actual arguments of the refining functor private void UpdateRefinment(FunctorApplication refFunctorApplication, List topLevelDecls, - Dictionary formalActualPairs, Dictionary formalActualIdPairs) { + Dictionary formalActualPairs, Dictionary formalActualIdPairs) { // Construct a map from this functor's formals to actuals, in case we need to recurse - Dictionary newMap = new Dictionary(); - Dictionary newIdMap = new Dictionary(); + Dictionary newMap = new Dictionary(); + Dictionary newIdMap = new Dictionary(); for (int i = 0; i < refFunctorApplication.functor.Formals.Count; i++) { ModuleFormal refFormal = refFunctorApplication.functor.Formals[i]; + ModuleActual refActual = refFunctorApplication.moduleParams[i]; ModuleQualifiedId refActualName = refFunctorApplication.moduleParamNames[i]; foreach (TopLevelDecl decl in topLevelDecls) { - if (decl is AliasModuleDecl amd && amd.Name == refFormal.Name.val) { + if (decl is AliasModuleDecl amd && amd.Formal == refFormal) { // This is a fake alias we inserted for the functor we're refining, // which was then merged into this new module's definition. Update it. - ModuleDecl actualDecl; + ModuleActual actual; ModuleQualifiedId actualId; - if (formalActualPairs.ContainsKey(refActualName.ToString())) { - actualDecl = formalActualPairs[refActualName.ToString()]; - actualId = formalActualIdPairs[refActualName.ToString()]; + if (refActual is ModuleActualFormal maf && formalActualPairs.ContainsKey(maf.formal)) { + // This actual is really a formal from the surrounding functor + actual = formalActualPairs[maf.formal]; + actualId = formalActualIdPairs[maf.formal]; } else { Contract.Assert(refActualName.FunctorApp != null); // The actual is a functor that needs to be recomputed FunctorApplication newFunctorApp; - actualDecl = UpdateFunctorApp(refActualName.FunctorApp, (LiteralModuleDecl) refActualName.Root, - formalActualPairs, formalActualIdPairs, out newFunctorApp); + actual = new ModuleActualDecl(UpdateFunctorApp(refActualName.FunctorApp, (LiteralModuleDecl) refActualName.Root, + formalActualPairs, formalActualIdPairs, out newFunctorApp)); actualId = new ModuleQualifiedId(newFunctorApp, refActualName.Path); } - amd.Signature = actualDecl.Signature; - newMap[refFormal.Name.val] = actualDecl; - newIdMap[refFormal.Name.val] = actualId; + amd.Signature = GetDeclFromModuleActual(actual).Signature; + newMap[refFormal] = actual; + newIdMap[refFormal] = actualId; } } } @@ -2718,19 +2727,19 @@ public FunctorAppComparer(Resolver resolver) { this.resolver = resolver; } - private List normalizeModuleParams(FunctorApplication functorApp) { - List ret = new List(); + private List normalizeModuleParams(FunctorApplication functorApp) { + List ret = new List(); for (int i = 0; i < functorApp.moduleParams.Count; i++) { - ModuleDecl param = functorApp.moduleParams[i]; + ModuleActual param = functorApp.moduleParams[i]; FunctorApplication actualFunctor = functorApp.moduleParamNames[i].FunctorApp; if (actualFunctor != null) { // We want the result of the application, not the unevaluated form - param = resolver.ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root); + param = new ModuleActualDecl(resolver.ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root)); } - ret.Add(resolver.normalizeDecl(param)); + ret.Add(new ModuleActualDecl(resolver.normalizeDecl(resolver.GetDeclFromModuleActual(param)))); } return ret; } @@ -2758,6 +2767,21 @@ public override bool Equals(FunctorApplication f1, FunctorApplication f2) { private uint FunctorNameCtr = 0; + public ModuleDecl GetDeclFromModuleFormal(ModuleFormal formal) { + if (formal.TypeDecl == null) { + formal.TypeDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); + } + return formal.TypeDecl; + } + + public ModuleDecl GetDeclFromModuleActual(ModuleActual actual) { + if (actual is ModuleActualDecl mad) { + return mad.decl; + } else { + return GetDeclFromModuleFormal(((ModuleActualFormal) actual).formal); + } + } + private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor @@ -2787,43 +2811,35 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } // 2) - Dictionary formalActualPairs = new Dictionary(); - Dictionary formalActualIdPairs = new Dictionary(); + Dictionary formalActualPairs = new Dictionary(); + Dictionary formalActualIdPairs = new Dictionary(); HashSet fakeAliasDecls = new HashSet(); bool allArgumentsConcrete = true; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; - ModuleDecl actual = functorApp.moduleParams[i]; + ModuleActual actual = functorApp.moduleParams[i]; FunctorApplication actualFunctor = functorApp.moduleParamNames[i].FunctorApp; if (actualFunctor != null) { // We want the result of the application, not the unevaluated form - actual = ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root); + actual = new ModuleActualDecl(ApplyFunctor(actualFunctor, (LiteralModuleDecl) functorApp.moduleParamNames[i].Root)); } - formalActualPairs[formal.Name.val] = actual; - formalActualIdPairs[formal.Name.val] = functorApp.moduleParamNames[i]; + // Initialize the formal's TypeDecl + GetDeclFromModuleFormal(formal); - if (formal.TypeDef == null) { - formal.TypeDef = GetDefFromDecl(ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter)); - } + formalActualPairs[formal] = actual; + formalActualIdPairs[formal] = functorApp.moduleParamNames[i]; - var formalDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); - var actualLiteral = normalizeDecl(actual); // Move through any intervening aliases + LiteralModuleDecl formalDecl = (LiteralModuleDecl) ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); - // Check if the actual corresponds to a functor argument. If so, we treat it as concrete, since it will + // If actual is a decl, we decide concreteness based on its signature + // If it's a functor argument, we always treat it as concrete, since it will // have to eventually be concretized - bool isFunctorArg = false; - if (actual.EnclosingModuleDefinition is Functor enclosingFunctor) { - foreach (var arg in enclosingFunctor.Formals) { - if (arg.TypeName.Root == actualLiteral) { - // Found a match - isFunctorArg = true; - break; - } - } - } - allArgumentsConcrete &= (!actual.Signature.IsAbstract || isFunctorArg); + bool isConcrete = (actual is ModuleActualDecl mad && !mad.decl.Signature.IsAbstract) || actual is ModuleActualFormal; + allArgumentsConcrete &= isConcrete; + + LiteralModuleDecl actualLiteral = normalizeDecl(GetDeclFromModuleActual(actual)); if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { var msg = $"Module {actualLiteral.Name} expects {af.Formals.Count} arguments but didn't receive any!"; @@ -2831,17 +2847,17 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl return null; } - if (!EqualsOrRefines(actualLiteral, (LiteralModuleDecl) formalDecl)) { - var msg = $"Module {literalRoot.Name} expects {formal.TypeDef.Name}, got {actual.Name}"; + if (!EqualsOrRefines(actualLiteral, formalDecl)) { + var msg = $"Module {literalRoot.Name} expects {formal.TypeDecl.Name}, got {GetDeclFromModuleActual(actual).Name}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; } // Find the artificial alias decl we created, and update it with the actual foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { - if (topLevelDecl is AliasModuleDecl amd && amd.Name == formal.Name.val) { + if (topLevelDecl is AliasModuleDecl amd && amd.Formal == formal) { fakeAliasDecls.Add(topLevelDecl); - amd.Signature = actual.Signature; + amd.Signature = GetDeclFromModuleActual(actual).Signature; amd.Signature.IsAbstract = false; // Functor formals are considered concrete, since they will always eventually be concretely instantiated // TODO: Need this? // amd.Signature.Refines = refinementTransformer.RefinedSig; @@ -2859,24 +2875,9 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } if (decl is AliasModuleDecl amd) { if (amd.TargetQId.FunctorApp != null) { - /* - // Do we need to update this functor? - var formalNames = functorApp.functor.Formals.ConvertAll(f => f.Name.val); - bool update = false; - foreach (ModuleQualifiedId actual in amd.TargetQId.FunctorApp.moduleParamNames) { - if (formalNames.Contains(actual.ToString())) { - // We need to reapply this functor - update = true; - break; - } - } - - if (update) { - */ - FunctorApplication newFunctorApp; // Not currently used - amd.Signature = UpdateFunctorApp(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root, - formalActualPairs, formalActualIdPairs, out newFunctorApp).Signature; - //} + FunctorApplication newFunctorApp; // Not currently used + amd.Signature = UpdateFunctorApp(amd.TargetQId.FunctorApp, (LiteralModuleDecl)amd.TargetQId.Root, + formalActualPairs, formalActualIdPairs, out newFunctorApp).Signature; } } } From 73b5dde8cc719418431537a743ef8732995d6310 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 15 Aug 2021 22:00:09 -0400 Subject: [PATCH 534/573] Example where more module info would be useful. --- Test/modules/git-issue-32.dfy | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Test/modules/git-issue-32.dfy diff --git a/Test/modules/git-issue-32.dfy b/Test/modules/git-issue-32.dfy new file mode 100644 index 00000000000..efb6fe3c128 --- /dev/null +++ b/Test/modules/git-issue-32.dfy @@ -0,0 +1,40 @@ +abstract module TotalOrder { + type V + + predicate le(a: V, b: V) + + lemma le_self(a: V) + ensures le(a, a) + + lemma le_transitive(a: V, b: V, c: V) + ensures le(a, b) && le(b, c) ==> le(a, c) +} + +abstract module TotalOrderImpl(to: TotalOrder) { + method compute_le(x: to.V, y: to.V) + returns (b: bool) + ensures b == to.le(x, y) +} + +module IntTotalOrder refines TotalOrder { + type V = int + predicate le(a: V, b: V) { a <= b } + lemma le_self(a: V) { } + lemma le_transitive(a: V, b: V, c: V) { } +} + +module BoolTotalOrder refines TotalOrder { + type V = bool + predicate le(a: V, b: V) { !a || b } + lemma le_self(a: V) { } + lemma le_transitive(a: V, b: V, c: V) { } +} + +module X { + import ZZZ = IntTotalOrder + import BoolTotalOrder + + predicate f(x: ZZZ.V) { + BoolTotalOrder.le(x, x) + } +} From b78814ec789b97df1fbb762efc97c176077872b1 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 17 Aug 2021 14:54:12 -0400 Subject: [PATCH 535/573] Print more details about resolution errors when using /titrace --- Source/Dafny/Resolver.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 8d135da834e..fd507828d02 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -15990,14 +15990,24 @@ private void AddXConstraint(IToken tok, string constraintName, Type type, TypeCo var types = new Type[] { type }; AllXConstraints.Add(new XConstraint(tok, constraintName, types, errMsg)); } + + private string TypeDetails(UserDefinedType udt) { + return string.Format("{0} ({1})", udt.Name, udt.FullName); + } private void AddXConstraint(IToken tok, string constraintName, Type type0, Type type1, string errMsgFormat) { Contract.Requires(tok != null); Contract.Requires(constraintName != null); Contract.Requires(type0 != null); Contract.Requires(type1 != null); Contract.Requires(errMsgFormat != null); - var types = new Type[] { type0, type1 }; - AllXConstraints.Add(new XConstraint(tok, constraintName, types, new TypeConstraint.ErrorMsgWithToken(tok, errMsgFormat, types))); + var types = new Type[] {type0, type1}; + object[] args; + if (DafnyOptions.O.TypeInferenceDebug && type0 is UserDefinedType udt0 && type1 is UserDefinedType udt1) { + args = new string[] { TypeDetails(udt0), TypeDetails(udt1) }; + } else { + args = types; + } + AllXConstraints.Add(new XConstraint(tok, constraintName, types, new TypeConstraint.ErrorMsgWithToken(tok, errMsgFormat, args))); } private void AddXConstraint(IToken tok, string constraintName, Type type0, Type type1, TypeConstraint.ErrorMsg errMsg) { Contract.Requires(tok != null); @@ -16016,8 +16026,14 @@ private void AddXConstraint(IToken tok, string constraintName, Type type, Expres Contract.Requires(expr1 != null); Contract.Requires(errMsgFormat != null); var types = new Type[] { type }; + object[] args; + if (DafnyOptions.O.TypeInferenceDebug && type is UserDefinedType udt) { + args = new string[] { TypeDetails(udt) }; + } else { + args = types; + } var exprs = new Expression[] { expr0, expr1 }; - AllXConstraints.Add(new XConstraintWithExprs(tok, constraintName, types, exprs, new TypeConstraint.ErrorMsgWithToken(tok, errMsgFormat, types))); + AllXConstraints.Add(new XConstraintWithExprs(tok, constraintName, types, exprs, new TypeConstraint.ErrorMsgWithToken(tok, errMsgFormat, args))); } /// From 8a2d7a532ee1722c23ea2d9d37eb92eb820b2721 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 17 Aug 2021 14:56:06 -0400 Subject: [PATCH 536/573] Add a lit test for issue 32 --- Test/modules/git-issue-32.dfy | 3 + Test/modules/git-issue-32.dfy.expect | 768 +++++++++++++++++++++++++++ 2 files changed, 771 insertions(+) create mode 100644 Test/modules/git-issue-32.dfy.expect diff --git a/Test/modules/git-issue-32.dfy b/Test/modules/git-issue-32.dfy index efb6fe3c128..e872beed6d1 100644 --- a/Test/modules/git-issue-32.dfy +++ b/Test/modules/git-issue-32.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compile:0 /titrace "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module TotalOrder { type V diff --git a/Test/modules/git-issue-32.dfy.expect b/Test/modules/git-issue-32.dfy.expect new file mode 100644 index 00000000000..0ecbee12e05 --- /dev/null +++ b/Test/modules/git-issue-32.dfy.expect @@ -0,0 +1,768 @@ +DEBUG: ---------- type constraints ---------- 0 + bool :> bool + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 222 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 224 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 226 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 228 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 230 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: ---------- type constraints ---------- 232 + IsNullableRefType: ?0 + Equatable: object? ?0 + +DEBUG: setting proxy ?0.T := object? +DEBUG: ---------- type constraints ---------- 220 + IsNullableRefType: object? + +DEBUG: ---------- type constraints ---------- 222 + IsNullableRefType: object? + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + bool :> bool + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 222 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 224 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 226 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 228 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 230 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: ---------- type constraints ---------- 232 + IsNullableRefType: ?1 + Equatable: array? ?1 + +DEBUG: setting proxy ?1.T := array? +DEBUG: ---------- type constraints ---------- 220 + IsNullableRefType: array? + +DEBUG: ---------- type constraints ---------- 222 + IsNullableRefType: array? + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + V :> V + V :> V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + V :> V + V :> V + V :> V + V :> V + V :> V + V :> V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + V :> V + V :> V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + V :> V + V :> V + V :> V + V :> V + V :> V + V :> V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 compute_le + bool :> bool + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + V :> to.V + V :> to.V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 compute_le + bool :> bool + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V to.V + Assignable: V to.V + Equatable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + V :> to.V + V :> to.V + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: setting proxy ?2.T := int +DEBUG: ---------- type constraints ---------- 0 + int :> int + int :> int + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + int :> int + int :> int + int :> int + int :> int + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: setting proxy ?3.T := int +DEBUG: ---------- type constraints ---------- 0 + int :> int + int :> int + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + Orderable_Lt: V V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + int :> int + int :> int + int :> int + int :> int + int :> int + int :> int + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + bool :> bool + bool :> bool + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + bool :> bool + bool :> bool + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + BooleanBits: V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_self + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + Assignable: V V + +DEBUG: ---------- type constraints ---------- 220 + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 le_transitive + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +DEBUG: ---------- type constraints ---------- 0 + Assignable: V ZZZ.V + Assignable: V ZZZ.V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + Assignable: V ZZZ.V + Assignable: V ZZZ.V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 222 + Assignable: V ZZZ.V + Assignable: V ZZZ.V + Assignable: bool bool + +DEBUG: ---------- type constraints ---------- 220 + bool :> int + bool :> int + bool :> bool + +DEBUG: ---------- type constraints ---------- 1 + +DEBUG: -------------------------------------- +git-issue-32.dfy(41,22): Error: type mismatch for argument 0 (function expects V (BoolTotalOrder.V), got V (IntTotalOrder.V)) +git-issue-32.dfy(41,25): Error: type mismatch for argument 1 (function expects V (BoolTotalOrder.V), got V (IntTotalOrder.V)) +2 resolution/type errors detected in git-issue-32.dfy From 3b639cb860a4af65c40c2d9281e330138087269c Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 17 Aug 2021 22:34:19 -0400 Subject: [PATCH 537/573] When updating a functor, follow all alias decls, updating functors along the way if needed. Closes #40. --- Source/Dafny/Resolver.cs | 13 +++++++++++++ Test/modules/git-issue-40.dfy | 29 ++++++++++++++++++++++++++++ Test/modules/git-issue-40.dfy.expect | 2 ++ 3 files changed, 44 insertions(+) create mode 100644 Test/modules/git-issue-40.dfy create mode 100644 Test/modules/git-issue-40.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index fd507828d02..0044514d8bd 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2640,6 +2640,19 @@ private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModule oldActual = new ModuleActualDecl(UpdateFunctorApp(oldActualName.FunctorApp, (LiteralModuleDecl)oldActualName.Root, formalActualPairs, formalActualIdPairs, out newActualApp)); oldActualName = new ModuleQualifiedId(newActualApp, oldActualName.Path); + } else { + var target = ((ModuleActualDecl) oldActual).decl; + while (target is AliasModuleDecl target_amd) { + if (target_amd.TargetQId.FunctorApp != null) { + FunctorApplication newActualApp; + oldActual = new ModuleActualDecl(UpdateFunctorApp(target_amd.TargetQId.FunctorApp, (LiteralModuleDecl)target_amd.TargetQId.Root, formalActualPairs, formalActualIdPairs, + out newActualApp)); + oldActualName = new ModuleQualifiedId(newActualApp, target_amd.TargetQId.Path); + break; + } else { + target = ResolveModuleQualifiedId(target_amd.TargetQId.Root, target_amd.TargetQId, this.reporter); + } + } } moduleParams.Add(oldActual); diff --git a/Test/modules/git-issue-40.dfy b/Test/modules/git-issue-40.dfy new file mode 100644 index 00000000000..b526108aa31 --- /dev/null +++ b/Test/modules/git-issue-40.dfy @@ -0,0 +1,29 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module PCM { + type M +} +abstract module TicketStubSSM { + type M(!new) + predicate Internal(shard: M) +} +module TicketStubPCM(ssm: TicketStubSSM) refines PCM { + type M = ssm.M +} +module Tokens(pcm: PCM) { + datatype Token = Token(ghost val: pcm.M) +} +module TicketStubToken(ssm: TicketStubSSM) { + import pcm = TicketStubPCM(ssm) + import Tokens = Tokens(pcm) + //import Tokens = Tokens(TicketStubPCM(ssm)) // Worked when done this way + type Token = Tokens.Token + function method {:opaque} update_next(a: Token) : int + requires ssm.Internal(a.val) +} +module SSM refines TicketStubSSM { +} +module test { + import Token = TicketStubToken(SSM) +} diff --git a/Test/modules/git-issue-40.dfy.expect b/Test/modules/git-issue-40.dfy.expect new file mode 100644 index 00000000000..823a60a105c --- /dev/null +++ b/Test/modules/git-issue-40.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 1 verified, 0 errors From 7a2ec1fafcbc3bfc7c822623f6ddb039c4a66360 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Tue, 17 Aug 2021 22:59:01 -0400 Subject: [PATCH 538/573] Don't assume oldActual is a ModuleActualDecl --- Source/Dafny/Resolver.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 0044514d8bd..a869aead70d 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -13,6 +13,7 @@ using System.Diagnostics.Contracts; using Microsoft.Boogie; using System.Diagnostics; +using System.Reflection; namespace Microsoft.Dafny { @@ -2640,8 +2641,8 @@ private ModuleDecl UpdateFunctorApp(FunctorApplication functorApp, LiteralModule oldActual = new ModuleActualDecl(UpdateFunctorApp(oldActualName.FunctorApp, (LiteralModuleDecl)oldActualName.Root, formalActualPairs, formalActualIdPairs, out newActualApp)); oldActualName = new ModuleQualifiedId(newActualApp, oldActualName.Path); - } else { - var target = ((ModuleActualDecl) oldActual).decl; + } else if (oldActual is ModuleActualDecl mad) { + var target = mad.decl; while (target is AliasModuleDecl target_amd) { if (target_amd.TargetQId.FunctorApp != null) { FunctorApplication newActualApp; From 3af85d21f091db4dc96481ea9367278fe0f5dc05 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Fri, 10 Sep 2021 14:29:58 -0400 Subject: [PATCH 539/573] only generate operator== and hash for types that support equality also, attempt to fix issue where Dafny didn't correctly compute that a datatype didn't have equality support --- Source/Dafny/Compiler-cpp.cs | 180 ++++++++++++++++++-------------- Source/Dafny/Resolver.cs | 3 + Test/c++/nonequality | Bin 0 -> 56208 bytes Test/c++/nonequality.dfy | 10 ++ Test/c++/nonequality.dfy.expect | 3 + Test/c++/nonequality_extern.h | 13 +++ 6 files changed, 131 insertions(+), 78 deletions(-) create mode 100755 Test/c++/nonequality create mode 100644 Test/c++/nonequality.dfy create mode 100644 Test/c++/nonequality.dfy.expect create mode 100644 Test/c++/nonequality_extern.h diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 16116b76e4b..64a5b1519c2 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -282,12 +282,23 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr var wdef = writer; BlockTargetWriter wmethodDecl = null; + bool supportsEquality; + if (dt is IndDatatypeDecl idd) { + supportsEquality = (idd.EqualitySupport != IndDatatypeDecl.ES.Never); + } + else + { + supportsEquality = false; + } + if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); } // Forward decl to cope with linker issues - wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, InstantiateTemplate(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); + if (supportsEquality) { + wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, InstantiateTemplate(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); + } // Optimize a not-uncommon case if (dt.Ctors.Count == 1) { @@ -333,31 +344,33 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); // Overload the comparison operator - ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, InstantiateTemplate(dt.TypeArgs)); - var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); - weq.Write("\treturn true "); - foreach (var arg in argNames) { - weq.WriteLine("\t\t&& left.{0} == right.{0}", arg); - } - weq.WriteLine(";"); + if (supportsEquality) { + ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, InstantiateTemplate(dt.TypeArgs)); + var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); + weq.Write("\treturn true "); + foreach (var arg in argNames) { + weq.WriteLine("\t\t&& left.{0} == right.{0}", arg); + } + weq.WriteLine(";"); - // Overload the not-comparison operator - ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + // Overload the not-comparison operator + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, InstantiateTemplate(dt.TypeArgs)); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, InstantiateTemplate(dt.TypeArgs)); - // Define a custom hasher - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected + InstantiateTemplate(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); - var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); - owr.WriteLine("size_t seed = 0;"); - foreach (var arg in ctor.Formals) { - if (!arg.IsGhost) { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected + InstantiateTemplate(dt.TypeArgs); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); + owr.WriteLine("size_t seed = 0;"); + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + } } + owr.WriteLine("return seed;"); } - owr.WriteLine("return seed;"); } else { /*** Create one struct for each constructor ***/ @@ -365,7 +378,9 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr string structName = DatatypeSubStructName(ctor); // First add a forward declaration of the type and the equality operator to workaround templating issues wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), structName); - wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, InstantiateTemplate(dt.TypeArgs)); + if (supportsEquality) { + wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, InstantiateTemplate(dt.TypeArgs)); + } var wstruct = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members @@ -382,51 +397,53 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the comparison operator - wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, InstantiateTemplate(dt.TypeArgs)); - var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); - var preReturn = weq.Fork(); - weq.Write("\treturn true "); - i = 0; - foreach (Formal arg in ctor.Formals) { - if (!arg.IsGhost) { - if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer - weq.WriteLine("\t\t&& *(left.{0}) == *(right.{0})", FormalName(arg, i)); - } else { - weq.WriteLine("\t\t&& left.{0} == right.{0}", FormalName(arg, i)); + if (supportsEquality) { + wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, InstantiateTemplate(dt.TypeArgs)); + var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); + var preReturn = weq.Fork(); + weq.Write("\treturn true "); + i = 0; + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer + weq.WriteLine("\t\t&& *(left.{0}) == *(right.{0})", FormalName(arg, i)); + } else { + weq.WriteLine("\t\t&& left.{0} == right.{0}", FormalName(arg, i)); + } + i++; } - i++; } - } - - if (i == 0) { // Avoid a warning from the C++ compiler - preReturn.WriteLine("(void)left; (void) right;"); - } - weq.WriteLine(";"); - // Overload the not-comparison operator - wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); - // Define a custom hasher - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + structName + InstantiateTemplate(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); - var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); - owr.WriteLine("size_t seed = 0;"); - int argCount = 0; - foreach (var arg in ctor.Formals) { - if (!arg.IsGhost) { - if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { - // Recursive destructor needs to use a pointer - owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); - } else { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + if (i == 0) { // Avoid a warning from the C++ compiler + preReturn.WriteLine("(void)left; (void) right;"); + } + weq.WriteLine(";"); + // Overload the not-comparison operator + wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); + + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + structName + InstantiateTemplate(dt.TypeArgs); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); + owr.WriteLine("size_t seed = 0;"); + int argCount = 0; + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // Recursive destructor needs to use a pointer + owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + } else { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + } + argCount++; } - argCount++; } + if (argCount == 0) { + owr.WriteLine("(void)x;"); + } + owr.WriteLine("return seed;"); } - if (argCount == 0) { - owr.WriteLine("(void)x;"); - } - owr.WriteLine("return seed;"); } /*** Declare the overall tagged union ***/ @@ -502,8 +519,10 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); // Overload the comparison operator - ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); - ws.WriteLine("\treturn left.v == right.v;\n}"); + if (supportsEquality) { + ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); + ws.WriteLine("\treturn left.v == right.v;\n}"); + } // Create destructors foreach (var ctor in dt.Ctors) { @@ -542,28 +561,33 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the not-comparison operator - ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + if (supportsEquality) { + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + } - // Define a custom hasher for the struct as a whole - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); var fullStructName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected; - var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); - var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); - owr2.WriteLine("size_t seed = 0;"); - var index = 0; - foreach (var ctor in dt.Ctors) { - var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); - ifwr.WriteLine("hash_combine(seed, {0});", index); - ifwr.WriteLine("hash_combine(seed, std::get<{0}::{1}>(x.v));", dt.EnclosingModuleDefinition.CompileName, DatatypeSubStructName(ctor, true)); - index++; + + // Define a custom hasher for the struct as a whole + if (supportsEquality) { + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); + owr2.WriteLine("size_t seed = 0;"); + var index = 0; + foreach (var ctor in dt.Ctors) { + var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); + ifwr.WriteLine("hash_combine(seed, {0});", index); + ifwr.WriteLine("hash_combine(seed, std::get<{0}::{1}>(x.v));", dt.EnclosingModuleDefinition.CompileName, DatatypeSubStructName(ctor, true)); + index++; + } + owr2.WriteLine("return seed;"); } - owr2.WriteLine("return seed;"); if (IsRecursiveDatatype(dt)) { // Emit a custom hasher for a pointer to this type hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); - owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); + var hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, InstantiateTemplate(dt.TypeArgs)); owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index e9b4771f8d9..c83b1ffba04 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -9758,8 +9758,11 @@ void DetermineEqualitySupport(IndDatatypeDecl startingPoint, GraphW%+RiXIa+1%;k8ptc!3) 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 Z8ovU-LP}nlhZTA)$#hb8*s#&<{{y!wN{Ijf literal 0 HcmV?d00001 diff --git a/Test/c++/nonequality.dfy b/Test/c++/nonequality.dfy new file mode 100644 index 00000000000..81e098e4013 --- /dev/null +++ b/Test/c++/nonequality.dfy @@ -0,0 +1,10 @@ +// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp nonequality_extern.h "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +type {:extern "predefined"} Foo + +datatype X = X(foo: Foo, b: bool) + +method Main() { + print "Hi\n"; +} diff --git a/Test/c++/nonequality.dfy.expect b/Test/c++/nonequality.dfy.expect new file mode 100644 index 00000000000..3aa4c26f4f5 --- /dev/null +++ b/Test/c++/nonequality.dfy.expect @@ -0,0 +1,3 @@ + +Dafny program verifier finished with 0 verified, 0 errors +Hi diff --git a/Test/c++/nonequality_extern.h b/Test/c++/nonequality_extern.h new file mode 100644 index 00000000000..3619ef7425c --- /dev/null +++ b/Test/c++/nonequality_extern.h @@ -0,0 +1,13 @@ +namespace _module { + +struct Foo { + int x; +}; + +Foo get_Foo_default() { + Foo foo; + foo.x = 0; + return foo; +} + +} From 79bf73d78a72d1e7db17be26281a89eb3b0baeb7 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 22 Apr 2021 16:52:34 -0400 Subject: [PATCH 540/573] Fix some bit rot in our local C++ files --- Test/c++/LinearExtern.h | 16 ++++++++-------- Test/c++/Makefile | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Test/c++/LinearExtern.h b/Test/c++/LinearExtern.h index 9076adad4a4..3f762611f60 100644 --- a/Test/c++/LinearExtern.h +++ b/Test/c++/LinearExtern.h @@ -21,7 +21,7 @@ template A unwrap(maybe m) { return m.a; } template -maybe give(A a) { +maybe give(A a) { struct maybe m; m.a = a; return m; @@ -29,22 +29,22 @@ maybe give(A a) { template //maybe empty() { return maybe(get_default::call()); } -maybe empty() { +maybe empty() { struct maybe m; return m; // REVIEW: Safe, b/c !has ? -} +} template -Tuple0 discard(maybe m) { (void)m; Tuple0 ret; return ret; } +Tuple0 discard(maybe m) { (void)m; Tuple0 ret; return ret; } } template struct get_default> { - static LinearMaybe::maybe call() { + static LinearMaybe::maybe call() { struct LinearMaybe::maybe m; m.a = get_default::call(); - return m; + return m; } }; @@ -136,8 +136,8 @@ Tuple0 lseq_free_raw(lseq s) { } template -Tuple2, LinearMaybe::maybe> lseq_swap_raw_fun(lseq s1, uint64 i, LinearMaybe::maybe a1) { - Tuple2 ret(s1, s1[i]); +Tuple, LinearMaybe::maybe> lseq_swap_raw_fun(lseq s1, uint64 i, LinearMaybe::maybe a1) { + Tuple ret(s1, s1[i]); s1[i] = a1; return ret; } diff --git a/Test/c++/Makefile b/Test/c++/Makefile index 90a0d7af3a3..d6edd9a4879 100644 --- a/Test/c++/Makefile +++ b/Test/c++/Makefile @@ -4,10 +4,10 @@ CPPS=$(subst .dfy,.cpp,$(DAFNYS)) DOT_H_S=$(subst .dfy,.h,$(DAFNYS)) EXECS=$(subst .dfy,,$(DAFNYS)) DAFNY_DIR=../.. -DAFNY=$(DAFNY_DIR)/Binaries/dafny +DAFNY=$(DAFNY_DIR)/Scripts/dafny DAFNY_RUNTIME_DIR=$(DAFNY_DIR)/Binaries DAFNY_RUNTIME_CPP=$(DAFNY_RUNTIME_DIR)/DafnyRuntime.h -DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/Dafny.exe $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) +DAFNY_DEPS=$(DAFNY) $(DAFNY_RUNTIME_DIR)/DafnyPipeline.dll $(DAFNY_RUNTIME_CPP) TEST_LOG=tests.log CXXFLAGS += -g -Wall -Wextra -Wpedantic -std=c++17 -I$(DAFNY_RUNTIME_DIR) From c0c6da917d00e160967dc59e12f5276ff68d1dca Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 11 Sep 2021 14:43:59 -0400 Subject: [PATCH 541/573] Don't emit parentheses in module names. Closes #43 --- Source/Dafny/DafnyAst.cs | 9 ++++++++- Test/c++/git-issue-43.dfy | 18 ++++++++++++++++++ Test/c++/git-issue-43.dfy.expect | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Test/c++/git-issue-43.dfy create mode 100644 Test/c++/git-issue-43.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 473ab47a968..41514ad821f 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -15,6 +15,7 @@ using Microsoft.Boogie; using System.Diagnostics; using System.Reflection.Metadata.Ecma335; +using Microsoft.CodeAnalysis.Operations; namespace Microsoft.Dafny { public class Program { @@ -4120,10 +4121,16 @@ public override string ToString() { return result; } + private string ReplaceParens(string s) { + var t = s.Replace("(", "_LEFT_"); + t = t.Replace(")", "_RIGHT_"); + return t; + } + public string ToUniqueName(uint uniqueId) { string result = tok.val + "_" + uniqueId; if (moduleParamNames.Count > 0) { - result += "_ON_" + Util.Comma("_", moduleParamNames, exp => exp.ToString()) + "_"; + result += "_ON_" + Util.Comma("_", moduleParamNames, exp => ReplaceParens(exp.ToString())) + "_"; } return result; } diff --git a/Test/c++/git-issue-43.dfy b/Test/c++/git-issue-43.dfy new file mode 100644 index 00000000000..4b36d352ce7 --- /dev/null +++ b/Test/c++/git-issue-43.dfy @@ -0,0 +1,18 @@ +// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module A { } + +module B(a: A) { } + +abstract module C { } + +module D refines C { } + +module X(c: C) refines A { } + +import t = B(X(D)) + +method Main() +{ +} diff --git a/Test/c++/git-issue-43.dfy.expect b/Test/c++/git-issue-43.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/c++/git-issue-43.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 596bb92f32a9e4e35515d98271e242859d38764b Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 11 Sep 2021 22:27:05 -0400 Subject: [PATCH 542/573] Change directories --- Test/{c++ => modules}/git-issue-43.dfy | 0 Test/{c++ => modules}/git-issue-43.dfy.expect | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Test/{c++ => modules}/git-issue-43.dfy (100%) rename Test/{c++ => modules}/git-issue-43.dfy.expect (100%) diff --git a/Test/c++/git-issue-43.dfy b/Test/modules/git-issue-43.dfy similarity index 100% rename from Test/c++/git-issue-43.dfy rename to Test/modules/git-issue-43.dfy diff --git a/Test/c++/git-issue-43.dfy.expect b/Test/modules/git-issue-43.dfy.expect similarity index 100% rename from Test/c++/git-issue-43.dfy.expect rename to Test/modules/git-issue-43.dfy.expect From 3da47d236b757300645aeb2dab4ffe890e24f05d Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 11 Sep 2021 22:27:26 -0400 Subject: [PATCH 543/573] Turn off IsToBeCompiled for functor applications that make use of ModuleActualFormals. Closes #44. --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 6 ++++++ Test/modules/git-issue-44.dfy | 22 ++++++++++++++++++++++ Test/modules/git-issue-44.dfy.expect | 2 ++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Test/modules/git-issue-44.dfy create mode 100644 Test/modules/git-issue-44.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 41514ad821f..c743a903c56 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4271,7 +4271,7 @@ public string FullName { public readonly bool IsFacade; // True iff this module represents a module facade (that is, an abstract interface) private readonly bool IsBuiltinName; // true if this is something like _System that shouldn't have it's name mangled. public readonly bool IsToBeVerified; - public readonly bool IsToBeCompiled; + public bool IsToBeCompiled; public int? ResolvedHash { get; set; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index a869aead70d..babe49bc0ce 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2829,6 +2829,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl Dictionary formalActualIdPairs = new Dictionary(); HashSet fakeAliasDecls = new HashSet(); bool allArgumentsConcrete = true; + bool shouldCompile = newDef.IsToBeCompiled; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; ModuleActual actual = functorApp.moduleParams[i]; @@ -2853,6 +2854,10 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl bool isConcrete = (actual is ModuleActualDecl mad && !mad.decl.Signature.IsAbstract) || actual is ModuleActualFormal; allArgumentsConcrete &= isConcrete; + if (actual is ModuleActualFormal) { + shouldCompile = false; // If this functor hasn't been fully instantiated yet, we shouldn't compile it + } + LiteralModuleDecl actualLiteral = normalizeDecl(GetDeclFromModuleActual(actual)); if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { @@ -2880,6 +2885,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } } } + newDef.IsToBeCompiled = shouldCompile; // 3) // Update each module import that involves a functor (if any) diff --git a/Test/modules/git-issue-44.dfy b/Test/modules/git-issue-44.dfy new file mode 100644 index 00000000000..d8ee111cf14 --- /dev/null +++ b/Test/modules/git-issue-44.dfy @@ -0,0 +1,22 @@ +// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module Ifc { } + +abstract module InputOutputIfc refines Ifc { } + +abstract module DiskSSM(IOIfc: InputOutputIfc) { } + +module DiskSSMTokens(ioifc: InputOutputIfc, ssm: DiskSSM(ioifc)) { + type Token = int +} + +abstract module AIOParams { } + +module AIO(aioparams: AIOParams, ioifc: InputOutputIfc, ssm: DiskSSM(ioifc)) { + import T = DiskSSMTokens(ioifc, ssm) +} + +method Main() +{ +} diff --git a/Test/modules/git-issue-44.dfy.expect b/Test/modules/git-issue-44.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-44.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From bcbf073c8c1c92daa623fca8785bc425c2ad2186 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sun, 12 Sep 2021 14:42:56 -0400 Subject: [PATCH 544/573] Declare shared formals as C++ references. --- Source/Dafny/Compiler-cpp.cs | 3 ++- Test/c++/ExternDefs.h | 5 +++++ Test/c++/linear.dfy | 28 +++++++++++++++++++--------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index 64a5b1519c2..baa91801bee 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -1168,7 +1168,8 @@ protected void DeclareField(string className, List targs, string private string DeclareFormalString(string prefix, string name, Type type, Bpl.IToken tok, Usage usage, bool isInParam, bool isInoutParam) { if (isInParam) { - return String.Format("{0}{2}{3} {1}", prefix, name, TypeName(type, null, tok, usage:usage), isInoutParam ? "&" : ""); + bool isReference = isInoutParam || usage == Usage.Shared; + return String.Format("{0}{2}{3} {1}", prefix, name, TypeName(type, null, tok, usage:usage), isReference ? "&" : ""); } else { return null; } diff --git a/Test/c++/ExternDefs.h b/Test/c++/ExternDefs.h index c6ace7ec87e..b1b985a3500 100644 --- a/Test/c++/ExternDefs.h +++ b/Test/c++/ExternDefs.h @@ -66,3 +66,8 @@ class __default { } };*/ } + +namespace _module { + typedef int T; + T get_T_default() { return 42; } +} diff --git a/Test/c++/linear.dfy b/Test/c++/linear.dfy index 4378b32007f..cfffacd1057 100644 --- a/Test/c++/linear.dfy +++ b/Test/c++/linear.dfy @@ -22,7 +22,7 @@ method TestLinearRet(linear s:seq) returns (linear s':seq) linear datatype Val0 = Leaf(x:uint64) | Branch(linear v:Val0) datatype Val1 = Leaf(x:uint64) | Branch(v:Val1) -method Test(name:string, b:bool) +method Test(name:string, b:bool) requires b; { if b { @@ -32,9 +32,9 @@ method Test(name:string, b:bool) } } -/* +/* // Disallowed because operator== expects ordinary arguments -method LinearMaybeEqualityTest(linear a:maybe, linear b:maybe) +method LinearMaybeEqualityTest(linear a:maybe, linear b:maybe) requires has(a) && !has(b); { var bar := a == b; @@ -46,7 +46,7 @@ method LinearMaybeEqualityTest(linear a:maybe, linear b:maybe) } // Disallowed here because type lseq is not type(==) -method LinearLSeqEqualityTest() +method LinearLSeqEqualityTest() { var a:lseq, b:lseq; var result := a == b; @@ -60,7 +60,7 @@ method LinearLSeqEqualityTest() //function method {:extern "LinearExtern", "seq_free"} seq_free(linear s:seq):() // -method TestLinearSequences() +method TestLinearSequences() { linear var s0 := seq_alloc(10); var x := seq_get(s0, 0); @@ -112,12 +112,12 @@ method TestLinearMaybe(linear u:uint64) returns (linear x:uint64) } method {:extern "LinearExtern", "MakeLinearInt"} MakeLinearInt(u:uint64) returns (linear x:uint64) -method {:extern "LinearExtern", "DiscardLinearInt"} DiscardLinearInt(linear u:uint64) +method {:extern "LinearExtern", "DiscardLinearInt"} DiscardLinearInt(linear u:uint64) lemma {:axiom} falso() ensures false; -method AccessShared(shared s:lseq) +method AccessShared(shared s:lseq) requires lseq_length_raw(s) > 1 requires has(lseq_share_raw(s, 0)) { @@ -125,7 +125,7 @@ method AccessShared(shared s:lseq) shared var a := peek(m); } -method TestLSeq() +method TestLSeq() { linear var s := lseq_alloc_raw(10); var len := lseq_length_raw(s); @@ -135,7 +135,7 @@ method TestLSeq() linear var u := MakeLinearInt(24); linear var m := give(u); linear var (s', m') := lseq_swap_raw_fun(s, 0, m); - + AccessShared(s'); linear var (s'', m'') := lseq_swap_raw_fun(s', 0, m'); @@ -144,6 +144,16 @@ method TestLSeq() var _ := lseq_free_raw(s''); } +type {:extern "predefined"} T + +method ExpectsSharedT(shared t: T) { +} + +method ProvidesSharedT(linear t: T) returns (linear t': T) { + ExpectsSharedT(t); + t' := t; +} + method Main() { TestLinearSequences(); From 15d05ab4ef949f0f0429d1c09dc41951d000d619 Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Mon, 13 Sep 2021 10:04:26 -0400 Subject: [PATCH 545/573] Revert "only generate operator== and hash for types that support equality" This reverts commit 3af85d21f091db4dc96481ea9367278fe0f5dc05. There are enough bugs in Dafny's computation of equality-support, so this fix causes too many problems right now. For now, workaround by defining operator== for extern types --- Source/Dafny/Compiler-cpp.cs | 180 ++++++++++++++------------------ Source/Dafny/Resolver.cs | 3 - Test/c++/nonequality | Bin 56208 -> 0 bytes Test/c++/nonequality.dfy | 10 -- Test/c++/nonequality.dfy.expect | 3 - Test/c++/nonequality_extern.h | 13 --- 6 files changed, 78 insertions(+), 131 deletions(-) delete mode 100755 Test/c++/nonequality delete mode 100644 Test/c++/nonequality.dfy delete mode 100644 Test/c++/nonequality.dfy.expect delete mode 100644 Test/c++/nonequality_extern.h diff --git a/Source/Dafny/Compiler-cpp.cs b/Source/Dafny/Compiler-cpp.cs index baa91801bee..ca949aa7b59 100644 --- a/Source/Dafny/Compiler-cpp.cs +++ b/Source/Dafny/Compiler-cpp.cs @@ -282,23 +282,12 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr var wdef = writer; BlockTargetWriter wmethodDecl = null; - bool supportsEquality; - if (dt is IndDatatypeDecl idd) { - supportsEquality = (idd.EqualitySupport != IndDatatypeDecl.ES.Never); - } - else - { - supportsEquality = false; - } - if (IsRecursiveDatatype(dt)) { // Note that if this is true, there must be more than one constructor! // Add some forward declarations wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), DtT_protected); } // Forward decl to cope with linker issues - if (supportsEquality) { - wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, InstantiateTemplate(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); - } + wdecl.WriteLine("{2}\nbool operator==(const {0}{1} &left, const {0}{1} &right); ", DtT_protected, InstantiateTemplate(dt.TypeArgs), DeclareTemplate(dt.TypeArgs)); // Optimize a not-uncommon case if (dt.Ctors.Count == 1) { @@ -344,33 +333,31 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); // Overload the comparison operator - if (supportsEquality) { - ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, InstantiateTemplate(dt.TypeArgs)); - var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); - weq.Write("\treturn true "); - foreach (var arg in argNames) { - weq.WriteLine("\t\t&& left.{0} == right.{0}", arg); - } - weq.WriteLine(";"); + ws.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right);", DtT_protected, InstantiateTemplate(dt.TypeArgs)); + var weq = wdef.NewNamedBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right) ", DtT_protected, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); + weq.Write("\treturn true "); + foreach (var arg in argNames) { + weq.WriteLine("\t\t&& left.{0} == right.{0}", arg); + } + weq.WriteLine(";"); - // Overload the not-comparison operator - ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); + // Overload the not-comparison operator + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, InstantiateTemplate(dt.TypeArgs)); + wdecl.WriteLine("{0}\ninline bool is_{1}(const struct {2}{3} d) {{ (void) d; return true; }}", DeclareTemplate(dt.TypeArgs), ctor.CompileName, DtT_protected, InstantiateTemplate(dt.TypeArgs)); - // Define a custom hasher - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected + InstantiateTemplate(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); - var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); - owr.WriteLine("size_t seed = 0;"); - foreach (var arg in ctor.Formals) { - if (!arg.IsGhost) { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); - } + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected + InstantiateTemplate(dt.TypeArgs); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); + owr.WriteLine("size_t seed = 0;"); + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); } - owr.WriteLine("return seed;"); } + owr.WriteLine("return seed;"); } else { /*** Create one struct for each constructor ***/ @@ -378,9 +365,7 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr string structName = DatatypeSubStructName(ctor); // First add a forward declaration of the type and the equality operator to workaround templating issues wdecl.WriteLine("{0}\nstruct {1};", DeclareTemplate(dt.TypeArgs), structName); - if (supportsEquality) { - wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, InstantiateTemplate(dt.TypeArgs)); - } + wdecl.WriteLine("{0}\nbool operator==(const {1}{2} &left, const {1}{2} &right); ", DeclareTemplate(dt.TypeArgs), structName, InstantiateTemplate(dt.TypeArgs)); var wstruct = wdecl.NewBlock(String.Format("{0}\nstruct {1}", DeclareTemplate(dt.TypeArgs), structName), ";"); // Declare the struct members @@ -397,53 +382,51 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the comparison operator - if (supportsEquality) { - wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, InstantiateTemplate(dt.TypeArgs)); - var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); - var preReturn = weq.Fork(); - weq.Write("\treturn true "); - i = 0; - foreach (Formal arg in ctor.Formals) { - if (!arg.IsGhost) { - if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer - weq.WriteLine("\t\t&& *(left.{0}) == *(right.{0})", FormalName(arg, i)); - } else { - weq.WriteLine("\t\t&& left.{0} == right.{0}", FormalName(arg, i)); - } - i++; + wstruct.WriteLine("friend bool operator=={1}(const {0} &left, const {0} &right); ", structName, InstantiateTemplate(dt.TypeArgs)); + var weq = wdef.NewBlock(string.Format("{1}\nbool operator==(const {0}{2} &left, const {0}{2} &right)", structName, DeclareTemplate(dt.TypeArgs), InstantiateTemplate(dt.TypeArgs))); + var preReturn = weq.Fork(); + weq.Write("\treturn true "); + i = 0; + foreach (Formal arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { // Recursive destructor needs to use a pointer + weq.WriteLine("\t\t&& *(left.{0}) == *(right.{0})", FormalName(arg, i)); + } else { + weq.WriteLine("\t\t&& left.{0} == right.{0}", FormalName(arg, i)); } + i++; } + } - if (i == 0) { // Avoid a warning from the C++ compiler - preReturn.WriteLine("(void)left; (void) right;"); - } - weq.WriteLine(";"); - // Overload the not-comparison operator - wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); - - // Define a custom hasher - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + structName + InstantiateTemplate(dt.TypeArgs); - var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); - var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); - owr.WriteLine("size_t seed = 0;"); - int argCount = 0; - foreach (var arg in ctor.Formals) { - if (!arg.IsGhost) { - if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { - // Recursive destructor needs to use a pointer - owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); - } else { - owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); - } - argCount++; + if (i == 0) { // Avoid a warning from the C++ compiler + preReturn.WriteLine("(void)left; (void) right;"); + } + weq.WriteLine(";"); + // Overload the not-comparison operator + wstruct.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", structName); + + // Define a custom hasher + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullName = dt.EnclosingModuleDefinition.CompileName + "::" + structName + InstantiateTemplate(dt.TypeArgs); + var hwr = hashWr.NewBlock(string.Format("struct std::hash<{0}>", fullName), ";"); + var owr = hwr.NewBlock(string.Format("std::size_t operator()(const {0}& x) const", fullName)); + owr.WriteLine("size_t seed = 0;"); + int argCount = 0; + foreach (var arg in ctor.Formals) { + if (!arg.IsGhost) { + if (arg.Type is UserDefinedType udt && udt.ResolvedClass == dt) { + // Recursive destructor needs to use a pointer + owr.WriteLine("hash_combine>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); + } else { + owr.WriteLine("hash_combine<{0}>(seed, x.{1});", TypeName(arg.Type, owr, dt.tok, usage:arg.Usage), arg.CompileName); } + argCount++; } - if (argCount == 0) { - owr.WriteLine("(void)x;"); - } - owr.WriteLine("return seed;"); } + if (argCount == 0) { + owr.WriteLine("(void)x;"); + } + owr.WriteLine("return seed;"); } /*** Declare the overall tagged union ***/ @@ -519,10 +502,8 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr ws.WriteLine("{0}* operator->() {{ return this; }}", DtT_protected); // Overload the comparison operator - if (supportsEquality) { - ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); - ws.WriteLine("\treturn left.v == right.v;\n}"); - } + ws.WriteLine("friend bool operator==(const {0} &left, const {0} &right) {{ ", DtT_protected); + ws.WriteLine("\treturn left.v == right.v;\n}"); // Create destructors foreach (var ctor in dt.Ctors) { @@ -561,33 +542,28 @@ protected override IClassWriter DeclareDatatype(DatatypeDecl dt, TargetWriter wr } // Overload the not-comparison operator - if (supportsEquality) { - ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); - } - - var fullStructName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected; + ws.WriteLine("friend bool operator!=(const {0} &left, const {0} &right) {{ return !(left == right); }} ", DtT_protected); // Define a custom hasher for the struct as a whole - if (supportsEquality) { - hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); - var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); - owr2.WriteLine("size_t seed = 0;"); - var index = 0; - foreach (var ctor in dt.Ctors) { - var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); - ifwr.WriteLine("hash_combine(seed, {0});", index); - ifwr.WriteLine("hash_combine(seed, std::get<{0}::{1}>(x.v));", dt.EnclosingModuleDefinition.CompileName, DatatypeSubStructName(ctor, true)); - index++; - } - owr2.WriteLine("return seed;"); + hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); + var fullStructName = dt.EnclosingModuleDefinition.CompileName + "::" + DtT_protected; + var hwr2 = hashWr.NewBlock(string.Format("struct std::hash<{0}{1}>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const {0}{1}& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); + owr2.WriteLine("size_t seed = 0;"); + var index = 0; + foreach (var ctor in dt.Ctors) { + var ifwr = owr2.NewBlock(string.Format("if (x.is_{0}())", DatatypeSubStructName(ctor))); + ifwr.WriteLine("hash_combine(seed, {0});", index); + ifwr.WriteLine("hash_combine(seed, std::get<{0}::{1}>(x.v));", dt.EnclosingModuleDefinition.CompileName, DatatypeSubStructName(ctor, true)); + index++; } + owr2.WriteLine("return seed;"); if (IsRecursiveDatatype(dt)) { // Emit a custom hasher for a pointer to this type hashWr.WriteLine("template <{0}>", TypeParameters(dt.TypeArgs)); - var hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); - var owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); + hwr2 = hashWr.NewBlock(string.Format("struct std::hash>", fullStructName, InstantiateTemplate(dt.TypeArgs)), ";"); + owr2 = hwr2.NewBlock(string.Format("std::size_t operator()(const std::shared_ptr<{0}{1}>& x) const", fullStructName, InstantiateTemplate(dt.TypeArgs))); owr2.WriteLine("struct std::hash<{0}{1}> hasher;", fullStructName, InstantiateTemplate(dt.TypeArgs)); owr2.WriteLine("std::size_t h = hasher(*x);"); owr2.WriteLine("return h;"); diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index c83b1ffba04..e9b4771f8d9 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -9758,11 +9758,8 @@ void DetermineEqualitySupport(IndDatatypeDecl startingPoint, GraphW%+RiXIa+1%;k8ptc!3) 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 Z8ovU-LP}nlhZTA)$#hb8*s#&<{{y!wN{Ijf diff --git a/Test/c++/nonequality.dfy b/Test/c++/nonequality.dfy deleted file mode 100644 index 81e098e4013..00000000000 --- a/Test/c++/nonequality.dfy +++ /dev/null @@ -1,10 +0,0 @@ -// RUN: %dafny /compile:3 /spillTargetCode:2 /compileTarget:cpp nonequality_extern.h "%s" > "%t" -// RUN: %diff "%s.expect" "%t" - -type {:extern "predefined"} Foo - -datatype X = X(foo: Foo, b: bool) - -method Main() { - print "Hi\n"; -} diff --git a/Test/c++/nonequality.dfy.expect b/Test/c++/nonequality.dfy.expect deleted file mode 100644 index 3aa4c26f4f5..00000000000 --- a/Test/c++/nonequality.dfy.expect +++ /dev/null @@ -1,3 +0,0 @@ - -Dafny program verifier finished with 0 verified, 0 errors -Hi diff --git a/Test/c++/nonequality_extern.h b/Test/c++/nonequality_extern.h deleted file mode 100644 index 3619ef7425c..00000000000 --- a/Test/c++/nonequality_extern.h +++ /dev/null @@ -1,13 +0,0 @@ -namespace _module { - -struct Foo { - int x; -}; - -Foo get_Foo_default() { - Foo foo; - foo.x = 0; - return foo; -} - -} From 13747bc3807d5c0959041a5101403905e56dd0af Mon Sep 17 00:00:00 2001 From: Travis Hance Date: Tue, 14 Sep 2021 15:28:42 -0400 Subject: [PATCH 546/573] add get_default for int types that were missing --- Binaries/DafnyRuntime.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Binaries/DafnyRuntime.h b/Binaries/DafnyRuntime.h index eadc7b2bb92..52c30e0cb77 100644 --- a/Binaries/DafnyRuntime.h +++ b/Binaries/DafnyRuntime.h @@ -99,11 +99,21 @@ struct get_default { static unsigned int call() { return 0; } }; +template<> +struct get_default { + static long call() { return 0; } +}; + template<> struct get_default { static unsigned long call() { return 0; } }; +template<> +struct get_default { + static long long call() { return 0; } +}; + template<> struct get_default { static unsigned long long call() { return 0; } From 166da2bb44b056ff115df1b3aee71733385e311a Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 4 Oct 2021 12:45:42 -0400 Subject: [PATCH 547/573] Restore the ability to import an export set --- Source/Dafny/Dafny.atg | 19 +++++++------- Source/Dafny/DafnyAst.cs | 8 ++++++ Test/modules/ExportSets.dfy | 42 ++++++++++++++++++++++++++++++ Test/modules/ExportSets.dfy.expect | 8 ++++++ 4 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 Test/modules/ExportSets.dfy create mode 100644 Test/modules/ExportSets.dfy.expect diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 6670dbd18ae..9f02919106c 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -1034,19 +1034,18 @@ ModuleImport ( IF(lookAhead == _singleeq) ModuleName "=" - ModuleQualifiedName + QualifiedModuleExport (. submodule = new AliasModuleDecl(qID, id, parent, opened, idExports); .) | IF(lookAhead == _colon) ModuleName ":" - ModuleQualifiedName + QualifiedModuleExport (. submodule = new AbstractModuleDecl(qID, id, parent, opened, idExports); .) | - QualifiedModuleExport - (. submodule = new AliasModuleDecl(new ModuleQualifiedId(idPath), - idPath[idPath.Count-1], parent, opened, idExports); + QualifiedModuleExport + (. submodule = new AliasModuleDecl(qID, qID.lastToken(), parent, opened, idExports); .) ) . @@ -1097,7 +1096,7 @@ ModuleExport /*------------------------------------------------------------------------*/ // Note - before the "." only Type names are permitted (no 'digits'), but name resolution sorts that -// out, since the parser does not know (without adding lookahead) when it has seen the last dot +// ouft, since the parser does not know (without adding lookahead) when it has seen the last dot // matching any permitted member name ExportSignature @@ -1164,19 +1163,19 @@ ModuleQualifiedName<.out ModuleQualifiedId qID.> .) . -/*------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------ QualifiedModuleId<.out List ids.> = (. IToken id; ids = new List(); .) ModuleName (. ids.Add(id); .) { "." ModuleName (. ids.Add(id); .) } . +*/ - -QualifiedModuleExport<.out List idPath, out List exports.> +QualifiedModuleExport<.out ModuleQualifiedId qID, out List exports.> = (. exports = new List(); .) - QualifiedModuleId + ModuleQualifiedName [ "`" ModuleExportSuffix ] . diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index c743a903c56..81da6e8e04c 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4181,6 +4181,14 @@ public IToken rootToken() { } } + public IToken lastToken() { + if (Path != null && Path.Count > 0) { + return Path[Path.Count - 1]; + } else { + return rootToken(); + } + } + override public string ToString() { string s = rootName(); int i = 1; diff --git a/Test/modules/ExportSets.dfy b/Test/modules/ExportSets.dfy new file mode 100644 index 00000000000..60cc5aa6666 --- /dev/null +++ b/Test/modules/ExportSets.dfy @@ -0,0 +1,42 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module Helpers { + export Spec provides addOne, addOne_result + export Body reveals addOne + export extends Spec + function method addOne(n: nat): nat + { + n + 1 + } + lemma addOne_result(n : nat) + ensures addOne(n) == n + 1 + { } +} + +module Mod1 { + import A = Helpers`Body + method m() { + assert A.addOne(5) == 6; // succeeds, we have access to addOne's body + } + method m2() { + //A.addOne_result(5); // Would be an error, addOne_result is not exported from Body + assert A.addOne(5) == 6; + } +} +module Mod2 { + import A = Helpers`Spec + method m() { + assert A.addOne(5) == 6; // fails, we don't have addOne's body + } + method m2() { + A.addOne_result(5); + assert A.addOne(5) == 6; // succeeds due to result from addOne_result + } +} +module Mod3 { + import A = Helpers + method m() { + assert A.addOne(5) == 6; // fails, we don't have addOne's body + } +} diff --git a/Test/modules/ExportSets.dfy.expect b/Test/modules/ExportSets.dfy.expect new file mode 100644 index 00000000000..eb56c63e272 --- /dev/null +++ b/Test/modules/ExportSets.dfy.expect @@ -0,0 +1,8 @@ +ExportSets.dfy(30,23): Error: assertion violation +Execution trace: + (0,0): anon0 +ExportSets.dfy(40,23): Error: assertion violation +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 5 verified, 2 errors From bd5acc1cf0f94f81dfce65e673d4dbfb0393b960 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Oct 2021 17:21:44 -0400 Subject: [PATCH 548/573] Compute function fuel over virtual modules as well --- Source/Dafny/DafnyAst.cs | 4 ++++ Source/Dafny/Resolver.cs | 3 ++- Source/Dafny/Translator.cs | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 81da6e8e04c..e15b2e9d32c 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -32,6 +32,9 @@ void ObjectInvariant() { public List CompileModules; // filled in during resolution. // Contains the definitions to be used for compilation. + public List VirtualModules; // filled in during resolution + // Contains the output of module functors + public Method MainMethod; // Method to be used as main if compiled public readonly ModuleDecl DefaultModule; public readonly ModuleDefinition DefaultModuleDef; @@ -50,6 +53,7 @@ public Program(string name, [Captured] ModuleDecl module, [Captured] BuiltIns bu this.reporter = reporter; ModuleSigs = new Dictionary(); CompileModules = new List(); + VirtualModules = new List(); } //Set appropriate visibilty before presenting module diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index c629d1518ea..a2db0165fa4 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2927,7 +2927,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // TODO: Need this? Tried it an it creates a: // System.ArgumentException: An item with the same key has already been added. Key: PCMExt // in Dafny.DafnyDriver.ProcessFiles - //this.Prog.ModuleSigs[newDef] = sig; + //this.prog.ModuleSigs[newDef] = sig; // REVIEW: Should isAnExport be true? var errCount = reporter.Count(ErrorLevel.Error); @@ -2943,6 +2943,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl newDecl.Signature = sig; newDecl.DefaultExport = sig; Resolver.virtualModules[functorApp] = newDecl; + this.prog.VirtualModules.Add(newDef); return newDecl; } else { var mod = Resolver.virtualModules[functorApp]; diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 9cba92a3838..0615b97e510 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -1129,7 +1129,7 @@ private void AddBitvectorNatConversionFunction(int w) { } private void ComputeFunctionFuel() { - foreach (ModuleDefinition m in program.RawModules()) { + foreach (ModuleDefinition m in program.ModuleSigs.Keys.ToList().Concat(program.VirtualModules)) { foreach (TopLevelDecl d in m.TopLevelDecls) { if (d is TopLevelDeclWithMembers) { var c = (TopLevelDeclWithMembers)d; From 2150693b4c732ea8abf5af7abd08cfa160273963 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Thu, 7 Oct 2021 17:23:25 -0400 Subject: [PATCH 549/573] Test case for opaque --- Test/modules/Opaque.dfy | 43 ++++++++++++++++++++++++++++++++++ Test/modules/Opaque.dfy.expect | 5 ++++ 2 files changed, 48 insertions(+) create mode 100644 Test/modules/Opaque.dfy create mode 100644 Test/modules/Opaque.dfy.expect diff --git a/Test/modules/Opaque.dfy b/Test/modules/Opaque.dfy new file mode 100644 index 00000000000..8a97dbd597f --- /dev/null +++ b/Test/modules/Opaque.dfy @@ -0,0 +1,43 @@ +// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +module X { +} + +module BaseModule(x: X) { + function{:opaque} F(i:int):int { i + 1 } + + lemma LBase() { + reveal F(); + assert F(10) == 11; + } +} + +module UpperModule(x1: X) { + import A = BaseModule(x1) + + lemma LUpper() { + //reveal A.F(); + assert A.F(10) == 11; // Passed, even though it should fail without uncommenting the reveal above + } +} + +/* + * This morally equivalent program fails at the expected assertion. +module BaseModule { + function{:opaque} F(i:int):int { i + 1 } + +// lemma LBase() { +// reveal_F(); +// assert F(10) == 11; +// } +} + +module UpperModule { + import A = BaseModule + + lemma LUpper() { + assert A.F(10) == 11; + } +} +*/ diff --git a/Test/modules/Opaque.dfy.expect b/Test/modules/Opaque.dfy.expect new file mode 100644 index 00000000000..4977490d6ac --- /dev/null +++ b/Test/modules/Opaque.dfy.expect @@ -0,0 +1,5 @@ +Opaque.dfy(21,19): Error: assertion violation +Execution trace: + (0,0): anon0 + +Dafny program verifier finished with 1 verified, 1 error From a8826da9afce3000e163fac6bbfab334a75d5899 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Sat, 16 Oct 2021 19:44:31 -0400 Subject: [PATCH 550/573] Alternate approach to generating compile names. Removes unique counter when naming functor applications. Should be safe, in theory. Closes #49 --- Source/Dafny/DafnyAst.cs | 24 +++++++++++++++++++++--- Source/Dafny/Resolver.cs | 2 +- Test/modules/git-issue-49.dfy | 18 ++++++++++++++++++ Test/modules/git-issue-49.dfy.expect | 2 ++ 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 Test/modules/git-issue-49.dfy create mode 100644 Test/modules/git-issue-49.dfy.expect diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index e15b2e9d32c..78c784acb3b 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4131,10 +4131,12 @@ private string ReplaceParens(string s) { return t; } - public string ToUniqueName(uint uniqueId) { - string result = tok.val + "_" + uniqueId; + //public string ToUniqueName(uint uniqueId) { + // string result = tok.val + "_" + uniqueId; + public string CompileName() { + string result = tok.val; if (moduleParamNames.Count > 0) { - result += "_ON_" + Util.Comma("_", moduleParamNames, exp => ReplaceParens(exp.ToString())) + "_"; + result += "_ON_" + Util.Comma("_", moduleParamNames, exp => ReplaceParens(exp.CompileName())) + "_"; } return result; } @@ -4206,6 +4208,22 @@ override public string ToString() { return s; } + public string CompileName() { + string s = ""; + int i = 1; + if (FunctorApp != null) { + s += FunctorApp.CompileName(); + i = 0; + } else { + s = Path[0].val; + } + + for (; i < Path.Count; ++i) { + s += "." + Path[i].val; + } + return s; + } + public void SetRoot(ModuleDecl m) { this.Root = m; } diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index a2db0165fa4..4b1c6266354 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2809,7 +2809,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 1) Cloner cloner = new DeepModuleSignatureCloner(); // literalRoot.Name + FunctorNameCtr - ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, functorApp.ToUniqueName(FunctorNameCtr), preserveFunctors:false); + ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, functorApp.CompileName(), preserveFunctors:false); FunctorNameCtr += 1; // Cloner doesn't propagate the compile signature, so we do so ourselves CloneCompileSignatures(literalRoot.ModuleDef, newDef); diff --git a/Test/modules/git-issue-49.dfy b/Test/modules/git-issue-49.dfy new file mode 100644 index 00000000000..88a3447af44 --- /dev/null +++ b/Test/modules/git-issue-49.dfy @@ -0,0 +1,18 @@ +// RUN: %dafny /compileTarget:cpp "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module A { } +abstract module B { } +abstract module C { } + +module A1 refines A { } +module B1 refines B { } + +module D(c: C) { } + +module X(a: A, b: B) refines C { } + +import W = D(X(A1, B1)) + +method Main() { +} diff --git a/Test/modules/git-issue-49.dfy.expect b/Test/modules/git-issue-49.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-49.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From d86e8eacff6f751a98c1d3434bded255012dc578 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 18 Oct 2021 17:05:05 -0400 Subject: [PATCH 551/573] Don't compile modules that have arguments that are not going to be compiled. Closes #51 --- Source/Dafny/Resolver.cs | 2 ++ Test/modules/git-issue-51.dfy | 20 ++++++++++++++++++++ Test/modules/git-issue-51.dfy.expect | 2 ++ 3 files changed, 24 insertions(+) create mode 100644 Test/modules/git-issue-51.dfy create mode 100644 Test/modules/git-issue-51.dfy.expect diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 4b1c6266354..5ecb09507b8 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2856,6 +2856,8 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl if (actual is ModuleActualFormal) { shouldCompile = false; // If this functor hasn't been fully instantiated yet, we shouldn't compile it + } else if (actual is ModuleActualDecl actualMad && actualMad.decl is LiteralModuleDecl lmd) { + shouldCompile &= lmd.ModuleDef.IsToBeCompiled; // Only compile this if the argument is going to be compiled too } LiteralModuleDecl actualLiteral = normalizeDecl(GetDeclFromModuleActual(actual)); diff --git a/Test/modules/git-issue-51.dfy b/Test/modules/git-issue-51.dfy new file mode 100644 index 00000000000..f147082c2f2 --- /dev/null +++ b/Test/modules/git-issue-51.dfy @@ -0,0 +1,20 @@ +// RUN: %dafny /compileTarget:cpp "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +abstract module NRIfc { } + +module ContentsTypeMod { +} + +module NodeReplica(nrifc: NRIfc) refines ContentsTypeMod { } + +module RwLockImpl(contentsTypeMod: ContentsTypeMod) { +} + +module Impl(nrifc: NRIfc) { + import opened NodeReplicaApplied = NodeReplica(nrifc) + import opened RwLockImpl(NodeReplica(nrifc)) +} + +method Main() { +} diff --git a/Test/modules/git-issue-51.dfy.expect b/Test/modules/git-issue-51.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-51.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From 63a234ef241d29abff9fcc4e4b250840986a8457 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 18 Oct 2021 17:34:02 -0400 Subject: [PATCH 552/573] Part way through revamp of FunctorApplication, so we can use the fully resolved argument names when naming the functor's output --- Source/Dafny/DafnyAst.cs | 2 +- Source/Dafny/Resolver.cs | 49 ++++++++++++++++++++++------------- Test/modules/git-issue-52.dfy | 20 ++++++++++++++ 3 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 Test/modules/git-issue-52.dfy diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 78c784acb3b..99003d0b39d 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -4125,7 +4125,7 @@ public override string ToString() { return result; } - private string ReplaceParens(string s) { + static public string ReplaceParens(string s) { var t = s.Replace("(", "_LEFT_"); t = t.Replace(")", "_RIGHT_"); return t; diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 5ecb09507b8..d0ec3b5de36 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -2799,6 +2799,7 @@ public ModuleDecl GetDeclFromModuleActual(ModuleActual actual) { private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl literalRoot) { if (!Resolver.virtualModules.ContainsKey(functorApp)) { // Apply the functor + // 0) Process the actual arguments, checking them against the declared formal arguments // 1) Clone the base module definition // 2) For each formal, update the AliasModuleDecl we introduced // to point at the actual module parameter @@ -2806,30 +2807,19 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 4) Update the functor's refinement target, if needed // 5) Compute the signature for our newly created module - // 1) - Cloner cloner = new DeepModuleSignatureCloner(); - // literalRoot.Name + FunctorNameCtr - ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, functorApp.CompileName(), preserveFunctors:false); - FunctorNameCtr += 1; - // Cloner doesn't propagate the compile signature, so we do so ourselves - CloneCompileSignatures(literalRoot.ModuleDef, newDef); - CloneRecursionInfo(cloner, literalRoot.ModuleDef, newDef); - // Should have the same scope, not a clone, as cloning allocates new tokens - //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; - + // 0) Process the actual arguments, checking them against the declared formal arguments if (functorApp.functor.Formals.Count != functorApp.moduleParams.Count) { var msg = $"Module {literalRoot.Name} expects {functorApp.functor.Formals.Count} parameters, got {functorApp.moduleParams.Count}"; reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; } - - // 2) Dictionary formalActualPairs = new Dictionary(); Dictionary formalActualIdPairs = new Dictionary(); HashSet fakeAliasDecls = new HashSet(); + List actualLiterals = new List(); bool allArgumentsConcrete = true; - bool shouldCompile = newDef.IsToBeCompiled; + bool shouldCompile = literalRoot.ModuleDef.IsToBeCompiled; for (int i = 0; i < functorApp.functor.Formals.Count; i++) { ModuleFormal formal = functorApp.functor.Formals[i]; ModuleActual actual = functorApp.moduleParams[i]; @@ -2861,6 +2851,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } LiteralModuleDecl actualLiteral = normalizeDecl(GetDeclFromModuleActual(actual)); + actualLiterals.Append(actualLiteral); if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { var msg = $"Module {actualLiteral.Name} expects {af.Formals.Count} arguments but didn't receive any!"; @@ -2873,13 +2864,36 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl reporter.Error(MessageSource.Resolver, functorApp.tok, msg); return null; } + } + + // 1) Clone the base module definition + Cloner cloner = new DeepModuleSignatureCloner(); - // Find the artificial alias decl we created, and update it with the actual + // compute the name of the functor's output based on the resolved literal modules + string name = functorApp.tok.val; + if (actualLiterals.Count > 0) { + name += "_ON_" + Util.Comma("_", actualLiterals, exp => FunctorApplication.ReplaceParens(exp.CompileName)) + "_"; + } + // Do the clone + ModuleDefinition newDef = cloner.CloneModuleDefinition(literalRoot.ModuleDef, name, preserveFunctors:false); + + // Cloner doesn't propagate the compile signature, so we do so ourselves + CloneCompileSignatures(literalRoot.ModuleDef, newDef); + CloneRecursionInfo(cloner, literalRoot.ModuleDef, newDef); + // Should have the same scope, not a clone, as cloning allocates new tokens + //newDef.VisibilityScope = literalRoot.ModuleDef.VisibilityScope; + + newDef.IsToBeCompiled = shouldCompile; + + + // 2) Find the artificial alias decl we created, and update it with the actual + foreach (Formal formal in functorApp.functor.Formals) { foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { if (topLevelDecl is AliasModuleDecl amd && amd.Formal == formal) { fakeAliasDecls.Add(topLevelDecl); - amd.Signature = GetDeclFromModuleActual(actual).Signature; - amd.Signature.IsAbstract = false; // Functor formals are considered concrete, since they will always eventually be concretely instantiated + amd.Signature = GetDeclFromModuleActual(formalActualPairs[formal]).Signature; + amd.Signature.IsAbstract = + false; // Functor formals are considered concrete, since they will always eventually be concretely instantiated // TODO: Need this? // amd.Signature.Refines = refinementTransformer.RefinedSig; // or this? @@ -2887,7 +2901,6 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } } } - newDef.IsToBeCompiled = shouldCompile; // 3) // Update each module import that involves a functor (if any) diff --git a/Test/modules/git-issue-52.dfy b/Test/modules/git-issue-52.dfy new file mode 100644 index 00000000000..576e73fb44b --- /dev/null +++ b/Test/modules/git-issue-52.dfy @@ -0,0 +1,20 @@ +abstract module NRIfc { } + +module ContentsTypeMod { +} + +module NodeReplica(nrifc: NRIfc) refines ContentsTypeMod { } + +module RwLockImpl(contentsTypeMod: ContentsTypeMod) { +} + +module Impl(nrifc: NRIfc) { + import opened NodeReplicaApplied = NodeReplica(nrifc) + import opened RwLockImpl(NodeReplicaApplied) +} + +module ConcreteNrifc2 refines NRIfc { } +module ConcreteNrifc1 refines NRIfc { } + +import X = Impl(ConcreteNrifc1) +import Y = Impl(ConcreteNrifc2) From 73023377125429822f7f48b562aa3baaefad38c5 Mon Sep 17 00:00:00 2001 From: Bryan Parno Date: Mon, 18 Oct 2021 22:25:31 -0400 Subject: [PATCH 553/573] Consolidate the checking of whether something should be compiled, and use it in both the Compiler, and when the Resolver checks for duplicate compile names. Closes #52. --- Source/Dafny/Compiler.cs | 19 ++++++++----------- Source/Dafny/Resolver.cs | 11 +++-------- Test/modules/git-issue-52.dfy | 6 ++++++ Test/modules/git-issue-52.dfy.expect | 2 ++ 4 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 Test/modules/git-issue-52.dfy.expect diff --git a/Source/Dafny/Compiler.cs b/Source/Dafny/Compiler.cs index 44c29151d3d..d5e195dcaec 100644 --- a/Source/Dafny/Compiler.cs +++ b/Source/Dafny/Compiler.cs @@ -1107,6 +1107,12 @@ protected virtual void OrganizeModules(Program program, out List compileNameMap = new Dictionary(); foreach (ModuleDefinition m in prog.CompileModules) { - if (m.IsAbstract) { - // the purpose of an abstract module is to skip compilation - continue; - } + if (!Compiler.ShouldCompileModuleDefinition(m)) { continue; } string compileName = m.CompileName; ModuleDefinition priorModDef; if (compileNameMap.TryGetValue(compileName, out priorModDef)) { @@ -2779,8 +2776,6 @@ public override bool Equals(FunctorApplication f1, FunctorApplication f2) { } } - private uint FunctorNameCtr = 0; - public ModuleDecl GetDeclFromModuleFormal(ModuleFormal formal) { if (formal.TypeDecl == null) { formal.TypeDecl = ResolveModuleQualifiedId(formal.TypeName.Root, formal.TypeName, reporter); @@ -2851,7 +2846,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl } LiteralModuleDecl actualLiteral = normalizeDecl(GetDeclFromModuleActual(actual)); - actualLiterals.Append(actualLiteral); + actualLiterals.Add(actualLiteral); if (actualLiteral.ModuleDef is Functor af && actualFunctor == null) { var msg = $"Module {actualLiteral.Name} expects {af.Formals.Count} arguments but didn't receive any!"; @@ -2887,7 +2882,7 @@ private ModuleDecl ApplyFunctor(FunctorApplication functorApp, LiteralModuleDecl // 2) Find the artificial alias decl we created, and update it with the actual - foreach (Formal formal in functorApp.functor.Formals) { + foreach (ModuleFormal formal in functorApp.functor.Formals) { foreach (TopLevelDecl topLevelDecl in newDef.TopLevelDecls) { if (topLevelDecl is AliasModuleDecl amd && amd.Formal == formal) { fakeAliasDecls.Add(topLevelDecl); diff --git a/Test/modules/git-issue-52.dfy b/Test/modules/git-issue-52.dfy index 576e73fb44b..c5321febd22 100644 --- a/Test/modules/git-issue-52.dfy +++ b/Test/modules/git-issue-52.dfy @@ -1,3 +1,6 @@ +// RUN: %dafny /compileTarget:cpp "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + abstract module NRIfc { } module ContentsTypeMod { @@ -18,3 +21,6 @@ module ConcreteNrifc1 refines NRIfc { } import X = Impl(ConcreteNrifc1) import Y = Impl(ConcreteNrifc2) + +method Main() { +} diff --git a/Test/modules/git-issue-52.dfy.expect b/Test/modules/git-issue-52.dfy.expect new file mode 100644 index 00000000000..012f5b99379 --- /dev/null +++ b/Test/modules/git-issue-52.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 0 verified, 0 errors From a2de3408171ef4247e45db4659a243638ba1b8bd Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Fri, 4 Feb 2022 22:15:01 -0500 Subject: [PATCH 554/573] parser changes for gbassert --- Source/Dafny/Dafny.atg | 36 ++++++++++++++++++++++++++++++++++-- Source/Dafny/DafnyAst.cs | 4 +++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 82b244c774d..5e62dd277cf 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -2333,6 +2333,7 @@ OneStmt | IfStmt | WhileStmt | AssertStmt + | GBAssertStmt | AssumeStmt | BreakStmt | CalcStmt @@ -2931,13 +2932,43 @@ AssertStmt ";" ) (. if (dotdotdot != null) { - s = new SkeletonStatement(new AssertStmt(x, t, new LiteralExpr(x, true), null, null, attrs), dotdotdot, null); + s = new SkeletonStatement(new AssertStmt(x, t, new LiteralExpr(x, true), null, null, attrs, false), dotdotdot, null); } else { - s = new AssertStmt(x, t, e, proof, lbl == null ? null : new AssertLabel(lbl, lbl.val), attrs); + s = new AssertStmt(x, t, e, proof, lbl == null ? null : new AssertLabel(lbl, lbl.val), attrs, false); } .) . +GBAssertStmt += (. Contract.Ensures(Contract.ValueAtReturn(out s) != null); IToken/*!*/ x; + Expression e = dummyExpr; Attributes attrs = null; + IToken dotdotdot = null; + BlockStmt proof = null; + IToken proofStart, proofEnd; + IToken lbl = null; + .) + "gbassert" (. x = t; .) + { Attribute } + ( [ IF(IsLabel(!inExprContext)) + LabelName ":" + ] + Expression + ( "by" + BlockStmt + | ";" + ) + | ellipsis (. dotdotdot = t; .) + ";" + ) + (. if (dotdotdot != null) { + s = new SkeletonStatement(new AssertStmt(x, t, new LiteralExpr(x, true), null, null, attrs, true), dotdotdot, null); + } else { + s = new AssertStmt(x, t, e, proof, lbl == null ? null : new AssertLabel(lbl, lbl.val), attrs, true); + } + .) + . + + /*------------------------------------------------------------------------*/ ExpectStmt = (. Contract.Ensures(Contract.ValueAtReturn(out s) != null); IToken/*!*/ x; @@ -3865,6 +3896,7 @@ IfExpression = (. s = dummyStmt; .) ( AssertStmt + | GBAssertStmt | ExpectStmt | AssumeStmt | RevealStmt diff --git a/Source/Dafny/DafnyAst.cs b/Source/Dafny/DafnyAst.cs index 9f7cf637621..d7a89f8f42f 100644 --- a/Source/Dafny/DafnyAst.cs +++ b/Source/Dafny/DafnyAst.cs @@ -6971,13 +6971,15 @@ public override IEnumerable SubExpressions { public class AssertStmt : PredicateStmt { public readonly BlockStmt Proof; public readonly AssertLabel Label; - public AssertStmt(IToken tok, IToken endTok, Expression expr, BlockStmt/*?*/ proof, AssertLabel/*?*/ label, Attributes attrs) + public readonly bool Grobner; + public AssertStmt(IToken tok, IToken endTok, Expression expr, BlockStmt/*?*/ proof, AssertLabel/*?*/ label, Attributes attrs, bool grobner=false) : base(tok, endTok, expr, attrs) { Contract.Requires(tok != null); Contract.Requires(endTok != null); Contract.Requires(expr != null); Proof = proof; Label = label; + Grobner = grobner; } public override IEnumerable SubStatements { get { From 8793a19f286153021596f0b72821c0bf394c5403 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Sun, 6 Feb 2022 19:30:03 -0500 Subject: [PATCH 555/573] a skeleton for SingularDriver in Translator --- Source/Dafny/Translator.cs | 74 +++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 645341c90cb..e88d64a5eae 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -6,6 +6,7 @@ // //----------------------------------------------------------------------------- using System; +using System.IO; using System.Collections.Generic; using System.Linq; using System.Numerics; @@ -10289,6 +10290,68 @@ string CustomErrorMessage(Attributes attrs) return null; } } + + class SingularDriver + { + public HashSet varibles; + static uint tempVarCount = 0; + TextWriter writer; + + void ParseSubExpr(Expression expr) + { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + this.ParseSubExpr(binExpr.E0); + this.ParseSubExpr(binExpr.E1); + } else if (expr is NameSegment) { + this.varibles.Add((expr as NameSegment).Name); + // Console.WriteLine("name: {0}", ); + } else if (expr is LiteralExpr) { + Console.WriteLine("value: {0}", (expr as LiteralExpr).Value); + Console.WriteLine("value: {0}", (expr as LiteralExpr).tok); + // Console.WriteLine("value: {0}", (expr as LiteralExpr).Type); + } else { + Console.WriteLine("unhandled expr: {0}", expr); + } + } + + void ParseGeneratorExpr(Expression expr) { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + if (binExpr.Op != BinaryExpr.Opcode.Eq) { + Console.WriteLine("Error: Grobner generator expression should be an equality or congruence"); + throw new cce.UnreachableException(); + } + this.ParseSubExpr(binExpr.E0); + this.ParseSubExpr(binExpr.E1); + } else { + Console.WriteLine("unhandled generator expr: {0}", expr); + } + } + + public SingularDriver(Statement stmt) { + if (stmt == null || !(stmt is AssertStmt)) { + Console.WriteLine("Error: Grobner Assert is not an AssertStmt"); + throw new cce.UnreachableException(); + } + this.varibles = new HashSet(); + this.writer = new StreamWriter(Console.OpenStandardOutput()); + var assertStmt = stmt as AssertStmt; + var proof = assertStmt.Proof; + // this.ParseExpr(assertStmt); + + foreach (Statement ss in proof.Body) { + if (ss is AssertStmt) { + this.ParseGeneratorExpr((ss as AssertStmt).Expr); + } else if (ss is AssumeStmt) { + this.ParseGeneratorExpr((ss as AssumeStmt).Expr); + } else { + Console.WriteLine("Error: Unexpected Grobner Poorf Body Statement {0}", ss); + throw new cce.UnreachableException(); + } + } + } + } void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals, ExpressionTranslator etran) { @@ -10321,7 +10384,16 @@ void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals if (assertStmt != null && assertStmt.Proof != null) { proofBuilder = new BoogieStmtListBuilder(this); AddComment(proofBuilder, stmt, "assert statement proof"); - TrStmt(((AssertStmt)stmt).Proof, proofBuilder, locals, etran); + if (assertStmt.Grobner) { + AddComment(proofBuilder, stmt, "assert by Grobner"); + var singularDriver = new SingularDriver(stmt); + // append assume false, the toks are messed up? + var falseBody = new LiteralExpr(stmt.Tok, false); + falseBody.Type = new BoolType(); + var assumeFalse = new AssumeStmt(stmt.Tok, stmt.EndTok, falseBody, null); + assertStmt.Proof.Body.Add(assumeFalse); + } + TrStmt(assertStmt.Proof, proofBuilder, locals, etran); } else if (assertStmt != null && assertStmt.Label != null) { proofBuilder = new BoogieStmtListBuilder(this); AddComment(proofBuilder, stmt, "assert statement proof"); From d3f239cf6efacd04700f4ba388f81654fef3420e Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Sun, 6 Feb 2022 21:08:15 -0500 Subject: [PATCH 556/573] a very basic version --- Source/Dafny/Translator.cs | 131 +++++++++++++++++++++++++++++++------ 1 file changed, 111 insertions(+), 20 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index e88d64a5eae..5792d53e89d 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -10293,63 +10293,154 @@ string CustomErrorMessage(Attributes attrs) class SingularDriver { - public HashSet varibles; - static uint tempVarCount = 0; + // Dictionary ufMap; + HashSet variables; + List polys; + uint tempVarCount = 0; TextWriter writer; - void ParseSubExpr(Expression expr) - { + string AllocateFreshTemp() { + var name = String.Format("tpv_{0}", this.tempVarCount); + this.tempVarCount += 1; + this.variables.Add(name); + return name; + } + + string EncodeSubExpr(Expression expr) { if (expr is BinaryExpr) { var binExpr = expr as BinaryExpr; - this.ParseSubExpr(binExpr.E0); - this.ParseSubExpr(binExpr.E1); + var op = binExpr.Op; + var left = this.EncodeSubExpr(binExpr.E0); + var right = this.EncodeSubExpr(binExpr.E1); + + if (op == BinaryExpr.Opcode.Add) { + return String.Format("({0} + {1})", left, right); + } else if (op == BinaryExpr.Opcode.Sub) { + return String.Format("({0} - {1})", left, right); + } else if (op == BinaryExpr.Opcode.Mul) { + return String.Format("({0} * {1})", left, right); + } else { + Console.WriteLine("unhandled expr: {0}", expr); + throw new cce.UnreachableException(); + } } else if (expr is NameSegment) { - this.varibles.Add((expr as NameSegment).Name); - // Console.WriteLine("name: {0}", ); + var name = (expr as NameSegment).Name; + this.variables.Add(name); + return name; } else if (expr is LiteralExpr) { - Console.WriteLine("value: {0}", (expr as LiteralExpr).Value); - Console.WriteLine("value: {0}", (expr as LiteralExpr).tok); - // Console.WriteLine("value: {0}", (expr as LiteralExpr).Type); + return String.Format("({0})", (expr as LiteralExpr).Value) ; } else { Console.WriteLine("unhandled expr: {0}", expr); + throw new cce.UnreachableException(); + } + } + + string EncodeEqualityPoly(Expression e0, Expression e1) { + var left = this.EncodeSubExpr(e0); + var right = this.EncodeSubExpr(e1); + var poly = String.Format("{0} - {1}", left, right); + return poly; + } + + void EncodeGeneratorPoly(Expression expr) { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + if (binExpr.Op != BinaryExpr.Opcode.Eq) { + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + polys.Add(this.EncodeEqualityPoly(binExpr.E0, binExpr.E1)); + } else if (expr is ApplySuffix) { + var appplyExpr = expr as ApplySuffix; + if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + var left = this.EncodeSubExpr(appplyExpr.Args[0]); + var right = this.EncodeSubExpr(appplyExpr.Args[1]); + var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + var temp = this.AllocateFreshTemp(); + var poly = String.Format("{0} - {1} - {2} * {3}", left, right, mod, temp); + polys.Add(poly); + } else { + Console.WriteLine("unhandled generator expr: {0}", expr); + throw new cce.UnreachableException(); } } - void ParseGeneratorExpr(Expression expr) { + string EncodeQueryPoly(Expression expr) { if (expr is BinaryExpr) { var binExpr = expr as BinaryExpr; if (binExpr.Op != BinaryExpr.Opcode.Eq) { - Console.WriteLine("Error: Grobner generator expression should be an equality or congruence"); + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + return this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); + } else if (expr is ApplySuffix) { + var appplyExpr = expr as ApplySuffix; + if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); throw new cce.UnreachableException(); } - this.ParseSubExpr(binExpr.E0); - this.ParseSubExpr(binExpr.E1); + var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + // add the mod to the generators + polys.Add(mod); + return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); } else { Console.WriteLine("unhandled generator expr: {0}", expr); + throw new cce.UnreachableException(); } } + + public SingularDriver(Statement stmt) { if (stmt == null || !(stmt is AssertStmt)) { - Console.WriteLine("Error: Grobner Assert is not an AssertStmt"); + Console.WriteLine("Error: Grobner assert should be an AssertStmt"); throw new cce.UnreachableException(); } - this.varibles = new HashSet(); + // this.ufMap = new Dictionary(); + this.variables = new HashSet(); this.writer = new StreamWriter(Console.OpenStandardOutput()); + this.polys = new List(); var assertStmt = stmt as AssertStmt; var proof = assertStmt.Proof; - // this.ParseExpr(assertStmt); foreach (Statement ss in proof.Body) { if (ss is AssertStmt) { - this.ParseGeneratorExpr((ss as AssertStmt).Expr); + this.EncodeGeneratorPoly((ss as AssertStmt).Expr); } else if (ss is AssumeStmt) { - this.ParseGeneratorExpr((ss as AssumeStmt).Expr); + this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); } else { Console.WriteLine("Error: Unexpected Grobner Poorf Body Statement {0}", ss); throw new cce.UnreachableException(); } } + + var poly = EncodeQueryPoly(assertStmt.Expr); + + this.writer.Write("ring r=integer,("); + + string separator = ""; + foreach (string v in this.variables) { + this.writer.Write(separator); + this.writer.Write(v); + separator = ","; + } + this.writer.Write("),dp;\n"); + + separator = ""; + this.writer.WriteLine("ideal I = "); + foreach (string s in this.polys) { + this.writer.Write(separator); + this.writer.Write(s); + separator = ",\n"; + } + this.writer.Write(";\n"); + this.writer.WriteLine("ideal G = groebner(I);"); + this.writer.WriteLine("reduce({0}, G);", poly); + this.writer.WriteLine("quit;"); + this.writer.Flush(); } } From bbcc107892bf4181721f65c0cb20e002c7bc093d Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 15:52:04 -0500 Subject: [PATCH 557/573] open a subprocess for Singular --- Source/Dafny/Translator.cs | 337 ++++++++++++++++++++----------------- 1 file changed, 184 insertions(+), 153 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 5792d53e89d..95a271ede51 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -10,6 +10,7 @@ using System.Collections.Generic; using System.Linq; using System.Numerics; +using System.Diagnostics; using System.Diagnostics.Contracts; using Bpl = Microsoft.Boogie; using BplParser = Microsoft.Boogie.Parser; @@ -95,6 +96,189 @@ public string FreshNumericId(string prefix = "") } } + class SingularDriver + { + uint tempVarCount = 0; + static string tempVarPrefix = "tpv_"; + + List polys; + HashSet variables; + + TextWriter writer; + + string AllocateFreshTemp() { + var name = String.Format("{0}{1}", SingularDriver.tempVarPrefix, this.tempVarCount); + this.tempVarCount += 1; + this.variables.Add(name); + return name; + } + + string EncodeSubExpr(Expression expr) { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + var op = binExpr.Op; + var left = this.EncodeSubExpr(binExpr.E0); + var right = this.EncodeSubExpr(binExpr.E1); + + if (op == BinaryExpr.Opcode.Add) { + return String.Format("({0} + {1})", left, right); + } else if (op == BinaryExpr.Opcode.Sub) { + return String.Format("({0} - {1})", left, right); + } else if (op == BinaryExpr.Opcode.Mul) { + return String.Format("({0} * {1})", left, right); + } else { + Console.WriteLine("unhandled expr: {0}", expr); + throw new cce.UnreachableException(); + } + } else if (expr is NameSegment) { + var name = (expr as NameSegment).Name; + this.variables.Add(name); + return name; + } else if (expr is LiteralExpr) { + return String.Format("({0})", (expr as LiteralExpr).Value) ; + } else { + Console.WriteLine("unhandled expr: {0}", expr); + throw new cce.UnreachableException(); + } + } + + string EncodeEqualityPoly(Expression e0, Expression e1) { + var left = this.EncodeSubExpr(e0); + var right = this.EncodeSubExpr(e1); + var poly = String.Format("{0} - {1}", left, right); + return poly; + } + + void EncodeGeneratorPoly(Expression expr) { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + if (binExpr.Op != BinaryExpr.Opcode.Eq) { + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + polys.Add(this.EncodeEqualityPoly(binExpr.E0, binExpr.E1)); + } else if (expr is ApplySuffix) { + var appplyExpr = expr as ApplySuffix; + if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { + Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + var left = this.EncodeSubExpr(appplyExpr.Args[0]); + var right = this.EncodeSubExpr(appplyExpr.Args[1]); + var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + var temp = this.AllocateFreshTemp(); + var poly = String.Format("{0} - {1} - {2} * {3}", left, right, mod, temp); + polys.Add(poly); + } else { + Console.WriteLine("unhandled generator expr: {0}", expr); + throw new cce.UnreachableException(); + } + } + + string EncodeQueryPoly(Expression expr) { + if (expr is BinaryExpr) { + var binExpr = expr as BinaryExpr; + if (binExpr.Op != BinaryExpr.Opcode.Eq) { + Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + return this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); + } else if (expr is ApplySuffix) { + var appplyExpr = expr as ApplySuffix; + if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { + Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); + throw new cce.UnreachableException(); + } + var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + // add the mod to the generators + polys.Add(mod); + return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); + } else { + Console.WriteLine("unhandled generator expr: {0}", expr); + throw new cce.UnreachableException(); + } + } + + void EncodeQuery(AssertStmt assertStmt) { + var proof = assertStmt.Proof; + + foreach (Statement ss in proof.Body) { + if (ss is AssertStmt) { + this.EncodeGeneratorPoly((ss as AssertStmt).Expr); + } else if (ss is AssumeStmt) { + this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); + } else { + Console.WriteLine("Error: Unexpected Grobner poorf body statement {0}", ss); + throw new cce.UnreachableException(); + } + } + + var poly = EncodeQueryPoly(assertStmt.Expr); + + this.writer.Write("ring r=integer,("); + + string separator = ""; + foreach (string v in this.variables) { + this.writer.Write(separator); + this.writer.Write(v); + separator = ","; + } + this.writer.Write("),dp;\n"); + + separator = ""; + this.writer.WriteLine("ideal I = "); + foreach (string s in this.polys) { + this.writer.Write(separator); + this.writer.Write(s); + separator = ",\n"; + } + this.writer.Write(";\n"); + this.writer.WriteLine("ideal G = groebner(I);"); + this.writer.WriteLine("reduce({0}, G);", poly); + this.writer.WriteLine("quit;"); + this.writer.Flush(); + } + + public SingularDriver(Statement stmt) { + if (stmt == null || !(stmt is AssertStmt)) { + Console.WriteLine("Error: Grobner assert should be an AssertStmt"); + throw new cce.UnreachableException(); + } + this.variables = new HashSet(); + // this.writer = new StreamWriter(Console.OpenStandardOutput()); + this.writer = new StreamWriter("test.sv"); + this.polys = new List(); + this.EncodeQuery(stmt as AssertStmt); + + var proc = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "Singular", + Arguments = "--quiet test.sv", + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true + } + }; + + var outputBuilder = new StringBuilder(); + proc.OutputDataReceived += new DataReceivedEventHandler((sender, e) => + { outputBuilder.Append(e.Data); }); + + proc.Start(); + proc.BeginOutputReadLine(); + proc.WaitForExit(1000); + + if (outputBuilder.ToString() != "0") { + Console.WriteLine("Error: Grobner assert failed"); + throw new cce.UnreachableException(); + } else { + Console.WriteLine("Grobner assert succeeded"); + } + } + } + public class Translator { ErrorReporter reporter; // TODO(wuestholz): Enable this once Dafny's recommended Z3 version includes changeset 0592e765744497a089c42021990740f303901e67. @@ -10290,159 +10474,6 @@ string CustomErrorMessage(Attributes attrs) return null; } } - - class SingularDriver - { - // Dictionary ufMap; - HashSet variables; - List polys; - uint tempVarCount = 0; - TextWriter writer; - - string AllocateFreshTemp() { - var name = String.Format("tpv_{0}", this.tempVarCount); - this.tempVarCount += 1; - this.variables.Add(name); - return name; - } - - string EncodeSubExpr(Expression expr) { - if (expr is BinaryExpr) { - var binExpr = expr as BinaryExpr; - var op = binExpr.Op; - var left = this.EncodeSubExpr(binExpr.E0); - var right = this.EncodeSubExpr(binExpr.E1); - - if (op == BinaryExpr.Opcode.Add) { - return String.Format("({0} + {1})", left, right); - } else if (op == BinaryExpr.Opcode.Sub) { - return String.Format("({0} - {1})", left, right); - } else if (op == BinaryExpr.Opcode.Mul) { - return String.Format("({0} * {1})", left, right); - } else { - Console.WriteLine("unhandled expr: {0}", expr); - throw new cce.UnreachableException(); - } - } else if (expr is NameSegment) { - var name = (expr as NameSegment).Name; - this.variables.Add(name); - return name; - } else if (expr is LiteralExpr) { - return String.Format("({0})", (expr as LiteralExpr).Value) ; - } else { - Console.WriteLine("unhandled expr: {0}", expr); - throw new cce.UnreachableException(); - } - } - - string EncodeEqualityPoly(Expression e0, Expression e1) { - var left = this.EncodeSubExpr(e0); - var right = this.EncodeSubExpr(e1); - var poly = String.Format("{0} - {1}", left, right); - return poly; - } - - void EncodeGeneratorPoly(Expression expr) { - if (expr is BinaryExpr) { - var binExpr = expr as BinaryExpr; - if (binExpr.Op != BinaryExpr.Opcode.Eq) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } - polys.Add(this.EncodeEqualityPoly(binExpr.E0, binExpr.E1)); - } else if (expr is ApplySuffix) { - var appplyExpr = expr as ApplySuffix; - if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } - var left = this.EncodeSubExpr(appplyExpr.Args[0]); - var right = this.EncodeSubExpr(appplyExpr.Args[1]); - var mod = this.EncodeSubExpr(appplyExpr.Args[2]); - var temp = this.AllocateFreshTemp(); - var poly = String.Format("{0} - {1} - {2} * {3}", left, right, mod, temp); - polys.Add(poly); - } else { - Console.WriteLine("unhandled generator expr: {0}", expr); - throw new cce.UnreachableException(); - } - } - - string EncodeQueryPoly(Expression expr) { - if (expr is BinaryExpr) { - var binExpr = expr as BinaryExpr; - if (binExpr.Op != BinaryExpr.Opcode.Eq) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } - return this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); - } else if (expr is ApplySuffix) { - var appplyExpr = expr as ApplySuffix; - if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } - var mod = this.EncodeSubExpr(appplyExpr.Args[2]); - // add the mod to the generators - polys.Add(mod); - return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); - } else { - Console.WriteLine("unhandled generator expr: {0}", expr); - throw new cce.UnreachableException(); - } - } - - - - public SingularDriver(Statement stmt) { - if (stmt == null || !(stmt is AssertStmt)) { - Console.WriteLine("Error: Grobner assert should be an AssertStmt"); - throw new cce.UnreachableException(); - } - // this.ufMap = new Dictionary(); - this.variables = new HashSet(); - this.writer = new StreamWriter(Console.OpenStandardOutput()); - this.polys = new List(); - var assertStmt = stmt as AssertStmt; - var proof = assertStmt.Proof; - - foreach (Statement ss in proof.Body) { - if (ss is AssertStmt) { - this.EncodeGeneratorPoly((ss as AssertStmt).Expr); - } else if (ss is AssumeStmt) { - this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); - } else { - Console.WriteLine("Error: Unexpected Grobner Poorf Body Statement {0}", ss); - throw new cce.UnreachableException(); - } - } - - var poly = EncodeQueryPoly(assertStmt.Expr); - - this.writer.Write("ring r=integer,("); - - string separator = ""; - foreach (string v in this.variables) { - this.writer.Write(separator); - this.writer.Write(v); - separator = ","; - } - this.writer.Write("),dp;\n"); - - separator = ""; - this.writer.WriteLine("ideal I = "); - foreach (string s in this.polys) { - this.writer.Write(separator); - this.writer.Write(s); - separator = ",\n"; - } - this.writer.Write(";\n"); - this.writer.WriteLine("ideal G = groebner(I);"); - this.writer.WriteLine("reduce({0}, G);", poly); - this.writer.WriteLine("quit;"); - this.writer.Flush(); - } - } void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals, ExpressionTranslator etran) { From a244118ba389e0312880b1388c18eb453709a8d8 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 17:22:59 -0500 Subject: [PATCH 558/573] cannot get WaitForExit with timeout working for whatever reason --- Scripts/singular.sh | 1 + Source/Dafny/Translator.cs | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) create mode 100755 Scripts/singular.sh diff --git a/Scripts/singular.sh b/Scripts/singular.sh new file mode 100755 index 00000000000..a4e6416c4a8 --- /dev/null +++ b/Scripts/singular.sh @@ -0,0 +1 @@ +timeout 5 Singular --quiet $1 diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 95a271ede51..f8001abe3f2 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -135,7 +135,10 @@ string EncodeSubExpr(Expression expr) { this.variables.Add(name); return name; } else if (expr is LiteralExpr) { - return String.Format("({0})", (expr as LiteralExpr).Value) ; + return String.Format("({0})", (expr as LiteralExpr).Value); + } else if (expr is NegationExpression) { + var sub = this.EncodeSubExpr((expr as NegationExpression).E); + return String.Format("(-{0})", sub); } else { Console.WriteLine("unhandled expr: {0}", expr); throw new cce.UnreachableException(); @@ -254,24 +257,22 @@ public SingularDriver(Statement stmt) { { StartInfo = new ProcessStartInfo { - FileName = "Singular", - Arguments = "--quiet test.sv", + FileName = "bash", + Arguments = "/home/yizhou7/dafny/Scripts/singular.sh test.sv", + // FileName = "Singular", + // Arguments = "--quiet test.sv", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }; - var outputBuilder = new StringBuilder(); - proc.OutputDataReceived += new DataReceivedEventHandler((sender, e) => - { outputBuilder.Append(e.Data); }); - proc.Start(); - proc.BeginOutputReadLine(); - proc.WaitForExit(1000); + string output = proc.StandardOutput.ReadToEnd(); + proc.WaitForExit(); - if (outputBuilder.ToString() != "0") { - Console.WriteLine("Error: Grobner assert failed"); + if (output != "0\n") { + Console.WriteLine("Error: Grobner assert failed with: {0}", output); throw new cce.UnreachableException(); } else { Console.WriteLine("Grobner assert succeeded"); From 3aab717c9022d4ff9b708cfa9c742570d2511b99 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 17:26:47 -0500 Subject: [PATCH 559/573] hardcode timeout in process start --- Scripts/singular.sh | 1 - Source/Dafny/Translator.cs | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) delete mode 100755 Scripts/singular.sh diff --git a/Scripts/singular.sh b/Scripts/singular.sh deleted file mode 100755 index a4e6416c4a8..00000000000 --- a/Scripts/singular.sh +++ /dev/null @@ -1 +0,0 @@ -timeout 5 Singular --quiet $1 diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index f8001abe3f2..49a37be65bc 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -257,10 +257,8 @@ public SingularDriver(Statement stmt) { { StartInfo = new ProcessStartInfo { - FileName = "bash", - Arguments = "/home/yizhou7/dafny/Scripts/singular.sh test.sv", - // FileName = "Singular", - // Arguments = "--quiet test.sv", + FileName = "timeout", + Arguments = "5 Singular --quiet test.sv", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true @@ -268,8 +266,8 @@ public SingularDriver(Statement stmt) { }; proc.Start(); - string output = proc.StandardOutput.ReadToEnd(); proc.WaitForExit(); + string output = proc.StandardOutput.ReadToEnd(); if (output != "0\n") { Console.WriteLine("Error: Grobner assert failed with: {0}", output); From fc17e5e144fd967b166df9a89ad73f9ea6cb3fb3 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 18:51:33 -0500 Subject: [PATCH 560/573] handle certain sub expressions as opaque --- Source/Dafny/Translator.cs | 44 +++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 49a37be65bc..836a94f7b7a 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -103,6 +103,7 @@ class SingularDriver List polys; HashSet variables; + Dictionary opaqueExprs; TextWriter writer; @@ -113,6 +114,28 @@ string AllocateFreshTemp() { return name; } + string OpacifySubExpr(Expression expr) { + if (expr is SeqSelectExpr) { + var seqSelExpr = expr as SeqSelectExpr; + if (!seqSelExpr.SelectOne) { + Console.WriteLine("unhandled seqSelExpr"); + throw new cce.UnreachableException(); + } + var seq = this.OpacifySubExpr(seqSelExpr.Seq); + var index = this.OpacifySubExpr(seqSelExpr.E0); + return String.Format("{0}[{1}]", seq, index); + } else if (expr is NameSegment) { + // do not add to the variable set + var name = (expr as NameSegment).Name; + return name; + } else if (expr is LiteralExpr) { + return String.Format("{0}", (expr as LiteralExpr).Value); + } else { + Console.WriteLine("unhandled OpacifySubExpr: {0}", expr); + throw new cce.UnreachableException(); + } + } + string EncodeSubExpr(Expression expr) { if (expr is BinaryExpr) { var binExpr = expr as BinaryExpr; @@ -139,9 +162,18 @@ string EncodeSubExpr(Expression expr) { } else if (expr is NegationExpression) { var sub = this.EncodeSubExpr((expr as NegationExpression).E); return String.Format("(-{0})", sub); + } else if (expr is ParensExpression) { + var sub = this.EncodeSubExpr((expr as ParensExpression).E); + return String.Format("({0})", sub); } else { - Console.WriteLine("unhandled expr: {0}", expr); - throw new cce.UnreachableException(); + // other expressions are treated as opaque + // we offer limited support to create temp variables that represent their values + var sub = this.OpacifySubExpr(expr); + if (!this.opaqueExprs.ContainsKey(sub)) { + var temp = this.AllocateFreshTemp(); + this.opaqueExprs.Add(sub, temp); + } + return this.opaqueExprs[sub]; } } @@ -251,14 +283,15 @@ public SingularDriver(Statement stmt) { // this.writer = new StreamWriter(Console.OpenStandardOutput()); this.writer = new StreamWriter("test.sv"); this.polys = new List(); + this.opaqueExprs = new Dictionary(); this.EncodeQuery(stmt as AssertStmt); var proc = new Process { StartInfo = new ProcessStartInfo { - FileName = "timeout", - Arguments = "5 Singular --quiet test.sv", + FileName = "Singular", + Arguments = "--quiet test.sv", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true @@ -266,7 +299,8 @@ public SingularDriver(Statement stmt) { }; proc.Start(); - proc.WaitForExit(); + // set timeout + proc.WaitForExit(5000); string output = proc.StandardOutput.ReadToEnd(); if (output != "0\n") { From 3960f0bed40406f26266b2edad92ee9bb8aeed1e Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 19:19:06 -0500 Subject: [PATCH 561/573] use separate files for queries --- Source/Dafny/Translator.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 836a94f7b7a..fbfe7d0991e 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -98,6 +98,8 @@ public string FreshNumericId(string prefix = "") class SingularDriver { + static uint queryCount = 0; + uint tempVarCount = 0; static string tempVarPrefix = "tpv_"; @@ -281,7 +283,10 @@ public SingularDriver(Statement stmt) { } this.variables = new HashSet(); // this.writer = new StreamWriter(Console.OpenStandardOutput()); - this.writer = new StreamWriter("test.sv"); + var queryFileName = String.Format("test{0}.sv", queryCount); + SingularDriver.queryCount += 1; + + this.writer = new StreamWriter(queryFileName); this.polys = new List(); this.opaqueExprs = new Dictionary(); this.EncodeQuery(stmt as AssertStmt); @@ -291,7 +296,7 @@ public SingularDriver(Statement stmt) { StartInfo = new ProcessStartInfo { FileName = "Singular", - Arguments = "--quiet test.sv", + Arguments = String.Format("--quiet {0}", queryFileName), UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true @@ -309,6 +314,8 @@ public SingularDriver(Statement stmt) { } else { Console.WriteLine("Grobner assert succeeded"); } + + // File.Delete(queryFileName); } } From 0b1502067862d14272d9b25957ce8c8e507f0e86 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Mon, 7 Feb 2022 19:19:28 -0500 Subject: [PATCH 562/573] add some use cases --- Test/gb_test.dfy | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 Test/gb_test.dfy diff --git a/Test/gb_test.dfy b/Test/gb_test.dfy new file mode 100644 index 00000000000..87568d7e713 --- /dev/null +++ b/Test/gb_test.dfy @@ -0,0 +1,117 @@ +module gb_test { + predicate IsModEquivalent(x: int, y: int, m: int) + requires m > 0 + // ensures x % m == y % m <==> (x - y) % m == 0 + { + (x - y) % m == 0 // same as x % n == y % n, but easier to do induction on x - y than x and y separately + } + + + lemma test(x: int, y: int, z: int, m: int) + requires m > 0; + requires IsModEquivalent(x, y, m); + { + gbassert IsModEquivalent(x * z, y * z, m) by { + assert IsModEquivalent(x, y, m); + } + } + + lemma test2(p2_full: int, BASE: int, + ui: int, m0: int, m0d: int, p1_lh: int, + p1_full: int) + + requires BASE > 0; + requires p2_full == ui * m0 + p1_lh; + requires IsModEquivalent(p1_full, p1_lh, BASE); + requires IsModEquivalent(m0d * m0, -1, BASE); + requires IsModEquivalent(ui, p1_full * m0d, BASE); + { + gbassert IsModEquivalent(p2_full, 0, BASE) by { + assert p2_full == ui * m0 + p1_lh; + assert IsModEquivalent(p1_full, p1_lh, BASE); + assert IsModEquivalent(m0d * m0, -1, BASE); + assert IsModEquivalent(ui, p1_full * m0d, BASE); + } + } + + lemma mul256_canonize_lemma( + B: nat, + p0: nat, p1: nat, p2: nat, p3: nat, + p4: nat, p5: nat, p6: nat, p7: nat, + p8: nat, p9: nat, p10: nat, p11: nat, + p12: nat, p13: nat, p14: nat, p15: nat, + x: nat, x_0: nat, x_1: nat, x_2: nat, x_3: nat, + y: nat, y_0: nat, y_1: nat,y_2: nat, y_3: nat) + + requires + && p0 == x_0 * y_0 + && p1 == x_1 * y_0 + && p2 == x_0 * y_1 + && p3 == x_2 * y_0 + && p4 == x_1 * y_1 + && p5 == x_0 * y_2 + && p6 == x_3 * y_0 + && p7 == x_2 * y_1 + && p8 == x_1 * y_2 + && p9 == x_0 * y_3 + && p10 == x_3 * y_1 + && p11 == x_2 * y_2 + && p12 == x_1 * y_3 + && p13 == x_3 * y_2 + && p14 == x_2 * y_3 + && p15 == x_3 * y_3 + requires + && x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B + && y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B + ensures + x * y + == + p0 + (p1 + p2) * B + (p3 + p4 + p5) * B * B + (p6 + p7 + p8 + p9) * B * B * B + (p10 + p11 + p12) * B * B * B * B + (p13 + p14) * B * B * B * B * B + p15 * B * B * B * B * B * B; + { + gbassert x * y == p0 + (p1 + p2) * B + (p3 + p4 + p5) * B * B + (p6 + p7 + p8 + p9) * B * B * B + (p10 + p11 + p12) * B * B * B * B + (p13 + p14) * B * B * B * B * B + p15 * B * B * B * B * B * B by { + assert x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B; + assert y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B; + assert p0 == x_0 * y_0; + assert p1 == x_1 * y_0; + assert p2 == x_0 * y_1; + assert p3 == x_2 * y_0; + assert p4 == x_1 * y_1; + assert p5 == x_0 * y_2; + assert p6 == x_3 * y_0; + assert p7 == x_2 * y_1; + assert p8 == x_1 * y_2; + assert p9 == x_0 * y_3; + assert p10 == x_3 * y_1; + assert p11 == x_2 * y_2; + assert p12 == x_1 * y_3; + assert p13 == x_3 * y_2; + assert p14 == x_2 * y_3; + assert p15 == x_3 * y_3; + } + } + + lemma mont_loop_inv_pre_lemma( + xi: nat, + ui: nat, + m0d: nat, + p1: nat, + p1_lh: nat, + p2: nat, + y: seq, + m: seq, + a: seq, + BASE: nat) + requires BASE > 0; + requires |m| == |a| == |y| > 0; + requires IsModEquivalent(p1, p1_lh, BASE); + requires p1 == xi * y[0] + a[0]; + // requires p2 == ui * m[0] + p1_lh; + requires ui == p1_lh * m0d; + { + gbassert IsModEquivalent(ui, (a[0] + y[0] * xi) * m0d, BASE) by { + assert IsModEquivalent(p1, p1_lh, BASE); + assert p1 == xi * y[0] + a[0]; + assert ui == p1_lh * m0d; + } + } +} From c63e273f0648d527f49a9044508ee8cf8798e3c1 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Tue, 8 Feb 2022 14:00:08 -0500 Subject: [PATCH 563/573] address some comments from @parno --- Source/Dafny/Translator.cs | 88 ++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index fbfe7d0991e..9279a2e661f 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -99,16 +99,20 @@ public string FreshNumericId(string prefix = "") class SingularDriver { static uint queryCount = 0; - - uint tempVarCount = 0; static string tempVarPrefix = "tpv_"; + uint tempVarCount = 0; List polys; HashSet variables; Dictionary opaqueExprs; TextWriter writer; + enum AssertType { + Equality, + Congruence + } + string AllocateFreshTemp() { var name = String.Format("{0}{1}", SingularDriver.tempVarPrefix, this.tempVarCount); this.tempVarCount += 1; @@ -117,8 +121,7 @@ string AllocateFreshTemp() { } string OpacifySubExpr(Expression expr) { - if (expr is SeqSelectExpr) { - var seqSelExpr = expr as SeqSelectExpr; + if (expr is SeqSelectExpr seqSelExpr) { if (!seqSelExpr.SelectOne) { Console.WriteLine("unhandled seqSelExpr"); throw new cce.UnreachableException(); @@ -139,8 +142,7 @@ string OpacifySubExpr(Expression expr) { } string EncodeSubExpr(Expression expr) { - if (expr is BinaryExpr) { - var binExpr = expr as BinaryExpr; + if (expr is BinaryExpr binExpr) { var op = binExpr.Op; var left = this.EncodeSubExpr(binExpr.E0); var right = this.EncodeSubExpr(binExpr.E1); @@ -186,26 +188,37 @@ string EncodeEqualityPoly(Expression e0, Expression e1) { return poly; } - void EncodeGeneratorPoly(Expression expr) { - if (expr is BinaryExpr) { - var binExpr = expr as BinaryExpr; + AssertType CheckAssertType(Expression expr) { + if (expr is BinaryExpr binExpr) { if (binExpr.Op != BinaryExpr.Opcode.Eq) { Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); throw new cce.UnreachableException(); } - polys.Add(this.EncodeEqualityPoly(binExpr.E0, binExpr.E1)); - } else if (expr is ApplySuffix) { - var appplyExpr = expr as ApplySuffix; + return AssertType.Equality; + } else if (expr is ApplySuffix appplyExpr) { if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); + Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); throw new cce.UnreachableException(); } - var left = this.EncodeSubExpr(appplyExpr.Args[0]); - var right = this.EncodeSubExpr(appplyExpr.Args[1]); + return AssertType.Congruence; + } + Console.WriteLine("unhandled generator expr: {0}", expr); + throw new cce.UnreachableException(); + } + + void EncodeGeneratorPoly(Expression expr) { + var type = CheckAssertType(expr); + if (type is AssertType.Equality) { + var binExpr = expr as BinaryExpr; + var poly = this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); + this.polys.Add(poly); + } else if (type is AssertType.Congruence) { + var appplyExpr = expr as ApplySuffix; + var diff = this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); var mod = this.EncodeSubExpr(appplyExpr.Args[2]); var temp = this.AllocateFreshTemp(); - var poly = String.Format("{0} - {1} - {2} * {3}", left, right, mod, temp); - polys.Add(poly); + var poly = String.Format("{0} - {1} * {2}", diff, mod, temp); + this.polys.Add(poly); } else { Console.WriteLine("unhandled generator expr: {0}", expr); throw new cce.UnreachableException(); @@ -213,22 +226,15 @@ void EncodeGeneratorPoly(Expression expr) { } string EncodeQueryPoly(Expression expr) { - if (expr is BinaryExpr) { + var type = CheckAssertType(expr); + if (type is AssertType.Equality) { var binExpr = expr as BinaryExpr; - if (binExpr.Op != BinaryExpr.Opcode.Eq) { - Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } return this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); - } else if (expr is ApplySuffix) { + } else if (type is AssertType.Congruence) { var appplyExpr = expr as ApplySuffix; - if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { - Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); - } var mod = this.EncodeSubExpr(appplyExpr.Args[2]); // add the mod to the generators - polys.Add(mod); + this.polys.Add(mod); return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); } else { Console.WriteLine("unhandled generator expr: {0}", expr); @@ -245,13 +251,11 @@ void EncodeQuery(AssertStmt assertStmt) { } else if (ss is AssumeStmt) { this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); } else { - Console.WriteLine("Error: Unexpected Grobner poorf body statement {0}", ss); + Console.WriteLine("Error: Unexpected Grobner proof body statement {0}", ss); throw new cce.UnreachableException(); } } - var poly = EncodeQueryPoly(assertStmt.Expr); - this.writer.Write("ring r=integer,("); string separator = ""; @@ -271,7 +275,7 @@ void EncodeQuery(AssertStmt assertStmt) { } this.writer.Write(";\n"); this.writer.WriteLine("ideal G = groebner(I);"); - this.writer.WriteLine("reduce({0}, G);", poly); + this.writer.WriteLine("reduce({0}, G);", EncodeQueryPoly(assertStmt.Expr)); this.writer.WriteLine("quit;"); this.writer.Flush(); } @@ -293,14 +297,14 @@ public SingularDriver(Statement stmt) { var proc = new Process { - StartInfo = new ProcessStartInfo - { - FileName = "Singular", - Arguments = String.Format("--quiet {0}", queryFileName), - UseShellExecute = false, - RedirectStandardOutput = true, - CreateNoWindow = true - } + StartInfo = new ProcessStartInfo + { + FileName = "Singular", + Arguments = String.Format("--quiet {0}", queryFileName), + UseShellExecute = false, + RedirectStandardOutput = true, + CreateNoWindow = true + } }; proc.Start(); @@ -10549,7 +10553,9 @@ void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals if (assertStmt.Grobner) { AddComment(proofBuilder, stmt, "assert by Grobner"); var singularDriver = new SingularDriver(stmt); - // append assume false, the toks are messed up? + // append an assume false statement at the end of the proof body (although the tokens are not well-aligned) + // all the original assertions are still checked by Dafny/z3 + // the assert body => assert goal part is checked by Singular var falseBody = new LiteralExpr(stmt.Tok, false); falseBody.Type = new BoolType(); var assumeFalse = new AssumeStmt(stmt.Tok, stmt.EndTok, falseBody, null); From ebb634191d4ad7f6335584436844ea8755e653a6 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Wed, 9 Feb 2022 11:25:21 -0500 Subject: [PATCH 564/573] fix missing variable --- Source/Dafny/Translator.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 9279a2e661f..7a13a565b1f 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -255,7 +255,8 @@ void EncodeQuery(AssertStmt assertStmt) { throw new cce.UnreachableException(); } } - + // encode qury to add vars before creating ring + var query = this.EncodeQueryPoly(assertStmt.Expr); this.writer.Write("ring r=integer,("); string separator = ""; @@ -275,7 +276,7 @@ void EncodeQuery(AssertStmt assertStmt) { } this.writer.Write(";\n"); this.writer.WriteLine("ideal G = groebner(I);"); - this.writer.WriteLine("reduce({0}, G);", EncodeQueryPoly(assertStmt.Expr)); + this.writer.WriteLine("reduce({0}, G);", query); this.writer.WriteLine("quit;"); this.writer.Flush(); } @@ -290,7 +291,8 @@ public SingularDriver(Statement stmt) { var queryFileName = String.Format("test{0}.sv", queryCount); SingularDriver.queryCount += 1; - this.writer = new StreamWriter(queryFileName); + var queryFile = new FileStream(queryFileName, FileMode.Create); + this.writer = new StreamWriter(queryFile); this.polys = new List(); this.opaqueExprs = new Dictionary(); this.EncodeQuery(stmt as AssertStmt); @@ -319,7 +321,7 @@ public SingularDriver(Statement stmt) { Console.WriteLine("Grobner assert succeeded"); } - // File.Delete(queryFileName); + File.Delete(queryFileName); } } From 07cc617b3d8ce46b0d965a81972c0db1c4e4fa5f Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Wed, 9 Feb 2022 17:05:04 -0500 Subject: [PATCH 565/573] handle more opaque expressions --- Source/Dafny/Translator.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 7a13a565b1f..4bfe265d357 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -135,6 +135,17 @@ string OpacifySubExpr(Expression expr) { return name; } else if (expr is LiteralExpr) { return String.Format("{0}", (expr as LiteralExpr).Value); + } else if (expr is ExprDotName dotNotNameExpr) { + var lhs = this.OpacifySubExpr(dotNotNameExpr.Lhs); + return String.Format("{0}.{1}", lhs, dotNotNameExpr.SuffixName); + } else if (expr is ApplySuffix applyExpr) { + var lhs = this.OpacifySubExpr(applyExpr.Lhs); + var args = ""; + foreach (Expression arg in applyExpr.Args) { + args.Concat(","); + args.Concat(this.OpacifySubExpr(arg)); + } + return String.Format("{0}({1})", lhs, args); } else { Console.WriteLine("unhandled OpacifySubExpr: {0}", expr); throw new cce.UnreachableException(); From 4573075509409e32adf8b005c43fb8ef760c0bb0 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Wed, 9 Feb 2022 17:58:15 -0500 Subject: [PATCH 566/573] add more support for opaque operations (binop) --- Source/Dafny/Translator.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 4bfe265d357..e54ca940ed2 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -146,6 +146,11 @@ string OpacifySubExpr(Expression expr) { args.Concat(this.OpacifySubExpr(arg)); } return String.Format("{0}({1})", lhs, args); + } else if (expr is BinaryExpr binExpr) { + var op = binExpr.Op; + var left = this.OpacifySubExpr(binExpr.E0); + var right = this.OpacifySubExpr(binExpr.E1); + return String.Format("{0}{1}{2}", left, op, right); } else { Console.WriteLine("unhandled OpacifySubExpr: {0}", expr); throw new cce.UnreachableException(); From c7e597d6fd5d4cc4bf9cbe9e64f2d975be045fcb Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Wed, 9 Feb 2022 18:21:24 -0500 Subject: [PATCH 567/573] emit null as empty string in opaque --- Source/Dafny/Translator.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index e54ca940ed2..c8641f2feff 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -122,13 +122,16 @@ string AllocateFreshTemp() { string OpacifySubExpr(Expression expr) { if (expr is SeqSelectExpr seqSelExpr) { - if (!seqSelExpr.SelectOne) { - Console.WriteLine("unhandled seqSelExpr"); - throw new cce.UnreachableException(); + if (seqSelExpr.SelectOne) { + var seq = this.OpacifySubExpr(seqSelExpr.Seq); + var index = this.OpacifySubExpr(seqSelExpr.E0); + return String.Format("{0}[{1}]", seq, index); + } else { + var seq = this.OpacifySubExpr(seqSelExpr.Seq); + var start = this.OpacifySubExpr(seqSelExpr.E0); + var end = this.OpacifySubExpr(seqSelExpr.E1); + return String.Format("{0}[{1}..{2}]", seq, start, end); } - var seq = this.OpacifySubExpr(seqSelExpr.Seq); - var index = this.OpacifySubExpr(seqSelExpr.E0); - return String.Format("{0}[{1}]", seq, index); } else if (expr is NameSegment) { // do not add to the variable set var name = (expr as NameSegment).Name; @@ -150,7 +153,9 @@ string OpacifySubExpr(Expression expr) { var op = binExpr.Op; var left = this.OpacifySubExpr(binExpr.E0); var right = this.OpacifySubExpr(binExpr.E1); - return String.Format("{0}{1}{2}", left, op, right); + return String.Format("{0}{1}{2}", left, op, right); + } else if (expr == null) { + return ""; } else { Console.WriteLine("unhandled OpacifySubExpr: {0}", expr); throw new cce.UnreachableException(); From 87df8bcb7cb7f1c5a12ea706bdebcc3c9c682c7b Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Thu, 10 Feb 2022 17:14:57 -0500 Subject: [PATCH 568/573] bug fix for OpacifySubExpr (args for function calls were not encoded correctly) --- Source/Dafny/Translator.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index c8641f2feff..aa3f730ff83 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -145,8 +145,7 @@ string OpacifySubExpr(Expression expr) { var lhs = this.OpacifySubExpr(applyExpr.Lhs); var args = ""; foreach (Expression arg in applyExpr.Args) { - args.Concat(","); - args.Concat(this.OpacifySubExpr(arg)); + args = args + this.OpacifySubExpr(arg) + ","; } return String.Format("{0}({1})", lhs, args); } else if (expr is BinaryExpr binExpr) { @@ -299,6 +298,10 @@ void EncodeQuery(AssertStmt assertStmt) { this.writer.WriteLine("ideal G = groebner(I);"); this.writer.WriteLine("reduce({0}, G);", query); this.writer.WriteLine("quit;"); + + foreach (KeyValuePair e in this.opaqueExprs) { + this.writer.WriteLine("// {0} = {1};", e.Value, e.Key); + } this.writer.Flush(); } From 299f5ab291722bcfed0052eececfb8480fd2a212 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Fri, 11 Feb 2022 16:29:59 -0500 Subject: [PATCH 569/573] add groebner keyword for lemma call --- Source/Dafny/Resolver.cs | 2 + Source/Dafny/Translator.cs | 82 +++++++++++++-------------- Test/gb_test.dfy | 111 +++++++++---------------------------- 3 files changed, 65 insertions(+), 130 deletions(-) diff --git a/Source/Dafny/Resolver.cs b/Source/Dafny/Resolver.cs index 498cdb3aaba..dfb83f36f01 100644 --- a/Source/Dafny/Resolver.cs +++ b/Source/Dafny/Resolver.cs @@ -9476,6 +9476,8 @@ bool IsRecognizedAttribute(UserSuppliedAttributes a, IAttributeBearingDeclaratio return host is Function; case "abstemious": return host is Function; + case "groebner": + return host is Lemma; default: return false; } diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index aa3f730ff83..c2a38eb1cc1 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -110,7 +110,8 @@ class SingularDriver enum AssertType { Equality, - Congruence + Congruence, + Unknown, } string AllocateFreshTemp() { @@ -210,20 +211,18 @@ string EncodeEqualityPoly(Expression e0, Expression e1) { AssertType CheckAssertType(Expression expr) { if (expr is BinaryExpr binExpr) { - if (binExpr.Op != BinaryExpr.Opcode.Eq) { - Console.WriteLine("Error: Grobner generator expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); + if (binExpr.Op == BinaryExpr.Opcode.Eq) { + return AssertType.Equality; } - return AssertType.Equality; - } else if (expr is ApplySuffix appplyExpr) { - if (!(appplyExpr.Lhs is NameSegment) || !(appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { - Console.WriteLine("Error: Grobner query expression should be an Equality or IsModEquivalent"); - throw new cce.UnreachableException(); + } + + if (expr is ApplySuffix appplyExpr) { + if (appplyExpr.Lhs is NameSegment && (appplyExpr.Lhs as NameSegment).Name.Equals("IsModEquivalent")) { + return AssertType.Congruence; } - return AssertType.Congruence; } - Console.WriteLine("unhandled generator expr: {0}", expr); - throw new cce.UnreachableException(); + + return AssertType.Unknown; } void EncodeGeneratorPoly(Expression expr) { @@ -240,8 +239,7 @@ void EncodeGeneratorPoly(Expression expr) { var poly = String.Format("{0} - {1} * {2}", diff, mod, temp); this.polys.Add(poly); } else { - Console.WriteLine("unhandled generator expr: {0}", expr); - throw new cce.UnreachableException(); + Console.WriteLine("ignored unhandled Grobner assertion: {0}", expr); } } @@ -257,26 +255,18 @@ string EncodeQueryPoly(Expression expr) { this.polys.Add(mod); return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); } else { - Console.WriteLine("unhandled generator expr: {0}", expr); + Console.WriteLine("unhandled Grobner query assertion: {0}", expr); throw new cce.UnreachableException(); } } - void EncodeQuery(AssertStmt assertStmt) { - var proof = assertStmt.Proof; - - foreach (Statement ss in proof.Body) { - if (ss is AssertStmt) { - this.EncodeGeneratorPoly((ss as AssertStmt).Expr); - } else if (ss is AssumeStmt) { - this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); - } else { - Console.WriteLine("Error: Unexpected Grobner proof body statement {0}", ss); - throw new cce.UnreachableException(); - } + void EncodeQuery(Method m) { + foreach (AttributedExpression ae in m.Req) { + this.EncodeGeneratorPoly(ae.E); } + // encode qury to add vars before creating ring - var query = this.EncodeQueryPoly(assertStmt.Expr); + var query = this.EncodeQueryPoly(m.Ens[0].E); this.writer.Write("ring r=integer,("); string separator = ""; @@ -305,11 +295,7 @@ void EncodeQuery(AssertStmt assertStmt) { this.writer.Flush(); } - public SingularDriver(Statement stmt) { - if (stmt == null || !(stmt is AssertStmt)) { - Console.WriteLine("Error: Grobner assert should be an AssertStmt"); - throw new cce.UnreachableException(); - } + public SingularDriver(Method m) { this.variables = new HashSet(); // this.writer = new StreamWriter(Console.OpenStandardOutput()); var queryFileName = String.Format("test{0}.sv", queryCount); @@ -319,7 +305,7 @@ public SingularDriver(Statement stmt) { this.writer = new StreamWriter(queryFile); this.polys = new List(); this.opaqueExprs = new Dictionary(); - this.EncodeQuery(stmt as AssertStmt); + this.EncodeQuery(m); var proc = new Process { @@ -2635,6 +2621,23 @@ void AddMethod_Top(Method m) { AddMethodOverrideCheckImpl(m, procOverrideChk); } } + // if (assertStmt.Grobner) { + // AddComment(proofBuilder, stmt, "assert by Grobner"); + // var singularDriver = new SingularDriver(stmt); + // // append an assume false statement at the end of the proof body (although the tokens are not well-aligned) + // // all the original assertions are still checked by Dafny/z3 + // // the assert body => assert goal part is checked by Singular + // var falseBody = new LiteralExpr(stmt.Tok, false); + // falseBody.Type = new BoolType(); + // var assumeFalse = new AssumeStmt(stmt.Tok, stmt.EndTok, falseBody, null); + // assertStmt.Proof.Body.Add(assumeFalse); + // } + if (Attributes.Contains(m.Attributes, "groebner")) { + var singularDriver = new SingularDriver(m); + // Console.WriteLine("enabled groebner"); + // Console.WriteLine("{0}", m.Name); + } + // the method spec itself sink.AddTopLevelDeclaration(AddMethod(m, MethodTranslationKind.Call)); if (m is ExtremeLemma) { @@ -10576,17 +10579,6 @@ void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals if (assertStmt != null && assertStmt.Proof != null) { proofBuilder = new BoogieStmtListBuilder(this); AddComment(proofBuilder, stmt, "assert statement proof"); - if (assertStmt.Grobner) { - AddComment(proofBuilder, stmt, "assert by Grobner"); - var singularDriver = new SingularDriver(stmt); - // append an assume false statement at the end of the proof body (although the tokens are not well-aligned) - // all the original assertions are still checked by Dafny/z3 - // the assert body => assert goal part is checked by Singular - var falseBody = new LiteralExpr(stmt.Tok, false); - falseBody.Type = new BoolType(); - var assumeFalse = new AssumeStmt(stmt.Tok, stmt.EndTok, falseBody, null); - assertStmt.Proof.Body.Add(assumeFalse); - } TrStmt(assertStmt.Proof, proofBuilder, locals, etran); } else if (assertStmt != null && assertStmt.Label != null) { proofBuilder = new BoogieStmtListBuilder(this); diff --git a/Test/gb_test.dfy b/Test/gb_test.dfy index 87568d7e713..33b2db84712 100644 --- a/Test/gb_test.dfy +++ b/Test/gb_test.dfy @@ -6,35 +6,22 @@ module gb_test { (x - y) % m == 0 // same as x % n == y % n, but easier to do induction on x - y than x and y separately } - - lemma test(x: int, y: int, z: int, m: int) + lemma {:extern} {:groebner} test(x: int, y: int, z: int, m: int) requires m > 0; requires IsModEquivalent(x, y, m); - { - gbassert IsModEquivalent(x * z, y * z, m) by { - assert IsModEquivalent(x, y, m); - } - } + ensures IsModEquivalent(x * z, y * z, m); - lemma test2(p2_full: int, BASE: int, + lemma {:extern} {:groebner} test2(p2_full: int, BASE: int, ui: int, m0: int, m0d: int, p1_lh: int, p1_full: int) - requires BASE > 0; requires p2_full == ui * m0 + p1_lh; requires IsModEquivalent(p1_full, p1_lh, BASE); requires IsModEquivalent(m0d * m0, -1, BASE); requires IsModEquivalent(ui, p1_full * m0d, BASE); - { - gbassert IsModEquivalent(p2_full, 0, BASE) by { - assert p2_full == ui * m0 + p1_lh; - assert IsModEquivalent(p1_full, p1_lh, BASE); - assert IsModEquivalent(m0d * m0, -1, BASE); - assert IsModEquivalent(ui, p1_full * m0d, BASE); - } - } + ensures IsModEquivalent(p2_full, 0, BASE); - lemma mul256_canonize_lemma( + lemma {:extern} {:groebner} mul256_canonize_lemma( B: nat, p0: nat, p1: nat, p2: nat, p3: nat, p4: nat, p5: nat, p6: nat, p7: nat, @@ -42,76 +29,30 @@ module gb_test { p12: nat, p13: nat, p14: nat, p15: nat, x: nat, x_0: nat, x_1: nat, x_2: nat, x_3: nat, y: nat, y_0: nat, y_1: nat,y_2: nat, y_3: nat) + + requires x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B; + requires y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B; + requires p0 == x_0 * y_0; + requires p1 == x_1 * y_0; + requires p2 == x_0 * y_1; + requires p3 == x_2 * y_0; + requires p4 == x_1 * y_1; + requires p5 == x_0 * y_2; + requires p6 == x_3 * y_0; + requires p7 == x_2 * y_1; + requires p8 == x_1 * y_2; + requires p9 == x_0 * y_3; + requires p10 == x_3 * y_1; + requires p11 == x_2 * y_2; + requires p12 == x_1 * y_3; + requires p13 == x_3 * y_2; + requires p14 == x_2 * y_3; + requires p15 == x_3 * y_3; - requires - && p0 == x_0 * y_0 - && p1 == x_1 * y_0 - && p2 == x_0 * y_1 - && p3 == x_2 * y_0 - && p4 == x_1 * y_1 - && p5 == x_0 * y_2 - && p6 == x_3 * y_0 - && p7 == x_2 * y_1 - && p8 == x_1 * y_2 - && p9 == x_0 * y_3 - && p10 == x_3 * y_1 - && p11 == x_2 * y_2 - && p12 == x_1 * y_3 - && p13 == x_3 * y_2 - && p14 == x_2 * y_3 - && p15 == x_3 * y_3 - requires - && x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B - && y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B + requires x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B + requires y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B ensures x * y == p0 + (p1 + p2) * B + (p3 + p4 + p5) * B * B + (p6 + p7 + p8 + p9) * B * B * B + (p10 + p11 + p12) * B * B * B * B + (p13 + p14) * B * B * B * B * B + p15 * B * B * B * B * B * B; - { - gbassert x * y == p0 + (p1 + p2) * B + (p3 + p4 + p5) * B * B + (p6 + p7 + p8 + p9) * B * B * B + (p10 + p11 + p12) * B * B * B * B + (p13 + p14) * B * B * B * B * B + p15 * B * B * B * B * B * B by { - assert x == x_0 + x_1 * B + x_2 * B * B + x_3 * B * B * B; - assert y == y_0 + y_1 * B + y_2 * B * B + y_3 * B * B * B; - assert p0 == x_0 * y_0; - assert p1 == x_1 * y_0; - assert p2 == x_0 * y_1; - assert p3 == x_2 * y_0; - assert p4 == x_1 * y_1; - assert p5 == x_0 * y_2; - assert p6 == x_3 * y_0; - assert p7 == x_2 * y_1; - assert p8 == x_1 * y_2; - assert p9 == x_0 * y_3; - assert p10 == x_3 * y_1; - assert p11 == x_2 * y_2; - assert p12 == x_1 * y_3; - assert p13 == x_3 * y_2; - assert p14 == x_2 * y_3; - assert p15 == x_3 * y_3; - } - } - - lemma mont_loop_inv_pre_lemma( - xi: nat, - ui: nat, - m0d: nat, - p1: nat, - p1_lh: nat, - p2: nat, - y: seq, - m: seq, - a: seq, - BASE: nat) - requires BASE > 0; - requires |m| == |a| == |y| > 0; - requires IsModEquivalent(p1, p1_lh, BASE); - requires p1 == xi * y[0] + a[0]; - // requires p2 == ui * m[0] + p1_lh; - requires ui == p1_lh * m0d; - { - gbassert IsModEquivalent(ui, (a[0] + y[0] * xi) * m0d, BASE) by { - assert IsModEquivalent(p1, p1_lh, BASE); - assert p1 == xi * y[0] + a[0]; - assert ui == p1_lh * m0d; - } - } } From b402d2aeb6129603277e35fcef33bf1024f4b217 Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Fri, 11 Feb 2022 16:56:20 -0500 Subject: [PATCH 570/573] retain support for gbassert --- Source/Dafny/Translator.cs | 104 ++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 35 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index c2a38eb1cc1..3c1868fd330 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -102,11 +102,9 @@ class SingularDriver static string tempVarPrefix = "tpv_"; uint tempVarCount = 0; - List polys; - HashSet variables; - Dictionary opaqueExprs; - - TextWriter writer; + List polys = new List(); + HashSet variables = new HashSet(); + Dictionary opaqueExprs = new Dictionary(); enum AssertType { Equality, @@ -260,52 +258,43 @@ string EncodeQueryPoly(Expression expr) { } } - void EncodeQuery(Method m) { - foreach (AttributedExpression ae in m.Req) { - this.EncodeGeneratorPoly(ae.E); - } + string WriteQueryFile(string query) { + var queryFileName = String.Format("test{0}.sv", queryCount); + SingularDriver.queryCount += 1; + var queryFile = new FileStream(queryFileName, FileMode.Create); + TextWriter writer = new StreamWriter(queryFile); - // encode qury to add vars before creating ring - var query = this.EncodeQueryPoly(m.Ens[0].E); - this.writer.Write("ring r=integer,("); + writer.Write("ring r=integer,("); string separator = ""; foreach (string v in this.variables) { - this.writer.Write(separator); - this.writer.Write(v); + writer.Write(separator); + writer.Write(v); separator = ","; } - this.writer.Write("),dp;\n"); + writer.Write("),dp;\n"); separator = ""; - this.writer.WriteLine("ideal I = "); + writer.WriteLine("ideal I = "); foreach (string s in this.polys) { - this.writer.Write(separator); - this.writer.Write(s); + writer.Write(separator); + writer.Write(s); separator = ",\n"; } - this.writer.Write(";\n"); - this.writer.WriteLine("ideal G = groebner(I);"); - this.writer.WriteLine("reduce({0}, G);", query); - this.writer.WriteLine("quit;"); + writer.Write(";\n"); + writer.WriteLine("ideal G = groebner(I);"); + writer.WriteLine("reduce({0}, G);", query); + writer.WriteLine("quit;"); foreach (KeyValuePair e in this.opaqueExprs) { - this.writer.WriteLine("// {0} = {1};", e.Value, e.Key); + writer.WriteLine("// {0} = {1};", e.Value, e.Key); } - this.writer.Flush(); + writer.Flush(); + return queryFileName; } - public SingularDriver(Method m) { - this.variables = new HashSet(); - // this.writer = new StreamWriter(Console.OpenStandardOutput()); - var queryFileName = String.Format("test{0}.sv", queryCount); - SingularDriver.queryCount += 1; - - var queryFile = new FileStream(queryFileName, FileMode.Create); - this.writer = new StreamWriter(queryFile); - this.polys = new List(); - this.opaqueExprs = new Dictionary(); - this.EncodeQuery(m); + void RunSingular(string query) { + var queryFileName = WriteQueryFile(query); var proc = new Process { @@ -333,6 +322,39 @@ public SingularDriver(Method m) { File.Delete(queryFileName); } + + public SingularDriver(Statement stmt) { + if (stmt == null || !(stmt is AssertStmt)) { + Console.WriteLine("Error: Grobner assert should be an AssertStmt"); + throw new cce.UnreachableException(); + } + var assertStmt = stmt as AssertStmt; + var proof = assertStmt.Proof; + + foreach (Statement ss in proof.Body) { + if (ss is AssertStmt) { + this.EncodeGeneratorPoly((ss as AssertStmt).Expr); + } else if (ss is AssumeStmt) { + this.EncodeGeneratorPoly((ss as AssumeStmt).Expr); + } else { + Console.WriteLine("Error: Unexpected Grobner proof body statement {0}", ss); + throw new cce.UnreachableException(); + } + } + + var query = this.EncodeQueryPoly(assertStmt.Expr); + this.RunSingular(query); + } + + public SingularDriver(Method m) { + foreach (AttributedExpression ae in m.Req) { + this.EncodeGeneratorPoly(ae.E); + } + + // encode qury to add vars before creating ring + var query = this.EncodeQueryPoly(m.Ens[0].E); + this.RunSingular(query); + } } public class Translator { @@ -10579,6 +10601,18 @@ void TrStmt(Statement stmt, BoogieStmtListBuilder builder, List locals if (assertStmt != null && assertStmt.Proof != null) { proofBuilder = new BoogieStmtListBuilder(this); AddComment(proofBuilder, stmt, "assert statement proof"); + if (assertStmt.Grobner) { + AddComment(proofBuilder, stmt, "assert by Grobner"); + var singularDriver = new SingularDriver(stmt); + // append an assume false statement at the end of the proof body (although the tokens are not well-aligned) + // all the original assertions are still checked by Dafny/z3 + // the assert body => assert goal part is checked by Singular + var falseBody = new LiteralExpr(stmt.Tok, false); + falseBody.Type = new BoolType(); + var assumeFalse = new AssumeStmt(stmt.Tok, stmt.EndTok, falseBody, null); + assertStmt.Proof.Body.Add(assumeFalse); + } + TrStmt(assertStmt.Proof, proofBuilder, locals, etran); } else if (assertStmt != null && assertStmt.Label != null) { proofBuilder = new BoogieStmtListBuilder(this); From 410403abce1397ab45f288d1495a7968b73277b7 Mon Sep 17 00:00:00 2001 From: Zhenkun Yang Date: Fri, 25 Mar 2022 10:22:27 -0700 Subject: [PATCH 571/573] [groebner-extension]: close query file after writing close the `queryFile` for Singular solver. Otherwise there will be IOException error when deleting it on Windows. --- Source/Dafny/Translator.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 3c1868fd330..78329107254 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -290,6 +290,7 @@ string WriteQueryFile(string query) { writer.WriteLine("// {0} = {1};", e.Value, e.Key); } writer.Flush(); + writer.Close(); return queryFileName; } From c50e9ca7a91b4e7dea958d569f68f1c2b948d99e Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Sun, 28 Aug 2022 16:11:48 -0400 Subject: [PATCH 572/573] fix type errors --- Source/Dafny/Translator.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 6823c362804..49379d545af 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -143,8 +143,8 @@ string OpacifySubExpr(Expression expr) { } else if (expr is ApplySuffix applyExpr) { var lhs = this.OpacifySubExpr(applyExpr.Lhs); var args = ""; - foreach (Expression arg in applyExpr.Args) { - args = args + this.OpacifySubExpr(arg) + ","; + foreach (ApplySuffixArg arg in applyExpr.Args) { + args = args + this.OpacifySubExpr(arg.Expr) + ","; } return String.Format("{0}({1})", lhs, args); } else if (expr is BinaryExpr binExpr) { @@ -231,8 +231,8 @@ void EncodeGeneratorPoly(Expression expr) { this.polys.Add(poly); } else if (type is AssertType.Congruence) { var appplyExpr = expr as ApplySuffix; - var diff = this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); - var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + var diff = this.EncodeEqualityPoly(appplyExpr.Args[0].Expr, appplyExpr.Args[1].Expr); + var mod = this.EncodeSubExpr(appplyExpr.Args[2].Expr); var temp = this.AllocateFreshTemp(); var poly = String.Format("{0} - {1} * {2}", diff, mod, temp); this.polys.Add(poly); @@ -248,10 +248,10 @@ string EncodeQueryPoly(Expression expr) { return this.EncodeEqualityPoly(binExpr.E0, binExpr.E1); } else if (type is AssertType.Congruence) { var appplyExpr = expr as ApplySuffix; - var mod = this.EncodeSubExpr(appplyExpr.Args[2]); + var mod = this.EncodeSubExpr(appplyExpr.Args[2].Expr); // add the mod to the generators this.polys.Add(mod); - return this.EncodeEqualityPoly(appplyExpr.Args[0], appplyExpr.Args[1]); + return this.EncodeEqualityPoly(appplyExpr.Args[0].Expr, appplyExpr.Args[1].Expr); } else { Console.WriteLine("unhandled Grobner query assertion: {0}", expr); throw new cce.UnreachableException(); From d865d2e389809608a58fabb8c0fcc4d5403a8fae Mon Sep 17 00:00:00 2001 From: yizhou7 Date: Thu, 6 Jul 2023 16:45:26 -0400 Subject: [PATCH 573/573] fix seq index access in gbassert --- Source/Dafny/Translator.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Dafny/Translator.cs b/Source/Dafny/Translator.cs index 49379d545af..a1aead6972f 100644 --- a/Source/Dafny/Translator.cs +++ b/Source/Dafny/Translator.cs @@ -154,8 +154,11 @@ string OpacifySubExpr(Expression expr) { return String.Format("{0}{1}{2}", left, op, right); } else if (expr == null) { return ""; + } else if (expr is PlaceholderExpression pExpr) { + return this.OpacifySubExpr(pExpr.Expr); } else { - Console.WriteLine("unhandled OpacifySubExpr: {0}", expr); + var woot = String.Format("{0}", expr.ToString()); + Console.WriteLine("unhandled OpacifySubExpr: {0}", woot); throw new cce.UnreachableException(); } }

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 z zIBJj$X($=PD2zZQ+ywFRMy_HV{4v0#7l7_kx0>!^{01l!ct zi-uze7$N`-SmpvErvZs(dZONDG$AqF?tIg2+2J&%-8Whd$M)YyxVhm~G{nmmtW`}$ z@Xob{!$SVDHUzDz?I9`&wkb@Ei=jlEffj_9r+v`Dzm;2!b=OG8r}-lX~e4PMUO)4bTK&#girI(DW$cRNZqbD=hh0y+Y=f@?bGgle-vRm)30_z126XnbA* zOM2K6n=`Q>7LXH0hk=xFE!%u>MXC-x@_k4W$oyzoZW36NjIO`eh%6398N9%YMW_65 z$y*dM-Wcb0j4j5Tyrd&2Q^tpDs5J(3OA0aT?md1#`RTwZU{!VXBS>8LGV^B z#ty&zVG)duQ*7<8G^OLQou{LWyl~{8n{V~k4=fI1@qRC*Z6WV44KEJi^TUT0ns0X&C_(FLsBdJ%Q?!` zrJwWW53NnP!Qs-5LqO21~d6vJ{E%+ti#*R|Q;T46|%|3+S zCJmufwjSP_{9X)1@v7ul@LS?4(^!rfT|`xYS296&nzlW6ps&dQkm4}a=6NC%EY-~T z#`y6fnr@;JQIF9i{A3&gYgk@kR_gMis>Nvz2==`03?9-zR>GUogrJ(U34~o`j9Omd zHjg<^#j!zBuT=?z%;DiiD@0Dk4aW>SWGZ0=joJPo0Rj!A-2BXG{tLG>B+oRCOAYw@ zLH+Z26q=bidAVx?VB5{z{U+wH{{oSW~b=$KWPEceh+L5S?DdlgV-~lw`d=DmV(-NC?ZjSHHKHr!Y zyMU?Mck252Kl=())nyTxy1TgYUcOw5rrPIDeDh$uV<+MORH{%VV?y>k;eoQQ8ePqE zs?RFlz4+ z9$lM00Jhuk$V`8cR?W0}pz?ZwK`0TnDsYrl`uhjV*V^|BLox}bqQJg1pkgGD8lE)7 zeb5E*S3Fxl&yj!RF`ax_Er2%ku8r;_Qhry@Zl`BmXQp%V(Zh)^SNDo7RXp`^`T1nD zlKpf`blnZq-`;WhH8P5jfC$z5g-F|N%qtnh5jpmYI(TEV1#QtrSxH4wk$;VNm(oC= zGPvy2F>);-=eQof*qi@=@0vGa)>^?QX$K^pccK6{^sL@{PpGFYVol# zQh#ecoV&x{2;KOo=m(NiKd>@!JBN5SMmz}uhI}_RhjX{z;SZaEsmbRuk=x=ra+;=^ zv%c&v_ImX>I2x#T+z1{f3FaD~PfBD}QC?Ela21bKL8G+2P_G8g`y~mbs^U-Db#dBD z!~QBjRf#_9;=2a&rguH}`q#H-&&TEb@Mhto8xQuR=`0F41^XD6eHn$VQ`Hr>r+=Zx zbv3idY&S5LXz?vLF7B)qv(rhvJl2rU-=9a8*eq=E z3Mz^}L=RVKLQkE{BPt#>GVuL}x-T;LL*GV#StkiD(j_cw_N%r(^9ka`DnMgbGX7uddX|vsc zzh1sY-+oaJeYARU2$?nb8np7};3x(?x!P{Ye3WP@^`TD)L@~7y2BD~pO>qdc{CGe0 zV_^|sCKiZqH@ zGhy~tB}!Ml{}Lvim1dt3c8`TBv5kT1+j>0e$!_83_Y6%W)kYbasbAUk3iVgaGIX)Z zT^DyZbT(d$)6ncJly8S?Lo-t2NvNW~a|wIX-HQKOU74F)yfa&2xfERRMhbZz86~Kc zmwL z_>23U(m=gFu-Vq@R1YHia)d{6$%Xa^zw0=o`+xUzFb;*9a@~YM#ZD5+IQG&&#m?Pz zXVe6}@kbnstZ!~V@tDu==FF|V1+wtJz7}xdN60pDnb?#BvQg^RUuDnIq z=hQs9qTp-A61h)!Pp;95MnfQY2Ujx=^U@FXsP&M8hllmb3dyyvB zea#&g`c`j7d}sXZyjR9rsLtu}Vy0ns`okpca<9onC$D|7+@+2IdF8jqLiD$9<3iZd z9XQZ?UNY`5`PllLBXplqe}E6g4dWs>L;T14 zBzJ;#WYAvfB;k#r|L|E(q^aYHX)$7q?HWrGVS*Z2t4EuWL&hrkRZ0f`rvDEevR~@< z_O-1idT03d`PrG>KTDtf&azH$cRem`Se)4uJ`l`7N!t~%csgp4zSAq>xV(H2$UVl> z>{A+OVL~wfB8SKlHBUnHHjrv+x6%awLwbQ>=519ec(8n57`U6i_`!e z$gg9$^PgVClR|XHK0l8)v9wqMZ_$wrGP`J}KS4tbbqOEG9N@%NE0;cyr_P1n;XP
;o^x*R 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