diff --git a/.github/workflows/integration-tests-reusable.yml b/.github/workflows/integration-tests-reusable.yml index 3109c167ccb..79d72f30dcf 100644 --- a/.github/workflows/integration-tests-reusable.yml +++ b/.github/workflows/integration-tests-reusable.yml @@ -72,6 +72,11 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.dotnet-version }} + # Setup dotnet 6.0 for running Boogie. Alternatively we could try running Boogie with a roll forward policy, or updating Boogie. + - name: Setup dotnet + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 6.0.x - name: C++ for ubuntu 20.04 if: matrix.os == 'ubuntu-20.04' run: | diff --git a/README.md b/README.md index a47c0d189c9..065b4134367 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ A reference manual is available both [online](https://dafny-lang.github.io/dafny ## Community -You can ask questions about Dafny on [Stack Overflow](https://stackoverflow.com/questions/tagged/dafny) or participate in general discussion on Dafny's [![Gitter](https://badges.gitter.im/dafny-lang/community.svg)](https://gitter.im/dafny-lang/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge). +Feel free to report issues here on GitHub or to ask for questions on our :speech_balloon: [Zulip](https://dafny.zulipchat.com/) channel. ## Try Dafny diff --git a/Scripts/package.py b/Scripts/package.py index f543d37715c..aaffbfe4e20 100755 --- a/Scripts/package.py +++ b/Scripts/package.py @@ -161,7 +161,6 @@ def build(self): if path.exists(self.buildDirectory): shutil.rmtree(self.buildDirectory) run(["make", "--quiet", "clean"]) - self.run_publish("DafnyLanguageServer") self.run_publish("DafnyServer") self.run_publish("DafnyRuntime", "netstandard2.0") self.run_publish("DafnyRuntime", "net452") diff --git a/Source/Dafny.sln b/Source/Dafny.sln index 23297b185ed..91dbe9dc747 100644 --- a/Source/Dafny.sln +++ b/Source/Dafny.sln @@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DafnyDriver.Test", "DafnyDr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DafnyCore.Test", "DafnyCore.Test\DafnyCore.Test.csproj", "{33C29F26-A27B-474D-B436-83EA615B09FC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Scripts", "Scripts\Scripts.csproj", "{3FAB051A-1745-497B-B4C0-D49194BB5D32}" +EndProject EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -130,6 +132,10 @@ Global {96B8ADA8-6190-49F7-8C38-CDA60DC92293}.Debug|Any CPU.Build.0 = Debug|Any CPU {96B8ADA8-6190-49F7-8C38-CDA60DC92293}.Release|Any CPU.ActiveCfg = Release|Any CPU {96B8ADA8-6190-49F7-8C38-CDA60DC92293}.Release|Any CPU.Build.0 = Release|Any CPU + {3FAB051A-1745-497B-B4C0-D49194BB5D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3FAB051A-1745-497B-B4C0-D49194BB5D32}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3FAB051A-1745-497B-B4C0-D49194BB5D32}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3FAB051A-1745-497B-B4C0-D49194BB5D32}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Source/DafnyCore/AST/Expressions/Applications/ThisExpr.cs b/Source/DafnyCore/AST/Expressions/Applications/ThisExpr.cs index b3f86cdce39..47b8c197898 100644 --- a/Source/DafnyCore/AST/Expressions/Applications/ThisExpr.cs +++ b/Source/DafnyCore/AST/Expressions/Applications/ThisExpr.cs @@ -66,16 +66,16 @@ public override bool IsImplicit { /// gives a way to distinguish this receiver from other receivers, which /// plays a role in checking the restrictions on divided block statements. /// -public class ImplicitThisExpr_ConstructorCall : ImplicitThisExpr, ICloneable { - public ImplicitThisExpr_ConstructorCall(Cloner cloner, ImplicitThisExpr_ConstructorCall original) : base(cloner, original) { +public class ImplicitThisExprConstructorCall : ImplicitThisExpr, ICloneable { + public ImplicitThisExprConstructorCall(Cloner cloner, ImplicitThisExprConstructorCall original) : base(cloner, original) { } - public ImplicitThisExpr_ConstructorCall(IOrigin tok) + public ImplicitThisExprConstructorCall(IOrigin tok) : base(tok) { Contract.Requires(tok != null); } - public new ImplicitThisExpr_ConstructorCall Clone(Cloner cloner) { - return new ImplicitThisExpr_ConstructorCall(cloner, this); + public new ImplicitThisExprConstructorCall Clone(Cloner cloner) { + return new ImplicitThisExprConstructorCall(cloner, this); } } \ No newline at end of file diff --git a/Source/DafnyCore/AST/Expressions/Variables/Resolver_IdentifierExpr.cs b/Source/DafnyCore/AST/Expressions/Variables/ResolverIdentifierExpr.cs similarity index 75% rename from Source/DafnyCore/AST/Expressions/Variables/Resolver_IdentifierExpr.cs rename to Source/DafnyCore/AST/Expressions/Variables/ResolverIdentifierExpr.cs index e2bffc357bf..11de95a29f0 100644 --- a/Source/DafnyCore/AST/Expressions/Variables/Resolver_IdentifierExpr.cs +++ b/Source/DafnyCore/AST/Expressions/Variables/ResolverIdentifierExpr.cs @@ -8,7 +8,7 @@ namespace Microsoft.Dafny; /// /// This class is used only inside the resolver itself. It gets hung in the AST in uncompleted name segments. /// -class Resolver_IdentifierExpr : Expression, IHasReferences, ICloneable { +class ResolverIdentifierExpr : Expression, IHasReferences, ICloneable { public readonly TopLevelDecl Decl; public readonly List TypeArgs; [ContractInvariantMethod] @@ -16,10 +16,10 @@ void ObjectInvariant() { Contract.Invariant(Decl != null); Contract.Invariant(TypeArgs != null); Contract.Invariant(TypeArgs.Count == Decl.TypeArgs.Count); - Contract.Invariant(Type is ResolverType_Module || Type is ResolverType_Type); + Contract.Invariant(Type is ResolverTypeModule or ResolverTypeType); } - public Resolver_IdentifierExpr(Cloner cloner, Resolver_IdentifierExpr original) : base(cloner, original) { + public ResolverIdentifierExpr(Cloner cloner, ResolverIdentifierExpr original) : base(cloner, original) { Decl = original.Decl; TypeArgs = original.TypeArgs; } @@ -38,38 +38,38 @@ public override Type ReplaceTypeArguments(List arguments) { throw new NotSupportedException(); } } - public class ResolverType_Module : ResolverType { + public class ResolverTypeModule : ResolverType { [System.Diagnostics.Contracts.Pure] public override string TypeName(DafnyOptions options, ModuleDefinition context, bool parseAble) { Contract.Assert(parseAble == false); return "#module"; } public override bool Equals(Type that, bool keepConstraints = false) { - return that.NormalizeExpand(keepConstraints) is ResolverType_Module; + return that.NormalizeExpand(keepConstraints) is ResolverTypeModule; } } - public class ResolverType_Type : ResolverType { + public class ResolverTypeType : ResolverType { [System.Diagnostics.Contracts.Pure] public override string TypeName(DafnyOptions options, ModuleDefinition context, bool parseAble) { Contract.Assert(parseAble == false); return "#type"; } public override bool Equals(Type that, bool keepConstraints = false) { - return that.NormalizeExpand(keepConstraints) is ResolverType_Type; + return that.NormalizeExpand(keepConstraints) is ResolverTypeType; } } - public Resolver_IdentifierExpr(IOrigin origin, TopLevelDecl decl, List typeArgs) + public ResolverIdentifierExpr(IOrigin origin, TopLevelDecl decl, List typeArgs) : base(origin) { Contract.Requires(origin != null); Contract.Requires(decl != null); Contract.Requires(typeArgs != null && typeArgs.Count == decl.TypeArgs.Count); Decl = decl; TypeArgs = typeArgs; - Type = decl is ModuleDecl ? (Type)new ResolverType_Module() : new ResolverType_Type(); + Type = decl is ModuleDecl ? (Type)new ResolverTypeModule() : new ResolverTypeType(); PreType = decl is ModuleDecl ? new PreTypePlaceholderModule() : new PreTypePlaceholderType(); } - public Resolver_IdentifierExpr(IOrigin origin, TypeParameter tp) + public ResolverIdentifierExpr(IOrigin origin, TypeParameter tp) : this(origin, tp, new List()) { Contract.Requires(origin != null); Contract.Requires(tp != null); @@ -79,7 +79,7 @@ public IEnumerable GetReferences() { return new[] { new Reference(Center, Decl) }; } - public Resolver_IdentifierExpr Clone(Cloner cloner) { - return new Resolver_IdentifierExpr(cloner, this); + public ResolverIdentifierExpr Clone(Cloner cloner) { + return new ResolverIdentifierExpr(cloner, this); } } \ No newline at end of file diff --git a/Source/DafnyCore/AST/Grammar/Printer/Printer.Expression.cs b/Source/DafnyCore/AST/Grammar/Printer/Printer.Expression.cs index 2a4c3db9ff0..c3d5d415ee9 100644 --- a/Source/DafnyCore/AST/Grammar/Printer/Printer.Expression.cs +++ b/Source/DafnyCore/AST/Grammar/Printer/Printer.Expression.cs @@ -571,12 +571,12 @@ void PrintExpr(Expression expr, int contextBindingStrength, bool fragileContext, if (parensNeeded) { wr.Write("("); } if (!e.Lhs.IsImplicit) { PrintExpr(e.Lhs, opBindingStrength, false, false, !parensNeeded && isFollowedBySemicolon, -1, keyword); - if (e.Lhs.Type is Resolver_IdentifierExpr.ResolverType_Type) { + if (e.Lhs.Type is ResolverIdentifierExpr.ResolverTypeType) { Contract.Assert(e.Lhs is NameSegment || e.Lhs is ExprDotName); // these are the only expressions whose .Type can be ResolverType_Type if (options.DafnyPrintResolvedFile != null && options.PrintMode == PrintModes.Everything) { // The printing of e.Lhs printed the type arguments only if they were given explicitly in the input. var optionalTypeArgs = e.Lhs is NameSegment ns ? ns.OptTypeArguments : ((ExprDotName)e.Lhs).OptTypeArguments; - if (optionalTypeArgs == null && e.Lhs.Resolved is Resolver_IdentifierExpr ri) { + if (optionalTypeArgs == null && e.Lhs.Resolved is ResolverIdentifierExpr ri) { PrintTypeInstantiation(ri.TypeArgs); } } @@ -1228,7 +1228,7 @@ void PrintExpr(Expression expr, int contextBindingStrength, bool fragileContext, wr.Write("[BoogieWrapper]"); // this is somewhat unexpected, but we can get here if the /trace switch is used, so it seems best to cover this case here } else if (expr is BoogieGenerator.BoogieFunctionCall) { wr.Write("[BoogieFunctionCall]"); // this prevents debugger watch window crash - } else if (expr is Resolver_IdentifierExpr) { + } else if (expr is ResolverIdentifierExpr) { wr.Write("[Resolver_IdentifierExpr]"); // we can get here in the middle of a debugging session } else if (expr is DecreasesToExpr decreasesToExpr) { var opBindingStrength = BindingStrengthDecreasesTo; diff --git a/Source/DafnyCore/AST/Types/Types.cs b/Source/DafnyCore/AST/Types/Types.cs index f2828b49b0f..b6c76c5fc53 100644 --- a/Source/DafnyCore/AST/Types/Types.cs +++ b/Source/DafnyCore/AST/Types/Types.cs @@ -1145,10 +1145,10 @@ public static bool Equal_Improved(Type a, Type b) { return true; } } - } else if (a is Resolver_IdentifierExpr.ResolverType_Module) { - return b is Resolver_IdentifierExpr.ResolverType_Module; - } else if (a is Resolver_IdentifierExpr.ResolverType_Type) { - return b is Resolver_IdentifierExpr.ResolverType_Type; + } else if (a is ResolverIdentifierExpr.ResolverTypeModule) { + return b is ResolverIdentifierExpr.ResolverTypeModule; + } else if (a is ResolverIdentifierExpr.ResolverTypeType) { + return b is ResolverIdentifierExpr.ResolverTypeType; } else { // this is an unexpected type; however, it may be that we get here during the resolution of an erroneous // program, so we'll just return false @@ -2232,7 +2232,7 @@ public void AddSubtype(TypeConstraint c) { public enum Family { Unknown, Bool, Char, IntLike, RealLike, Ordinal, BitVector, ValueType, Ref, Opaque } public Family family = Family.Unknown; public static Family GetFamily(Type t) { - Contract.Ensures(Contract.Result() != Family.Unknown || t is TypeProxy || t is Resolver_IdentifierExpr.ResolverType); // return Unknown ==> t is TypeProxy || t is ResolverType + Contract.Ensures(Contract.Result() != Family.Unknown || t is TypeProxy || t is ResolverIdentifierExpr.ResolverType); // return Unknown ==> t is TypeProxy || t is ResolverType if (t.IsBoolType) { return Family.Bool; } else if (t.IsCharType) { diff --git a/Source/DafnyCore/AST/Types/UserDefinedType.cs b/Source/DafnyCore/AST/Types/UserDefinedType.cs index 302ccba9711..e7076751bb4 100644 --- a/Source/DafnyCore/AST/Types/UserDefinedType.cs +++ b/Source/DafnyCore/AST/Types/UserDefinedType.cs @@ -165,7 +165,7 @@ public UserDefinedType(IOrigin origin, string name, TopLevelDecl cd, [Captured] this.TypeArgs = typeArgs; if (namePath == null) { var ns = new NameSegment(origin, name, typeArgs.Count == 0 ? null : typeArgs); - var r = new Resolver_IdentifierExpr(origin, cd, typeArgs); + var r = new ResolverIdentifierExpr(origin, cd, typeArgs); ns.ResolvedExpression = r; ns.Type = r.Type; this.NamePath = ns; @@ -218,7 +218,7 @@ public UserDefinedType(IOrigin origin, TypeParameter tp) : base(origin) { this.TypeArgs = new List(); this.ResolvedClass = tp; var ns = new NameSegment(origin, tp.Name, null); - var r = new Resolver_IdentifierExpr(origin, tp); + var r = new ResolverIdentifierExpr(origin, tp); ns.ResolvedExpression = r; ns.Type = r.Type; this.NamePath = ns; diff --git a/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs b/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs index 9bbc493116e..d8092b84678 100644 --- a/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs +++ b/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs @@ -265,15 +265,27 @@ protected override ConcreteSyntaxTree CreateStaticMain(IClassWriter cw, string a return wr.NewBlock($"public static void _StaticMain(Dafny.ISequence> {argsParameterName})"); } + /// + /// Compute the name of the class to use to translate a data-type or a class + /// + private string protectedTypeName(TopLevelDecl dt) { + var protectedName = IdName(dt); + if (dt.EnclosingModuleDefinition is { Name: var moduleName } && moduleName == protectedName) { + return $"_{protectedName}"; + } + return protectedName; + } + string IdProtectModule(string moduleName) { + Contract.Requires(moduleName != null); return string.Join(".", moduleName.Split(".").Select(IdProtect)); } protected override ConcreteSyntaxTree CreateModule(ModuleDefinition module, string moduleName, bool isDefault, ModuleDefinition externModule, string libraryName /*?*/, Attributes moduleAttributes, ConcreteSyntaxTree wr) { - moduleName = IdProtectModule(moduleName); - return wr.NewBlock($"namespace {moduleName}", " // end of " + $"namespace {moduleName}"); + var protectedModuleName = IdProtectModule(moduleName); + return wr.NewBlock($"namespace {protectedModuleName}", " // end of " + $"namespace {protectedModuleName}"); } protected override string GetHelperModuleName() => DafnyHelpersClass; @@ -305,8 +317,9 @@ string PrintVariance(TypeParameter.TPVariance variance) { return $"<{targs.Comma(PrintTypeParameter)}>"; } - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string /*?*/ fullPrintName, + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string /*?*/ fullPrintName, List typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { + var name = protectedTypeName(cls); var wBody = WriteTypeHeader("partial class", name, typeParameters, superClasses, tok, wr); ConcreteSyntaxTree/*?*/ wCtorBody = null; @@ -442,7 +455,7 @@ protected override ConcreteSyntaxTree CreateIterator(IteratorDecl iter, Concrete // } // } - var cw = (ClassWriter)CreateClass(IdProtect(iter.EnclosingModuleDefinition.GetCompileName(Options)), IdName(iter), iter, wr); + var cw = (ClassWriter)CreateClass(IdProtect(iter.EnclosingModuleDefinition.GetCompileName(Options)), iter, wr); var w = cw.InstanceMemberWriter; // here come the fields @@ -559,7 +572,7 @@ IClassWriter CompileDatatypeBase(DatatypeDecl dt, ConcreteSyntaxTree wr) { // } var nonGhostTypeArgs = SelectNonGhost(dt, dt.TypeArgs); var DtT_TypeArgs = TypeParameters(nonGhostTypeArgs); - var DtT_protected = IdName(dt) + DtT_TypeArgs; + var DtT_protected = protectedTypeName(dt) + DtT_TypeArgs; var simplifiedType = DatatypeWrapperEraser.SimplifyType(Options, UserDefinedType.FromTopLevelDecl(dt.Origin, dt)); var simplifiedTypeName = TypeName(simplifiedType, wr, dt.Origin); @@ -581,7 +594,7 @@ IClassWriter CompileDatatypeBase(DatatypeDecl dt, ConcreteSyntaxTree wr) { } else { EmitTypeDescriptorsForClass(dt.TypeArgs, dt, out var wTypeFields, out var wCtorParams, out _, out var wCtorBody); wr.Append(wTypeFields); - wr.Format($"public {IdName(dt)}({wCtorParams})").NewBlock().Append(wCtorBody); + wr.Format($"public {protectedTypeName(dt)}({wCtorParams})").NewBlock().Append(wCtorBody); } var wDefault = new ConcreteSyntaxTree(); @@ -995,7 +1008,7 @@ private void CompileDatatypeConstructors(DatatypeDecl dt, ConcreteSyntaxTree wrx // public override _IDt _Get() { if (c != null) { d = c(); c = null; } return d; } // public override string ToString() { return _Get().ToString(); } // } - var w = wrx.NewNamedBlock($"public class {dt.GetCompileName(Options)}__Lazy{typeParams} : {IdName(dt)}{typeParams}"); + var w = wrx.NewNamedBlock($"public class {dt.GetCompileName(Options)}__Lazy{typeParams} : {protectedTypeName(dt)}{typeParams}"); w.WriteLine($"public {NeedsNew(dt, "Computer")}delegate {DtTypeName(dt)} Computer();"); w.WriteLine($"{NeedsNew(dt, "c")}Computer c;"); w.WriteLine($"{NeedsNew(dt, "d")}{DtTypeName(dt)} d;"); @@ -1017,7 +1030,7 @@ private void CompileDatatypeConstructors(DatatypeDecl dt, ConcreteSyntaxTree wrx int constructorIndex = 0; // used to give each constructor a different name foreach (var ctor in dt.Ctors.Where(ctor => !ctor.IsGhost)) { var wr = wrx.NewNamedBlock( - $"public class {DtCtorDeclarationName(ctor)}{TypeParameters(nonGhostTypeArgs)} : {IdName(dt)}{typeParams}"); + $"public class {DtCtorDeclarationName(ctor)}{TypeParameters(nonGhostTypeArgs)} : {protectedTypeName(dt)}{typeParams}"); DatatypeFieldsAndConstructor(ctor, constructorIndex, wr); constructorIndex++; } @@ -1191,7 +1204,7 @@ string DtCtorDeclarationName(DatatypeCtor ctor) { Contract.Ensures(Contract.Result() != null); var dt = ctor.EnclosingDatatype; - return dt.IsRecordType ? IdName(dt) : dt.GetCompileName(Options) + "_" + ctor.GetCompileName(Options); + return dt.IsRecordType ? protectedTypeName(dt) : dt.GetCompileName(Options) + "_" + ctor.GetCompileName(Options); } /// @@ -1217,7 +1230,7 @@ string DtCtorName(DatatypeCtor ctor) { Contract.Ensures(Contract.Result() != null); var dt = ctor.EnclosingDatatype; - var dtName = IdName(dt); + var dtName = protectedTypeName(dt); if (!dt.EnclosingModuleDefinition.TryToAvoidName) { dtName = IdProtectModule(dt.EnclosingModuleDefinition.GetCompileName(Options)) + "." + dtName; } @@ -1235,7 +1248,7 @@ string DtCreateName(DatatypeCtor ctor) { } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), IdName(nt), nt, wr); + var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), nt, wr); var w = cw.StaticMemberWriter; if (nt.NativeType != null) { var wEnum = w.NewBlock($"public static System.Collections.Generic.IEnumerable<{GetNativeTypeName(nt.NativeType)}> IntegerRange(BigInteger lo, BigInteger hi)"); @@ -1304,7 +1317,7 @@ void DeclareBoxedNewtype(NewtypeDecl nt, ConcreteSyntaxTree wr) { } protected override void DeclareSubsetType(SubsetTypeDecl sst, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), IdName(sst), sst, wr); + var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), sst, wr); if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var sw = new ConcreteSyntaxTree(cw.InstanceMemberWriter.RelativeIndentLevel); var wStmts = cw.InstanceMemberWriter.Fork(); @@ -2477,6 +2490,7 @@ public override string PublicIdProtect(string name) { case "ToString": case "GetHashCode": case "Main": + case "Default": return "_" + name; default: return name; @@ -2507,6 +2521,10 @@ private string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null, return (cl.EnclosingModuleDefinition.TryToAvoidName ? "" : IdProtectModule(cl.EnclosingModuleDefinition.GetCompileName(Options)) + ".") + DtTypeName(cl, false); } + if (cl is DatatypeDecl) { + return (cl.EnclosingModuleDefinition.TryToAvoidName ? "" : IdProtectModule(cl.EnclosingModuleDefinition.GetCompileName(Options)) + ".") + protectedTypeName(cl as DatatypeDecl); + } + if (cl.EnclosingModuleDefinition.TryToAvoidName) { return IdProtect(cl.GetCompileName(Options)); } @@ -2514,6 +2532,11 @@ private string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null, if (cl.IsExtern(Options, out _, out _)) { return cl.EnclosingModuleDefinition.GetCompileName(Options) + "." + cl.GetCompileName(Options); } + + if (cl is ClassDecl) { + return (cl.EnclosingModuleDefinition.TryToAvoidName ? "" : IdProtectModule(cl.EnclosingModuleDefinition.GetCompileName(Options)) + ".") + protectedTypeName(cl as ClassDecl); + } + return IdProtectModule(cl.EnclosingModuleDefinition.GetCompileName(Options)) + "." + IdProtect(cl.GetCompileName(Options)); } @@ -2528,7 +2551,7 @@ protected override void EmitThis(ConcreteSyntaxTree wr, bool callToInheritedMemb protected override void EmitDatatypeValue(DatatypeValue dtv, string typeDescriptorArguments, string arguments, ConcreteSyntaxTree wr) { var dt = dtv.Ctor.EnclosingDatatype; - var dtName = IdProtectModule(dt.EnclosingModuleDefinition.GetCompileName(Options)) + "." + IdName(dt); + var dtName = IdProtectModule(dt.EnclosingModuleDefinition.GetCompileName(Options)) + "." + protectedTypeName(dt); var nonGhostInferredTypeArgs = SelectNonGhost(dt, dtv.InferredTypeArgs); var typeParams = nonGhostInferredTypeArgs.Count == 0 ? "" : $"<{TypeNames(nonGhostInferredTypeArgs, wr, dtv.Origin)}>"; diff --git a/Source/DafnyCore/Backends/Cplusplus/CppCodeGenerator.cs b/Source/DafnyCore/Backends/Cplusplus/CppCodeGenerator.cs index 04f08c8794f..dc8d8715169 100644 --- a/Source/DafnyCore/Backends/Cplusplus/CppCodeGenerator.cs +++ b/Source/DafnyCore/Backends/Cplusplus/CppCodeGenerator.cs @@ -149,7 +149,7 @@ protected override void EmitFooter(Program program, ConcreteSyntaxTree wr) { public override void EmitCallToMain(Method mainMethod, string baseName, ConcreteSyntaxTree wr) { var w = wr.NewBlock("int main(int argc, char *argv[])"); var tryWr = w.NewBlock("try"); - tryWr.WriteLine(string.Format("{0}::{1}::{2}(dafny_get_args(argc, argv));", mainMethod.EnclosingClass.EnclosingModuleDefinition.GetCompileName(Options), mainMethod.EnclosingClass.GetCompileName(Options), mainMethod.Name)); + tryWr.WriteLine(string.Format("{0}::{1}::{2}(dafny_get_args(argc, argv));", mainMethod.EnclosingClass.EnclosingModuleDefinition.GetCompileName(Options), clName(mainMethod.EnclosingClass), mainMethod.Name)); var catchWr = w.NewBlock("catch (DafnyHaltException & e)"); catchWr.WriteLine("std::cout << \"Program halted: \" << e.what() << std::endl;"); } @@ -226,9 +226,18 @@ private string InstantiateTemplate(List typeArgs) { protected override string GetHelperModuleName() => "_dafny"; - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { + private string clName(TopLevelDecl cl) { + var className = IdName(cl); + if (cl is ClassDecl || cl is DefaultClassDecl) { + return className; + } + return "class_" + className; + } + + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { + var className = clName(cls); if (isExtern) { - throw new UnsupportedFeatureException(tok, Feature.ExternalClasses, String.Format("extern in class {0}", name)); + throw new UnsupportedFeatureException(tok, Feature.ExternalClasses, String.Format("extern in class {0}", className)); } if (superClasses != null && superClasses.Any(trait => !trait.IsObject)) { throw new UnsupportedFeatureException(tok, Feature.Traits); @@ -242,17 +251,17 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool classDefWriter.WriteLine(DeclareTemplate(typeParameters)); } - var methodDeclWriter = classDefWriter.NewBlock(string.Format("class {0}", name), ";"); + var methodDeclWriter = classDefWriter.NewBlock(string.Format("class {0}", className), ";"); var methodDefWriter = wr; - classDeclWriter.WriteLine("class {0};", name); + classDeclWriter.WriteLine("class {0};", className); methodDeclWriter.Write("public:\n"); methodDeclWriter.WriteLine("// Default constructor"); - methodDeclWriter.WriteLine("{0}() {{}}", name); + methodDeclWriter.WriteLine("{0}() {{}}", className); // Create the code for the specialization of get_default - var fullName = moduleName + "::" + name; + var fullName = moduleName + "::" + className; var getDefaultStr = String.Format("template <{0}>\nstruct get_default > {{\n", TypeParameters(typeParameters), fullName, @@ -266,7 +275,7 @@ protected override IClassWriter CreateClass(string moduleName, string name, bool var fieldWriter = methodDeclWriter; - return new ClassWriter(name, this, methodDeclWriter, methodDefWriter, fieldWriter, wr); + return new ClassWriter(className, this, methodDeclWriter, methodDefWriter, fieldWriter, wr); } protected override bool SupportsProperties { get => false; } @@ -615,8 +624,8 @@ protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTre } else { throw new UnsupportedFeatureException(nt.Origin, Feature.NonNativeNewtypes); } - var className = "class_" + IdName(nt); - var cw = CreateClass(nt.EnclosingModuleDefinition.GetCompileName(Options), className, nt, wr) as ClassWriter; + var cw = CreateClass(nt.EnclosingModuleDefinition.GetCompileName(Options), nt, wr) as ClassWriter; + var className = clName(nt); var w = cw.MethodDeclWriter; if (nt.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new ConcreteSyntaxTree(w.RelativeIndentLevel); @@ -653,8 +662,8 @@ protected override void DeclareSubsetType(SubsetTypeDecl sst, ConcreteSyntaxTree this.modDeclWr.WriteLine("{0} using {1} = {2};", templateDecl, IdName(sst), TypeName(sst.Var.Type, wr, sst.Origin)); - var className = "class_" + IdName(sst); - var cw = CreateClass(sst.EnclosingModuleDefinition.GetCompileName(Options), className, sst, wr) as ClassWriter; + var cw = CreateClass(sst.EnclosingModuleDefinition.GetCompileName(Options), sst, wr) as ClassWriter; + var className = clName(sst); var w = cw.MethodDeclWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { @@ -785,7 +794,7 @@ public void Finish() { } wr.Write("{0} {1}{2}::{3}", targetReturnTypeReplacement ?? "void", - m.EnclosingClass.GetCompileName(Options), + clName(m.EnclosingClass), InstantiateTemplate(m.EnclosingClass.TypeArgs), IdName(m)); @@ -1043,7 +1052,7 @@ protected override string TypeInitializationValue(Type type, ConcreteSyntaxTree } else if (cl is NewtypeDecl) { var td = (NewtypeDecl)cl; if (td.Witness != null) { - return td.EnclosingModuleDefinition.GetCompileName(Options) + "::class_" + td.GetCompileName(Options) + "::Witness"; + return td.EnclosingModuleDefinition.GetCompileName(Options) + "::" + clName(td) + "::Witness"; } else if (td.NativeType != null) { return "0"; } else { @@ -1052,7 +1061,7 @@ protected override string TypeInitializationValue(Type type, ConcreteSyntaxTree } else if (cl is SubsetTypeDecl) { var td = (SubsetTypeDecl)cl; if (td.WitnessKind == SubsetTypeDecl.WKind.Compiled) { - return td.EnclosingModuleDefinition.GetCompileName(Options) + "::class_" + td.GetCompileName(Options) + "::Witness"; + return td.EnclosingModuleDefinition.GetCompileName(Options) + "::" + clName(td) + "::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); @@ -1762,7 +1771,7 @@ protected override ILvalue EmitMemberSelect(Action obj, Type // 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}::{2}", IdProtect(member.EnclosingClass.EnclosingModuleDefinition.GetCompileName(Options)), IdProtect(member.EnclosingClass.GetCompileName(Options)), IdProtect(member.GetCompileName(Options))); + wr.Write("{0}::{1}::{2}", IdProtect(member.EnclosingClass.EnclosingModuleDefinition.GetCompileName(Options)), IdProtect(clName(member.EnclosingClass)), IdProtect(member.GetCompileName(Options))); }); } else if (member is DatatypeDestructor dtor && dtor.EnclosingClass is TupleTypeDecl) { return SuffixLvalue(obj, ".get<{0}>()", dtor.Name); diff --git a/Source/DafnyCore/Backends/Dafny/DafnyCodeGenerator.cs b/Source/DafnyCore/Backends/Dafny/DafnyCodeGenerator.cs index 05b0ba6a851..ba17c4a4d15 100644 --- a/Source/DafnyCore/Backends/Dafny/DafnyCodeGenerator.cs +++ b/Source/DafnyCore/Backends/Dafny/DafnyCodeGenerator.cs @@ -193,13 +193,13 @@ protected override ConcreteSyntaxTree EmitCoercionIfNecessary(Type from, Type to } } - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string fullPrintName, + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string fullPrintName, List typeParameters, TopLevelDecl cls, List superClasses, IOrigin tok, ConcreteSyntaxTree wr) { if (currentBuilder is ClassContainer builder) { List typeParams = typeParameters.Select(tp => GenTypeArgDecl(tp)).ToList(); return new ClassWriter(this, typeParams.Count > 0, builder.Class( - name, moduleName, typeParams, superClasses.Select(t => GenType(t)).ToList(), + IdName(cls), moduleName, typeParams, superClasses.Select(t => GenType(t)).ToList(), ParseAttributes(cls.Attributes), GetDocString(cls)) ); } else { diff --git a/Source/DafnyCore/Backends/GoLang/GoCodeGenerator.cs b/Source/DafnyCore/Backends/GoLang/GoCodeGenerator.cs index edbeb76c7c0..12dfa815b05 100644 --- a/Source/DafnyCore/Backends/GoLang/GoCodeGenerator.cs +++ b/Source/DafnyCore/Backends/GoLang/GoCodeGenerator.cs @@ -329,16 +329,16 @@ private void EmitImport(Import import, ConcreteSyntaxTree importWriter, Concrete private string HelperModulePrefix => ModuleName == "dafny" ? "" : $"{GetHelperModuleName()}."; - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string/*?*/ fullPrintName, List typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { var isDefaultClass = cls is DefaultClassDecl; bool isSequence = superClasses.Any(superClass => superClass is UserDefinedType udt && IsDafnySequence(udt.ResolvedClass)); - return CreateClass(cls, name, isExtern, fullPrintName, typeParameters, superClasses, tok, wr, includeRtd: !isDefaultClass, includeEquals: !isSequence, includeString: !isSequence); + return CreateClass(cls, isExtern, fullPrintName, typeParameters, superClasses, tok, wr, includeRtd: !isDefaultClass, includeEquals: !isSequence, includeString: !isSequence); } // TODO Consider splitting this into two functions; most things seem to be passing includeRtd: false, includeEquals: false and includeString: true. - private GoCodeGenerator.ClassWriter CreateClass(TopLevelDecl classContext, string name, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr, bool includeRtd, bool includeEquals, bool includeString) { + private GoCodeGenerator.ClassWriter CreateClass(TopLevelDecl classContext, bool isExtern, string/*?*/ fullPrintName, List/*?*/ typeParameters, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr, bool includeRtd, bool includeEquals, bool includeString) { // See docs/Compilation/ReferenceTypes.md for a description of how instance members of classes and traits are compiled into Go. // // func New_Class_(Type0 _dafny.TypeDescriptor, Type1 _dafny.TypeDescriptor) *Class { @@ -382,7 +382,7 @@ private GoCodeGenerator.ClassWriter CreateClass(TopLevelDecl classContext, strin // return "module.Class" // } // - name = Capitalize(name); + var name = Capitalize(IdName(classContext)); var w = CreateDescribedSection("class {0}", wr, name); @@ -586,7 +586,7 @@ protected override ConcreteSyntaxTree CreateIterator(IteratorDecl iter, Concrete // // break becomes: // return // }() - var cw = CreateClass(iter, IdName(iter), false, null, iter.TypeArgs, null, null, wr, includeRtd: false, includeEquals: false, includeString: true); + var cw = CreateClass(iter, false, null, iter.TypeArgs, null, null, wr, includeRtd: false, includeEquals: false, includeString: true); cw.InstanceFieldWriter.WriteLine("cont chan<- struct{}"); cw.InstanceFieldWriter.WriteLine("yielded <-chan struct{}"); @@ -1084,7 +1084,7 @@ string StructOfCtor(DatatypeCtor ctor) { } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTree wr) { - var cw = CreateClass(nt, IdName(nt), false, null, nt.TypeArgs, + var cw = CreateClass(nt, false, null, nt.TypeArgs, nt.ParentTypeInformation.UniqueParentTraits(), null, wr, includeRtd: false, includeEquals: false, includeString: true); var w = cw.ConcreteMethodWriter; var nativeType = nt.NativeType != null ? GetNativeTypeName(nt.NativeType) : null; @@ -1130,7 +1130,7 @@ protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTre } protected override void DeclareSubsetType(SubsetTypeDecl sst, ConcreteSyntaxTree wr) { - var cw = CreateClass(sst, IdName(sst), false, null, sst.TypeArgs, null, null, wr, includeRtd: false, includeEquals: false, includeString: true); + var cw = CreateClass(sst, false, null, sst.TypeArgs, null, null, wr, includeRtd: false, includeEquals: false, includeString: true); var w = cw.ConcreteMethodWriter; if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var witness = new ConcreteSyntaxTree(w.RelativeIndentLevel); @@ -2515,7 +2515,7 @@ private string IdName(Declaration decl) { // Don't use Go_ because Capitalize might use it and we know there's a conflict return "Go__" + decl.GetCompileName(Options); } else { - return Capitalize(decl.GetCompileName(Options)); + return IdProtect(Capitalize(decl.GetCompileName(Options))); } } @@ -2579,6 +2579,7 @@ public override string PublicIdProtect(string name) { case "String": case "Equals": case "EqualsGeneric": + case "Default": // Built-in types (can also be used as functions) case "bool": diff --git a/Source/DafnyCore/Backends/Java/JavaCodeGenerator.cs b/Source/DafnyCore/Backends/Java/JavaCodeGenerator.cs index 868393dc65b..89c86b482ad 100644 --- a/Source/DafnyCore/Backends/Java/JavaCodeGenerator.cs +++ b/Source/DafnyCore/Backends/Java/JavaCodeGenerator.cs @@ -373,7 +373,7 @@ protected override void FinishModule() { } protected override void DeclareSubsetType(SubsetTypeDecl sst, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), IdName(sst), sst, wr); + var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), sst, wr); if (sst.WitnessKind == SubsetTypeDecl.WKind.Compiled) { var sw = new ConcreteSyntaxTree(cw.InstanceMemberWriter.RelativeIndentLevel); var wStmts = cw.InstanceMemberWriter.Fork(); @@ -870,8 +870,9 @@ protected override string TypeName_UDT(string fullCompileName, List typeParameters, TopLevelDecl cls, List /*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { + var name = IdName(cls); var javaName = isExtern ? FormatExternBaseClassName(name) : name; var filename = $"{ModulePath}/{javaName}.java"; var w = wr.NewFile(filename); @@ -2439,6 +2440,7 @@ private static string PublicIdProtectAux(string name) { case "toString": case "equals": case "hashCode": + case "Default": return name + "_"; // TODO: figure out what to do here (C# uses @, Go uses _, JS uses _$$_) default: return name; // Package name is not a keyword, so it can be used @@ -3601,7 +3603,7 @@ protected override void EmitHalt(IOrigin tok, Expression messageExpr, ConcreteSy } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), IdName(nt), nt, wr); + var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), nt, wr); var w = cw.StaticMemberWriter; if (nt.NativeType != null) { var nativeType = GetBoxedNativeTypeName(nt.NativeType); diff --git a/Source/DafnyCore/Backends/JavaScript/JavaScriptCodeGenerator.cs b/Source/DafnyCore/Backends/JavaScript/JavaScriptCodeGenerator.cs index 5593c745011..a75fd312f41 100644 --- a/Source/DafnyCore/Backends/JavaScript/JavaScriptCodeGenerator.cs +++ b/Source/DafnyCore/Backends/JavaScript/JavaScriptCodeGenerator.cs @@ -90,8 +90,9 @@ protected override ConcreteSyntaxTree CreateModule(ModuleDefinition module, stri protected override string GetHelperModuleName() => "_dafny"; - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string/*?*/ fullPrintName, List typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr) { + var name = IdName(cls); var w = wr.NewBlock(string.Format("$module.{0} = class {0}" + (isExtern ? " extends $module.{0}" : ""), name), ";"); w.Write("constructor ("); var sep = ""; @@ -160,7 +161,7 @@ protected override ConcreteSyntaxTree CreateIterator(IteratorDecl iter, Concrete // } // } - var cw = CreateClass(IdProtect(iter.EnclosingModuleDefinition.GetCompileName(Options)), IdName(iter), iter, wr) as JavaScriptCodeGenerator.ClassWriter; + var cw = CreateClass(IdProtect(iter.EnclosingModuleDefinition.GetCompileName(Options)), iter, wr) as JavaScriptCodeGenerator.ClassWriter; var w = cw.MethodWriter; var instanceFieldsWriter = cw.FieldWriter; // here come the fields @@ -575,7 +576,7 @@ protected override ConcreteSyntaxTree CreateIterator(IteratorDecl iter, Concrete } protected override IClassWriter DeclareNewtype(NewtypeDecl nt, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), IdName(nt), nt, wr); + var cw = (ClassWriter)CreateClass(IdProtect(nt.EnclosingModuleDefinition.GetCompileName(Options)), nt, wr); var w = cw.MethodWriter; if (nt.NativeType != null) { var wIntegerRangeBody = w.NewBlock("static *IntegerRange(lo, hi)"); @@ -638,7 +639,7 @@ void GenerateIsMethod(RedirectingTypeDecl declWithConstraints, ConcreteSyntaxTre } protected override void DeclareSubsetType(SubsetTypeDecl sst, ConcreteSyntaxTree wr) { - var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), IdName(sst), sst, wr); + var cw = (ClassWriter)CreateClass(IdProtect(sst.EnclosingModuleDefinition.GetCompileName(Options)), sst, wr); var w = cw.MethodWriter; var udt = UserDefinedType.FromTopLevelDecl(sst.Origin, sst); string d; diff --git a/Source/DafnyCore/Backends/Python/PythonCodeGenerator.cs b/Source/DafnyCore/Backends/Python/PythonCodeGenerator.cs index 7654c96ec0e..e95837a998b 100644 --- a/Source/DafnyCore/Backends/Python/PythonCodeGenerator.cs +++ b/Source/DafnyCore/Backends/Python/PythonCodeGenerator.cs @@ -231,12 +231,13 @@ private static string MangleName(string name) { return name; } - protected override IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, + protected override IClassWriter CreateClass(string moduleName, bool isExtern, string/*?*/ fullPrintName, List typeParameters, TopLevelDecl cls, List superClasses, IOrigin tok, ConcreteSyntaxTree wr) { var realSuperClasses = superClasses?.Where(trait => !trait.IsObject).ToList() ?? new List(); var baseClasses = realSuperClasses.Any() ? $"({realSuperClasses.Comma(trait => TypeName(trait, wr, tok))})" : ""; + var name = IdName(cls); var methodWriter = wr.NewBlockPy(header: $"class {IdProtect(name)}{baseClasses}:"); var relevantTypeParameters = typeParameters.Where(NeedsTypeDescriptor).ToList(); @@ -276,7 +277,7 @@ protected override IClassWriter CreateTrait(string name, bool isExtern, List true; protected virtual bool TraitRepeatsInheritedDeclarations => false; protected virtual bool InstanceMethodsAllowedToCallTraitMethods => true; - protected IClassWriter CreateClass(string moduleName, string name, TopLevelDecl cls, ConcreteSyntaxTree wr) { - return CreateClass(moduleName, name, false, null, cls.TypeArgs, + protected IClassWriter CreateClass(string moduleName, TopLevelDecl cls, ConcreteSyntaxTree wr) { + return CreateClass(moduleName, false, null, cls.TypeArgs, cls, (cls as TopLevelDeclWithMembers)?.ParentTypeInformation.UniqueParentTraits(), null, wr); } /// /// "tok" can be "null" if "superClasses" is. /// - protected abstract IClassWriter CreateClass(string moduleName, string name, bool isExtern, string/*?*/ fullPrintName, + protected abstract IClassWriter CreateClass(string moduleName, bool isExtern, string/*?*/ fullPrintName, List typeParameters, TopLevelDecl cls, List/*?*/ superClasses, IOrigin tok, ConcreteSyntaxTree wr); /// @@ -1606,7 +1606,7 @@ private void EmitModule(Program program, ConcreteSyntaxTree programNode, ModuleD Contract.Assert(enclosingModule == null); enclosingModule = module; var wr = CreateModule(module, module.GetCompileName(Options), module.IsDefaultModule, externModule, libraryName, module.Attributes, programNode); - var v = new CheckHasNoAssumes_Visitor(this, wr); + var v = new CheckHasNoAssumesVisitor(this, wr); foreach (TopLevelDecl d in module.TopLevelDecls) { if (!ProgramResolver.ShouldCompile(d)) { continue; @@ -1685,7 +1685,6 @@ private void EmitModule(Program program, ConcreteSyntaxTree programNode, ModuleD if (include) { var cw = CreateClass(IdProtect(d.EnclosingModuleDefinition.GetCompileName(Options)), - IdName(defaultClassDecl), classIsExtern, defaultClassDecl.FullName, defaultClassDecl.TypeArgs, defaultClassDecl, defaultClassDecl.ParentTypeInformation.UniqueParentTraits(), defaultClassDecl.Origin, wr); @@ -1700,7 +1699,7 @@ private void EmitModule(Program program, ConcreteSyntaxTree programNode, ModuleD var (classIsExtern, include) = GetIsExternAndIncluded(cl); if (include) { - var cw = CreateClass(IdProtect(d.EnclosingModuleDefinition.GetCompileName(Options)), IdName(cl), + var cw = CreateClass(IdProtect(d.EnclosingModuleDefinition.GetCompileName(Options)), classIsExtern, cl.FullName, cl.TypeArgs, cl, cl.ParentTypeInformation.UniqueParentTraits(), cl.Origin, wr); CompileClassMembers(program, cl, cw); @@ -2152,7 +2151,7 @@ void CompileClassMembers(Program program, TopLevelDeclWithMembers c, IClassWrite Contract.Ensures(thisContext == null); var errorWr = classWriter.ErrorWriter(); - var v = new CheckHasNoAssumes_Visitor(this, errorWr); + var v = new CheckHasNoAssumesVisitor(this, errorWr); var inheritedMembers = c.InheritedMembers; OrderedBySCC(inheritedMembers, c); @@ -3264,10 +3263,10 @@ protected string DefaultValueCoercedIfNecessary(Type type, ConcreteSyntaxTree wr // ----- Stmt --------------------------------------------------------------------------------- - public class CheckHasNoAssumes_Visitor : BottomUpVisitor { + public class CheckHasNoAssumesVisitor : BottomUpVisitor { readonly SinglePassCodeGenerator codeGenerator; ConcreteSyntaxTree wr; - public CheckHasNoAssumes_Visitor(SinglePassCodeGenerator c, ConcreteSyntaxTree wr) { + public CheckHasNoAssumesVisitor(SinglePassCodeGenerator c, ConcreteSyntaxTree wr) { Contract.Requires(c != null); codeGenerator = c; this.wr = wr; diff --git a/Source/DafnyCore/DafnyPrelude.bpl b/Source/DafnyCore/DafnyPrelude.bpl index 4aed15b8cb9..45c0538cecf 100644 --- a/Source/DafnyCore/DafnyPrelude.bpl +++ b/Source/DafnyCore/DafnyPrelude.bpl @@ -480,14 +480,6 @@ axiom (forall o: ORDINAL, m,n: int :: (0 <= m - n ==> ORD#Plus(ORD#Minus(o, ORD#FromNat(m)), ORD#FromNat(n)) == ORD#Minus(o, ORD#FromNat(m-n))) && (m - n <= 0 ==> ORD#Plus(ORD#Minus(o, ORD#FromNat(m)), ORD#FromNat(n)) == ORD#Plus(o, ORD#FromNat(n-m)))); -// --------------------------------------------------------------- -// -- Axiom contexts --------------------------------------------- -// --------------------------------------------------------------- - -// used to make sure function axioms are not used while their consistency is being checked -const $ModuleContextHeight: int; -const $FunctionContextHeight: int; - // --------------------------------------------------------------- // -- Layers of function encodings ------------------------------- // --------------------------------------------------------------- diff --git a/Source/DafnyCore/Options/BoogieOptionBag.cs b/Source/DafnyCore/Options/BoogieOptionBag.cs index 2983c3dbf3b..59ffe8bfcbe 100644 --- a/Source/DafnyCore/Options/BoogieOptionBag.cs +++ b/Source/DafnyCore/Options/BoogieOptionBag.cs @@ -51,8 +51,8 @@ public static class BoogieOptionBag { IsHidden = true }; - public static readonly Option VerificationTimeLimit = new("--verification-time-limit", - "Limit the number of seconds spent trying to verify each procedure") { + public static readonly Option VerificationTimeLimit = new("--verification-time-limit", () => 30, + "Limit the number of seconds spent trying to verify each assertion batch. A value of 0 indicates no limit") { ArgumentHelpName = "seconds", }; diff --git a/Source/DafnyCore/Pipeline/Compilation.cs b/Source/DafnyCore/Pipeline/Compilation.cs index d89a6b973fd..0ecaadeae78 100644 --- a/Source/DafnyCore/Pipeline/Compilation.cs +++ b/Source/DafnyCore/Pipeline/Compilation.cs @@ -4,6 +4,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.CommandLine; +using System.CommandLine.Help; using System.IO; using System.Linq; using System.Reactive; @@ -560,17 +561,96 @@ public static void ReportDiagnosticsInResult(DafnyOptions options, string name, errorReporter.ReportBoogieError(errorInformation, dafnyCounterExampleModel); } - // This reports problems that are not captured by counter-examples, like a time-out - // The Boogie API forces us to create a temporary engine here to report the outcome, even though it only uses the options. - var boogieEngine = new ExecutionEngine(options, new EmptyVerificationResultCache(), - CustomStackSizePoolTaskScheduler.Create(0, 0)); - boogieEngine.ReportOutcome(null, outcome, outcomeError => errorReporter.ReportBoogieError(outcomeError, null, false), - name, token, null, TextWriter.Null, - timeLimit, result.CounterExamples); + var outcomeError = ReportOutcome(options, outcome, name, token, timeLimit, result.CounterExamples); + if (outcomeError != null) { + errorReporter.ReportBoogieError(outcomeError, null, false); + } + } + + private static ErrorInformation? ReportOutcome(DafnyOptions options, + VcOutcome vcOutcome, string name, + IToken token, uint timeLimit, List errors) { + ErrorInformation? errorInfo = null; + + switch (vcOutcome) { + case VcOutcome.Correct: + break; + case VcOutcome.Errors: + case VcOutcome.TimedOut: { + if (vcOutcome != VcOutcome.TimedOut && + (!errors.Any(e => e.IsAuxiliaryCexForDiagnosingTimeouts))) { + break; + } + + string msg = string.Format("Verification of '{1}' timed out after {0} seconds. (the limit can be increased using --verification-time-limit)", timeLimit, name); + errorInfo = ErrorInformation.Create(token, msg); + + // Report timed out assertions as auxiliary info. + var comparer = new CounterexampleComparer(); + var timedOutAssertions = errors.Where(e => e.IsAuxiliaryCexForDiagnosingTimeouts).Distinct(comparer) + .OrderBy(x => x, comparer).ToList(); + if (0 < timedOutAssertions.Count) { + errorInfo!.Msg += $" with {timedOutAssertions.Count} check(s) that timed out individually"; + } + + foreach (Counterexample error in timedOutAssertions) { + IToken tok; + string auxMsg = null!; + switch (error) { + case CallCounterexample callCounterexample: + tok = callCounterexample.FailingCall.tok; + auxMsg = callCounterexample.FailingCall.Description.FailureDescription; + break; + case ReturnCounterexample returnCounterexample: + tok = returnCounterexample.FailingReturn.tok; + auxMsg = returnCounterexample.FailingReturn.Description.FailureDescription; + break; + case AssertCounterexample assertError: { + tok = assertError.FailingAssert.tok; + if (!(assertError.FailingAssert.ErrorMessage == null || + ((ExecutionEngineOptions)options).ForceBplErrors)) { + auxMsg = assertError.FailingAssert.ErrorMessage; + } + + auxMsg ??= assertError.FailingAssert.Description.FailureDescription; + break; + } + default: throw new Exception(); + } + + errorInfo.AddAuxInfo(tok, auxMsg, "Unverified check due to timeout"); + } + + break; + } + case VcOutcome.OutOfResource: { + string msg = "Verification out of resource (" + name + ")"; + errorInfo = ErrorInformation.Create(token, msg); + } + break; + case VcOutcome.OutOfMemory: { + string msg = "Verification out of memory (" + name + ")"; + errorInfo = ErrorInformation.Create(token, msg); + } + break; + case VcOutcome.SolverException: { + string msg = "Verification encountered solver exception (" + name + ")"; + errorInfo = ErrorInformation.Create(token, msg); + } + break; + + case VcOutcome.Inconclusive: { + string msg = "Verification inconclusive (" + name + ")"; + errorInfo = ErrorInformation.Create(token, msg); + } + break; + } + + return errorInfo; } private static void AddAssertedExprToCounterExampleErrorInfo( - DafnyOptions options, Counterexample counterExample, ErrorInformation errorInformation) { + DafnyOptions options, Counterexample counterExample, ErrorInformation errorInformation) { Boogie.ProofObligationDescription? boogieProofObligationDesc = null; switch (errorInformation.Kind) { case ErrorKind.Assertion: diff --git a/Source/DafnyCore/Prelude/PreludeCore.bpl b/Source/DafnyCore/Prelude/PreludeCore.bpl index 5a6f398ce86..7c28e2f0ee2 100644 --- a/Source/DafnyCore/Prelude/PreludeCore.bpl +++ b/Source/DafnyCore/Prelude/PreludeCore.bpl @@ -480,14 +480,6 @@ axiom (forall o: ORDINAL, m,n: int :: (0 <= m - n ==> ORD#Plus(ORD#Minus(o, ORD#FromNat(m)), ORD#FromNat(n)) == ORD#Minus(o, ORD#FromNat(m-n))) && (m - n <= 0 ==> ORD#Plus(ORD#Minus(o, ORD#FromNat(m)), ORD#FromNat(n)) == ORD#Plus(o, ORD#FromNat(n-m)))); -// --------------------------------------------------------------- -// -- Axiom contexts --------------------------------------------- -// --------------------------------------------------------------- - -// used to make sure function axioms are not used while their consistency is being checked -const $ModuleContextHeight: int; -const $FunctionContextHeight: int; - // --------------------------------------------------------------- // -- Layers of function encodings ------------------------------- // --------------------------------------------------------------- diff --git a/Source/DafnyCore/Resolver/CheckDividedConstructorInit_Visitor.cs b/Source/DafnyCore/Resolver/CheckDividedConstructorInitVisitor.cs similarity index 96% rename from Source/DafnyCore/Resolver/CheckDividedConstructorInit_Visitor.cs rename to Source/DafnyCore/Resolver/CheckDividedConstructorInitVisitor.cs index 42d1a6064b7..0a1ece212b3 100644 --- a/Source/DafnyCore/Resolver/CheckDividedConstructorInit_Visitor.cs +++ b/Source/DafnyCore/Resolver/CheckDividedConstructorInitVisitor.cs @@ -4,8 +4,8 @@ namespace Microsoft.Dafny; -class CheckDividedConstructorInit_Visitor : ResolverTopDownVisitor { - public CheckDividedConstructorInit_Visitor(ErrorReporter reporter) +class CheckDividedConstructorInitVisitor : ResolverTopDownVisitor { + public CheckDividedConstructorInitVisitor(ErrorReporter reporter) : base(reporter) { Contract.Requires(reporter != null); } @@ -65,7 +65,7 @@ protected override bool VisitOneExpr(Expression expr, ref int unused) { } } else if (expr is UnaryOpExpr { Op: UnaryOpExpr.Opcode.Assigned }) { return false; // don't continue the recursion - } else if (expr is ThisExpr && !(expr is ImplicitThisExpr_ConstructorCall)) { + } else if (expr is ThisExpr && !(expr is ImplicitThisExprConstructorCall)) { reporter.Error(MessageSource.Resolver, expr.Origin, "in the first division of the constructor body (before 'new;'), 'this' can only be used to assign to its fields"); } return base.VisitOneExpr(expr, ref unused); diff --git a/Source/DafnyCore/Resolver/CheckTypeCharacteristics_Visitor.cs b/Source/DafnyCore/Resolver/CheckTypeCharacteristicsVisitor.cs similarity index 99% rename from Source/DafnyCore/Resolver/CheckTypeCharacteristics_Visitor.cs rename to Source/DafnyCore/Resolver/CheckTypeCharacteristicsVisitor.cs index d1dcd0cb0c2..e963fbc48d9 100644 --- a/Source/DafnyCore/Resolver/CheckTypeCharacteristics_Visitor.cs +++ b/Source/DafnyCore/Resolver/CheckTypeCharacteristicsVisitor.cs @@ -9,8 +9,8 @@ namespace Microsoft.Dafny; /// 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 CheckTypeCharacteristics_Visitor(ErrorReporter reporter) +class CheckTypeCharacteristicsVisitor : ResolverTopDownVisitor { + public CheckTypeCharacteristicsVisitor(ErrorReporter reporter) : base(reporter) { Contract.Requires(reporter != null); } diff --git a/Source/DafnyCore/Resolver/CollectFriendlyCallsInSpec_Visitor.cs b/Source/DafnyCore/Resolver/CollectFriendlyCallsInSpecVisitor.cs similarity index 89% rename from Source/DafnyCore/Resolver/CollectFriendlyCallsInSpec_Visitor.cs rename to Source/DafnyCore/Resolver/CollectFriendlyCallsInSpecVisitor.cs index dec019e8be5..e632340d547 100644 --- a/Source/DafnyCore/Resolver/CollectFriendlyCallsInSpec_Visitor.cs +++ b/Source/DafnyCore/Resolver/CollectFriendlyCallsInSpecVisitor.cs @@ -3,10 +3,10 @@ namespace Microsoft.Dafny; -class CollectFriendlyCallsInSpec_Visitor : FindFriendlyCalls_Visitor { +class CollectFriendlyCallsInSpecVisitor : FindFriendlyCallsVisitor { readonly ISet friendlyCalls; readonly ExtremeLemma Context; - public CollectFriendlyCallsInSpec_Visitor(ErrorReporter reporter, ISet friendlyCalls, bool co, ExtremeLemma context) + public CollectFriendlyCallsInSpecVisitor(ErrorReporter reporter, ISet friendlyCalls, bool co, ExtremeLemma context) : base(reporter, co, context.KNat) { Contract.Requires(reporter != null); Contract.Requires(friendlyCalls != null); diff --git a/Source/DafnyCore/Resolver/DetectUnsoundFunctionReferencesVisitor.cs b/Source/DafnyCore/Resolver/DetectUnsoundFunctionReferencesVisitor.cs new file mode 100644 index 00000000000..d3696de66bd --- /dev/null +++ b/Source/DafnyCore/Resolver/DetectUnsoundFunctionReferencesVisitor.cs @@ -0,0 +1,41 @@ +using System.Diagnostics.Contracts; + +namespace Microsoft.Dafny; + +class DetectUnsoundFunctionReferencesVisitor : ResolverBottomUpVisitor { + private readonly ICallable context; + private bool doDecreasesChecks; + private DetectUnsoundFunctionReferencesVisitor(ModuleResolver resolver, ICallable context) + : base(resolver) { + Contract.Requires(resolver != null); + Contract.Requires(context != null); + this.context = context; + } + + public static void Check(Function function, ModuleResolver resolver) { + var visitor = new DetectUnsoundFunctionReferencesVisitor(resolver, function); + visitor.doDecreasesChecks = false; + visitor.Visit(function); + visitor.doDecreasesChecks = true; + visitor.Visit(function.Decreases.Expressions); + } + + protected override void VisitOneExpr(Expression expr) { + if (!doDecreasesChecks && expr is MemberSelectExpr { Member: Function fn } && ModuleDefinition.InSameSCC(context, fn)) { + resolver.reporter.Error(MessageSource.Resolver, expr.Origin, + "cannot use naked function in recursive setting. Possible solution: eta expansion."); + } + + if (doDecreasesChecks && expr is FunctionCallExpr callExpr && ModuleDefinition.InSameSCC(context, callExpr.Function)) { + string msg; + if (context == callExpr.Function) { + msg = "a decreases clause is not allowed to call the enclosing function"; + } else { + msg = $"the decreases clause of {context.WhatKind} '{context.NameRelativeToModule}' is not allowed to call '{callExpr.Function}', " + + "because they are mutually recursive"; + } + + resolver.reporter.Error(MessageSource.Resolver, callExpr.Origin, msg); + } + } +} diff --git a/Source/DafnyCore/Resolver/ExtremeLemmaChecksVisitor.cs b/Source/DafnyCore/Resolver/ExtremeLemmaChecksVisitor.cs new file mode 100644 index 00000000000..a67f8b38013 --- /dev/null +++ b/Source/DafnyCore/Resolver/ExtremeLemmaChecksVisitor.cs @@ -0,0 +1,35 @@ +using System.Diagnostics.Contracts; + +namespace Microsoft.Dafny; + +class ExtremeLemmaChecksVisitor : ResolverBottomUpVisitor { + ExtremeLemma context; + public ExtremeLemmaChecksVisitor(ModuleResolver resolver, ExtremeLemma context) + : base(resolver) { + Contract.Requires(resolver != null); + Contract.Requires(context != null); + this.context = context; + } + protected override void VisitOneStmt(Statement stmt) { + if (stmt is CallStmt callStmt) { + if (callStmt.Method is ExtremeLemma or PrefixLemma) { + // all is cool + } else { + // the call goes from an extreme lemma context to a non-extreme-lemma callee + if (ModuleDefinition.InSameSCC(context, callStmt.Method)) { + // we're looking at a recursive call (to a non-extreme-lemma) + resolver.reporter.Error(MessageSource.Resolver, callStmt.Origin, "a recursive call from a {0} can go only to other {0}s and prefix lemmas", context.WhatKind); + } + } + } + } + protected override void VisitOneExpr(Expression expr) { + if (expr is FunctionCallExpr callExpr) { + // the call goes from a greatest lemma context to a non-greatest-lemma callee + if (ModuleDefinition.InSameSCC(context, callExpr.Function)) { + // we're looking at a recursive call (to a non-greatest-lemma) + resolver.reporter.Error(MessageSource.Resolver, callExpr.Origin, "a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas"); + } + } + } +} \ No newline at end of file diff --git a/Source/DafnyCore/Resolver/ExtremeLemmaChecks_Visitor.cs b/Source/DafnyCore/Resolver/ExtremeLemmaChecks_Visitor.cs deleted file mode 100644 index d5277d01b2c..00000000000 --- a/Source/DafnyCore/Resolver/ExtremeLemmaChecks_Visitor.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Diagnostics.Contracts; - -namespace Microsoft.Dafny; - -class ExtremeLemmaChecks_Visitor : ResolverBottomUpVisitor { - ExtremeLemma context; - public ExtremeLemmaChecks_Visitor(ModuleResolver resolver, ExtremeLemma context) - : base(resolver) { - Contract.Requires(resolver != null); - Contract.Requires(context != null); - this.context = context; - } - protected override void VisitOneStmt(Statement stmt) { - if (stmt is CallStmt) { - var s = (CallStmt)stmt; - if (s.Method is ExtremeLemma || s.Method is PrefixLemma) { - // all is cool - } else { - // the call goes from an extreme lemma context to a non-extreme-lemma callee - if (ModuleDefinition.InSameSCC(context, s.Method)) { - // we're looking at a recursive call (to a non-extreme-lemma) - resolver.reporter.Error(MessageSource.Resolver, s.Origin, "a recursive call from a {0} can go only to other {0}s and prefix lemmas", context.WhatKind); - } - } - } - } - protected override void VisitOneExpr(Expression expr) { - if (expr is FunctionCallExpr) { - var e = (FunctionCallExpr)expr; - // the call goes from a greatest lemma context to a non-greatest-lemma callee - if (ModuleDefinition.InSameSCC(context, e.Function)) { - // we're looking at a recursive call (to a non-greatest-lemma) - resolver.reporter.Error(MessageSource.Resolver, e.Origin, "a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas"); - } - } - } -} \ No newline at end of file diff --git a/Source/DafnyCore/Resolver/ExtremePredicateChecks_Visitor.cs b/Source/DafnyCore/Resolver/ExtremePredicateChecksVisitor.cs similarity index 94% rename from Source/DafnyCore/Resolver/ExtremePredicateChecks_Visitor.cs rename to Source/DafnyCore/Resolver/ExtremePredicateChecksVisitor.cs index 68a1ab8f4af..c7155662feb 100644 --- a/Source/DafnyCore/Resolver/ExtremePredicateChecks_Visitor.cs +++ b/Source/DafnyCore/Resolver/ExtremePredicateChecksVisitor.cs @@ -2,9 +2,9 @@ namespace Microsoft.Dafny; -class ExtremePredicateChecks_Visitor : FindFriendlyCalls_Visitor { +class ExtremePredicateChecksVisitor : FindFriendlyCallsVisitor { readonly ExtremePredicate context; - public ExtremePredicateChecks_Visitor(ErrorReporter reporter, ExtremePredicate context) + public ExtremePredicateChecksVisitor(ErrorReporter reporter, ExtremePredicate context) : base(reporter, context is GreatestPredicate, context.KNat) { Contract.Requires(reporter != null); Contract.Requires(context != null); diff --git a/Source/DafnyCore/Resolver/FillInDefaultLoopDecreases_Visitor.cs b/Source/DafnyCore/Resolver/FillInDefaultLoopDecreasesVisitor.cs similarity index 98% rename from Source/DafnyCore/Resolver/FillInDefaultLoopDecreases_Visitor.cs rename to Source/DafnyCore/Resolver/FillInDefaultLoopDecreasesVisitor.cs index 687c66bb912..8d65bd814a2 100644 --- a/Source/DafnyCore/Resolver/FillInDefaultLoopDecreases_Visitor.cs +++ b/Source/DafnyCore/Resolver/FillInDefaultLoopDecreasesVisitor.cs @@ -3,9 +3,9 @@ namespace Microsoft.Dafny; -class FillInDefaultLoopDecreases_Visitor : ResolverBottomUpVisitor { +class FillInDefaultLoopDecreasesVisitor : ResolverBottomUpVisitor { readonly ICallable EnclosingMethod; - public FillInDefaultLoopDecreases_Visitor(ModuleResolver resolver, ICallable enclosingMethod) + public FillInDefaultLoopDecreasesVisitor(ModuleResolver resolver, ICallable enclosingMethod) : base(resolver) { Contract.Requires(resolver != null); Contract.Requires(enclosingMethod != null); diff --git a/Source/DafnyCore/Resolver/FindFriendlyCalls_Visitor.cs b/Source/DafnyCore/Resolver/FindFriendlyCallsVisitor.cs similarity index 96% rename from Source/DafnyCore/Resolver/FindFriendlyCalls_Visitor.cs rename to Source/DafnyCore/Resolver/FindFriendlyCallsVisitor.cs index 5a27d2024e3..ef34b1e9208 100644 --- a/Source/DafnyCore/Resolver/FindFriendlyCalls_Visitor.cs +++ b/Source/DafnyCore/Resolver/FindFriendlyCallsVisitor.cs @@ -4,10 +4,10 @@ namespace Microsoft.Dafny; public enum CallingPosition { Positive, Negative, Neither } -class FindFriendlyCalls_Visitor : ResolverTopDownVisitor { +class FindFriendlyCallsVisitor : ResolverTopDownVisitor { public readonly bool IsCoContext; public readonly bool ContinuityIsImportant; - public FindFriendlyCalls_Visitor(ErrorReporter reporter, bool co, bool continuityIsImportant) + public FindFriendlyCallsVisitor(ErrorReporter reporter, bool co, bool continuityIsImportant) : base(reporter) { Contract.Requires(reporter != null); this.IsCoContext = co; diff --git a/Source/DafnyCore/Resolver/FuelAdjustment.cs b/Source/DafnyCore/Resolver/FuelAdjustment.cs index bac90d5e16e..b2749f62797 100644 --- a/Source/DafnyCore/Resolver/FuelAdjustment.cs +++ b/Source/DafnyCore/Resolver/FuelAdjustment.cs @@ -18,16 +18,16 @@ public static void CheckForFuelAdjustments(ErrorReporter reporter, ModuleDefinit CheckForFuelAdjustments(reporter, clbl.Origin, iteratorDecl.Attributes, module); } else if (clbl is Function function) { CheckForFuelAdjustments(reporter, clbl.Origin, function.Attributes, module); - var c = new FuelAdjustment_Visitor(reporter); + var c = new FuelAdjustmentVisitor(reporter); var bodyExpr = function.Body; if (bodyExpr != null) { - c.Visit(bodyExpr, new FuelAdjustment_Context(module)); + c.Visit(bodyExpr, new FuelAdjustmentContext(module)); } } if (body != null) { - var c = new FuelAdjustment_Visitor(reporter); - c.Visit(body, new FuelAdjustment_Context(module)); + var c = new FuelAdjustmentVisitor(reporter); + c.Visit(body, new FuelAdjustmentContext(module)); } } } @@ -68,22 +68,22 @@ public static void CheckForFuelAdjustments(ErrorReporter reporter, IOrigin tok, } } -class FuelAdjustment_Visitor : ResolverTopDownVisitor { +class FuelAdjustmentVisitor : ResolverTopDownVisitor { - public FuelAdjustment_Visitor(ErrorReporter reporter) + public FuelAdjustmentVisitor(ErrorReporter reporter) : base(reporter) { } - protected override bool VisitOneStmt(Statement stmt, ref FuelAdjustment_Context st) { + protected override bool VisitOneStmt(Statement stmt, ref FuelAdjustmentContext st) { FuelAdjustment.CheckForFuelAdjustments(reporter, stmt.Origin, stmt.Attributes, st.currentModule); return true; } } -public class FuelAdjustment_Context { +public class FuelAdjustmentContext { public ModuleDefinition currentModule; - public FuelAdjustment_Context(ModuleDefinition currentModule) { + public FuelAdjustmentContext(ModuleDefinition currentModule) { this.currentModule = currentModule; } } \ No newline at end of file diff --git a/Source/DafnyCore/Resolver/ModuleResolver.cs b/Source/DafnyCore/Resolver/ModuleResolver.cs index f90e8df3fbf..0aa3a165156 100644 --- a/Source/DafnyCore/Resolver/ModuleResolver.cs +++ b/Source/DafnyCore/Resolver/ModuleResolver.cs @@ -115,7 +115,7 @@ public void FillInAdditionalInformation(ModuleDefinition module) { } if (body != null) { - var c = new ReportOtherAdditionalInformation_Visitor(this); + var c = new ReportOtherAdditionalInformationVisitor(this); c.Visit(body); } } @@ -134,7 +134,7 @@ public void FillInDecreasesClauses(ModuleDefinition module) { } if (body != null) { - var c = new FillInDefaultLoopDecreases_Visitor(this, clbl); + var c = new FillInDefaultLoopDecreasesVisitor(this, clbl); c.Visit(body); } } @@ -1262,6 +1262,12 @@ public void ResolveTopLevelDecls_Core(List declarations, FillInPostConditionsAndBodiesOfPrefixLemmas(declarations); } + // A function is not allowed to be used naked (that is, without being applied to arguments) in its own SCC. + // Also, a function is not allowed to be used in any way inside a "decreases" clause its its own SCC. + foreach (var function in ModuleDefinition.AllFunctions(declarations)) { + DetectUnsoundFunctionReferencesVisitor.Check(function, this); + } + // An inductive datatype is allowed to be defined as an empty type. For example, in // predicate P(x: int) { false } // type Subset = x: int | P(x) witness * @@ -1492,7 +1498,7 @@ public void ResolveTopLevelDecls_Core(List declarations, // Check that usage of "this" is restricted before "new;" in constructor bodies, // 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(reporter); + var cdci = new CheckDividedConstructorInitVisitor(reporter); foreach (var cl in ModuleDefinition.AllTypesWithMembers(declarations)) { // only reference types (classes and reference-type traits) are allowed to declare mutable fields if (cl is not ClassLikeDecl { IsReferenceTypeDecl: true }) { @@ -2015,14 +2021,14 @@ void CheckExpression(Statement stmt, ModuleResolver resolver, ICodeContext codeC void ExtremePredicateChecks(Expression expr, ExtremePredicate context, CallingPosition cp) { Contract.Requires(expr != null); Contract.Requires(context != null); - var v = new ExtremePredicateChecks_Visitor(reporter, context); + var v = new ExtremePredicateChecksVisitor(reporter, context); v.Visit(expr, cp); } void ExtremeLemmaChecks(Statement stmt, ExtremeLemma context) { Contract.Requires(stmt != null); Contract.Requires(context != null); - var v = new ExtremeLemmaChecks_Visitor(this, context); + var v = new ExtremeLemmaChecksVisitor(this, context); v.Visit(stmt); } void ExtremeLemmaChecks(Expression expr, ExtremeLemma context) { @@ -2031,7 +2037,7 @@ void ExtremeLemmaChecks(Expression expr, ExtremeLemma context) { return; } - var v = new ExtremeLemmaChecks_Visitor(this, context); + var v = new ExtremeLemmaChecksVisitor(this, context); v.Visit(expr); } @@ -2042,8 +2048,8 @@ public void ComputeGhostInterest(Statement stmt, bool mustBeErasable, [CanBeNull codeContext is Method, false); } - class ReportOtherAdditionalInformation_Visitor : ResolverBottomUpVisitor { - public ReportOtherAdditionalInformation_Visitor(ModuleResolver resolver) + class ReportOtherAdditionalInformationVisitor : ResolverBottomUpVisitor { + public ReportOtherAdditionalInformationVisitor(ModuleResolver resolver) : base(resolver) { Contract.Requires(resolver != null); } @@ -3322,11 +3328,11 @@ void CheckLocalityUpdatesLhs(Expression lhs, ISet localsAllowedIn } } - class LazyString_OnTypeEquals { + class LazyStringOnTypeEquals { Type t0; Type t1; string s; - public LazyString_OnTypeEquals(Type t0, Type t1, string s) { + public LazyStringOnTypeEquals(Type t0, Type t1, string s) { Contract.Requires(t0 != null); Contract.Requires(t1 != null); Contract.Requires(s != null); @@ -3963,7 +3969,7 @@ public static BinaryExpr.ResolvedOpcode ResolveOp(BinaryExpr.Opcode op, Type lef void CollectFriendlyCallsInExtremeLemmaSpecification(Expression expr, bool position, ISet friendlyCalls, bool co, ExtremeLemma context) { Contract.Requires(expr != null); Contract.Requires(friendlyCalls != null); - var visitor = new CollectFriendlyCallsInSpec_Visitor(reporter, friendlyCalls, co, context); + var visitor = new CollectFriendlyCallsInSpecVisitor(reporter, friendlyCalls, co, context); visitor.Visit(expr, position ? CallingPosition.Positive : CallingPosition.Negative); } } diff --git a/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/NameResolutionAndTypeInference.cs b/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/NameResolutionAndTypeInference.cs index 86c110c7a5b..ac71d0f166d 100644 --- a/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/NameResolutionAndTypeInference.cs +++ b/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/NameResolutionAndTypeInference.cs @@ -540,10 +540,10 @@ public void ResolveExpressionX(Expression expr, ResolutionContext resolutionCont var e = (NameSegment)expr; ResolveNameSegment(e, true, null, resolutionContext, false); - if (e.Type is Resolver_IdentifierExpr.ResolverType_Module) { + if (e.Type is ResolverIdentifierExpr.ResolverTypeModule) { reporter.Error(MessageSource.Resolver, e.Origin, "name of module ({0}) is used as a variable", e.Name); e.ResetTypeAssignment(); // the rest of type checking assumes actual types - } else if (e.Type is Resolver_IdentifierExpr.ResolverType_Type) { + } else if (e.Type is ResolverIdentifierExpr.ResolverTypeType) { reporter.Error(MessageSource.Resolver, e.Origin, "name of type ({0}) is used as a variable", e.Name); e.ResetTypeAssignment(); // the rest of type checking assumes actual types } @@ -551,10 +551,10 @@ public void ResolveExpressionX(Expression expr, ResolutionContext resolutionCont } else if (expr is ExprDotName) { var e = (ExprDotName)expr; ResolveDotSuffix(e, false, true, null, resolutionContext, false); - if (e.Type is Resolver_IdentifierExpr.ResolverType_Module) { + if (e.Type is ResolverIdentifierExpr.ResolverTypeModule) { reporter.Error(MessageSource.Resolver, e.Origin, "name of module ({0}) is used as a variable", e.SuffixName); e.ResetTypeAssignment(); // the rest of type checking assumes actual types - } else if (e.Type is Resolver_IdentifierExpr.ResolverType_Type) { + } else if (e.Type is ResolverIdentifierExpr.ResolverTypeType) { reporter.Error(MessageSource.Resolver, e.Origin, "name of type ({0}) is used as a variable", e.SuffixName); e.ResetTypeAssignment(); // the rest of type checking assumes actual types } @@ -709,7 +709,7 @@ public void ResolveExpressionX(Expression expr, ResolutionContext resolutionCont var arrowType = new ArrowType(e.Origin, SystemModuleManager.ArrowTypeDecls[1], new List() { SystemModuleManager.Nat() }, elementType); 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)); + arrowType, e.Initializer.Type, new LazyStringOnTypeEquals(elementType, e.Initializer.Type, hintString)); expr.Type = new SeqType(elementType); } else if (expr is MultiSetFormingExpr) { @@ -3327,7 +3327,7 @@ internal void ResolveActualParameters(ActualBindings bindings, List form whatKind + (context is Method ? " in-parameter" : " parameter")); AddAssignableConstraint( - callTok /* TODO should be b.Actual.Origin */, formal.Type.Subst(typeMap), b.Actual.Type, + b.Actual.Origin, formal.Type.Subst(typeMap), b.Actual.Type, $"incorrect argument type {what} (expected {{0}}, found {{1}})"); } else if (formal.DefaultValue != null) { // Note, in the following line, "substMap" is passed in, but it hasn't been fully filled in until the @@ -3410,8 +3410,8 @@ ResolveTypeReturn ResolveDotSuffix_Type(ExprDotName expr, ResolutionContext reso Expression r = null; // the resolved expression, if successful var lhs = expr.Lhs.Resolved; - if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Module) { - var ri = (Resolver_IdentifierExpr)lhs; + if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeModule) { + var ri = (ResolverIdentifierExpr)lhs; var sig = ((ModuleDecl)ri.Decl).AccessibleSignature(false); sig = GetSignature(sig); // For 0: @@ -3441,8 +3441,8 @@ ResolveTypeReturn ResolveDotSuffix_Type(ExprDotName expr, ResolutionContext reso reporter.Error(MessageSource.Resolver, expr.Origin, "module '{0}' does not declare a type '{1}'", ri.Decl.Name, expr.SuffixName); } - } else if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Type) { - var ri = (Resolver_IdentifierExpr)lhs; + } else if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeType) { + var ri = (ResolverIdentifierExpr)lhs; // ----- 2. Look up name in type var ty = new UserDefinedType(ri.Origin, ri.Decl.Name, ri.Decl, ri.TypeArgs); if (allowDanglingDotName && ty.IsRefType) { @@ -3463,11 +3463,11 @@ ResolveTypeReturn ResolveDotSuffix_Type(ExprDotName expr, ResolutionContext reso return null; } - internal Resolver_IdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, string name, List optTypeArguments, TopLevelDecl decl) { + internal ResolverIdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, string name, List optTypeArguments, TopLevelDecl decl) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(decl != null); - Contract.Ensures(Contract.Result() != null); + Contract.Ensures(Contract.Result() != null); if (!moduleInfo.IsAbstract) { if (decl is ModuleDecl md && md.Signature.IsAbstract) { @@ -3485,7 +3485,7 @@ internal Resolver_IdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, stri for (int i = 0; i < decl.TypeArgs.Count; i++) { tpArgs.Add(i < n ? optTypeArguments[i] : new InferredTypeProxy()); } - return new Resolver_IdentifierExpr(tok, decl, tpArgs); + return new ResolverIdentifierExpr(tok, decl, tpArgs); } public void ResolveStatement(Statement stmt, ResolutionContext resolutionContext) { @@ -4191,10 +4191,10 @@ public ResolveTypeReturn ResolveTypeLenient(IOrigin tok, Type type, ResolutionCo ResolveNameSegment_Type(s, resolutionContext, option, defaultTypeArguments); } if (reporter.Count(ErrorLevel.Error) == prevErrorCount) { - var r = t.NamePath.Resolved as Resolver_IdentifierExpr; - if (r == null || !(r.Type is Resolver_IdentifierExpr.ResolverType_Type)) { + var r = t.NamePath.Resolved as ResolverIdentifierExpr; + if (r == null || !(r.Type is ResolverIdentifierExpr.ResolverTypeType)) { reporter.Error(MessageSource.Resolver, t.Origin, "expected type"); - } else if (r.Type is Resolver_IdentifierExpr.ResolverType_Type) { + } else if (r.Type is ResolverIdentifierExpr.ResolverTypeType) { var d = r.Decl; if (d is AbstractTypeDecl) { // resolve like a type parameter, and it may have type parameters if it's an abstract type @@ -4366,7 +4366,7 @@ public void ResolveTypeRhs(TypeRhs rr, Statement stmt, ResolutionContext resolut } var hintString = string.Format(" (perhaps write '{0} =>' in front of the expression you gave in order to make it an arrow type)", underscores); ConstrainSubtypeRelation(arrowType, rr.ElementInit.Type, rr.ElementInit, "array-allocation initialization expression expected to have type '{0}' (instead got '{1}'){2}", - arrowType, rr.ElementInit.Type, new LazyString_OnTypeEquals(rr.EType, rr.ElementInit.Type, hintString)); + arrowType, rr.ElementInit.Type, new LazyStringOnTypeEquals(rr.EType, rr.ElementInit.Type, hintString)); } else if (rr.InitDisplay != null) { foreach (var v in rr.InitDisplay) { ResolveExpression(v, resolutionContext); @@ -4412,7 +4412,7 @@ public void ResolveTypeRhs(TypeRhs rr, Statement stmt, ResolutionContext resolut // We want to create a MemberSelectExpr for the initializing method. To do that, we create a throw-away receiver of the appropriate // type, create a dot-suffix expression around this receiver, and then resolve it in the usual way for dot-suffix expressions. - var lhs = new ImplicitThisExpr_ConstructorCall(initCallTok) { Type = rr.EType }; + var lhs = new ImplicitThisExprConstructorCall(initCallTok) { Type = rr.EType }; var callLhs = new ExprDotName(((UserDefinedType)rr.EType).Origin, lhs, new Name(initCallName), ret == null ? null : ret.LastComponent.OptTypeArguments); ResolveDotSuffix(callLhs, false, true, rr.Bindings.ArgumentBindings, resolutionContext, true); if (prevErrorCount == reporter.Count(ErrorLevel.Error)) { @@ -5477,7 +5477,7 @@ void ResolveNameSegment_Type(NameSegment expr, ResolutionContext resolutionConte if (tp != null) { // ----- 0. type parameter if (expr.OptTypeArguments == null) { - r = new Resolver_IdentifierExpr(expr.Origin, tp); + r = new ResolverIdentifierExpr(expr.Origin, tp); } else { reporter.Error(MessageSource.Resolver, expr.Origin, "Type parameter expects no type arguments: {0}", expr.Name); } @@ -5603,8 +5603,8 @@ public Expression ResolveDotSuffix(ExprDotName expr, bool allowStaticReferenceTo return null; } var lhs = expr.Lhs.Resolved; - if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Module) { - var ri = (Resolver_IdentifierExpr)lhs; + if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeModule) { + var ri = (ResolverIdentifierExpr)lhs; var sig = ((ModuleDecl)ri.Decl).AccessibleSignature(false); sig = GetSignature(sig); // For 0: @@ -5663,8 +5663,8 @@ public Expression ResolveDotSuffix(ExprDotName expr, bool allowStaticReferenceTo ReportUnresolvedIdentifierError(expr.Origin, name, resolutionContext); } - } else if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Type) { - var ri = (Resolver_IdentifierExpr)lhs; + } else if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeType) { + var ri = (ResolverIdentifierExpr)lhs; // ----- 3. Look up name in type // expand any synonyms var ty = new UserDefinedType(expr.Origin, ri.Decl.Name, ri.Decl, ri.TypeArgs).NormalizeExpand(); @@ -5877,10 +5877,10 @@ public MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolutionContext var fnType = improvedType.AsArrowType; if (fnType == null) { var lhs = e.Lhs.Resolved; - if (lhs != null && lhs.Type is Resolver_IdentifierExpr.ResolverType_Module) { - reporter.Error(MessageSource.Resolver, e.Origin, "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) { - var ri = (Resolver_IdentifierExpr)lhs; + if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeModule) { + reporter.Error(MessageSource.Resolver, e.Origin, "name of module ({0}) is used as a function", ((ResolverIdentifierExpr)lhs).Decl.Name); + } else if (lhs != null && lhs.Type is ResolverIdentifierExpr.ResolverTypeType) { + var ri = (ResolverIdentifierExpr)lhs; reporter.Error(MessageSource.Resolver, e.Origin, "name of {0} ({1}) is used as a function", ri.Decl.WhatKind, ri.Decl.Name); } else { if (lhs is MemberSelectExpr mse && mse.Member is Method) { @@ -5916,8 +5916,7 @@ public MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolutionContext } if (callee != null) { // produce a FunctionCallExpr instead of an ApplyExpr(MemberSelectExpr) - // TODO use e.Origin instead of e.Lhs.Origin - var rr = new FunctionCallExpr(new OverrideCenter(e.Origin, e.Lhs.Origin.Center), mse.MemberNameNode, mse.Obj, e.Origin, e.CloseParen, e.Bindings, atLabel) { + var rr = new FunctionCallExpr(e.Origin, mse.MemberNameNode, mse.Obj, e.Origin, e.CloseParen, e.Bindings, atLabel) { Function = callee, TypeApplication_AtEnclosingClass = mse.TypeApplicationAtEnclosingClass, TypeApplication_JustFunction = mse.TypeApplicationJustMember diff --git a/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/XConstraint.cs b/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/XConstraint.cs index a47b2b984da..a59d27959e8 100644 --- a/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/XConstraint.cs +++ b/Source/DafnyCore/Resolver/NameResolutionAndTypeInference/XConstraint.cs @@ -349,7 +349,7 @@ public bool Confirm(ModuleResolver resolver, bool fullstrength, out bool convert Contract.Assert(a.TypeArgs.Count == b.TypeArgs.Count); var cl = a is UserDefinedType ? ((UserDefinedType)a).ResolvedClass : null; for (int i = 0; i < a.TypeArgs.Count; i++) { - resolver.AllXConstraints.Add(new XConstraint_EquatableArg(tok, + resolver.AllXConstraints.Add(new XConstraintEquatableArg(tok, a.TypeArgs[i], b.TypeArgs[i], a is CollectionType || (cl != null && cl.TypeArgs[i].Variance != TypeParameter.TPVariance.Non), a.IsRefType, @@ -362,7 +362,7 @@ public bool Confirm(ModuleResolver resolver, bool fullstrength, out bool convert case "EquatableArg": { t = Types[0].NormalizeExpandKeepConstraints(); var u = Types[1].NormalizeExpandKeepConstraints(); - var moreExactThis = (XConstraint_EquatableArg)this; + var moreExactThis = (XConstraintEquatableArg)this; if (t is TypeProxy && u is TypeProxy) { return false; // not enough information to do anything sensible } else if (t is TypeProxy || u is TypeProxy) { @@ -409,7 +409,7 @@ public bool Confirm(ModuleResolver resolver, bool fullstrength, out bool convert Contract.Assert(a.TypeArgs.Count == b.TypeArgs.Count); var cl = a is UserDefinedType ? ((UserDefinedType)a).ResolvedClass : null; for (int i = 0; i < a.TypeArgs.Count; i++) { - resolver.AllXConstraints.Add(new XConstraint_EquatableArg(tok, + resolver.AllXConstraints.Add(new XConstraintEquatableArg(tok, a.TypeArgs[i], b.TypeArgs[i], a is CollectionType || (cl != null && cl.TypeArgs[i].Variance != TypeParameter.TPVariance.Non), false, @@ -565,10 +565,10 @@ public XConstraintWithExprs(IOrigin tok, string constraintName, Type[] types, Ex } } -public class XConstraint_EquatableArg : XConstraint { +public class XConstraintEquatableArg : XConstraint { public bool AllowSuperSub; public bool TreatTypeParamAsWild; - public XConstraint_EquatableArg(IOrigin tok, Type a, Type b, bool allowSuperSub, bool treatTypeParamAsWild, TypeConstraint.ErrorMsg errMsg) + public XConstraintEquatableArg(IOrigin tok, Type a, Type b, bool allowSuperSub, bool treatTypeParamAsWild, TypeConstraint.ErrorMsg errMsg) : base(tok, "EquatableArg", new Type[] { a, b }, errMsg) { Contract.Requires(tok != null); Contract.Requires(a != null); diff --git a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.ActualParameters.cs b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.ActualParameters.cs index da9ae36a685..c1798e15a7b 100644 --- a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.ActualParameters.cs +++ b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.ActualParameters.cs @@ -127,7 +127,7 @@ internal void ResolveActualParameters(ActualBindings bindings, List form whatKind + (context is Method ? " in-parameter" : " parameter")); Constraints.AddSubtypeConstraint( - formal.PreType.Substitute(typeMap), b.Actual.PreType, callTok /* TODO should be b.Actual.Origin */, + formal.PreType.Substitute(typeMap), b.Actual.PreType, b.Actual.Origin, $"incorrect argument type {what} (expected {{0}}, found {{1}})"); } else if (formal.DefaultValue != null) { // Note, in the following line, "substMap" is passed in, but it hasn't been fully filled in until the diff --git a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Expressions.cs b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Expressions.cs index 70d9a9eb2cb..9f247883582 100644 --- a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Expressions.cs +++ b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Expressions.cs @@ -1350,11 +1350,11 @@ private void ReportUnresolvedIdentifierError(IOrigin tok, string name, Resolutio } } - private Resolver_IdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, string name, List optTypeArguments, TopLevelDecl decl) { + private ResolverIdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, string name, List optTypeArguments, TopLevelDecl decl) { Contract.Requires(tok != null); Contract.Requires(name != null); Contract.Requires(decl != null); - Contract.Ensures(Contract.Result() != null); + Contract.Ensures(Contract.Result() != null); if (!resolver.moduleInfo.IsAbstract) { if (decl is ModuleDecl md && md.Signature.IsAbstract) { @@ -1372,7 +1372,7 @@ private Resolver_IdentifierExpr CreateResolver_IdentifierExpr(IOrigin tok, strin for (var i = 0; i < decl.TypeArgs.Count; i++) { typeArguments.Add(i < n ? optTypeArguments[i] : new InferredTypeProxy()); } - return new Resolver_IdentifierExpr(tok, decl, typeArguments); + return new ResolverIdentifierExpr(tok, decl, typeArguments); } private bool ResolveDatatypeConstructor(NameSegment expr, List/*?*/ args, ResolutionContext resolutionContext, bool complain, @@ -1480,7 +1480,7 @@ public Expression ResolveDotSuffix(ExprDotName expr, bool allowStaticReferenceTo var name = resolutionContext.InReveal ? HideRevealStmt.RevealLemmaPrefix + expr.SuffixName : expr.SuffixName; var lhs = expr.Lhs.Resolved ?? expr.Lhs; // Sometimes resolution comes later, but pre-types have already been set if (lhs is { PreType: PreTypePlaceholderModule }) { - var ri = (Resolver_IdentifierExpr)lhs; + var ri = (ResolverIdentifierExpr)lhs; var sig = ((ModuleDecl)ri.Decl).AccessibleSignature(false); sig = ModuleResolver.GetSignatureExt(sig); @@ -1538,7 +1538,7 @@ public Expression ResolveDotSuffix(ExprDotName expr, bool allowStaticReferenceTo } } else if (lhs is { PreType: PreTypePlaceholderType }) { - var ri = (Resolver_IdentifierExpr)lhs; + var ri = (ResolverIdentifierExpr)lhs; // ----- 3. Look up name in type // expand any synonyms var ty = new UserDefinedType(expr.Origin, ri.Decl.Name, ri.Decl, ri.TypeArgs).NormalizeExpand(); @@ -1756,8 +1756,7 @@ public MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolutionContext } if (callee != null) { // resolve as a FunctionCallExpr instead of as an ApplyExpr(MemberSelectExpr) - // TODO use e.Origin instead of e.Lhs.Origin - var rr = new FunctionCallExpr(e.Lhs.Origin, mse.MemberNameNode, mse.Obj, e.Origin, e.CloseParen, e.Bindings, atLabel) { + var rr = new FunctionCallExpr(e.Origin, mse.MemberNameNode, mse.Obj, e.Origin, e.CloseParen, e.Bindings, atLabel) { Function = callee, PreTypeApplication_AtEnclosingClass = mse.PreTypeApplicationAtEnclosingClass, PreTypeApplication_JustFunction = mse.PreTypeApplicationJustMember @@ -1795,9 +1794,9 @@ public MethodCallInformation ResolveApplySuffix(ApplySuffix e, ResolutionContext // e.Lhs is used as if it were a function value, but it isn't var lhs = e.Lhs.Resolved; if (lhs != null && lhs.PreType is PreTypePlaceholderModule) { - ReportError(e.Origin, "name of module ({0}) is used as a function", ((Resolver_IdentifierExpr)lhs).Decl.Name); + ReportError(e.Origin, "name of module ({0}) is used as a function", ((ResolverIdentifierExpr)lhs).Decl.Name); } else if (lhs != null && lhs.PreType is PreTypePlaceholderType) { - var ri = (Resolver_IdentifierExpr)lhs; + var ri = (ResolverIdentifierExpr)lhs; ReportError(e.Origin, "name of {0} ({1}) is used as a function", ri.Decl.WhatKind, ri.Decl.Name); } else { if (lhs is MemberSelectExpr mse && mse.Member is Method) { diff --git a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Statements.cs b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Statements.cs index de9973dd671..4970aa86d9f 100644 --- a/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Statements.cs +++ b/Source/DafnyCore/Resolver/PreType/PreTypeResolve.Statements.cs @@ -1189,7 +1189,7 @@ public void ResolveTypeRhs(TypeRhs rr, Statement stmt, ResolutionContext resolut // down to resolve this "lhs"; that's a no-op if the .PreType is already filled in, whereas it could cause a "'this' not allowed in // static context" error if the code tried to resolve this "this" against the enclosing environment. rr.PreType = Type2PreType(rr.EType); - var lhs = new ImplicitThisExpr_ConstructorCall(initCallTok) { + var lhs = new ImplicitThisExprConstructorCall(initCallTok) { Type = rr.EType, PreType = rr.PreType }; diff --git a/Source/DafnyCore/Resolver/TypeCharacteristicChecker.cs b/Source/DafnyCore/Resolver/TypeCharacteristicChecker.cs index b2aef414d99..cf5b4bd0a9a 100644 --- a/Source/DafnyCore/Resolver/TypeCharacteristicChecker.cs +++ b/Source/DafnyCore/Resolver/TypeCharacteristicChecker.cs @@ -211,7 +211,7 @@ private static bool InferRequiredEqualitySupport(TypeParameter tp, Type type) { } private static void Check(List declarations, bool isAnExport, ErrorReporter reporter) { - var visitor = new CheckTypeCharacteristics_Visitor(reporter); + var visitor = new CheckTypeCharacteristicsVisitor(reporter); foreach (var d in declarations) { CheckAttributes(d.Attributes, visitor); @@ -238,7 +238,7 @@ private static void Check(List declarations, bool isAnExport, Erro if (!isAnExport) { if (syn.SupportsEquality && !syn.Rhs.SupportsEquality) { reporter.Error(MessageSource.Resolver, syn.Origin, "type '{0}' declared as supporting equality, but the RHS type ({1}) might not{2}", - syn.Name, syn.Rhs, CheckTypeCharacteristics_Visitor.TypeEqualityErrorMessageHint(syn.Rhs)); + syn.Name, syn.Rhs, CheckTypeCharacteristicsVisitor.TypeEqualityErrorMessageHint(syn.Rhs)); } if (syn.Characteristics.IsNonempty && !syn.Rhs.IsNonempty) { reporter.Error(MessageSource.Resolver, syn.Origin, "type '{0}' declared as being nonempty, but the RHS type ({1}) may be empty", @@ -298,13 +298,13 @@ private static void Check(List declarations, bool isAnExport, Erro } } - private static void CheckAttributes(Attributes attributes, CheckTypeCharacteristics_Visitor visitor) { + private static void CheckAttributes(Attributes attributes, CheckTypeCharacteristicsVisitor visitor) { for (var attr = attributes; attr != null; attr = attr.Prev) { attr.Args.ForEach(e => visitor.Visit(e, true)); } } - private static void CheckFormals(List formals, bool isGhostContext, CheckTypeCharacteristics_Visitor visitor) { + private static void CheckFormals(List formals, bool isGhostContext, CheckTypeCharacteristicsVisitor visitor) { foreach (var p in formals) { visitor.VisitType(p.Origin, p.Type, isGhostContext || p.IsGhost); if (p.DefaultValue != null) { @@ -315,7 +315,7 @@ private static void CheckFormals(List formals, bool isGhostContext, Chec private static void CheckSpecification(List requires, Specification frame, List ensures, [CanBeNull] Specification decreases, - CheckTypeCharacteristics_Visitor visitor) { + CheckTypeCharacteristicsVisitor visitor) { foreach (var aexpr in requires) { CheckAttributes(aexpr.Attributes, visitor); diff --git a/Source/DafnyCore/Rewriters/RefinementTransformer.cs b/Source/DafnyCore/Rewriters/RefinementTransformer.cs index b95ea0ffd81..311e7462bd9 100644 --- a/Source/DafnyCore/Rewriters/RefinementTransformer.cs +++ b/Source/DafnyCore/Rewriters/RefinementTransformer.cs @@ -336,7 +336,7 @@ private void MergeTopLevelDecls(ModuleDefinition m, IPointer nwPoi // check that od's type characteristics are respected by nw's var newType = UserDefinedType.FromTopLevelDecl(nw.Origin, nw is ClassLikeDecl { NonNullTypeDecl: { } nonNullTypeDecl } ? nonNullTypeDecl : nw); - if (!CheckTypeCharacteristics_Visitor.CheckCharacteristics(od.Characteristics, newType, false, out var whatIsNeeded, out var hint, out var errorId)) { + if (!CheckTypeCharacteristicsVisitor.CheckCharacteristics(od.Characteristics, newType, false, out var whatIsNeeded, out var hint, out var errorId)) { var typeCharacteristicsSyntax = od.Characteristics.ToString(); Error(errorId, nw.Origin, $"to be a refinement of {od.WhatKind} '{od.EnclosingModuleDefinition.Name}.{od.Name}' declared with {typeCharacteristicsSyntax}, " + diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionTranslator.cs b/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionTranslator.cs index 9a88be88a45..4cdfa352f3f 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionTranslator.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionTranslator.cs @@ -290,20 +290,6 @@ public Boogie.Expr ArbitraryValue(Type type) { } } - public Boogie.IdentifierExpr FunctionContextHeight() { - Contract.Ensures(Contract.Result().Type != null); - return new Boogie.IdentifierExpr(Token.NoToken, "$FunctionContextHeight", Boogie.Type.Int); - } - - public Boogie.Expr HeightContext(ICallable m) { - Contract.Requires(m != null); - // free requires fh == FunctionContextHeight; - var module = m.EnclosingModule; - Boogie.Expr context = - Boogie.Expr.Eq(Boogie.Expr.Literal(module.CallGraph.GetSCCRepresentativePredecessorCount(m)), FunctionContextHeight()); - return context; - } - public Expression GetSubstitutedBody(LetExpr e) { Contract.Requires(e != null); Contract.Requires(e.Exact); diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionWellformed.cs b/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionWellformed.cs index b9e5de51b28..e41e5935038 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionWellformed.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.ExpressionWellformed.cs @@ -332,7 +332,6 @@ public void CheckWellformedWithResult(Expression expr, WFOptions wfOptions, } case MemberSelectExpr selectExpr: { MemberSelectExpr e = selectExpr; - CheckFunctionSelectWF("naked function", builder, etran, e, " Possible solution: eta expansion."); CheckWellformed(e.Obj, wfOptions, locals, builder, etran); if (e.Obj.Type.IsRefType) { if (inBodyInitContext && Expression.AsThis(e.Obj) != null && !e.Member.IsInstanceIndependentConstant) { @@ -681,8 +680,6 @@ public void CheckWellformedWithResult(Expression expr, WFOptions wfOptions, CheckWellformed(e.Receiver, wfOptions, locals, builder, etran); if (!e.Function.IsStatic && !(e.Receiver is ThisExpr) && !e.Receiver.Type.IsArrowType) { CheckNonNull(callExpr.Origin, e.Receiver, builder, etran, wfOptions.AssertKv); - } else if (e.Receiver.Type.IsArrowType) { - CheckFunctionSelectWF("function specification", builder, etran, e.Receiver, ""); } if (!e.Function.IsStatic && !etran.UsesOldHeap) { // the argument can't be assumed to be allocated for the old heap @@ -1106,7 +1103,7 @@ public void CheckWellformedWithResult(Expression expr, WFOptions wfOptions, case BinaryExpr.ResolvedOpcode.NeqCommon: CheckWellformed(e.E1, wfOptions, locals, builder, etran); if (e.InCompiledContext) { - if (CheckTypeCharacteristics_Visitor.CanCompareWith(e.E0) || CheckTypeCharacteristics_Visitor.CanCompareWith(e.E1)) { + if (CheckTypeCharacteristicsVisitor.CanCompareWith(e.E0) || CheckTypeCharacteristicsVisitor.CanCompareWith(e.E1)) { // everything's fine } else { Contract.Assert(!e.E0.Type.SupportsEquality); // otherwise, CanCompareWith would have returned "true" above diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Extremes.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Extremes.cs index ff3484650fa..421f6361429 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Extremes.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Extremes.cs @@ -37,15 +37,10 @@ public partial class BoogieGenerator { /// forall args :: (QQQ k: nat :: P#[k](args)) ==> P(args) /// forall args,k :: k == 0 ==> NNN P#[k](args) /// where "args" is "heap, formals". In more details: - /// AXIOM_ACTIVATION ==> forall args :: { P(args) } args-have-appropriate-values && P(args) ==> QQQ k { P#[k](args) } :: 0 ATMOST k HHH P#[k](args) - /// AXIOM_ACTIVATION ==> forall args :: { P(args) } args-have-appropriate-values && (QQQ k :: 0 ATMOST k HHH P#[k](args)) ==> P(args) - /// AXIOM_ACTIVATION ==> forall args,k :: args-have-appropriate-values && k == 0 ==> NNN P#0#[k](args) - /// AXIOM_ACTIVATION ==> forall args,k,m :: args-have-appropriate-values && 0 ATMOST k LESS m ==> (P#[k](args) EEE P#[m](args)) (*) - /// where - /// AXIOM_ACTIVATION - /// means: - /// mh LESS ModuleContextHeight || - /// (mh == ModuleContextHeight && fh ATMOST FunctionContextHeight) + /// forall args :: { P(args) } args-have-appropriate-values && P(args) ==> QQQ k { P#[k](args) } :: 0 ATMOST k HHH P#[k](args) + /// forall args :: { P(args) } args-have-appropriate-values && (QQQ k :: 0 ATMOST k HHH P#[k](args)) ==> P(args) + /// forall args,k :: args-have-appropriate-values && k == 0 ==> NNN P#0#[k](args) + /// forall args,k,m :: args-have-appropriate-values && 0 ATMOST k LESS m ==> (P#[k](args) EEE P#[m](args)) (*) /// There is also a specialized version of (*) for least predicates. /// void AddPrefixPredicateAxioms(PrefixPredicate pp) { @@ -155,8 +150,6 @@ void AddPrefixPredicateAxioms(PrefixPredicate pp) { funcID = new Bpl.IdentifierExpr(tok, pp.FullSanitizedName, TrType(pp.ResultType)); var prefixAppl = new Bpl.NAryExpr(tok, new Bpl.FunctionCall(funcID), prefixArgs); - var activation = AxiomActivation(pp, etran); - // forall args :: { P(args) } args-have-appropriate-values && P(args) ==> QQQ k { P#[k](args) } :: 0 ATMOST k HHH P#[k](args) var tr = BplTrigger(prefixAppl); var qqqK = pp.ExtremePred is GreatestPredicate @@ -166,13 +159,11 @@ void AddPrefixPredicateAxioms(PrefixPredicate pp) { kWhere == null ? prefixAppl : BplAnd(kWhere, prefixAppl)); tr = BplTriggerHeap(this, tok, coAppl, pp.ReadsHeap ? null : h); var allS = new Bpl.ForallExpr(tok, bvs, tr, BplImp(BplAnd(ante, coAppl), qqqK)); - sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, BplImp(activation, allS), - "1st prefix predicate axiom for " + pp.FullSanitizedName)); + sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, allS, "1st prefix predicate axiom for " + pp.FullSanitizedName)); // forall args :: { P(args) } args-have-appropriate-values && (QQQ k :: 0 ATMOST k HHH P#[k](args)) ==> P(args) allS = new Bpl.ForallExpr(tok, bvs, tr, BplImp(BplAnd(ante, qqqK), coAppl)); - sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, BplImp(activation, allS), - "2nd prefix predicate axiom")); + sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, allS, "2nd prefix predicate axiom")); // forall args,k :: args-have-appropriate-values && k == 0 ==> NNN P#0#[k](args) var moreBvs = new List(); @@ -188,8 +179,7 @@ void AddPrefixPredicateAxioms(PrefixPredicate pp) { var trigger = BplTriggerHeap(this, prefixLimitedBody.tok, prefixLimitedBody, pp.ReadsHeap ? null : h); var trueAtZero = new Bpl.ForallExpr(tok, moreBvs, trigger, BplImp(BplAnd(ante, z), prefixLimited)); - sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, BplImp(activation, trueAtZero), - "3rd prefix predicate axiom")); + sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, trueAtZero, "3rd prefix predicate axiom")); #if WILLING_TO_TAKE_THE_PERFORMANCE_HIT // forall args,k,m :: args-have-appropriate-values && 0 <= k <= m ==> (P#[k](args) EEE P#[m](args)) @@ -211,8 +201,7 @@ void AddPrefixPredicateAxioms(PrefixPredicate pp) { var trigger2 = new Bpl.Trigger(tok, true, new List { prefixPred_K, prefixPred_M }); var monotonicity = new Bpl.ForallExpr(tok, moreBvs, trigger2, BplImp(smaller, direction)); - AddRootAxiom(new Bpl.Axiom(tok, BplImp(activation, monotonicity), - "prefix predicate monotonicity axiom")); + AddRootAxiom(new Bpl.Axiom(tok, monotonicity, "prefix predicate monotonicity axiom")); #endif // A more targeted monotonicity axiom used to increase the power of automation for proving the limit case for // least predicates that have more than one focal-predicate term. @@ -237,8 +226,7 @@ void AddPrefixPredicateAxioms(PrefixPredicate pp) { var trigger3 = new Bpl.Trigger(tok, true, new List { prefixPred_K, kLessLimit, mLessLimit }); var monotonicity = new Bpl.ForallExpr(tok, moreBvs, trigger3, BplImp(kLessM, direction)); - sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, BplImp(activation, monotonicity), - "targeted prefix predicate monotonicity axiom")); + sink.AddTopLevelDeclaration(new Bpl.Axiom(tok, monotonicity, "targeted prefix predicate monotonicity axiom")); } } diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Fields.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Fields.cs index c657913ca6f..d6dfd1aa735 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Fields.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Fields.cs @@ -188,8 +188,6 @@ void AddWellformednessCheck(ConstantField decl) { // the procedure itself var req = new List(); - // free requires mh == ModuleContextHeight && fh == TypeContextHeight; - req.Add(FreeRequires(decl.Origin, etran.HeightContext(decl), null)); foreach (var typeBoundAxiom in TypeBoundAxioms(decl.Origin, decl.EnclosingClass.TypeArgs)) { req.Add(FreeRequires(decl.Origin, typeBoundAxiom, null)); } diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Functions.Wellformedness.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Functions.Wellformedness.cs index c5826e8a0f0..4af18d4ff47 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Functions.Wellformedness.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Functions.Wellformedness.cs @@ -372,13 +372,9 @@ private List GetWellformednessProcedureOutParameters(Function f, Expre private List GetWellformednessProcedureRequires(Function f, ExpressionTranslator etran) { var requires = new List(); - // free requires mh == ModuleContextHeight && fh == FunctionContextHeight; - requires.Add(generator.FreeRequires(f.Origin, etran.HeightContext(f), null)); - foreach (var typeBoundAxiom in generator.TypeBoundAxioms(f.Origin, Concat(f.EnclosingClass.TypeArgs, f.TypeArgs))) { requires.Add(generator.Requires(f.Origin, true, null, typeBoundAxiom, null, null, null)); } - return requires; } diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Functions.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Functions.cs index d84708e3b8e..5e086024362 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Functions.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Functions.cs @@ -87,11 +87,9 @@ void AddFunctionConsequenceAxiom(Boogie.Function boogieFunction, Function f, Lis // return type and postconditions // // axiom // consequence axiom - // AXIOM_ACTIVATION - // ==> // (forall s, $Heap, formals :: // let args := $Heap,formals // { f(s, args) } - // f#canCall(args) || USE_VIA_CONTEXT + // f#canCall(args) // ==> // ens && // OlderCondition && @@ -99,17 +97,6 @@ void AddFunctionConsequenceAxiom(Boogie.Function boogieFunction, Function f, Lis // // where: // - // AXIOM_ACTIVATION - // means: - // fh <= FunctionContextHeight - // - // USE_VIA_CONTEXT - // fh < FunctionContextHeight && - // GOOD_PARAMETERS - // where GOOD_PARAMETERS means: - // $IsGoodHeap($Heap) && this != null && formals-have-the-expected-types && - // Pre($Heap,formals) - // // OlderCondition is added if the function has some 'older' parameters. // // Note, an antecedent $Heap[this,alloc] is intentionally left out: including it would only weaken @@ -233,10 +220,6 @@ void AddFunctionConsequenceAxiom(Boogie.Function boogieFunction, Function f, Lis foreach (AttributedExpression req in ConjunctsOf(f.Req)) { pre = BplAnd(pre, etran.TrExpr(req.E)); } - // useViaContext: fh < FunctionContextHeight - Expr useViaContext = !(InVerificationScope(f) || (f.EnclosingClass is TraitDecl)) - ? Bpl.Expr.True - : Bpl.Expr.Lt(Expr.Literal(forModule.CallGraph.GetSCCRepresentativePredecessorCount(f)), etran.FunctionContextHeight()); // useViaCanCall: f#canCall(args) var canCallFuncID = new Bpl.IdentifierExpr(f.Origin, f.FullSanitizedName + "#canCall", Bpl.Type.Bool); var useViaCanCall = new Bpl.NAryExpr(f.Origin, new Bpl.FunctionCall(canCallFuncID), Concat(tyargs, args)); @@ -268,10 +251,8 @@ void AddFunctionConsequenceAxiom(Boogie.Function boogieFunction, Function f, Lis Bpl.Expr axBody = BplImp(ante, post); Bpl.Expr ax = BplForall(f.Origin, new List(), formals, null, tr, axBody); - var activate = AxiomActivation(f, etran); if (RemoveLit(axBody) != Bpl.Expr.True) { - AddOtherDefinition(boogieFunction, new Bpl.Axiom(f.Origin, BplImp(activate, ax), - "consequence axiom for " + f.FullSanitizedName)); + AddOtherDefinition(boogieFunction, new Bpl.Axiom(f.Origin, ax, "consequence axiom for " + f.FullSanitizedName)); } if (f.ResultType.MayInvolveReferences) { @@ -289,8 +270,7 @@ void AddFunctionConsequenceAxiom(Boogie.Function boogieFunction, Function f, Lis ax = BplForall(f.Origin, new List(), formals, null, BplTrigger(whr), axBody); if (RemoveLit(axBody) != Bpl.Expr.True) { - var comment = "alloc consequence axiom for " + f.FullSanitizedName; - var allocConsequenceAxiom = new Bpl.Axiom(f.Origin, BplImp(activate, ax), comment); + var allocConsequenceAxiom = new Bpl.Axiom(f.Origin, ax, "alloc consequence axiom for " + f.FullSanitizedName); AddOtherDefinition(boogieFunction, allocConsequenceAxiom); } } @@ -310,33 +290,13 @@ private Axiom GetFunctionAxiom(Function f, Expression body, List lits) { // This method generates the Definition Axiom, suitably modified according to the optional "lits". // // axiom // definition axiom - // AXIOM_ACTIVATION - // ==> // (forall s, $Heap, formals :: // let args := $Heap,formals // { f(Succ(s), args) } // (*) - // (f#canCall(args) || USE_VIA_CONTEXT) + // f#canCall(args) // ==> // BODY-can-make-its-calls && // f(Succ(s), args) == BODY); // (*) // - // where: - // - // AXIOM_ACTIVATION - // for visibility==ForeignModuleOnly, means: - // true - // for visibility==IntraModuleOnly, means: - // fh <= FunctionContextHeight - // - // USE_VIA_CONTEXT - // for visibility==ForeignModuleOnly, means: - // GOOD_PARAMETERS - // for visibility==IntraModuleOnly, means: - // fh < FunctionContextHeight && - // GOOD_PARAMETERS - // where GOOD_PARAMETERS means: - // $IsGoodHeap($Heap) && this != null && formals-have-the-expected-types && - // Pre($Heap,formals) - // // NOTE: this is lifted out to a #requires function for intra module calls, // and used in the function pseudo-handles for top level functions. // For body-less functions, this is emitted when body is null. @@ -609,7 +569,6 @@ private Axiom GetFunctionAxiom(Function f, Expression body, List lits) { Bpl.Expr ax = BplForall(f.Origin, new List(), forallFormals, kv, tr, BplImp(ante, tastyVegetarianOption)); - var activate = AxiomActivation(f, etran); string comment; comment = "definition axiom for " + f.FullSanitizedName; if (lits != null) { @@ -625,7 +584,7 @@ private Axiom GetFunctionAxiom(Function f, Expression body, List lits) { } else { comment += " (opaque)"; } - var axe = new Axiom(f.Origin, BplImp(activate, ax), comment) { + var axe = new Axiom(f.Origin, ax, comment) { CanHide = true }; if (proofDependencies == null) { diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Iterators.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Iterators.cs index 8b97ff20c92..ae680b4f5ce 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Iterators.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Iterators.cs @@ -79,10 +79,6 @@ Bpl.Procedure AddIteratorProc(IteratorDecl iter, MethodTranslationKind kind) { var mod = new List(); var ens = new List(); // FREE PRECONDITIONS - if (kind == MethodTranslationKind.SpecWellformedness || kind == MethodTranslationKind.Implementation) { // the other cases have no need for a free precondition - // free requires mh == ModuleContextHeight && fh = FunctionContextHeight; - req.Add(FreeRequires(iter.Origin, etran.HeightContext(iter), null)); - } mod.Add(etran.HeapCastToIdentifierExpr); if (kind != MethodTranslationKind.SpecWellformedness) { diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Methods.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Methods.cs index 0177973871e..96cf0ff5298 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Methods.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Methods.cs @@ -222,19 +222,14 @@ private void AddAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, To Contract.Requires(is_array == (f == null)); Contract.Requires(sink != null && Predef != null); - Bpl.Expr heightAntecedent = Bpl.Expr.True; if (f is ConstantField cf) { AddWellformednessCheck(cf); - if (InVerificationScope(cf)) { - var etran = new ExpressionTranslator(this, Predef, f.Origin, null); - heightAntecedent = Bpl.Expr.Lt(Bpl.Expr.Literal(cf.EnclosingModule.CallGraph.GetSCCRepresentativePredecessorCount(cf)), etran.FunctionContextHeight()); - } } if (f is ConstantField && f.IsStatic) { - AddStaticConstFieldAllocationAxiom(fieldDeclaration, f, c, heightAntecedent); + AddStaticConstFieldAllocationAxiom(fieldDeclaration, f, c); } else { - AddInstanceFieldAllocationAxioms(fieldDeclaration, f, c, is_array, heightAntecedent); + AddInstanceFieldAllocationAxioms(fieldDeclaration, f, c, is_array); } } @@ -245,7 +240,7 @@ private void AddAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, To /// // If "c" is an array declaration, then the bound variables also include the index variables "ii" and "h[o, f]" has the form "h[o, Index(ii)]". /// // If "f" is readonly, then "h[o, f]" has the form "f(o)" (for special fields) or "f(G,o)" (for programmer-declared const fields), /// // so "h" and $IsHeap(h) are omitted. - /// axiom fh < FunctionContextHeight ==> + /// axiom /// (forall o: ref, h: Heap, G : Ty :: /// { h[o, f], TClassA(G) } /// $IsHeap(h) && @@ -255,7 +250,7 @@ private void AddAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, To /// /// // allocation axiom: /// // As above for "G" and "ii", but "h" is included no matter what. - /// axiom fh < FunctionContextHeight ==> + /// axiom /// (forall o: ref, h: Heap, G : Ty :: /// { h[o, f], TClassA(G) } /// $IsHeap(h) && @@ -264,8 +259,7 @@ private void AddAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, To /// ==> /// $IsAlloc(h[o, f], TT(PP), h)); /// - private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, Field f, TopLevelDeclWithMembers c, - bool is_array, Expr heightAntecedent) { + private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, Field f, TopLevelDeclWithMembers c, bool is_array) { var bvsTypeAxiom = new List(); var bvsAllocationAxiom = new List(); @@ -382,7 +376,7 @@ private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, } Bpl.Expr ax = BplForall(bvsTypeAxiom, tr, BplImp(ante, is_hf)); - AddOtherDefinition(fieldDeclaration, new Bpl.Axiom(c.Origin, BplImp(heightAntecedent, ax), $"{c}.{f}: Type axiom")); + AddOtherDefinition(fieldDeclaration, new Bpl.Axiom(c.Origin, ax, $"{c}.{f}: Type axiom")); if (isalloc_hf != null) { if (!is_array && !f.IsMutable) { @@ -407,7 +401,7 @@ private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, tr = new Bpl.Trigger(c.Origin, true, t_es); ax = BplForall(bvsAllocationAxiom, tr, BplImp(ante, isalloc_hf)); - AddOtherDefinition(fieldDeclaration, new Boogie.Axiom(c.Origin, BplImp(heightAntecedent, ax), $"{c}.{f}: Allocation axiom")); + AddOtherDefinition(fieldDeclaration, new Boogie.Axiom(c.Origin, ax, $"{c}.{f}: Allocation axiom")); } } @@ -415,7 +409,7 @@ private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, /// For a static (necessarily "const") field "f" in a class "c(G)", the expression corresponding to "h[o, f]" or "f(G,o)" above is "f(G)", /// so generate: /// // type axiom: - /// axiom fh < FunctionContextHeight ==> + /// axiom /// (forall G : Ty :: /// { f(G) } /// $Is(f(G), TT(PP))); @@ -423,7 +417,7 @@ private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, /// axiom $Is(f(G), TT); /// /// // allocation axiom: - /// axiom fh < FunctionContextHeight ==> + /// axiom /// (forall h: Heap, G : Ty :: /// { $IsAlloc(f(G), TT(PP), h) } /// $IsHeap(h) @@ -432,15 +426,15 @@ private void AddInstanceFieldAllocationAxioms(Bpl.Declaration fieldDeclaration, /// /// /// The axioms above could be optimised to something along the lines of: - /// axiom fh < FunctionContextHeight ==> + /// axiom /// (forall o: ref, h: Heap :: /// { h[o, f] } /// $IsHeap(h) && o != null && Tag(dtype(o)) = TagClass /// ==> /// (h[o, alloc] ==> $IsAlloc(h[o, f], TT(TClassA_Inv_i(dtype(o)),..), h)) && /// $Is(h[o, f], TT(TClassA_Inv_i(dtype(o)),..), h); - /// - private void AddStaticConstFieldAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, TopLevelDeclWithMembers c, Expr heightAntecedent) { + /// + private void AddStaticConstFieldAllocationAxiom(Boogie.Declaration fieldDeclaration, Field f, TopLevelDeclWithMembers c) { var bvsTypeAxiom = new List(); var bvsAllocationAxiom = new List(); @@ -452,7 +446,7 @@ private void AddStaticConstFieldAllocationAxiom(Boogie.Declaration fieldDeclarat var oDotF = new Boogie.NAryExpr(c.Origin, new Boogie.FunctionCall(GetReadonlyField(f)), tyexprs); var is_hf = MkIs(oDotF, f.Type); // $Is(h[o, f], ..) Boogie.Expr ax = bvsTypeAxiom.Count == 0 ? is_hf : BplForall(bvsTypeAxiom, BplTrigger(oDotF), is_hf); - var isAxiom = new Boogie.Axiom(c.Origin, BplImp(heightAntecedent, ax), $"{c}.{f}: Type axiom"); + var isAxiom = new Boogie.Axiom(c.Origin, ax, $"{c}.{f}: Type axiom"); AddOtherDefinition(fieldDeclaration, isAxiom); { @@ -461,7 +455,7 @@ private void AddStaticConstFieldAllocationAxiom(Boogie.Declaration fieldDeclarat var isGoodHeap = FunctionCall(c.Origin, BuiltinFunction.IsGoodHeap, null, h); var isalloc_hf = MkIsAlloc(oDotF, f.Type, h); // $IsAlloc(h[o, f], ..) ax = BplForall(bvsAllocationAxiom, BplTrigger(isalloc_hf), BplImp(isGoodHeap, isalloc_hf)); - var isAllocAxiom = new Boogie.Axiom(c.Origin, BplImp(heightAntecedent, ax), $"{c}.{f}: Allocation axiom"); + var isAllocAxiom = new Boogie.Axiom(c.Origin, ax, $"{c}.{f}: Allocation axiom"); sink.AddTopLevelDeclaration(isAllocAxiom); } } @@ -1000,8 +994,6 @@ private void AddFunctionOverrideCheckImpl(Function f) { } // the procedure itself var req = new List(); - // free requires fh == FunctionContextHeight; - req.Add(FreeRequires(f.Origin, etran.HeightContext(f), null)); if (f is TwoStateFunction) { // free requires prevHeap == Heap && HeapSucc(prevHeap, currHeap) && IsHeap(currHeap) var a0 = Boogie.Expr.Eq(prevHeap, ordinaryEtran.HeapExpr); @@ -1449,9 +1441,8 @@ private Boogie.Axiom FunctionOverrideAxiom(Function f, Function overridingFuncti // The axiom Boogie.Expr ax = BplForall(f.Origin, new List(), forallFormals, null, tr, BplImp(ante, BplAnd(canCallImp, synonyms))); - var activate = AxiomActivation(overridingFunction, etran); var comment = $"override axiom for {f.FullSanitizedName} in {overridingFunction.EnclosingClass.WhatKind} {overridingFunction.EnclosingClass.FullSanitizedName}"; - return new Boogie.Axiom(f.Origin, BplImp(activate, ax), comment); + return new Boogie.Axiom(f.Origin, ax, comment); } /// @@ -1665,9 +1656,13 @@ private void AddMethodOverrideFrameSubsetChk(Method m, bool isModifies, BoogieSt } } - var kv = etran.TrAttributes(m.Attributes, null); + var kv = etran.TrAttributes(m.Attributes, null); var tok = m.Origin; + var canCalls = traitFrameExps.Concat(classFrameExps) + .Select(e => etran.CanCallAssumption(e.E)) + .Aggregate((Bpl.Expr)Bpl.Expr.True, BplAnd); + builder.Add(TrAssumeCmd(tok, canCalls)); var oVar = new Boogie.BoundVariable(tok, new Boogie.TypedIdent(tok, "$o", Predef.RefType)); var o = new Boogie.IdentifierExpr(tok, oVar); var fVar = new Boogie.BoundVariable(tok, new Boogie.TypedIdent(tok, "$f", Predef.FieldName(tok))); @@ -1784,8 +1779,6 @@ private Boogie.Procedure AddMethod(Method m, MethodTranslationKind kind) { var req = new List(); // FREE PRECONDITIONS if (kind == MethodTranslationKind.SpecWellformedness || kind == MethodTranslationKind.Implementation || kind == MethodTranslationKind.OverrideCheck) { // the other cases have no need for a free precondition - // free requires mh == ModuleContextHeight && fh == FunctionContextHeight; - req.Add(FreeRequires(m.Origin, etran.HeightContext(m), null)); if (m is TwoStateLemma) { // free requires prevHeap == Heap && HeapSucc(prevHeap, currHeap) && IsHeap(currHeap) var a0 = Boogie.Expr.Eq(prevHeap, ordinaryEtran.HeapExpr); diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.Types.cs b/Source/DafnyCore/Verifier/BoogieGenerator.Types.cs index 6b83567e3d1..4cd424bf9f7 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.Types.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.Types.cs @@ -1487,8 +1487,6 @@ void AddWellformednessCheck(RedirectingTypeDecl decl) { // the procedure itself var req = new List(); - // free requires mh == ModuleContextHeight && fh == TypeContextHeight; - req.Add(FreeRequires(decl.Tok, etran.HeightContext(decl), null)); // modifies $Heap var mod = new List { etran.HeapCastToIdentifierExpr, diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.cs b/Source/DafnyCore/Verifier/BoogieGenerator.cs index a57a65f4b46..cf7b1fbf860 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.cs @@ -1564,22 +1564,6 @@ public Specialization(IVariable formal, MatchCase mc, Specialization prev, Boogi return (olderParameterCount, olderCondition); } - Bpl.Expr AxiomActivation(Function f, ExpressionTranslator etran, bool strict = false) { - Contract.Requires(f != null); - Contract.Requires(etran != null); - Contract.Requires(VisibleInScope(f)); - if (InVerificationScope(f)) { - if (strict) { - return Bpl.Expr.Lt(Bpl.Expr.Literal(forModule.CallGraph.GetSCCRepresentativePredecessorCount(f)), etran.FunctionContextHeight()); - } else { - return Bpl.Expr.Le(Bpl.Expr.Literal(forModule.CallGraph.GetSCCRepresentativePredecessorCount(f)), etran.FunctionContextHeight()); - } - } else { - return Bpl.Expr.True; - } - } - - Bpl.Type TrReceiverType(MemberDecl f) { Contract.Requires(f != null); return TrType(ModuleResolver.GetReceiverType(f.Origin, f)); @@ -2447,13 +2431,6 @@ void CheckNonNull(IOrigin tok, Expression e, BoogieStmtListBuilder builder, Expr } } - void CheckFunctionSelectWF(string what, BoogieStmtListBuilder builder, ExpressionTranslator etran, Expression e, string hint) { - 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(GetToken(e), assertion, new ValidInRecursion(what, hint), builder.Context)); - } - } - void CloneVariableAsBoundVar(IOrigin tok, IVariable iv, string prefix, out BoundVar bv, out IdentifierExpr ie) { Contract.Requires(tok != null); Contract.Requires(iv != null); diff --git a/Source/DafnyCore/Verifier/Datatypes/BoogieGenerator.DataTypes.cs b/Source/DafnyCore/Verifier/Datatypes/BoogieGenerator.DataTypes.cs index ab5b614817e..18299d14d14 100644 --- a/Source/DafnyCore/Verifier/Datatypes/BoogieGenerator.DataTypes.cs +++ b/Source/DafnyCore/Verifier/Datatypes/BoogieGenerator.DataTypes.cs @@ -825,8 +825,6 @@ void AddWellformednessCheck(DatatypeCtor ctor) { // the procedure itself var req = new List(); - // free requires mh == ModuleContextHeight && fh == TypeContextHeight; - req.Add(Requires(ctor.Origin, true, null, etran.HeightContext(ctor.EnclosingDatatype), null, null, null)); var heapVar = new Bpl.IdentifierExpr(ctor.Origin, "$Heap", false); var varlist = new List { heapVar }; var proc = new Bpl.Procedure(ctor.Origin, "CheckWellformed" + NameSeparator + ctor.FullName, new List(), diff --git a/Source/DafnyCore/Verifier/ProofObligationDescription.cs b/Source/DafnyCore/Verifier/ProofObligationDescription.cs index 021f4c76db7..ac25787922c 100644 --- a/Source/DafnyCore/Verifier/ProofObligationDescription.cs +++ b/Source/DafnyCore/Verifier/ProofObligationDescription.cs @@ -1423,26 +1423,6 @@ public override Expression GetAssertedExpr(DafnyOptions options) { } } -public class ValidInRecursion : ProofObligationDescription { - public override string SuccessDescription => - $"{what} is valid in recursive setting"; - - public override string FailureDescription => - $"cannot use {what} in recursive setting.{hint ?? ""}"; - - public override string ShortDescription => "valid in recursion"; - - public override bool ProvedOutsideUserCode => true; - - private readonly string what; - private readonly string hint; - - public ValidInRecursion(string what, string hint) { - this.what = what; - this.hint = hint; - } -} - public class IsNonRecursive : ProofObligationDescription { public override string SuccessDescription => "default value is non-recursive"; diff --git a/Source/DafnyDriver/Commands/ServerCommand.cs b/Source/DafnyDriver/Commands/ServerCommand.cs index a4cdf8c92b3..51381672ef5 100644 --- a/Source/DafnyDriver/Commands/ServerCommand.cs +++ b/Source/DafnyDriver/Commands/ServerCommand.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; using System.CommandLine; -using DafnyCore; using Microsoft.Dafny.LanguageServer.Language; using Microsoft.Dafny.LanguageServer.Language.Symbols; using Microsoft.Dafny.LanguageServer.Workspace; diff --git a/Source/DafnyDriver/DafnyDriver.csproj b/Source/DafnyDriver/DafnyDriver.csproj index f928e3f5043..0236f2ce5f6 100644 --- a/Source/DafnyDriver/DafnyDriver.csproj +++ b/Source/DafnyDriver/DafnyDriver.csproj @@ -13,16 +13,6 @@ true - - - false - false - - - - - $(RUNTIME_IDENTIFIER) - @@ -42,8 +32,8 @@ + - diff --git a/Source/DafnyDriver/Legacy/LegacyJsonVerificationLogger.cs b/Source/DafnyDriver/Legacy/LegacyJsonVerificationLogger.cs index 93087fe8e5d..e6e27c8b151 100644 --- a/Source/DafnyDriver/Legacy/LegacyJsonVerificationLogger.cs +++ b/Source/DafnyDriver/Legacy/LegacyJsonVerificationLogger.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Text.Json.Nodes; using DafnyCore.Verifier; -using DafnyServer; using Microsoft.Boogie; using VC; diff --git a/Source/DafnyLanguageServer.Test/CodeActions/CodeActionsTest.cs b/Source/DafnyLanguageServer.Test/CodeActions/CodeActionsTest.cs index bd28edcf2ae..0a07486e222 100644 --- a/Source/DafnyLanguageServer.Test/CodeActions/CodeActionsTest.cs +++ b/Source/DafnyLanguageServer.Test/CodeActions/CodeActionsTest.cs @@ -1,4 +1,4 @@ -using Microsoft.Dafny.LanguageServer.IntegrationTest.Extensions; +using System; using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Models; using System.Collections.Generic; @@ -8,7 +8,7 @@ using Microsoft.Dafny.LanguageServer.IntegrationTest.Util; using Xunit; using Xunit.Abstractions; -using XunitAssertMessages; +using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range; namespace Microsoft.Dafny.LanguageServer.IntegrationTest.CodeActions { public class CodeActionTest : ClientBasedLanguageServerTest { @@ -76,6 +76,21 @@ assert x !is B.>< Assert.Empty(completionList); } + [Fact] + public async Task TestAssertFalseNotSuggestingItself() { + await TestNoCodeAction(@" +method NoCodeAction() { + assert fal> message == "Assert postcondition at return location where it fails"); + } + [Fact] public async Task TestInsertion() { await TestCodeAction(@" @@ -371,6 +386,23 @@ match i { private static readonly Regex NewlineRegex = new Regex("\r?\n"); + private async Task TestNoCodeAction(string source, Func excepted = null) { + await SetUp(o => o.Set(CommonOptionBag.RelaxDefiniteAssignment, true)); + MarkupTestFile.GetPositionsAndAnnotatedRanges(source.TrimStart(), out var output, out var positions, + out var ranges); + var documentItem = await CreateOpenAndWaitForResolve(output); + var diagnostics = await GetLastDiagnostics(documentItem); + Assert.Equal(0, ranges.Count); + foreach (var position in positions) { + var completionList = await RequestCodeActionAsync(documentItem, new Range(position, position)); + completionList = excepted == null + ? completionList + : completionList.Where(completion => + completion.CodeAction is not { Title: var title } || !excepted(title)).ToList(); + Assert.Empty(completionList); + } + } + private async Task TestCodeAction(string source) { await SetUp(o => o.Set(CommonOptionBag.RelaxDefiniteAssignment, true)); diff --git a/Source/DafnyLanguageServer/DafnyLanguageServer.csproj b/Source/DafnyLanguageServer/DafnyLanguageServer.csproj index 67513425d4e..92f1fad7dff 100644 --- a/Source/DafnyLanguageServer/DafnyLanguageServer.csproj +++ b/Source/DafnyLanguageServer/DafnyLanguageServer.csproj @@ -6,7 +6,6 @@ enable Microsoft.Dafny.LanguageServer ..\..\Binaries\ - true false MIT README.md diff --git a/Source/DafnyLanguageServer/Language/ImplicitFailingAssertionCodeActionProvider.cs b/Source/DafnyLanguageServer/Language/ImplicitFailingAssertionCodeActionProvider.cs index 3f67298ffba..ca0fd8b2726 100644 --- a/Source/DafnyLanguageServer/Language/ImplicitFailingAssertionCodeActionProvider.cs +++ b/Source/DafnyLanguageServer/Language/ImplicitFailingAssertionCodeActionProvider.cs @@ -126,7 +126,9 @@ public override IEnumerable GetEdits() { assertTree.StatusVerification is GutterVerificationStatus.Error or GutterVerificationStatus.Inconclusive && assertTree.GetAssertion()?.Description is ProofObligationDescription description && description.GetAssertedExpr(options) is { } assertedExpr) { - failingExpressions.Add(assertedExpr); + if (description.IsImplicit) { + failingExpressions.Add(assertedExpr); + } } }); if (failingExpressions.Count == 0) { diff --git a/Source/DafnyPipeline.Test/expectedProverLog.smt2 b/Source/DafnyPipeline.Test/expectedProverLog.smt2 index f970b2e40c3..b855c64809d 100644 --- a/Source/DafnyPipeline.Test/expectedProverLog.smt2 +++ b/Source/DafnyPipeline.Test/expectedProverLog.smt2 @@ -192,7 +192,6 @@ (declare-fun $generated@@151 () Int) (declare-fun $generated@@152 () T@U) (declare-fun $generated@@153 () T@U) -(declare-fun $generated@@154 () Int) (set-option :timeout 0) (set-option :rlimit 0) (set-option :auto_config false) @@ -208,11 +207,11 @@ (set-option :pp.bv_literals false) (set-option :smt.arith.solver 2) (assert (not - (=> (= (ControlFlow 0 0) 6) (let (($generated@@155 (=> (and (= $generated@@143 ($generated@@99 $generated@@30 $generated@@144 $generated@@1 false)) (=> $generated@@145 (and ($generated@@27 $generated@@28 $generated@@146 $generated@@34) ($generated@@33 $generated@@28 $generated@@146 $generated@@34 $generated@@144)))) (=> (and (and (or (not (= $generated@@147 $generated@@30)) (not true)) (and ($generated@@27 $generated@@28 $generated@@147 $generated@@34) ($generated@@33 $generated@@28 $generated@@147 $generated@@34 $generated@@144))) (and ($generated@@79 $generated@@148) ($generated@@149 $generated@@148))) (=> (and (and (and (or (not (= $generated@@150 $generated@@30)) (not true)) (and ($generated@@27 $generated@@28 $generated@@150 $generated@@34) ($generated@@33 $generated@@28 $generated@@150 $generated@@34 $generated@@148))) (not ($generated@@13 ($generated@@40 $generated@@9 ($generated@@41 $generated@@42 $generated@@43 ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@150) $generated@@1))))) (and (forall (($generated@@156 T@U) ) (! (=> (and (or (not (= $generated@@156 $generated@@30)) (not true)) ($generated@@13 ($generated@@40 $generated@@9 ($generated@@41 $generated@@42 $generated@@43 ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@156) $generated@@1)))) (= ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@156) ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@156))) - :pattern ( ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@156)) + (=> (= (ControlFlow 0 0) 6) (let (($generated@@154 (=> (and (= $generated@@143 ($generated@@99 $generated@@30 $generated@@144 $generated@@1 false)) (=> $generated@@145 (and ($generated@@27 $generated@@28 $generated@@146 $generated@@34) ($generated@@33 $generated@@28 $generated@@146 $generated@@34 $generated@@144)))) (=> (and (and (or (not (= $generated@@147 $generated@@30)) (not true)) (and ($generated@@27 $generated@@28 $generated@@147 $generated@@34) ($generated@@33 $generated@@28 $generated@@147 $generated@@34 $generated@@144))) (and ($generated@@79 $generated@@148) ($generated@@149 $generated@@148))) (=> (and (and (and (or (not (= $generated@@150 $generated@@30)) (not true)) (and ($generated@@27 $generated@@28 $generated@@150 $generated@@34) ($generated@@33 $generated@@28 $generated@@150 $generated@@34 $generated@@148))) (not ($generated@@13 ($generated@@40 $generated@@9 ($generated@@41 $generated@@42 $generated@@43 ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@150) $generated@@1))))) (and (forall (($generated@@155 T@U) ) (! (=> (and (or (not (= $generated@@155 $generated@@30)) (not true)) ($generated@@13 ($generated@@40 $generated@@9 ($generated@@41 $generated@@42 $generated@@43 ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@155) $generated@@1)))) (= ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@155) ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@144 $generated@@155))) + :pattern ( ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@155)) )) ($generated@@67 $generated@@144 $generated@@148))) (and (=> (= (ControlFlow 0 2) (- 0 5)) true) (and (=> (= (ControlFlow 0 2) (- 0 4)) (or (not (= $generated@@150 $generated@@30)) (not true))) (=> (or (not (= $generated@@150 $generated@@30)) (not true)) (and (=> (= (ControlFlow 0 2) (- 0 3)) ($generated@@13 ($generated@@98 $generated@@28 $generated@@42 $generated@@9 $generated@@143 $generated@@150 $generated@@37))) (=> ($generated@@13 ($generated@@98 $generated@@28 $generated@@42 $generated@@9 $generated@@143 $generated@@150 $generated@@37)) (=> (and (and (= $generated@@151 ($generated@@71 4)) (= $generated@@152 ($generated@@45 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@150 ($generated@@45 $generated@@42 $generated@@43 ($generated@@41 $generated@@28 ($generated@@44 $generated@@42 $generated@@43) $generated@@148 $generated@@150) $generated@@37 ($generated@@76 $generated@@10 ($generated@@14 $generated@@151)))))) (and ($generated@@79 $generated@@152) (= (ControlFlow 0 2) (- 0 1)))) ($generated@@13 ($generated@@73 $generated@@9 ($generated@@12 false)))))))))))))) -(let (($generated@@157 (=> (and ($generated@@79 $generated@@144) ($generated@@149 $generated@@144)) (=> (and (and (=> $generated@@145 (and ($generated@@27 $generated@@28 $generated@@153 $generated@@34) ($generated@@33 $generated@@28 $generated@@153 $generated@@34 $generated@@144))) true) (and (= 0 $generated@@154) (= (ControlFlow 0 6) 2))) $generated@@155)))) -$generated@@157))) +(let (($generated@@156 (=> (and ($generated@@79 $generated@@144) ($generated@@149 $generated@@144)) (=> (and (and (=> $generated@@145 (and ($generated@@27 $generated@@28 $generated@@153 $generated@@34) ($generated@@33 $generated@@28 $generated@@153 $generated@@34 $generated@@144))) true) (= (ControlFlow 0 6) 2)) $generated@@154)))) +$generated@@156))) )) (check-sat) (get-info :reason-unknown) @@ -291,34 +290,33 @@ $generated@@157))) (declare-fun $generated@@53 () T@U) (declare-fun $generated@@54 (T@U) T@U) (declare-fun $generated@@56 () T@U) -(declare-fun $generated@@58 () Int) -(declare-fun $generated@@59 (T@U Int T@U) Int) -(declare-fun $generated@@60 (T@U) Bool) -(declare-fun $generated@@61 (T@U Int T@U) Bool) -(declare-fun $generated@@62 (Int) Int) -(declare-fun $generated@@66 () T@U) -(declare-fun $generated@@69 () T@U) -(declare-fun $generated@@72 () T@U) -(declare-fun $generated@@73 (T@U T@U) T@U) -(declare-fun $generated@@74 (T@U) Bool) -(declare-fun $generated@@75 () T@U) -(declare-fun $generated@@76 (T@T T@U) T@U) -(declare-fun $generated@@77 (T@T T@T T@U T@U) T@U) -(declare-fun $generated@@78 () T@T) -(declare-fun $generated@@79 () T@T) -(declare-fun $generated@@80 (T@T T@T) T@T) -(declare-fun $generated@@81 (T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@82 (T@T) T@T) -(declare-fun $generated@@83 (T@T) T@T) +(declare-fun $generated@@58 () T@U) +(declare-fun $generated@@61 () T@U) +(declare-fun $generated@@64 () T@U) +(declare-fun $generated@@65 (T@U T@U) T@U) +(declare-fun $generated@@66 (T@U) Bool) +(declare-fun $generated@@67 () T@U) +(declare-fun $generated@@68 (T@T T@U) T@U) +(declare-fun $generated@@69 (T@T T@T T@U T@U) T@U) +(declare-fun $generated@@70 () T@T) +(declare-fun $generated@@71 () T@T) +(declare-fun $generated@@72 (T@T T@T) T@T) +(declare-fun $generated@@73 (T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@74 (T@T) T@T) +(declare-fun $generated@@75 (T@T) T@T) +(declare-fun $generated@@97 (Int) Int) +(declare-fun $generated@@99 (T@T T@U) T@U) +(declare-fun $generated@@102 (T@U T@U) Bool) (declare-fun $generated@@106 (T@T T@U) T@U) -(declare-fun $generated@@109 (T@U T@U) Bool) -(declare-fun $generated@@113 (T@T T@U) T@U) -(declare-fun $generated@@128 (T@U T@U) Bool) -(declare-fun $generated@@131 (T@U) T@U) -(declare-fun $generated@@138 (T@U) T@U) -(declare-fun $generated@@139 (T@T T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@140 (T@U T@U T@U T@U T@U) T@U) -(declare-fun $generated@@141 (T@T T@T T@T T@U T@U T@U T@U) T@U) +(declare-fun $generated@@110 (T@U) Bool) +(declare-fun $generated@@119 (T@U Int T@U) Int) +(declare-fun $generated@@120 (T@U Int T@U) Bool) +(declare-fun $generated@@124 (T@U T@U) Bool) +(declare-fun $generated@@127 (T@U) T@U) +(declare-fun $generated@@134 (T@U) T@U) +(declare-fun $generated@@138 (T@T T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@139 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@140 (T@T T@T T@T T@U T@U T@U T@U) T@U) (assert (and (and (and (and (and (and (and (and (= ($generated@@15 $generated@@16) 0) (= ($generated@@15 $generated@@17) 1)) (= ($generated@@15 $generated@@18) 2)) (forall (($generated@@25 Bool) ) (! (= ($generated@@20 ($generated@@19 $generated@@25)) $generated@@25) :pattern ( ($generated@@19 $generated@@25)) ))) (forall (($generated@@26 T@U) ) (! (= ($generated@@19 ($generated@@20 $generated@@26)) $generated@@26) @@ -359,133 +357,133 @@ $generated@@157))) (assert (forall (($generated@@57 T@U) ) (! (= ($generated@@50 $generated@@51 $generated@@57 $generated@@56) (or (= $generated@@57 $generated@@53) (= ($generated@@54 $generated@@57) $generated@@56))) :pattern ( ($generated@@50 $generated@@51 $generated@@57 $generated@@56)) ))) -(assert (=> (<= 1 $generated@@58) (forall (($generated@@63 T@U) ($generated@@64 Int) ($generated@@65 T@U) ) (! (=> ($generated@@61 $generated@@63 $generated@@64 $generated@@65) (= ($generated@@59 $generated@@63 $generated@@64 $generated@@65) ($generated@@62 3))) - :pattern ( ($generated@@59 $generated@@63 $generated@@64 $generated@@65) ($generated@@60 $generated@@63)) -)))) -(assert (forall (($generated@@67 T@U) ($generated@@68 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@67 $generated@@66 $generated@@68) ($generated@@41 $generated@@51 $generated@@67 $generated@@52 $generated@@68)) - :pattern ( ($generated@@41 $generated@@51 $generated@@67 $generated@@66 $generated@@68)) -))) -(assert (forall (($generated@@70 T@U) ($generated@@71 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@70 $generated@@69 $generated@@71) ($generated@@41 $generated@@51 $generated@@70 $generated@@56 $generated@@71)) - :pattern ( ($generated@@41 $generated@@51 $generated@@70 $generated@@69 $generated@@71)) -))) -(assert (= ($generated@@31 $generated@@72) 0)) -(assert (= ($generated@@73 $generated@@5 $generated@@13) $generated@@72)) -(assert (not ($generated@@74 $generated@@72))) -(assert (= ($generated@@31 $generated@@75) 0)) -(assert (= ($generated@@73 $generated@@8 $generated@@14) $generated@@75)) -(assert (not ($generated@@74 $generated@@75))) -(assert (and (and (and (and (and (and (forall (($generated@@84 T@T) ($generated@@85 T@T) ($generated@@86 T@U) ($generated@@87 T@U) ($generated@@88 T@U) ) (! (= ($generated@@77 $generated@@84 $generated@@85 ($generated@@81 $generated@@84 $generated@@85 $generated@@87 $generated@@88 $generated@@86) $generated@@88) $generated@@86) +(assert (forall (($generated@@59 T@U) ($generated@@60 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@59 $generated@@58 $generated@@60) ($generated@@41 $generated@@51 $generated@@59 $generated@@52 $generated@@60)) + :pattern ( ($generated@@41 $generated@@51 $generated@@59 $generated@@58 $generated@@60)) +))) +(assert (forall (($generated@@62 T@U) ($generated@@63 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@62 $generated@@61 $generated@@63) ($generated@@41 $generated@@51 $generated@@62 $generated@@56 $generated@@63)) + :pattern ( ($generated@@41 $generated@@51 $generated@@62 $generated@@61 $generated@@63)) +))) +(assert (= ($generated@@31 $generated@@64) 0)) +(assert (= ($generated@@65 $generated@@5 $generated@@13) $generated@@64)) +(assert (not ($generated@@66 $generated@@64))) +(assert (= ($generated@@31 $generated@@67) 0)) +(assert (= ($generated@@65 $generated@@8 $generated@@14) $generated@@67)) +(assert (not ($generated@@66 $generated@@67))) +(assert (and (and (and (and (and (and (forall (($generated@@76 T@T) ($generated@@77 T@T) ($generated@@78 T@U) ($generated@@79 T@U) ($generated@@80 T@U) ) (! (= ($generated@@69 $generated@@76 $generated@@77 ($generated@@73 $generated@@76 $generated@@77 $generated@@79 $generated@@80 $generated@@78) $generated@@80) $generated@@78) :weight 0 -)) (forall (($generated@@89 T@T) ($generated@@90 T@T) ($generated@@91 T@U) ($generated@@92 T@U) ($generated@@93 T@U) ($generated@@94 T@U) ) (! (or (= $generated@@93 $generated@@94) (= ($generated@@77 $generated@@89 $generated@@90 ($generated@@81 $generated@@89 $generated@@90 $generated@@92 $generated@@93 $generated@@91) $generated@@94) ($generated@@77 $generated@@89 $generated@@90 $generated@@92 $generated@@94))) +)) (forall (($generated@@81 T@T) ($generated@@82 T@T) ($generated@@83 T@U) ($generated@@84 T@U) ($generated@@85 T@U) ($generated@@86 T@U) ) (! (or (= $generated@@85 $generated@@86) (= ($generated@@69 $generated@@81 $generated@@82 ($generated@@73 $generated@@81 $generated@@82 $generated@@84 $generated@@85 $generated@@83) $generated@@86) ($generated@@69 $generated@@81 $generated@@82 $generated@@84 $generated@@86))) :weight 0 -))) (= ($generated@@15 $generated@@78) 4)) (= ($generated@@15 $generated@@79) 5)) (forall (($generated@@95 T@T) ($generated@@96 T@T) ) (= ($generated@@15 ($generated@@80 $generated@@95 $generated@@96)) 6))) (forall (($generated@@97 T@T) ($generated@@98 T@T) ) (! (= ($generated@@82 ($generated@@80 $generated@@97 $generated@@98)) $generated@@97) - :pattern ( ($generated@@80 $generated@@97 $generated@@98)) -))) (forall (($generated@@99 T@T) ($generated@@100 T@T) ) (! (= ($generated@@83 ($generated@@80 $generated@@99 $generated@@100)) $generated@@100) - :pattern ( ($generated@@80 $generated@@99 $generated@@100)) +))) (= ($generated@@15 $generated@@70) 4)) (= ($generated@@15 $generated@@71) 5)) (forall (($generated@@87 T@T) ($generated@@88 T@T) ) (= ($generated@@15 ($generated@@72 $generated@@87 $generated@@88)) 6))) (forall (($generated@@89 T@T) ($generated@@90 T@T) ) (! (= ($generated@@74 ($generated@@72 $generated@@89 $generated@@90)) $generated@@89) + :pattern ( ($generated@@72 $generated@@89 $generated@@90)) +))) (forall (($generated@@91 T@T) ($generated@@92 T@T) ) (! (= ($generated@@75 ($generated@@72 $generated@@91 $generated@@92)) $generated@@92) + :pattern ( ($generated@@72 $generated@@91 $generated@@92)) )))) -(assert (forall (($generated@@101 T@U) ($generated@@102 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@101 $generated@@52 $generated@@102) (or (= $generated@@101 $generated@@53) ($generated@@20 ($generated@@76 $generated@@16 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@102 $generated@@101) $generated@@1))))) - :pattern ( ($generated@@41 $generated@@51 $generated@@101 $generated@@52 $generated@@102)) +(assert (forall (($generated@@93 T@U) ($generated@@94 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@93 $generated@@52 $generated@@94) (or (= $generated@@93 $generated@@53) ($generated@@20 ($generated@@68 $generated@@16 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@94 $generated@@93) $generated@@1))))) + :pattern ( ($generated@@41 $generated@@51 $generated@@93 $generated@@52 $generated@@94)) ))) -(assert (forall (($generated@@103 T@U) ($generated@@104 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@103 $generated@@56 $generated@@104) (or (= $generated@@103 $generated@@53) ($generated@@20 ($generated@@76 $generated@@16 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@104 $generated@@103) $generated@@1))))) - :pattern ( ($generated@@41 $generated@@51 $generated@@103 $generated@@56 $generated@@104)) +(assert (forall (($generated@@95 T@U) ($generated@@96 T@U) ) (! (= ($generated@@41 $generated@@51 $generated@@95 $generated@@56 $generated@@96) (or (= $generated@@95 $generated@@53) ($generated@@20 ($generated@@68 $generated@@16 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@96 $generated@@95) $generated@@1))))) + :pattern ( ($generated@@41 $generated@@51 $generated@@95 $generated@@56 $generated@@96)) ))) -(assert (forall (($generated@@105 Int) ) (! (= ($generated@@62 $generated@@105) $generated@@105) - :pattern ( ($generated@@62 $generated@@105)) +(assert (forall (($generated@@98 Int) ) (! (= ($generated@@97 $generated@@98) $generated@@98) + :pattern ( ($generated@@97 $generated@@98)) ))) -(assert (forall (($generated@@107 T@U) ($generated@@108 T@T) ) (! (= ($generated@@106 $generated@@108 $generated@@107) $generated@@107) - :pattern ( ($generated@@106 $generated@@108 $generated@@107)) +(assert (forall (($generated@@100 T@U) ($generated@@101 T@T) ) (! (= ($generated@@99 $generated@@101 $generated@@100) $generated@@100) + :pattern ( ($generated@@99 $generated@@101 $generated@@100)) ))) -(assert (forall (($generated@@110 T@U) ($generated@@111 T@U) ) (! (= ($generated@@109 $generated@@110 $generated@@111) (forall (($generated@@112 T@U) ) (! (=> ($generated@@35 $generated@@110 $generated@@112) ($generated@@35 $generated@@111 $generated@@112)) - :pattern ( ($generated@@35 $generated@@110 $generated@@112)) - :pattern ( ($generated@@35 $generated@@111 $generated@@112)) +(assert (forall (($generated@@103 T@U) ($generated@@104 T@U) ) (! (= ($generated@@102 $generated@@103 $generated@@104) (forall (($generated@@105 T@U) ) (! (=> ($generated@@35 $generated@@103 $generated@@105) ($generated@@35 $generated@@104 $generated@@105)) + :pattern ( ($generated@@35 $generated@@103 $generated@@105)) + :pattern ( ($generated@@35 $generated@@104 $generated@@105)) ))) - :pattern ( ($generated@@109 $generated@@110 $generated@@111)) + :pattern ( ($generated@@102 $generated@@103 $generated@@104)) ))) -(assert (forall (($generated@@114 T@U) ($generated@@115 T@T) ) (! (= ($generated@@113 $generated@@115 ($generated@@76 $generated@@115 $generated@@114)) $generated@@114) - :pattern ( ($generated@@76 $generated@@115 $generated@@114)) +(assert (forall (($generated@@107 T@U) ($generated@@108 T@T) ) (! (= ($generated@@106 $generated@@108 ($generated@@68 $generated@@108 $generated@@107)) $generated@@107) + :pattern ( ($generated@@68 $generated@@108 $generated@@107)) ))) -(assert (forall (($generated@@116 T@U) ) (! (= ($generated@@50 $generated@@17 $generated@@116 $generated@@42) (<= ($generated@@62 0) ($generated@@22 $generated@@116))) - :pattern ( ($generated@@50 $generated@@17 $generated@@116 $generated@@42)) +(assert (forall (($generated@@109 T@U) ) (! (= ($generated@@50 $generated@@17 $generated@@109 $generated@@42) (<= ($generated@@97 0) ($generated@@22 $generated@@109))) + :pattern ( ($generated@@50 $generated@@17 $generated@@109 $generated@@42)) ))) -(assert ($generated@@74 $generated@@1)) -(assert (forall (($generated@@117 T@U) ($generated@@118 T@U) ) (! (=> (and (and ($generated@@60 $generated@@117) (and (or (not (= $generated@@118 $generated@@53)) (not true)) (= ($generated@@54 $generated@@118) $generated@@56))) ($generated@@20 ($generated@@76 $generated@@16 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@117 $generated@@118) $generated@@1)))) ($generated@@41 $generated@@17 ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@117 $generated@@118) $generated@@75)) $generated $generated@@117)) - :pattern ( ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@117 $generated@@118) $generated@@75))) +(assert ($generated@@66 $generated@@1)) +(assert (forall (($generated@@111 T@U) ($generated@@112 T@U) ) (! (=> (and (and ($generated@@110 $generated@@111) (and (or (not (= $generated@@112 $generated@@53)) (not true)) (= ($generated@@54 $generated@@112) $generated@@56))) ($generated@@20 ($generated@@68 $generated@@16 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@111 $generated@@112) $generated@@1)))) ($generated@@41 $generated@@17 ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@111 $generated@@112) $generated@@67)) $generated $generated@@111)) + :pattern ( ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@111 $generated@@112) $generated@@67))) ))) -(assert (forall (($generated@@119 T@U) ($generated@@120 T@U) ) (! (=> (and ($generated@@60 $generated@@119) (and (or (not (= $generated@@120 $generated@@53)) (not true)) (= ($generated@@54 $generated@@120) $generated@@52))) ($generated@@50 $generated@@51 ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@119 $generated@@120) $generated@@72)) $generated@@69)) - :pattern ( ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@119 $generated@@120) $generated@@72))) +(assert (forall (($generated@@113 T@U) ($generated@@114 T@U) ) (! (=> (and ($generated@@110 $generated@@113) (and (or (not (= $generated@@114 $generated@@53)) (not true)) (= ($generated@@54 $generated@@114) $generated@@52))) ($generated@@50 $generated@@51 ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@113 $generated@@114) $generated@@64)) $generated@@61)) + :pattern ( ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@113 $generated@@114) $generated@@64))) ))) -(assert (=> (<= 1 $generated@@58) (forall (($generated@@121 T@U) ($generated@@122 Int) ($generated@@123 T@U) ) (! (=> ($generated@@61 $generated@@121 $generated@@122 $generated@@123) (and (and ($generated@@61 $generated@@121 $generated@@122 $generated@@123) (= ($generated@@59 $generated@@121 $generated@@122 $generated@@123) ($generated@@22 ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@121 ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@121 $generated@@123) $generated@@72))) $generated@@75))))) (<= ($generated@@62 0) ($generated@@59 $generated@@121 $generated@@122 $generated@@123)))) - :pattern ( ($generated@@59 $generated@@121 $generated@@122 $generated@@123)) -)))) -(assert (forall (($generated@@124 T@U) ) (! (= ($generated@@50 $generated@@51 $generated@@124 $generated@@66) (and ($generated@@50 $generated@@51 $generated@@124 $generated@@52) (or (not (= $generated@@124 $generated@@53)) (not true)))) - :pattern ( ($generated@@50 $generated@@51 $generated@@124 $generated@@66)) - :pattern ( ($generated@@50 $generated@@51 $generated@@124 $generated@@52)) +(assert (forall (($generated@@115 T@U) ) (! (= ($generated@@50 $generated@@51 $generated@@115 $generated@@58) (and ($generated@@50 $generated@@51 $generated@@115 $generated@@52) (or (not (= $generated@@115 $generated@@53)) (not true)))) + :pattern ( ($generated@@50 $generated@@51 $generated@@115 $generated@@58)) + :pattern ( ($generated@@50 $generated@@51 $generated@@115 $generated@@52)) ))) -(assert (forall (($generated@@125 T@U) ) (! (= ($generated@@50 $generated@@51 $generated@@125 $generated@@69) (and ($generated@@50 $generated@@51 $generated@@125 $generated@@56) (or (not (= $generated@@125 $generated@@53)) (not true)))) - :pattern ( ($generated@@50 $generated@@51 $generated@@125 $generated@@69)) - :pattern ( ($generated@@50 $generated@@51 $generated@@125 $generated@@56)) +(assert (forall (($generated@@116 T@U) ) (! (= ($generated@@50 $generated@@51 $generated@@116 $generated@@61) (and ($generated@@50 $generated@@51 $generated@@116 $generated@@56) (or (not (= $generated@@116 $generated@@53)) (not true)))) + :pattern ( ($generated@@50 $generated@@51 $generated@@116 $generated@@61)) + :pattern ( ($generated@@50 $generated@@51 $generated@@116 $generated@@56)) ))) -(assert (forall (($generated@@126 T@U) ($generated@@127 T@U) ) (! (=> (and (and ($generated@@60 $generated@@126) (and (or (not (= $generated@@127 $generated@@53)) (not true)) (= ($generated@@54 $generated@@127) $generated@@52))) ($generated@@20 ($generated@@76 $generated@@16 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@126 $generated@@127) $generated@@1)))) ($generated@@41 $generated@@51 ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@126 $generated@@127) $generated@@72)) $generated@@69 $generated@@126)) - :pattern ( ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@126 $generated@@127) $generated@@72))) +(assert (forall (($generated@@117 T@U) ($generated@@118 T@U) ) (! (=> (and (and ($generated@@110 $generated@@117) (and (or (not (= $generated@@118 $generated@@53)) (not true)) (= ($generated@@54 $generated@@118) $generated@@52))) ($generated@@20 ($generated@@68 $generated@@16 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@117 $generated@@118) $generated@@1)))) ($generated@@41 $generated@@51 ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@117 $generated@@118) $generated@@64)) $generated@@61 $generated@@117)) + :pattern ( ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@117 $generated@@118) $generated@@64))) ))) -(assert (forall (($generated@@129 T@U) ($generated@@130 T@U) ) (! (=> ($generated@@128 $generated@@129 $generated@@130) (= $generated@@129 $generated@@130)) - :pattern ( ($generated@@128 $generated@@129 $generated@@130)) +(assert (forall (($generated@@121 T@U) ($generated@@122 Int) ($generated@@123 T@U) ) (! (=> ($generated@@120 $generated@@121 $generated@@122 $generated@@123) (= ($generated@@119 $generated@@121 $generated@@122 $generated@@123) ($generated@@97 3))) + :pattern ( ($generated@@119 $generated@@121 $generated@@122 $generated@@123) ($generated@@110 $generated@@121)) ))) -(assert (forall (($generated@@132 T@U) ($generated@@133 T@U) ) (! (and (= ($generated@@131 ($generated@@73 $generated@@132 $generated@@133)) $generated@@132) (= ($generated@@33 ($generated@@73 $generated@@132 $generated@@133)) $generated@@133)) - :pattern ( ($generated@@73 $generated@@132 $generated@@133)) +(assert (forall (($generated@@125 T@U) ($generated@@126 T@U) ) (! (=> ($generated@@124 $generated@@125 $generated@@126) (= $generated@@125 $generated@@126)) + :pattern ( ($generated@@124 $generated@@125 $generated@@126)) ))) -(assert (forall (($generated@@134 T@U) ($generated@@135 T@T) ) (! (= ($generated@@76 $generated@@135 ($generated@@113 $generated@@135 $generated@@134)) $generated@@134) - :pattern ( ($generated@@113 $generated@@135 $generated@@134)) +(assert (forall (($generated@@128 T@U) ($generated@@129 T@U) ) (! (and (= ($generated@@127 ($generated@@65 $generated@@128 $generated@@129)) $generated@@128) (= ($generated@@33 ($generated@@65 $generated@@128 $generated@@129)) $generated@@129)) + :pattern ( ($generated@@65 $generated@@128 $generated@@129)) ))) -(assert (forall (($generated@@136 T@U) ($generated@@137 T@U) ) (! (=> (and ($generated@@60 $generated@@136) (and (or (not (= $generated@@137 $generated@@53)) (not true)) (= ($generated@@54 $generated@@137) $generated@@56))) ($generated@@50 $generated@@17 ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@136 $generated@@137) $generated@@75)) $generated)) - :pattern ( ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@136 $generated@@137) $generated@@75))) +(assert (forall (($generated@@130 T@U) ($generated@@131 T@T) ) (! (= ($generated@@68 $generated@@131 ($generated@@106 $generated@@131 $generated@@130)) $generated@@130) + :pattern ( ($generated@@106 $generated@@131 $generated@@130)) +))) +(assert (forall (($generated@@132 T@U) ($generated@@133 T@U) ) (! (=> (and ($generated@@110 $generated@@132) (and (or (not (= $generated@@133 $generated@@53)) (not true)) (= ($generated@@54 $generated@@133) $generated@@56))) ($generated@@50 $generated@@17 ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@132 $generated@@133) $generated@@67)) $generated)) + :pattern ( ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@132 $generated@@133) $generated@@67))) ))) (assert (= ($generated@@32 $generated@@42) $generated@@3)) -(assert (= ($generated@@138 $generated@@42) $generated@@10)) -(assert (= ($generated@@32 $generated@@66) $generated@@4)) -(assert (= ($generated@@138 $generated@@66) $generated@@11)) +(assert (= ($generated@@134 $generated@@42) $generated@@10)) +(assert (= ($generated@@32 $generated@@58) $generated@@4)) +(assert (= ($generated@@134 $generated@@58) $generated@@11)) (assert (= ($generated@@32 $generated@@52) $generated@@6)) -(assert (= ($generated@@138 $generated@@52) $generated@@11)) -(assert (= ($generated@@32 $generated@@69) $generated@@7)) -(assert (= ($generated@@138 $generated@@69) $generated@@12)) +(assert (= ($generated@@134 $generated@@52) $generated@@11)) +(assert (= ($generated@@32 $generated@@61) $generated@@7)) +(assert (= ($generated@@134 $generated@@61) $generated@@12)) (assert (= ($generated@@32 $generated@@56) $generated@@9)) -(assert (= ($generated@@138 $generated@@56) $generated@@12)) -(assert (and (forall (($generated@@142 T@T) ($generated@@143 T@T) ($generated@@144 T@T) ($generated@@145 T@U) ($generated@@146 T@U) ($generated@@147 T@U) ($generated@@148 T@U) ) (! (= ($generated@@139 $generated@@142 $generated@@143 $generated@@144 ($generated@@141 $generated@@142 $generated@@143 $generated@@144 $generated@@146 $generated@@147 $generated@@148 $generated@@145) $generated@@147 $generated@@148) $generated@@145) +(assert (= ($generated@@134 $generated@@56) $generated@@12)) +(assert (forall (($generated@@135 T@U) ($generated@@136 Int) ($generated@@137 T@U) ) (! (=> ($generated@@120 $generated@@135 $generated@@136 $generated@@137) (and (and ($generated@@120 $generated@@135 $generated@@136 $generated@@137) (= ($generated@@119 $generated@@135 $generated@@136 $generated@@137) ($generated@@22 ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@135 ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@135 $generated@@137) $generated@@64))) $generated@@67))))) (<= ($generated@@97 0) ($generated@@119 $generated@@135 $generated@@136 $generated@@137)))) + :pattern ( ($generated@@119 $generated@@135 $generated@@136 $generated@@137)) +))) +(assert (and (forall (($generated@@141 T@T) ($generated@@142 T@T) ($generated@@143 T@T) ($generated@@144 T@U) ($generated@@145 T@U) ($generated@@146 T@U) ($generated@@147 T@U) ) (! (= ($generated@@138 $generated@@141 $generated@@142 $generated@@143 ($generated@@140 $generated@@141 $generated@@142 $generated@@143 $generated@@145 $generated@@146 $generated@@147 $generated@@144) $generated@@146 $generated@@147) $generated@@144) :weight 0 -)) (and (forall (($generated@@149 T@T) ($generated@@150 T@T) ($generated@@151 T@T) ($generated@@152 T@U) ($generated@@153 T@U) ($generated@@154 T@U) ($generated@@155 T@U) ($generated@@156 T@U) ($generated@@157 T@U) ) (! (or (= $generated@@154 $generated@@156) (= ($generated@@139 $generated@@149 $generated@@150 $generated@@151 ($generated@@141 $generated@@149 $generated@@150 $generated@@151 $generated@@153 $generated@@154 $generated@@155 $generated@@152) $generated@@156 $generated@@157) ($generated@@139 $generated@@149 $generated@@150 $generated@@151 $generated@@153 $generated@@156 $generated@@157))) +)) (and (forall (($generated@@148 T@T) ($generated@@149 T@T) ($generated@@150 T@T) ($generated@@151 T@U) ($generated@@152 T@U) ($generated@@153 T@U) ($generated@@154 T@U) ($generated@@155 T@U) ($generated@@156 T@U) ) (! (or (= $generated@@153 $generated@@155) (= ($generated@@138 $generated@@148 $generated@@149 $generated@@150 ($generated@@140 $generated@@148 $generated@@149 $generated@@150 $generated@@152 $generated@@153 $generated@@154 $generated@@151) $generated@@155 $generated@@156) ($generated@@138 $generated@@148 $generated@@149 $generated@@150 $generated@@152 $generated@@155 $generated@@156))) :weight 0 -)) (forall (($generated@@158 T@T) ($generated@@159 T@T) ($generated@@160 T@T) ($generated@@161 T@U) ($generated@@162 T@U) ($generated@@163 T@U) ($generated@@164 T@U) ($generated@@165 T@U) ($generated@@166 T@U) ) (! (or (= $generated@@164 $generated@@166) (= ($generated@@139 $generated@@158 $generated@@159 $generated@@160 ($generated@@141 $generated@@158 $generated@@159 $generated@@160 $generated@@162 $generated@@163 $generated@@164 $generated@@161) $generated@@165 $generated@@166) ($generated@@139 $generated@@158 $generated@@159 $generated@@160 $generated@@162 $generated@@165 $generated@@166))) +)) (forall (($generated@@157 T@T) ($generated@@158 T@T) ($generated@@159 T@T) ($generated@@160 T@U) ($generated@@161 T@U) ($generated@@162 T@U) ($generated@@163 T@U) ($generated@@164 T@U) ($generated@@165 T@U) ) (! (or (= $generated@@163 $generated@@165) (= ($generated@@138 $generated@@157 $generated@@158 $generated@@159 ($generated@@140 $generated@@157 $generated@@158 $generated@@159 $generated@@161 $generated@@162 $generated@@163 $generated@@160) $generated@@164 $generated@@165) ($generated@@138 $generated@@157 $generated@@158 $generated@@159 $generated@@161 $generated@@164 $generated@@165))) :weight 0 ))))) -(assert (forall (($generated@@167 T@U) ($generated@@168 T@U) ($generated@@169 T@U) ($generated@@170 T@U) ($generated@@171 T@U) ($generated@@172 T@U) ($generated@@173 T@U) ) (! (= ($generated@@20 ($generated@@139 $generated@@51 $generated@@78 $generated@@16 ($generated@@140 $generated@@167 $generated@@168 $generated@@169 $generated@@170 $generated@@171) $generated@@172 $generated@@173)) (=> (and (or (not (= $generated@@172 $generated@@167)) (not true)) ($generated@@20 ($generated@@76 $generated@@16 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@168 $generated@@172) $generated@@169)))) (or (= $generated@@172 $generated@@170) (= $generated@@172 $generated@@171)))) - :pattern ( ($generated@@139 $generated@@51 $generated@@78 $generated@@16 ($generated@@140 $generated@@167 $generated@@168 $generated@@169 $generated@@170 $generated@@171) $generated@@172 $generated@@173)) +(assert (forall (($generated@@166 T@U) ($generated@@167 T@U) ($generated@@168 T@U) ($generated@@169 T@U) ($generated@@170 T@U) ($generated@@171 T@U) ($generated@@172 T@U) ) (! (= ($generated@@20 ($generated@@138 $generated@@51 $generated@@70 $generated@@16 ($generated@@139 $generated@@166 $generated@@167 $generated@@168 $generated@@169 $generated@@170) $generated@@171 $generated@@172)) (=> (and (or (not (= $generated@@171 $generated@@166)) (not true)) ($generated@@20 ($generated@@68 $generated@@16 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@167 $generated@@171) $generated@@168)))) (or (= $generated@@171 $generated@@169) (= $generated@@171 $generated@@170)))) + :pattern ( ($generated@@138 $generated@@51 $generated@@70 $generated@@16 ($generated@@139 $generated@@166 $generated@@167 $generated@@168 $generated@@169 $generated@@170) $generated@@171 $generated@@172)) ))) -(assert (forall (($generated@@174 T@U) ($generated@@175 T@U) ) (! (= ($generated@@128 $generated@@174 $generated@@175) (forall (($generated@@176 T@U) ) (! (= ($generated@@35 $generated@@174 $generated@@176) ($generated@@35 $generated@@175 $generated@@176)) - :pattern ( ($generated@@35 $generated@@174 $generated@@176)) - :pattern ( ($generated@@35 $generated@@175 $generated@@176)) +(assert (forall (($generated@@173 T@U) ($generated@@174 T@U) ) (! (= ($generated@@124 $generated@@173 $generated@@174) (forall (($generated@@175 T@U) ) (! (= ($generated@@35 $generated@@173 $generated@@175) ($generated@@35 $generated@@174 $generated@@175)) + :pattern ( ($generated@@35 $generated@@173 $generated@@175)) + :pattern ( ($generated@@35 $generated@@174 $generated@@175)) ))) - :pattern ( ($generated@@128 $generated@@174 $generated@@175)) + :pattern ( ($generated@@124 $generated@@173 $generated@@174)) ))) -(assert (forall (($generated@@177 Int) ) (! (= ($generated@@113 $generated@@17 ($generated@@21 ($generated@@62 $generated@@177))) ($generated@@106 $generated@@79 ($generated@@113 $generated@@17 ($generated@@21 $generated@@177)))) - :pattern ( ($generated@@113 $generated@@17 ($generated@@21 ($generated@@62 $generated@@177)))) +(assert (forall (($generated@@176 Int) ) (! (= ($generated@@106 $generated@@17 ($generated@@21 ($generated@@97 $generated@@176))) ($generated@@99 $generated@@71 ($generated@@106 $generated@@17 ($generated@@21 $generated@@176)))) + :pattern ( ($generated@@106 $generated@@17 ($generated@@21 ($generated@@97 $generated@@176)))) ))) -(assert (forall (($generated@@178 T@U) ($generated@@179 T@T) ) (! (= ($generated@@113 $generated@@179 ($generated@@106 $generated@@179 $generated@@178)) ($generated@@106 $generated@@79 ($generated@@113 $generated@@179 $generated@@178))) - :pattern ( ($generated@@113 $generated@@179 ($generated@@106 $generated@@179 $generated@@178))) +(assert (forall (($generated@@177 T@U) ($generated@@178 T@T) ) (! (= ($generated@@106 $generated@@178 ($generated@@99 $generated@@178 $generated@@177)) ($generated@@99 $generated@@71 ($generated@@106 $generated@@178 $generated@@177))) + :pattern ( ($generated@@106 $generated@@178 ($generated@@99 $generated@@178 $generated@@177))) ))) -(assert (forall (($generated@@180 T@U) ($generated@@181 T@U) ) (! ($generated@@41 $generated@@17 $generated@@181 $generated $generated@@180) - :pattern ( ($generated@@41 $generated@@17 $generated@@181 $generated $generated@@180)) +(assert (forall (($generated@@179 T@U) ($generated@@180 T@U) ) (! ($generated@@41 $generated@@17 $generated@@180 $generated $generated@@179) + :pattern ( ($generated@@41 $generated@@17 $generated@@180 $generated $generated@@179)) ))) -(assert (forall (($generated@@182 T@U) ) (! ($generated@@50 $generated@@17 $generated@@182 $generated) - :pattern ( ($generated@@50 $generated@@17 $generated@@182 $generated)) +(assert (forall (($generated@@181 T@U) ) (! ($generated@@50 $generated@@17 $generated@@181 $generated) + :pattern ( ($generated@@50 $generated@@17 $generated@@181 $generated)) ))) (push 1) (declare-fun ControlFlow (Int Int) Int) -(declare-fun $generated@@183 () Int) +(declare-fun $generated@@182 () Int) +(declare-fun $generated@@183 () T@U) (declare-fun $generated@@184 () T@U) (declare-fun $generated@@185 () T@U) -(declare-fun $generated@@186 () T@U) -(declare-fun $generated@@187 () Bool) -(declare-fun $generated@@188 (T@U) Bool) +(declare-fun $generated@@186 () Bool) +(declare-fun $generated@@187 (T@U) Bool) (set-option :timeout 0) (set-option :rlimit 0) (set-option :auto_config false) @@ -501,12 +499,12 @@ $generated@@157))) (set-option :pp.bv_literals false) (set-option :smt.arith.solver 2) (assert (not - (=> (= (ControlFlow 0 0) 14) (let (($generated@@189 (=> (and (or (and (= $generated@@183 $generated@@183) (= $generated@@184 $generated@@184)) ($generated@@61 $generated@@185 $generated@@183 $generated@@184)) (= (ControlFlow 0 7) (- 0 6))) (= ($generated@@59 $generated@@185 $generated@@183 $generated@@184) ($generated@@22 ($generated@@76 $generated@@17 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) $generated@@75))))))) -(let (($generated@@190 (and (=> (= (ControlFlow 0 8) (- 0 9)) ($generated@@50 $generated@@17 ($generated@@21 ($generated@@62 3)) $generated@@42)) (=> ($generated@@50 $generated@@17 ($generated@@21 ($generated@@62 3)) $generated@@42) (=> (= ($generated@@59 $generated@@185 $generated@@183 $generated@@184) ($generated@@62 3)) (=> (and ($generated@@50 $generated@@17 ($generated@@21 ($generated@@59 $generated@@185 $generated@@183 $generated@@184)) $generated@@42) (= (ControlFlow 0 8) 7)) $generated@@189)))))) -(let (($generated@@191 (=> (<= ($generated@@62 0) ($generated@@59 $generated@@185 $generated@@183 $generated@@184)) (=> (and ($generated@@41 $generated@@17 ($generated@@21 $generated@@183) $generated $generated@@185) ($generated@@41 $generated@@51 $generated@@184 $generated@@66 $generated@@185)) (and (=> (= (ControlFlow 0 2) (- 0 5)) (or (or (<= 0 $generated@@183) (and ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (not ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)))))) (= $generated@@183 $generated@@183))) (=> (or (or (<= 0 $generated@@183) (and ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (not ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)))))) (= $generated@@183 $generated@@183)) (and (=> (= (ControlFlow 0 2) (- 0 4)) (or (and (= $generated@@183 $generated@@183) (= $generated@@184 $generated@@184)) (or (and ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (not ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))))) (and ($generated@@128 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (or (< $generated@@183 $generated@@183) (and (= $generated@@183 $generated@@183) (and (= $generated@@184 $generated@@53) (or (not (= $generated@@184 $generated@@53)) (not true))))))))) (=> (or (and (= $generated@@183 $generated@@183) (= $generated@@184 $generated@@184)) (or (and ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (not ($generated@@109 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))))) (and ($generated@@128 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@113 $generated@@51 $generated@@184)) ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72))) (or (< $generated@@183 $generated@@183) (and (= $generated@@183 $generated@@183) (and (= $generated@@184 $generated@@53) (or (not (= $generated@@184 $generated@@53)) (not true)))))))) (=> (or (and (= $generated@@183 $generated@@183) (= $generated@@184 $generated@@184)) ($generated@@61 $generated@@185 $generated@@183 $generated@@184)) (and (=> (= (ControlFlow 0 2) (- 0 3)) (or (not (= $generated@@184 $generated@@53)) (not true))) (=> (or (not (= $generated@@184 $generated@@53)) (not true)) (=> (= (ControlFlow 0 2) (- 0 1)) (or (not (= ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)) $generated@@53)) (not true)))))))))))))) -(let (($generated@@192 (=> (= $generated@@186 ($generated@@140 $generated@@53 $generated@@185 $generated@@1 $generated@@184 ($generated@@76 $generated@@51 ($generated@@77 $generated@@78 $generated@@79 ($generated@@77 $generated@@51 ($generated@@80 $generated@@78 $generated@@79) $generated@@185 $generated@@184) $generated@@72)))) (and (=> (= (ControlFlow 0 10) (- 0 13)) (or (not (= $generated@@184 $generated@@53)) (not true))) (=> (or (not (= $generated@@184 $generated@@53)) (not true)) (=> (= $generated@@187 ($generated@@20 ($generated@@139 $generated@@51 $generated@@78 $generated@@16 $generated@@186 $generated@@184 $generated@@72))) (and (=> (= (ControlFlow 0 10) (- 0 12)) $generated@@187) (=> $generated@@187 (and (=> (= (ControlFlow 0 10) (- 0 11)) (or (not (= $generated@@184 $generated@@53)) (not true))) (=> (or (not (= $generated@@184 $generated@@53)) (not true)) (and (=> (= (ControlFlow 0 10) 2) $generated@@191) (=> (= (ControlFlow 0 10) 8) $generated@@190)))))))))))) -(let (($generated@@193 (=> (and (and (and ($generated@@60 $generated@@185) ($generated@@188 $generated@@185)) ($generated@@50 $generated@@51 $generated@@184 $generated@@66)) (and (= 1 $generated@@58) (= (ControlFlow 0 14) 10))) $generated@@192))) -$generated@@193)))))) + (=> (= (ControlFlow 0 0) 14) (let (($generated@@188 (=> (and (or (and (= $generated@@182 $generated@@182) (= $generated@@183 $generated@@183)) ($generated@@120 $generated@@184 $generated@@182 $generated@@183)) (= (ControlFlow 0 7) (- 0 6))) (= ($generated@@119 $generated@@184 $generated@@182 $generated@@183) ($generated@@22 ($generated@@68 $generated@@17 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) $generated@@67))))))) +(let (($generated@@189 (and (=> (= (ControlFlow 0 8) (- 0 9)) ($generated@@50 $generated@@17 ($generated@@21 ($generated@@97 3)) $generated@@42)) (=> ($generated@@50 $generated@@17 ($generated@@21 ($generated@@97 3)) $generated@@42) (=> (= ($generated@@119 $generated@@184 $generated@@182 $generated@@183) ($generated@@97 3)) (=> (and ($generated@@50 $generated@@17 ($generated@@21 ($generated@@119 $generated@@184 $generated@@182 $generated@@183)) $generated@@42) (= (ControlFlow 0 8) 7)) $generated@@188)))))) +(let (($generated@@190 (=> (<= ($generated@@97 0) ($generated@@119 $generated@@184 $generated@@182 $generated@@183)) (=> (and ($generated@@41 $generated@@17 ($generated@@21 $generated@@182) $generated $generated@@184) ($generated@@41 $generated@@51 $generated@@183 $generated@@58 $generated@@184)) (and (=> (= (ControlFlow 0 2) (- 0 5)) (or (or (<= 0 $generated@@182) (and ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (not ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)))))) (= $generated@@182 $generated@@182))) (=> (or (or (<= 0 $generated@@182) (and ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (not ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)))))) (= $generated@@182 $generated@@182)) (and (=> (= (ControlFlow 0 2) (- 0 4)) (or (and (= $generated@@182 $generated@@182) (= $generated@@183 $generated@@183)) (or (and ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (not ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))))) (and ($generated@@124 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (or (< $generated@@182 $generated@@182) (and (= $generated@@182 $generated@@182) (and (= $generated@@183 $generated@@53) (or (not (= $generated@@183 $generated@@53)) (not true))))))))) (=> (or (and (= $generated@@182 $generated@@182) (= $generated@@183 $generated@@183)) (or (and ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (not ($generated@@102 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))))) (and ($generated@@124 ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) ($generated@@34 ($generated@@34 $generated@@48 ($generated@@106 $generated@@51 $generated@@183)) ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64))) (or (< $generated@@182 $generated@@182) (and (= $generated@@182 $generated@@182) (and (= $generated@@183 $generated@@53) (or (not (= $generated@@183 $generated@@53)) (not true)))))))) (=> (or (and (= $generated@@182 $generated@@182) (= $generated@@183 $generated@@183)) ($generated@@120 $generated@@184 $generated@@182 $generated@@183)) (and (=> (= (ControlFlow 0 2) (- 0 3)) (or (not (= $generated@@183 $generated@@53)) (not true))) (=> (or (not (= $generated@@183 $generated@@53)) (not true)) (=> (= (ControlFlow 0 2) (- 0 1)) (or (not (= ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)) $generated@@53)) (not true)))))))))))))) +(let (($generated@@191 (=> (= $generated@@185 ($generated@@139 $generated@@53 $generated@@184 $generated@@1 $generated@@183 ($generated@@68 $generated@@51 ($generated@@69 $generated@@70 $generated@@71 ($generated@@69 $generated@@51 ($generated@@72 $generated@@70 $generated@@71) $generated@@184 $generated@@183) $generated@@64)))) (and (=> (= (ControlFlow 0 10) (- 0 13)) (or (not (= $generated@@183 $generated@@53)) (not true))) (=> (or (not (= $generated@@183 $generated@@53)) (not true)) (=> (= $generated@@186 ($generated@@20 ($generated@@138 $generated@@51 $generated@@70 $generated@@16 $generated@@185 $generated@@183 $generated@@64))) (and (=> (= (ControlFlow 0 10) (- 0 12)) $generated@@186) (=> $generated@@186 (and (=> (= (ControlFlow 0 10) (- 0 11)) (or (not (= $generated@@183 $generated@@53)) (not true))) (=> (or (not (= $generated@@183 $generated@@53)) (not true)) (and (=> (= (ControlFlow 0 10) 2) $generated@@190) (=> (= (ControlFlow 0 10) 8) $generated@@189)))))))))))) +(let (($generated@@192 (=> (and (and ($generated@@110 $generated@@184) ($generated@@187 $generated@@184)) (and ($generated@@50 $generated@@51 $generated@@183 $generated@@58) (= (ControlFlow 0 14) 10))) $generated@@191))) +$generated@@192)))))) )) (check-sat) (get-info :reason-unknown) @@ -609,48 +607,47 @@ $generated@@193)))))) (declare-fun $generated@@125 () T@U) (declare-fun $generated@@126 (T@U) T@U) (declare-fun $generated@@128 () T@U) -(declare-fun $generated@@130 () Int) -(declare-fun $generated@@131 (T@U Int T@U) Int) -(declare-fun $generated@@132 (T@U) Bool) -(declare-fun $generated@@133 (T@U Int T@U) Bool) -(declare-fun $generated@@134 (Int) Int) -(declare-fun $generated@@138 (T@U T@U) T@U) -(declare-fun $generated@@146 (T@T T@U T@U T@U) Bool) -(declare-fun $generated@@147 () T@U) -(declare-fun $generated@@148 () T@U) -(declare-fun $generated@@151 () T@U) -(declare-fun $generated@@154 () T@U) -(declare-fun $generated@@157 () T@U) -(declare-fun $generated@@158 (T@U T@U) T@U) -(declare-fun $generated@@159 (T@U) Bool) -(declare-fun $generated@@160 () T@U) -(declare-fun $generated@@161 (T@U) Bool) -(declare-fun $generated@@162 (T@U T@U) Bool) -(declare-fun $generated@@163 (T@T T@U) T@U) -(declare-fun $generated@@180 (T@T T@U) T@U) -(declare-fun $generated@@183 (T@U T@U) Bool) -(declare-fun $generated@@189 (T@T T@U) T@U) -(declare-fun $generated@@192 (Int) T@U) -(declare-fun $generated@@212 (T@U) T@U) -(declare-fun $generated@@216 (T@T T@U T@U) T@U) -(declare-fun $generated@@217 () T@T) -(declare-fun $generated@@223 (T@U T@U T@U) Bool) -(declare-fun $generated@@253 (T@U T@U T@U T@U T@U) T@U) -(declare-fun $generated@@280 (T@U) T@U) -(declare-fun $generated@@314 (Bool) T@U) -(declare-fun $generated@@317 (T@U) T@U) -(declare-fun $generated@@330 (T@U) T@U) -(declare-fun $generated@@348 (T@U) T@U) -(declare-fun $generated@@351 (T@U) T@U) -(declare-fun $generated@@354 (T@U) T@U) -(declare-fun $generated@@357 (T@U) T@U) -(declare-fun $generated@@360 (T@U) T@U) +(declare-fun $generated@@130 (T@U T@U) T@U) +(declare-fun $generated@@138 (T@T T@U T@U T@U) Bool) +(declare-fun $generated@@139 () T@U) +(declare-fun $generated@@140 () T@U) +(declare-fun $generated@@143 () T@U) +(declare-fun $generated@@146 () T@U) +(declare-fun $generated@@149 () T@U) +(declare-fun $generated@@150 (T@U T@U) T@U) +(declare-fun $generated@@151 (T@U) Bool) +(declare-fun $generated@@152 () T@U) +(declare-fun $generated@@153 (T@U) Bool) +(declare-fun $generated@@154 (T@U T@U) Bool) +(declare-fun $generated@@155 (T@U Int T@U) Int) +(declare-fun $generated@@156 (T@U) Bool) +(declare-fun $generated@@157 (T@U Int T@U) Bool) +(declare-fun $generated@@158 (T@T T@U) T@U) +(declare-fun $generated@@174 (Int) Int) +(declare-fun $generated@@176 (T@T T@U) T@U) +(declare-fun $generated@@179 (T@U T@U) Bool) +(declare-fun $generated@@185 (T@T T@U) T@U) +(declare-fun $generated@@188 (Int) T@U) +(declare-fun $generated@@208 (T@U) T@U) +(declare-fun $generated@@212 (T@T T@U T@U) T@U) +(declare-fun $generated@@213 () T@T) +(declare-fun $generated@@219 (T@U T@U T@U) Bool) +(declare-fun $generated@@249 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@273 (T@U) T@U) +(declare-fun $generated@@310 (Bool) T@U) +(declare-fun $generated@@313 (T@U) T@U) +(declare-fun $generated@@326 (T@U) T@U) +(declare-fun $generated@@344 (T@U) T@U) +(declare-fun $generated@@347 (T@U) T@U) +(declare-fun $generated@@350 (T@U) T@U) +(declare-fun $generated@@353 (T@U) T@U) +(declare-fun $generated@@356 (T@U) T@U) +(declare-fun $generated@@359 (T@U) T@U) (declare-fun $generated@@363 (T@U) T@U) -(declare-fun $generated@@367 (T@U) T@U) -(declare-fun $generated@@378 (T@U) T@U) -(declare-fun $generated@@397 (T@U T@U T@U Bool) T@U) -(declare-fun $generated@@404 (T@U) T@U) -(declare-fun $generated@@427 (T@U) T@U) +(declare-fun $generated@@374 (T@U) T@U) +(declare-fun $generated@@393 (T@U T@U T@U Bool) T@U) +(declare-fun $generated@@400 (T@U) T@U) +(declare-fun $generated@@426 (T@U) T@U) (assert (and (and (and (and (and (and (and (and (= ($generated@@23 $generated@@24) 0) (= ($generated@@23 $generated@@25) 1)) (= ($generated@@23 $generated@@26) 2)) (forall (($generated@@33 Bool) ) (! (= ($generated@@28 ($generated@@27 $generated@@33)) $generated@@33) :pattern ( ($generated@@27 $generated@@33)) ))) (forall (($generated@@34 T@U) ) (! (= ($generated@@27 ($generated@@28 $generated@@34)) $generated@@34) @@ -703,329 +700,329 @@ $generated@@193)))))) (assert (forall (($generated@@129 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@129 $generated@@128) (or (= $generated@@129 $generated@@125) (= ($generated@@126 $generated@@129) $generated@@128))) :pattern ( ($generated@@42 $generated@@59 $generated@@129 $generated@@128)) ))) -(assert (=> (<= 1 $generated@@130) (forall (($generated@@135 T@U) ($generated@@136 Int) ($generated@@137 T@U) ) (! (=> ($generated@@133 $generated@@135 $generated@@136 $generated@@137) (= ($generated@@131 $generated@@135 $generated@@136 $generated@@137) ($generated@@134 3))) - :pattern ( ($generated@@131 $generated@@135 $generated@@136 $generated@@137) ($generated@@132 $generated@@135)) -)))) -(assert (forall (($generated@@139 T@U) ($generated@@140 T@U) ($generated@@141 T@U) ($generated@@142 T@U) ($generated@@143 T@U) ) (! (=> (and (and ($generated@@42 $generated@@43 $generated@@139 ($generated@@138 $generated@@140 $generated@@141)) (forall (($generated@@144 T@U) ) (! (=> ($generated@@46 $generated@@144 $generated@@142) ($generated@@46 $generated@@144 $generated@@140)) - :pattern ( ($generated@@46 $generated@@144 $generated@@142)) - :pattern ( ($generated@@46 $generated@@144 $generated@@140)) -))) (forall (($generated@@145 T@U) ) (! (=> ($generated@@46 $generated@@145 $generated@@141) ($generated@@46 $generated@@145 $generated@@143)) - :pattern ( ($generated@@46 $generated@@145 $generated@@141)) - :pattern ( ($generated@@46 $generated@@145 $generated@@143)) -))) ($generated@@42 $generated@@43 $generated@@139 ($generated@@138 $generated@@142 $generated@@143))) - :pattern ( ($generated@@42 $generated@@43 $generated@@139 ($generated@@138 $generated@@140 $generated@@141)) ($generated@@42 $generated@@43 $generated@@139 ($generated@@138 $generated@@142 $generated@@143))) +(assert (forall (($generated@@131 T@U) ($generated@@132 T@U) ($generated@@133 T@U) ($generated@@134 T@U) ($generated@@135 T@U) ) (! (=> (and (and ($generated@@42 $generated@@43 $generated@@131 ($generated@@130 $generated@@132 $generated@@133)) (forall (($generated@@136 T@U) ) (! (=> ($generated@@46 $generated@@136 $generated@@134) ($generated@@46 $generated@@136 $generated@@132)) + :pattern ( ($generated@@46 $generated@@136 $generated@@134)) + :pattern ( ($generated@@46 $generated@@136 $generated@@132)) +))) (forall (($generated@@137 T@U) ) (! (=> ($generated@@46 $generated@@137 $generated@@133) ($generated@@46 $generated@@137 $generated@@135)) + :pattern ( ($generated@@46 $generated@@137 $generated@@133)) + :pattern ( ($generated@@46 $generated@@137 $generated@@135)) +))) ($generated@@42 $generated@@43 $generated@@131 ($generated@@130 $generated@@134 $generated@@135))) + :pattern ( ($generated@@42 $generated@@43 $generated@@131 ($generated@@130 $generated@@132 $generated@@133)) ($generated@@42 $generated@@43 $generated@@131 ($generated@@130 $generated@@134 $generated@@135))) ))) -(assert (forall (($generated@@149 T@U) ($generated@@150 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@149 $generated@@147 $generated@@150) ($generated@@146 $generated@@59 $generated@@149 $generated@@148 $generated@@150)) - :pattern ( ($generated@@146 $generated@@59 $generated@@149 $generated@@147 $generated@@150)) +(assert (forall (($generated@@141 T@U) ($generated@@142 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@141 $generated@@139 $generated@@142) ($generated@@138 $generated@@59 $generated@@141 $generated@@140 $generated@@142)) + :pattern ( ($generated@@138 $generated@@59 $generated@@141 $generated@@139 $generated@@142)) ))) -(assert (forall (($generated@@152 T@U) ($generated@@153 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@152 $generated@@151 $generated@@153) ($generated@@146 $generated@@59 $generated@@152 $generated@@124 $generated@@153)) - :pattern ( ($generated@@146 $generated@@59 $generated@@152 $generated@@151 $generated@@153)) +(assert (forall (($generated@@144 T@U) ($generated@@145 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@144 $generated@@143 $generated@@145) ($generated@@138 $generated@@59 $generated@@144 $generated@@124 $generated@@145)) + :pattern ( ($generated@@138 $generated@@59 $generated@@144 $generated@@143 $generated@@145)) ))) -(assert (forall (($generated@@155 T@U) ($generated@@156 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@155 $generated@@154 $generated@@156) ($generated@@146 $generated@@59 $generated@@155 $generated@@128 $generated@@156)) - :pattern ( ($generated@@146 $generated@@59 $generated@@155 $generated@@154 $generated@@156)) +(assert (forall (($generated@@147 T@U) ($generated@@148 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@147 $generated@@146 $generated@@148) ($generated@@138 $generated@@59 $generated@@147 $generated@@128 $generated@@148)) + :pattern ( ($generated@@138 $generated@@59 $generated@@147 $generated@@146 $generated@@148)) ))) -(assert (= ($generated@@39 $generated@@157) 0)) -(assert (= ($generated@@158 $generated@@10 $generated@@21) $generated@@157)) -(assert (not ($generated@@159 $generated@@157))) -(assert (= ($generated@@39 $generated@@160) 0)) -(assert (= ($generated@@158 $generated@@13 $generated@@22) $generated@@160)) -(assert (not ($generated@@159 $generated@@160))) -(assert (forall (($generated@@164 T@U) ($generated@@165 T@U) ($generated@@166 Int) ($generated@@167 T@U) ) (! (=> (and (and (and ($generated@@132 $generated@@164) ($generated@@132 $generated@@165)) (or (or ($generated@@133 $generated@@164 $generated@@166 $generated@@167) ($generated@@42 $generated@@59 $generated@@167 $generated@@151)) (or ($generated@@133 $generated@@165 $generated@@166 $generated@@167) ($generated@@42 $generated@@59 $generated@@167 $generated@@151)))) (and ($generated@@161 $generated@@164) ($generated@@162 $generated@@164 $generated@@165))) (=> (forall (($generated@@168 T@U) ($generated@@169 T@U) ) (=> (and (or (not (= $generated@@168 $generated@@125)) (not true)) (or (= $generated@@168 $generated@@167) (= $generated@@168 ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@164 $generated@@167) $generated@@157))))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@164 $generated@@168) $generated@@169) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@165 $generated@@168) $generated@@169)))) (and (= ($generated@@131 $generated@@164 $generated@@166 $generated@@167) ($generated@@131 $generated@@165 $generated@@166 $generated@@167)) (= ($generated@@133 $generated@@164 $generated@@166 $generated@@167) ($generated@@133 $generated@@165 $generated@@166 $generated@@167))))) - :pattern ( ($generated@@161 $generated@@164) ($generated@@162 $generated@@164 $generated@@165) ($generated@@131 $generated@@165 $generated@@166 $generated@@167)) +(assert (= ($generated@@39 $generated@@149) 0)) +(assert (= ($generated@@150 $generated@@10 $generated@@21) $generated@@149)) +(assert (not ($generated@@151 $generated@@149))) +(assert (= ($generated@@39 $generated@@152) 0)) +(assert (= ($generated@@150 $generated@@13 $generated@@22) $generated@@152)) +(assert (not ($generated@@151 $generated@@152))) +(assert (forall (($generated@@159 T@U) ($generated@@160 T@U) ($generated@@161 Int) ($generated@@162 T@U) ) (! (=> (and (and (and ($generated@@156 $generated@@159) ($generated@@156 $generated@@160)) (or (or ($generated@@157 $generated@@159 $generated@@161 $generated@@162) ($generated@@42 $generated@@59 $generated@@162 $generated@@143)) (or ($generated@@157 $generated@@160 $generated@@161 $generated@@162) ($generated@@42 $generated@@59 $generated@@162 $generated@@143)))) (and ($generated@@153 $generated@@159) ($generated@@154 $generated@@159 $generated@@160))) (=> (forall (($generated@@163 T@U) ($generated@@164 T@U) ) (=> (and (or (not (= $generated@@163 $generated@@125)) (not true)) (or (= $generated@@163 $generated@@162) (= $generated@@163 ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@159 $generated@@162) $generated@@149))))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@159 $generated@@163) $generated@@164) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@160 $generated@@163) $generated@@164)))) (and (= ($generated@@155 $generated@@159 $generated@@161 $generated@@162) ($generated@@155 $generated@@160 $generated@@161 $generated@@162)) (= ($generated@@157 $generated@@159 $generated@@161 $generated@@162) ($generated@@157 $generated@@160 $generated@@161 $generated@@162))))) + :pattern ( ($generated@@153 $generated@@159) ($generated@@154 $generated@@159 $generated@@160) ($generated@@155 $generated@@160 $generated@@161 $generated@@162)) ))) -(assert (forall (($generated@@170 T@U) ($generated@@171 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@170 $generated@@148 $generated@@171) (or (= $generated@@170 $generated@@125) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@171 $generated@@170) $generated@@2))))) - :pattern ( ($generated@@146 $generated@@59 $generated@@170 $generated@@148 $generated@@171)) +(assert (forall (($generated@@165 T@U) ($generated@@166 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@165 $generated@@140 $generated@@166) (or (= $generated@@165 $generated@@125) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@166 $generated@@165) $generated@@2))))) + :pattern ( ($generated@@138 $generated@@59 $generated@@165 $generated@@140 $generated@@166)) ))) -(assert (forall (($generated@@172 T@U) ($generated@@173 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@172 $generated@@124 $generated@@173) (or (= $generated@@172 $generated@@125) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@173 $generated@@172) $generated@@2))))) - :pattern ( ($generated@@146 $generated@@59 $generated@@172 $generated@@124 $generated@@173)) +(assert (forall (($generated@@167 T@U) ($generated@@168 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@167 $generated@@124 $generated@@168) (or (= $generated@@167 $generated@@125) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@168 $generated@@167) $generated@@2))))) + :pattern ( ($generated@@138 $generated@@59 $generated@@167 $generated@@124 $generated@@168)) ))) -(assert (forall (($generated@@174 T@U) ($generated@@175 T@U) ) (! (= ($generated@@146 $generated@@59 $generated@@174 $generated@@128 $generated@@175) (or (= $generated@@174 $generated@@125) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@175 $generated@@174) $generated@@2))))) - :pattern ( ($generated@@146 $generated@@59 $generated@@174 $generated@@128 $generated@@175)) +(assert (forall (($generated@@169 T@U) ($generated@@170 T@U) ) (! (= ($generated@@138 $generated@@59 $generated@@169 $generated@@128 $generated@@170) (or (= $generated@@169 $generated@@125) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@170 $generated@@169) $generated@@2))))) + :pattern ( ($generated@@138 $generated@@59 $generated@@169 $generated@@128 $generated@@170)) ))) -(assert (forall (($generated@@176 T@U) ($generated@@177 T@U) ) (! (=> ($generated@@162 $generated@@176 $generated@@177) (forall (($generated@@178 T@U) ) (! (=> ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@176 $generated@@178) $generated@@2))) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@177 $generated@@178) $generated@@2)))) - :pattern ( ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@177 $generated@@178) $generated@@2)) +(assert (forall (($generated@@171 T@U) ($generated@@172 T@U) ) (! (=> ($generated@@154 $generated@@171 $generated@@172) (forall (($generated@@173 T@U) ) (! (=> ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@171 $generated@@173) $generated@@2))) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@172 $generated@@173) $generated@@2)))) + :pattern ( ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@172 $generated@@173) $generated@@2)) ))) - :pattern ( ($generated@@162 $generated@@176 $generated@@177)) + :pattern ( ($generated@@154 $generated@@171 $generated@@172)) ))) -(assert (forall (($generated@@179 Int) ) (! (= ($generated@@134 $generated@@179) $generated@@179) - :pattern ( ($generated@@134 $generated@@179)) +(assert (forall (($generated@@175 Int) ) (! (= ($generated@@174 $generated@@175) $generated@@175) + :pattern ( ($generated@@174 $generated@@175)) ))) -(assert (forall (($generated@@181 T@U) ($generated@@182 T@T) ) (! (= ($generated@@180 $generated@@182 $generated@@181) $generated@@181) - :pattern ( ($generated@@180 $generated@@182 $generated@@181)) +(assert (forall (($generated@@177 T@U) ($generated@@178 T@T) ) (! (= ($generated@@176 $generated@@178 $generated@@177) $generated@@177) + :pattern ( ($generated@@176 $generated@@178 $generated@@177)) ))) -(assert (forall (($generated@@184 T@U) ($generated@@185 T@U) ($generated@@186 T@U) ($generated@@187 T@U) ($generated@@188 T@U) ) (! (=> (and ($generated@@132 $generated@@186) (and ($generated@@46 $generated@@188 $generated@@184) ($generated@@42 $generated@@43 $generated@@187 ($generated@@138 $generated@@184 $generated@@185)))) (= ($generated@@183 ($generated@@55 $generated@@184 $generated@@185 $generated@@48 $generated@@187 $generated@@188) $generated@@122) ($generated@@183 ($generated@@55 $generated@@184 $generated@@185 $generated@@186 $generated@@187 $generated@@188) $generated@@122))) - :pattern ( ($generated@@55 $generated@@184 $generated@@185 $generated@@48 $generated@@187 $generated@@188) ($generated@@132 $generated@@186)) - :pattern ( ($generated@@55 $generated@@184 $generated@@185 $generated@@186 $generated@@187 $generated@@188)) +(assert (forall (($generated@@180 T@U) ($generated@@181 T@U) ($generated@@182 T@U) ($generated@@183 T@U) ($generated@@184 T@U) ) (! (=> (and ($generated@@156 $generated@@182) (and ($generated@@46 $generated@@184 $generated@@180) ($generated@@42 $generated@@43 $generated@@183 ($generated@@130 $generated@@180 $generated@@181)))) (= ($generated@@179 ($generated@@55 $generated@@180 $generated@@181 $generated@@48 $generated@@183 $generated@@184) $generated@@122) ($generated@@179 ($generated@@55 $generated@@180 $generated@@181 $generated@@182 $generated@@183 $generated@@184) $generated@@122))) + :pattern ( ($generated@@55 $generated@@180 $generated@@181 $generated@@48 $generated@@183 $generated@@184) ($generated@@156 $generated@@182)) + :pattern ( ($generated@@55 $generated@@180 $generated@@181 $generated@@182 $generated@@183 $generated@@184)) ))) -(assert (forall (($generated@@190 T@U) ($generated@@191 T@T) ) (! (= ($generated@@189 $generated@@191 ($generated@@163 $generated@@191 $generated@@190)) $generated@@190) - :pattern ( ($generated@@163 $generated@@191 $generated@@190)) +(assert (forall (($generated@@186 T@U) ($generated@@187 T@T) ) (! (= ($generated@@185 $generated@@187 ($generated@@158 $generated@@187 $generated@@186)) $generated@@186) + :pattern ( ($generated@@158 $generated@@187 $generated@@186)) ))) -(assert (forall (($generated@@193 Int) ($generated@@194 T@U) ($generated@@195 T@U) ) (! (= ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 ($generated@@192 $generated@@193) $generated@@194 $generated@@195) ($generated@@189 $generated@@25 ($generated@@29 (+ ($generated@@30 ($generated@@163 $generated@@25 $generated@@195)) $generated@@193)))) - :pattern ( ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 ($generated@@192 $generated@@193) $generated@@194 $generated@@195)) +(assert (forall (($generated@@189 Int) ($generated@@190 T@U) ($generated@@191 T@U) ) (! (= ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 ($generated@@188 $generated@@189) $generated@@190 $generated@@191) ($generated@@185 $generated@@25 ($generated@@29 (+ ($generated@@30 ($generated@@158 $generated@@25 $generated@@191)) $generated@@189)))) + :pattern ( ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 ($generated@@188 $generated@@189) $generated@@190 $generated@@191)) ))) -(assert (forall (($generated@@196 T@U) ($generated@@197 T@U) ($generated@@198 T@U) ($generated@@199 T@U) ($generated@@200 T@U) ($generated@@201 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@198 $generated@@199) (and ($generated@@132 $generated@@198) ($generated@@132 $generated@@199))) (and ($generated@@46 $generated@@201 $generated@@196) ($generated@@42 $generated@@43 $generated@@200 ($generated@@138 $generated@@196 $generated@@197)))) (forall (($generated@@202 T@U) ($generated@@203 T@U) ) (=> (and (or (not (= $generated@@202 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@196 $generated@@197 $generated@@198 $generated@@200 $generated@@201) ($generated@@189 $generated@@59 $generated@@202))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@198 $generated@@202) $generated@@203) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@199 $generated@@202) $generated@@203))))) (= ($generated@@47 $generated@@196 $generated@@197 $generated@@198 $generated@@200 $generated@@201) ($generated@@47 $generated@@196 $generated@@197 $generated@@199 $generated@@200 $generated@@201))) - :pattern ( ($generated@@162 $generated@@198 $generated@@199) ($generated@@47 $generated@@196 $generated@@197 $generated@@199 $generated@@200 $generated@@201)) +(assert (forall (($generated@@192 T@U) ($generated@@193 T@U) ($generated@@194 T@U) ($generated@@195 T@U) ($generated@@196 T@U) ($generated@@197 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@194 $generated@@195) (and ($generated@@156 $generated@@194) ($generated@@156 $generated@@195))) (and ($generated@@46 $generated@@197 $generated@@192) ($generated@@42 $generated@@43 $generated@@196 ($generated@@130 $generated@@192 $generated@@193)))) (forall (($generated@@198 T@U) ($generated@@199 T@U) ) (=> (and (or (not (= $generated@@198 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@192 $generated@@193 $generated@@194 $generated@@196 $generated@@197) ($generated@@185 $generated@@59 $generated@@198))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@194 $generated@@198) $generated@@199) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@195 $generated@@198) $generated@@199))))) (= ($generated@@47 $generated@@192 $generated@@193 $generated@@194 $generated@@196 $generated@@197) ($generated@@47 $generated@@192 $generated@@193 $generated@@195 $generated@@196 $generated@@197))) + :pattern ( ($generated@@154 $generated@@194 $generated@@195) ($generated@@47 $generated@@192 $generated@@193 $generated@@195 $generated@@196 $generated@@197)) ))) -(assert (forall (($generated@@204 T@U) ($generated@@205 T@U) ($generated@@206 T@U) ($generated@@207 T@U) ($generated@@208 T@U) ($generated@@209 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@206 $generated@@207) (and ($generated@@132 $generated@@206) ($generated@@132 $generated@@207))) (and ($generated@@46 $generated@@209 $generated@@204) ($generated@@42 $generated@@43 $generated@@208 ($generated@@138 $generated@@204 $generated@@205)))) (forall (($generated@@210 T@U) ($generated@@211 T@U) ) (=> (and (or (not (= $generated@@210 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@204 $generated@@205 $generated@@207 $generated@@208 $generated@@209) ($generated@@189 $generated@@59 $generated@@210))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@206 $generated@@210) $generated@@211) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@207 $generated@@210) $generated@@211))))) (= ($generated@@47 $generated@@204 $generated@@205 $generated@@206 $generated@@208 $generated@@209) ($generated@@47 $generated@@204 $generated@@205 $generated@@207 $generated@@208 $generated@@209))) - :pattern ( ($generated@@162 $generated@@206 $generated@@207) ($generated@@47 $generated@@204 $generated@@205 $generated@@207 $generated@@208 $generated@@209)) +(assert (forall (($generated@@200 T@U) ($generated@@201 T@U) ($generated@@202 T@U) ($generated@@203 T@U) ($generated@@204 T@U) ($generated@@205 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@202 $generated@@203) (and ($generated@@156 $generated@@202) ($generated@@156 $generated@@203))) (and ($generated@@46 $generated@@205 $generated@@200) ($generated@@42 $generated@@43 $generated@@204 ($generated@@130 $generated@@200 $generated@@201)))) (forall (($generated@@206 T@U) ($generated@@207 T@U) ) (=> (and (or (not (= $generated@@206 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@200 $generated@@201 $generated@@203 $generated@@204 $generated@@205) ($generated@@185 $generated@@59 $generated@@206))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@202 $generated@@206) $generated@@207) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@203 $generated@@206) $generated@@207))))) (= ($generated@@47 $generated@@200 $generated@@201 $generated@@202 $generated@@204 $generated@@205) ($generated@@47 $generated@@200 $generated@@201 $generated@@203 $generated@@204 $generated@@205))) + :pattern ( ($generated@@154 $generated@@202 $generated@@203) ($generated@@47 $generated@@200 $generated@@201 $generated@@203 $generated@@204 $generated@@205)) ))) -(assert (forall (($generated@@213 T@U) ($generated@@214 T@U) ) (! (= ($generated@@42 $generated@@62 $generated@@213 ($generated@@212 $generated@@214)) (forall (($generated@@215 T@U) ) (! (=> ($generated@@54 $generated@@213 $generated@@215) ($generated@@46 $generated@@215 $generated@@214)) - :pattern ( ($generated@@54 $generated@@213 $generated@@215)) +(assert (forall (($generated@@209 T@U) ($generated@@210 T@U) ) (! (= ($generated@@42 $generated@@62 $generated@@209 ($generated@@208 $generated@@210)) (forall (($generated@@211 T@U) ) (! (=> ($generated@@54 $generated@@209 $generated@@211) ($generated@@46 $generated@@211 $generated@@210)) + :pattern ( ($generated@@54 $generated@@209 $generated@@211)) ))) - :pattern ( ($generated@@42 $generated@@62 $generated@@213 ($generated@@212 $generated@@214))) + :pattern ( ($generated@@42 $generated@@62 $generated@@209 ($generated@@208 $generated@@210))) ))) -(assert (= ($generated@@23 $generated@@217) 9)) -(assert (forall (($generated@@218 T@U) ($generated@@219 T@U) ($generated@@220 T@T) ) (! (= ($generated@@216 $generated@@220 $generated@@218 $generated@@219) ($generated@@64 $generated@@217 $generated@@220 $generated@@218 $generated@@219)) - :pattern ( ($generated@@216 $generated@@220 $generated@@218 $generated@@219)) +(assert (= ($generated@@23 $generated@@213) 9)) +(assert (forall (($generated@@214 T@U) ($generated@@215 T@U) ($generated@@216 T@T) ) (! (= ($generated@@212 $generated@@216 $generated@@214 $generated@@215) ($generated@@64 $generated@@213 $generated@@216 $generated@@214 $generated@@215)) + :pattern ( ($generated@@212 $generated@@216 $generated@@214 $generated@@215)) ))) -(assert ($generated@@159 $generated@@2)) -(assert ($generated@@132 $generated@@48)) -(assert (forall (($generated@@221 T@U) ($generated@@222 T@U) ) (! (=> (and (and ($generated@@132 $generated@@221) (and (or (not (= $generated@@222 $generated@@125)) (not true)) (= ($generated@@126 $generated@@222) $generated@@128))) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@221 $generated@@222) $generated@@2)))) ($generated@@146 $generated@@25 ($generated@@163 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@221 $generated@@222) $generated@@160)) $generated $generated@@221)) - :pattern ( ($generated@@163 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@221 $generated@@222) $generated@@160))) +(assert ($generated@@151 $generated@@2)) +(assert ($generated@@156 $generated@@48)) +(assert (forall (($generated@@217 T@U) ($generated@@218 T@U) ) (! (=> (and (and ($generated@@156 $generated@@217) (and (or (not (= $generated@@218 $generated@@125)) (not true)) (= ($generated@@126 $generated@@218) $generated@@128))) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@217 $generated@@218) $generated@@2)))) ($generated@@138 $generated@@25 ($generated@@158 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@217 $generated@@218) $generated@@152)) $generated $generated@@217)) + :pattern ( ($generated@@158 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@217 $generated@@218) $generated@@152))) ))) -(assert (forall (($generated@@224 T@U) ($generated@@225 T@U) ($generated@@226 T@U) ($generated@@227 T@T) ) (! (= ($generated@@223 ($generated@@189 $generated@@227 $generated@@224) $generated@@225 $generated@@226) ($generated@@146 $generated@@227 $generated@@224 $generated@@225 $generated@@226)) - :pattern ( ($generated@@223 ($generated@@189 $generated@@227 $generated@@224) $generated@@225 $generated@@226)) +(assert (forall (($generated@@220 T@U) ($generated@@221 T@U) ($generated@@222 T@U) ($generated@@223 T@T) ) (! (= ($generated@@219 ($generated@@185 $generated@@223 $generated@@220) $generated@@221 $generated@@222) ($generated@@138 $generated@@223 $generated@@220 $generated@@221 $generated@@222)) + :pattern ( ($generated@@219 ($generated@@185 $generated@@223 $generated@@220) $generated@@221 $generated@@222)) ))) -(assert (forall (($generated@@228 T@U) ($generated@@229 T@U) ($generated@@230 T@U) ($generated@@231 T@U) ) (! (=> ($generated@@162 $generated@@228 $generated@@229) (=> ($generated@@223 $generated@@230 $generated@@231 $generated@@228) ($generated@@223 $generated@@230 $generated@@231 $generated@@229))) - :pattern ( ($generated@@162 $generated@@228 $generated@@229) ($generated@@223 $generated@@230 $generated@@231 $generated@@228)) +(assert (forall (($generated@@224 T@U) ($generated@@225 T@U) ($generated@@226 T@U) ($generated@@227 T@U) ) (! (=> ($generated@@154 $generated@@224 $generated@@225) (=> ($generated@@219 $generated@@226 $generated@@227 $generated@@224) ($generated@@219 $generated@@226 $generated@@227 $generated@@225))) + :pattern ( ($generated@@154 $generated@@224 $generated@@225) ($generated@@219 $generated@@226 $generated@@227 $generated@@224)) ))) -(assert (forall (($generated@@232 T@U) ($generated@@233 T@U) ($generated@@234 T@U) ($generated@@235 T@U) ($generated@@236 T@T) ) (! (=> ($generated@@162 $generated@@232 $generated@@233) (=> ($generated@@146 $generated@@236 $generated@@234 $generated@@235 $generated@@232) ($generated@@146 $generated@@236 $generated@@234 $generated@@235 $generated@@233))) - :pattern ( ($generated@@162 $generated@@232 $generated@@233) ($generated@@146 $generated@@236 $generated@@234 $generated@@235 $generated@@232)) +(assert (forall (($generated@@228 T@U) ($generated@@229 T@U) ($generated@@230 T@U) ($generated@@231 T@U) ($generated@@232 T@T) ) (! (=> ($generated@@154 $generated@@228 $generated@@229) (=> ($generated@@138 $generated@@232 $generated@@230 $generated@@231 $generated@@228) ($generated@@138 $generated@@232 $generated@@230 $generated@@231 $generated@@229))) + :pattern ( ($generated@@154 $generated@@228 $generated@@229) ($generated@@138 $generated@@232 $generated@@230 $generated@@231 $generated@@228)) ))) -(assert (forall (($generated@@237 T@U) ($generated@@238 T@U) ($generated@@239 T@U) ($generated@@240 T@U) ($generated@@241 T@U) ($generated@@242 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@239 $generated@@240) (and ($generated@@132 $generated@@239) ($generated@@132 $generated@@240))) (and ($generated@@46 $generated@@242 $generated@@237) ($generated@@42 $generated@@43 $generated@@241 ($generated@@138 $generated@@237 $generated@@238)))) (forall (($generated@@243 T@U) ($generated@@244 T@U) ) (=> (and (or (not (= $generated@@243 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@237 $generated@@238 $generated@@239 $generated@@241 $generated@@242) ($generated@@189 $generated@@59 $generated@@243))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@239 $generated@@243) $generated@@244) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@240 $generated@@243) $generated@@244))))) (= ($generated@@55 $generated@@237 $generated@@238 $generated@@239 $generated@@241 $generated@@242) ($generated@@55 $generated@@237 $generated@@238 $generated@@240 $generated@@241 $generated@@242))) - :pattern ( ($generated@@162 $generated@@239 $generated@@240) ($generated@@55 $generated@@237 $generated@@238 $generated@@240 $generated@@241 $generated@@242)) +(assert (forall (($generated@@233 T@U) ($generated@@234 T@U) ($generated@@235 T@U) ($generated@@236 T@U) ($generated@@237 T@U) ($generated@@238 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@235 $generated@@236) (and ($generated@@156 $generated@@235) ($generated@@156 $generated@@236))) (and ($generated@@46 $generated@@238 $generated@@233) ($generated@@42 $generated@@43 $generated@@237 ($generated@@130 $generated@@233 $generated@@234)))) (forall (($generated@@239 T@U) ($generated@@240 T@U) ) (=> (and (or (not (= $generated@@239 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@233 $generated@@234 $generated@@235 $generated@@237 $generated@@238) ($generated@@185 $generated@@59 $generated@@239))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@235 $generated@@239) $generated@@240) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@236 $generated@@239) $generated@@240))))) (= ($generated@@55 $generated@@233 $generated@@234 $generated@@235 $generated@@237 $generated@@238) ($generated@@55 $generated@@233 $generated@@234 $generated@@236 $generated@@237 $generated@@238))) + :pattern ( ($generated@@154 $generated@@235 $generated@@236) ($generated@@55 $generated@@233 $generated@@234 $generated@@236 $generated@@237 $generated@@238)) ))) -(assert (forall (($generated@@245 T@U) ($generated@@246 T@U) ($generated@@247 T@U) ($generated@@248 T@U) ($generated@@249 T@U) ($generated@@250 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@247 $generated@@248) (and ($generated@@132 $generated@@247) ($generated@@132 $generated@@248))) (and ($generated@@46 $generated@@250 $generated@@245) ($generated@@42 $generated@@43 $generated@@249 ($generated@@138 $generated@@245 $generated@@246)))) (forall (($generated@@251 T@U) ($generated@@252 T@U) ) (=> (and (or (not (= $generated@@251 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@245 $generated@@246 $generated@@248 $generated@@249 $generated@@250) ($generated@@189 $generated@@59 $generated@@251))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@247 $generated@@251) $generated@@252) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@248 $generated@@251) $generated@@252))))) (= ($generated@@55 $generated@@245 $generated@@246 $generated@@247 $generated@@249 $generated@@250) ($generated@@55 $generated@@245 $generated@@246 $generated@@248 $generated@@249 $generated@@250))) - :pattern ( ($generated@@162 $generated@@247 $generated@@248) ($generated@@55 $generated@@245 $generated@@246 $generated@@248 $generated@@249 $generated@@250)) +(assert (forall (($generated@@241 T@U) ($generated@@242 T@U) ($generated@@243 T@U) ($generated@@244 T@U) ($generated@@245 T@U) ($generated@@246 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@243 $generated@@244) (and ($generated@@156 $generated@@243) ($generated@@156 $generated@@244))) (and ($generated@@46 $generated@@246 $generated@@241) ($generated@@42 $generated@@43 $generated@@245 ($generated@@130 $generated@@241 $generated@@242)))) (forall (($generated@@247 T@U) ($generated@@248 T@U) ) (=> (and (or (not (= $generated@@247 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@241 $generated@@242 $generated@@244 $generated@@245 $generated@@246) ($generated@@185 $generated@@59 $generated@@247))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@243 $generated@@247) $generated@@248) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@244 $generated@@247) $generated@@248))))) (= ($generated@@55 $generated@@241 $generated@@242 $generated@@243 $generated@@245 $generated@@246) ($generated@@55 $generated@@241 $generated@@242 $generated@@244 $generated@@245 $generated@@246))) + :pattern ( ($generated@@154 $generated@@243 $generated@@244) ($generated@@55 $generated@@241 $generated@@242 $generated@@244 $generated@@245 $generated@@246)) ))) -(assert (forall (($generated@@254 T@U) ($generated@@255 T@U) ($generated@@256 T@U) ($generated@@257 T@U) ($generated@@258 T@U) ($generated@@259 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@256 $generated@@257) (and ($generated@@132 $generated@@256) ($generated@@132 $generated@@257))) (and ($generated@@46 $generated@@259 $generated@@254) ($generated@@42 $generated@@43 $generated@@258 ($generated@@138 $generated@@254 $generated@@255)))) (forall (($generated@@260 T@U) ($generated@@261 T@U) ) (=> (and (or (not (= $generated@@260 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@254 $generated@@255 $generated@@256 $generated@@258 $generated@@259) ($generated@@189 $generated@@59 $generated@@260))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@256 $generated@@260) $generated@@261) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@257 $generated@@260) $generated@@261))))) (= ($generated@@253 $generated@@254 $generated@@255 $generated@@256 $generated@@258 $generated@@259) ($generated@@253 $generated@@254 $generated@@255 $generated@@257 $generated@@258 $generated@@259))) - :pattern ( ($generated@@162 $generated@@256 $generated@@257) ($generated@@253 $generated@@254 $generated@@255 $generated@@257 $generated@@258 $generated@@259)) +(assert (forall (($generated@@250 T@U) ($generated@@251 T@U) ($generated@@252 T@U) ($generated@@253 T@U) ($generated@@254 T@U) ($generated@@255 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@252 $generated@@253) (and ($generated@@156 $generated@@252) ($generated@@156 $generated@@253))) (and ($generated@@46 $generated@@255 $generated@@250) ($generated@@42 $generated@@43 $generated@@254 ($generated@@130 $generated@@250 $generated@@251)))) (forall (($generated@@256 T@U) ($generated@@257 T@U) ) (=> (and (or (not (= $generated@@256 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@250 $generated@@251 $generated@@252 $generated@@254 $generated@@255) ($generated@@185 $generated@@59 $generated@@256))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@252 $generated@@256) $generated@@257) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@253 $generated@@256) $generated@@257))))) (= ($generated@@249 $generated@@250 $generated@@251 $generated@@252 $generated@@254 $generated@@255) ($generated@@249 $generated@@250 $generated@@251 $generated@@253 $generated@@254 $generated@@255))) + :pattern ( ($generated@@154 $generated@@252 $generated@@253) ($generated@@249 $generated@@250 $generated@@251 $generated@@253 $generated@@254 $generated@@255)) ))) -(assert (forall (($generated@@262 T@U) ($generated@@263 T@U) ($generated@@264 T@U) ($generated@@265 T@U) ($generated@@266 T@U) ($generated@@267 T@U) ) (! (=> (and (and (and ($generated@@162 $generated@@264 $generated@@265) (and ($generated@@132 $generated@@264) ($generated@@132 $generated@@265))) (and ($generated@@46 $generated@@267 $generated@@262) ($generated@@42 $generated@@43 $generated@@266 ($generated@@138 $generated@@262 $generated@@263)))) (forall (($generated@@268 T@U) ($generated@@269 T@U) ) (=> (and (or (not (= $generated@@268 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@262 $generated@@263 $generated@@265 $generated@@266 $generated@@267) ($generated@@189 $generated@@59 $generated@@268))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@264 $generated@@268) $generated@@269) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@265 $generated@@268) $generated@@269))))) (= ($generated@@253 $generated@@262 $generated@@263 $generated@@264 $generated@@266 $generated@@267) ($generated@@253 $generated@@262 $generated@@263 $generated@@265 $generated@@266 $generated@@267))) - :pattern ( ($generated@@162 $generated@@264 $generated@@265) ($generated@@253 $generated@@262 $generated@@263 $generated@@265 $generated@@266 $generated@@267)) +(assert (forall (($generated@@258 T@U) ($generated@@259 T@U) ($generated@@260 T@U) ($generated@@261 T@U) ($generated@@262 T@U) ($generated@@263 T@U) ) (! (=> (and (and (and ($generated@@154 $generated@@260 $generated@@261) (and ($generated@@156 $generated@@260) ($generated@@156 $generated@@261))) (and ($generated@@46 $generated@@263 $generated@@258) ($generated@@42 $generated@@43 $generated@@262 ($generated@@130 $generated@@258 $generated@@259)))) (forall (($generated@@264 T@U) ($generated@@265 T@U) ) (=> (and (or (not (= $generated@@264 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@258 $generated@@259 $generated@@261 $generated@@262 $generated@@263) ($generated@@185 $generated@@59 $generated@@264))) (= ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@260 $generated@@264) $generated@@265) ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@261 $generated@@264) $generated@@265))))) (= ($generated@@249 $generated@@258 $generated@@259 $generated@@260 $generated@@262 $generated@@263) ($generated@@249 $generated@@258 $generated@@259 $generated@@261 $generated@@262 $generated@@263))) + :pattern ( ($generated@@154 $generated@@260 $generated@@261) ($generated@@249 $generated@@258 $generated@@259 $generated@@261 $generated@@262 $generated@@263)) ))) -(assert (forall (($generated@@270 T@U) ($generated@@271 T@U) ) (! (=> (and ($generated@@132 $generated@@270) (and (or (not (= $generated@@271 $generated@@125)) (not true)) (= ($generated@@126 $generated@@271) $generated@@124))) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@270 $generated@@271) $generated@@157)) $generated@@154)) - :pattern ( ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@270 $generated@@271) $generated@@157))) +(assert (forall (($generated@@266 T@U) ($generated@@267 T@U) ) (! (=> (and ($generated@@156 $generated@@266) (and (or (not (= $generated@@267 $generated@@125)) (not true)) (= ($generated@@126 $generated@@267) $generated@@124))) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@266 $generated@@267) $generated@@149)) $generated@@146)) + :pattern ( ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@266 $generated@@267) $generated@@149))) ))) -(assert (forall (($generated@@272 T@U) ($generated@@273 T@U) ($generated@@274 T@U) ) (! (=> ($generated@@42 $generated@@43 $generated@@274 ($generated@@44 $generated@@272 $generated@@273)) (and ($generated@@42 $generated@@43 $generated@@274 ($generated@@45 $generated@@272 $generated@@273)) (and (forall (($generated@@275 T@U) ) (=> ($generated@@46 $generated@@275 $generated@@272) true)) (forall (($generated@@276 T@U) ) (=> ($generated@@46 $generated@@276 $generated@@272) ($generated@@47 $generated@@272 $generated@@273 $generated@@48 $generated@@274 $generated@@276)))))) - :pattern ( ($generated@@42 $generated@@43 $generated@@274 ($generated@@44 $generated@@272 $generated@@273))) +(assert (forall (($generated@@268 T@U) ($generated@@269 T@U) ($generated@@270 T@U) ) (! (=> ($generated@@42 $generated@@43 $generated@@270 ($generated@@44 $generated@@268 $generated@@269)) (and ($generated@@42 $generated@@43 $generated@@270 ($generated@@45 $generated@@268 $generated@@269)) (and (forall (($generated@@271 T@U) ) (=> ($generated@@46 $generated@@271 $generated@@268) true)) (forall (($generated@@272 T@U) ) (=> ($generated@@46 $generated@@272 $generated@@268) ($generated@@47 $generated@@268 $generated@@269 $generated@@48 $generated@@270 $generated@@272)))))) + :pattern ( ($generated@@42 $generated@@43 $generated@@270 ($generated@@44 $generated@@268 $generated@@269))) ))) -(assert (=> (<= 1 $generated@@130) (forall (($generated@@277 T@U) ($generated@@278 Int) ($generated@@279 T@U) ) (! (=> ($generated@@133 $generated@@277 $generated@@278 $generated@@279) (and (and ($generated@@133 $generated@@277 $generated@@278 $generated@@279) (= ($generated@@131 $generated@@277 $generated@@278 $generated@@279) ($generated@@30 ($generated@@163 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@277 ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@277 $generated@@279) $generated@@157))) $generated@@160))))) (<= ($generated@@134 0) ($generated@@131 $generated@@277 $generated@@278 $generated@@279)))) - :pattern ( ($generated@@131 $generated@@277 $generated@@278 $generated@@279)) -)))) -(assert (forall (($generated@@281 T@U) ($generated@@282 T@U) ) (! (= ($generated@@54 ($generated@@280 $generated@@281) $generated@@282) ($generated@@28 ($generated@@64 $generated@@59 $generated@@24 $generated@@281 ($generated@@163 $generated@@59 $generated@@282)))) - :pattern ( ($generated@@54 ($generated@@280 $generated@@281) $generated@@282)) +(assert (forall (($generated@@274 T@U) ($generated@@275 T@U) ) (! (= ($generated@@54 ($generated@@273 $generated@@274) $generated@@275) ($generated@@28 ($generated@@64 $generated@@59 $generated@@24 $generated@@274 ($generated@@158 $generated@@59 $generated@@275)))) + :pattern ( ($generated@@54 ($generated@@273 $generated@@274) $generated@@275)) ))) -(assert (forall (($generated@@283 T@U) ($generated@@284 T@U) ($generated@@285 T@U) ($generated@@286 T@U) ) (! (= ($generated@@146 $generated@@43 $generated@@285 ($generated@@45 $generated@@283 $generated@@284) $generated@@286) ($generated@@146 $generated@@43 $generated@@285 ($generated@@138 $generated@@283 $generated@@284) $generated@@286)) - :pattern ( ($generated@@146 $generated@@43 $generated@@285 ($generated@@45 $generated@@283 $generated@@284) $generated@@286)) +(assert (forall (($generated@@276 T@U) ($generated@@277 T@U) ($generated@@278 T@U) ($generated@@279 T@U) ) (! (= ($generated@@138 $generated@@43 $generated@@278 ($generated@@45 $generated@@276 $generated@@277) $generated@@279) ($generated@@138 $generated@@43 $generated@@278 ($generated@@130 $generated@@276 $generated@@277) $generated@@279)) + :pattern ( ($generated@@138 $generated@@43 $generated@@278 ($generated@@45 $generated@@276 $generated@@277) $generated@@279)) ))) -(assert (forall (($generated@@287 T@U) ($generated@@288 T@U) ($generated@@289 T@U) ($generated@@290 T@U) ) (! (= ($generated@@146 $generated@@43 $generated@@289 ($generated@@44 $generated@@287 $generated@@288) $generated@@290) ($generated@@146 $generated@@43 $generated@@289 ($generated@@45 $generated@@287 $generated@@288) $generated@@290)) - :pattern ( ($generated@@146 $generated@@43 $generated@@289 ($generated@@44 $generated@@287 $generated@@288) $generated@@290)) +(assert (forall (($generated@@280 T@U) ($generated@@281 T@U) ($generated@@282 T@U) ($generated@@283 T@U) ) (! (= ($generated@@138 $generated@@43 $generated@@282 ($generated@@44 $generated@@280 $generated@@281) $generated@@283) ($generated@@138 $generated@@43 $generated@@282 ($generated@@45 $generated@@280 $generated@@281) $generated@@283)) + :pattern ( ($generated@@138 $generated@@43 $generated@@282 ($generated@@44 $generated@@280 $generated@@281) $generated@@283)) ))) -(assert (forall (($generated@@291 T@U) ($generated@@292 T@U) ($generated@@293 T@U) ($generated@@294 T@U) ($generated@@295 T@U) ($generated@@296 T@U) ($generated@@297 T@U) ) (! (= ($generated@@253 $generated@@291 $generated@@292 $generated@@293 ($generated@@56 $generated@@294 $generated@@295 $generated@@296) $generated@@297) ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 $generated@@294 $generated@@293 $generated@@297)) - :pattern ( ($generated@@253 $generated@@291 $generated@@292 $generated@@293 ($generated@@56 $generated@@294 $generated@@295 $generated@@296) $generated@@297)) +(assert (forall (($generated@@284 T@U) ($generated@@285 T@U) ($generated@@286 T@U) ($generated@@287 T@U) ($generated@@288 T@U) ($generated@@289 T@U) ($generated@@290 T@U) ) (! (= ($generated@@249 $generated@@284 $generated@@285 $generated@@286 ($generated@@56 $generated@@287 $generated@@288 $generated@@289) $generated@@290) ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@61 $generated@@287 $generated@@286 $generated@@290)) + :pattern ( ($generated@@249 $generated@@284 $generated@@285 $generated@@286 ($generated@@56 $generated@@287 $generated@@288 $generated@@289) $generated@@290)) ))) -(assert (forall (($generated@@298 T@U) ) (! (=> ($generated@@46 $generated@@298 $generated@@148) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@298)) $generated@@298) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@298) $generated@@148))) - :pattern ( ($generated@@46 $generated@@298 $generated@@148)) +(assert (forall (($generated@@291 T@U) ) (! (=> ($generated@@46 $generated@@291 $generated@@140) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@291)) $generated@@291) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@291) $generated@@140))) + :pattern ( ($generated@@46 $generated@@291 $generated@@140)) ))) -(assert (forall (($generated@@299 T@U) ) (! (=> ($generated@@46 $generated@@299 $generated@@147) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@299)) $generated@@299) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@299) $generated@@147))) - :pattern ( ($generated@@46 $generated@@299 $generated@@147)) +(assert (forall (($generated@@292 T@U) ) (! (=> ($generated@@46 $generated@@292 $generated@@139) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@292)) $generated@@292) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@292) $generated@@139))) + :pattern ( ($generated@@46 $generated@@292 $generated@@139)) ))) -(assert (forall (($generated@@300 T@U) ) (! (=> ($generated@@46 $generated@@300 $generated@@151) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@300)) $generated@@300) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@300) $generated@@151))) - :pattern ( ($generated@@46 $generated@@300 $generated@@151)) +(assert (forall (($generated@@293 T@U) ) (! (=> ($generated@@46 $generated@@293 $generated@@143) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@293)) $generated@@293) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@293) $generated@@143))) + :pattern ( ($generated@@46 $generated@@293 $generated@@143)) ))) -(assert (forall (($generated@@301 T@U) ) (! (=> ($generated@@46 $generated@@301 $generated@@124) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@301)) $generated@@301) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@301) $generated@@124))) - :pattern ( ($generated@@46 $generated@@301 $generated@@124)) +(assert (forall (($generated@@294 T@U) ) (! (=> ($generated@@46 $generated@@294 $generated@@124) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@294)) $generated@@294) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@294) $generated@@124))) + :pattern ( ($generated@@46 $generated@@294 $generated@@124)) ))) -(assert (forall (($generated@@302 T@U) ) (! (=> ($generated@@46 $generated@@302 $generated@@154) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@302)) $generated@@302) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@302) $generated@@154))) - :pattern ( ($generated@@46 $generated@@302 $generated@@154)) +(assert (forall (($generated@@295 T@U) ) (! (=> ($generated@@46 $generated@@295 $generated@@146) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@295)) $generated@@295) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@295) $generated@@146))) + :pattern ( ($generated@@46 $generated@@295 $generated@@146)) ))) -(assert (forall (($generated@@303 T@U) ) (! (=> ($generated@@46 $generated@@303 $generated@@128) (and (= ($generated@@189 $generated@@59 ($generated@@163 $generated@@59 $generated@@303)) $generated@@303) ($generated@@42 $generated@@59 ($generated@@163 $generated@@59 $generated@@303) $generated@@128))) - :pattern ( ($generated@@46 $generated@@303 $generated@@128)) +(assert (forall (($generated@@296 T@U) ) (! (=> ($generated@@46 $generated@@296 $generated@@128) (and (= ($generated@@185 $generated@@59 ($generated@@158 $generated@@59 $generated@@296)) $generated@@296) ($generated@@42 $generated@@59 ($generated@@158 $generated@@59 $generated@@296) $generated@@128))) + :pattern ( ($generated@@46 $generated@@296 $generated@@128)) ))) -(assert (forall (($generated@@304 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@304 $generated@@147) (and ($generated@@42 $generated@@59 $generated@@304 $generated@@148) (or (not (= $generated@@304 $generated@@125)) (not true)))) - :pattern ( ($generated@@42 $generated@@59 $generated@@304 $generated@@147)) - :pattern ( ($generated@@42 $generated@@59 $generated@@304 $generated@@148)) +(assert (forall (($generated@@297 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@297 $generated@@139) (and ($generated@@42 $generated@@59 $generated@@297 $generated@@140) (or (not (= $generated@@297 $generated@@125)) (not true)))) + :pattern ( ($generated@@42 $generated@@59 $generated@@297 $generated@@139)) + :pattern ( ($generated@@42 $generated@@59 $generated@@297 $generated@@140)) ))) -(assert (forall (($generated@@305 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@305 $generated@@151) (and ($generated@@42 $generated@@59 $generated@@305 $generated@@124) (or (not (= $generated@@305 $generated@@125)) (not true)))) - :pattern ( ($generated@@42 $generated@@59 $generated@@305 $generated@@151)) - :pattern ( ($generated@@42 $generated@@59 $generated@@305 $generated@@124)) +(assert (forall (($generated@@298 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@298 $generated@@143) (and ($generated@@42 $generated@@59 $generated@@298 $generated@@124) (or (not (= $generated@@298 $generated@@125)) (not true)))) + :pattern ( ($generated@@42 $generated@@59 $generated@@298 $generated@@143)) + :pattern ( ($generated@@42 $generated@@59 $generated@@298 $generated@@124)) ))) -(assert (forall (($generated@@306 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@306 $generated@@154) (and ($generated@@42 $generated@@59 $generated@@306 $generated@@128) (or (not (= $generated@@306 $generated@@125)) (not true)))) - :pattern ( ($generated@@42 $generated@@59 $generated@@306 $generated@@154)) - :pattern ( ($generated@@42 $generated@@59 $generated@@306 $generated@@128)) +(assert (forall (($generated@@299 T@U) ) (! (= ($generated@@42 $generated@@59 $generated@@299 $generated@@146) (and ($generated@@42 $generated@@59 $generated@@299 $generated@@128) (or (not (= $generated@@299 $generated@@125)) (not true)))) + :pattern ( ($generated@@42 $generated@@59 $generated@@299 $generated@@146)) + :pattern ( ($generated@@42 $generated@@59 $generated@@299 $generated@@128)) ))) -(assert (forall (($generated@@307 T@U) ($generated@@308 T@U) ) (! (=> (and (and ($generated@@132 $generated@@307) (and (or (not (= $generated@@308 $generated@@125)) (not true)) (= ($generated@@126 $generated@@308) $generated@@124))) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@307 $generated@@308) $generated@@2)))) ($generated@@146 $generated@@59 ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@307 $generated@@308) $generated@@157)) $generated@@154 $generated@@307)) - :pattern ( ($generated@@163 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@307 $generated@@308) $generated@@157))) +(assert (forall (($generated@@300 T@U) ($generated@@301 T@U) ) (! (=> (and (and ($generated@@156 $generated@@300) (and (or (not (= $generated@@301 $generated@@125)) (not true)) (= ($generated@@126 $generated@@301) $generated@@124))) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@300 $generated@@301) $generated@@2)))) ($generated@@138 $generated@@59 ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@300 $generated@@301) $generated@@149)) $generated@@146 $generated@@300)) + :pattern ( ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@300 $generated@@301) $generated@@149))) ))) -(assert (forall (($generated@@309 T@U) ($generated@@310 T@U) ($generated@@311 T@U) ($generated@@312 T@U) ) (! (=> (and ($generated@@132 $generated@@312) ($generated@@146 $generated@@43 $generated@@309 ($generated@@138 $generated@@310 $generated@@311) $generated@@312)) (forall (($generated@@313 T@U) ) (! (=> (and ($generated@@223 $generated@@313 $generated@@310 $generated@@312) ($generated@@47 $generated@@310 $generated@@311 $generated@@312 $generated@@309 $generated@@313)) ($generated@@223 ($generated@@253 $generated@@310 $generated@@311 $generated@@312 $generated@@309 $generated@@313) $generated@@311 $generated@@312)) - :pattern ( ($generated@@253 $generated@@310 $generated@@311 $generated@@312 $generated@@309 $generated@@313)) +(assert (forall (($generated@@302 T@U) ($generated@@303 T@U) ($generated@@304 T@U) ($generated@@305 T@U) ) (! (=> (and ($generated@@156 $generated@@305) ($generated@@138 $generated@@43 $generated@@302 ($generated@@130 $generated@@303 $generated@@304) $generated@@305)) (forall (($generated@@306 T@U) ) (! (=> (and ($generated@@219 $generated@@306 $generated@@303 $generated@@305) ($generated@@47 $generated@@303 $generated@@304 $generated@@305 $generated@@302 $generated@@306)) ($generated@@219 ($generated@@249 $generated@@303 $generated@@304 $generated@@305 $generated@@302 $generated@@306) $generated@@304 $generated@@305)) + :pattern ( ($generated@@249 $generated@@303 $generated@@304 $generated@@305 $generated@@302 $generated@@306)) ))) - :pattern ( ($generated@@146 $generated@@43 $generated@@309 ($generated@@138 $generated@@310 $generated@@311) $generated@@312)) + :pattern ( ($generated@@138 $generated@@43 $generated@@302 ($generated@@130 $generated@@303 $generated@@304) $generated@@305)) ))) -(assert (forall (($generated@@315 Bool) ($generated@@316 T@U) ) (! (= ($generated@@28 ($generated@@64 $generated@@59 $generated@@24 ($generated@@314 $generated@@315) $generated@@316)) $generated@@315) - :pattern ( ($generated@@64 $generated@@59 $generated@@24 ($generated@@314 $generated@@315) $generated@@316)) +(assert (forall (($generated@@307 T@U) ($generated@@308 Int) ($generated@@309 T@U) ) (! (=> ($generated@@157 $generated@@307 $generated@@308 $generated@@309) (= ($generated@@155 $generated@@307 $generated@@308 $generated@@309) ($generated@@174 3))) + :pattern ( ($generated@@155 $generated@@307 $generated@@308 $generated@@309) ($generated@@156 $generated@@307)) ))) -(assert (forall (($generated@@318 T@U) ($generated@@319 T@U) ) (! (= ($generated@@64 $generated@@217 $generated@@43 ($generated@@317 $generated@@318) $generated@@319) $generated@@318) - :pattern ( ($generated@@64 $generated@@217 $generated@@43 ($generated@@317 $generated@@318) $generated@@319)) +(assert (forall (($generated@@311 Bool) ($generated@@312 T@U) ) (! (= ($generated@@28 ($generated@@64 $generated@@59 $generated@@24 ($generated@@310 $generated@@311) $generated@@312)) $generated@@311) + :pattern ( ($generated@@64 $generated@@59 $generated@@24 ($generated@@310 $generated@@311) $generated@@312)) ))) -(assert (forall (($generated@@320 T@U) ($generated@@321 T@U) ) (! (=> ($generated@@183 $generated@@320 $generated@@321) (= $generated@@320 $generated@@321)) - :pattern ( ($generated@@183 $generated@@320 $generated@@321)) +(assert (forall (($generated@@314 T@U) ($generated@@315 T@U) ) (! (= ($generated@@64 $generated@@213 $generated@@43 ($generated@@313 $generated@@314) $generated@@315) $generated@@314) + :pattern ( ($generated@@64 $generated@@213 $generated@@43 ($generated@@313 $generated@@314) $generated@@315)) ))) -(assert (forall (($generated@@322 T@U) ($generated@@323 T@U) ($generated@@324 T@U) ) (! (=> (or (not (= $generated@@322 $generated@@324)) (not true)) (=> (and ($generated@@162 $generated@@322 $generated@@323) ($generated@@162 $generated@@323 $generated@@324)) ($generated@@162 $generated@@322 $generated@@324))) - :pattern ( ($generated@@162 $generated@@322 $generated@@323) ($generated@@162 $generated@@323 $generated@@324)) +(assert (forall (($generated@@316 T@U) ($generated@@317 T@U) ) (! (=> ($generated@@179 $generated@@316 $generated@@317) (= $generated@@316 $generated@@317)) + :pattern ( ($generated@@179 $generated@@316 $generated@@317)) ))) -(assert (forall (($generated@@325 T@U) ($generated@@326 T@U) ($generated@@327 T@U) ) (! (= ($generated@@42 $generated@@43 $generated@@325 ($generated@@138 $generated@@326 $generated@@327)) (forall (($generated@@328 T@U) ($generated@@329 T@U) ) (! (=> (and (and ($generated@@132 $generated@@328) ($generated@@46 $generated@@329 $generated@@326)) ($generated@@47 $generated@@326 $generated@@327 $generated@@328 $generated@@325 $generated@@329)) ($generated@@46 ($generated@@253 $generated@@326 $generated@@327 $generated@@328 $generated@@325 $generated@@329) $generated@@327)) - :pattern ( ($generated@@253 $generated@@326 $generated@@327 $generated@@328 $generated@@325 $generated@@329)) +(assert (forall (($generated@@318 T@U) ($generated@@319 T@U) ($generated@@320 T@U) ) (! (=> (or (not (= $generated@@318 $generated@@320)) (not true)) (=> (and ($generated@@154 $generated@@318 $generated@@319) ($generated@@154 $generated@@319 $generated@@320)) ($generated@@154 $generated@@318 $generated@@320))) + :pattern ( ($generated@@154 $generated@@318 $generated@@319) ($generated@@154 $generated@@319 $generated@@320)) ))) - :pattern ( ($generated@@42 $generated@@43 $generated@@325 ($generated@@138 $generated@@326 $generated@@327))) +(assert (forall (($generated@@321 T@U) ($generated@@322 T@U) ($generated@@323 T@U) ) (! (= ($generated@@42 $generated@@43 $generated@@321 ($generated@@130 $generated@@322 $generated@@323)) (forall (($generated@@324 T@U) ($generated@@325 T@U) ) (! (=> (and (and ($generated@@156 $generated@@324) ($generated@@46 $generated@@325 $generated@@322)) ($generated@@47 $generated@@322 $generated@@323 $generated@@324 $generated@@321 $generated@@325)) ($generated@@46 ($generated@@249 $generated@@322 $generated@@323 $generated@@324 $generated@@321 $generated@@325) $generated@@323)) + :pattern ( ($generated@@249 $generated@@322 $generated@@323 $generated@@324 $generated@@321 $generated@@325)) ))) -(assert (forall (($generated@@331 T@U) ($generated@@332 T@U) ) (! (and (= ($generated@@330 ($generated@@158 $generated@@331 $generated@@332)) $generated@@331) (= ($generated@@41 ($generated@@158 $generated@@331 $generated@@332)) $generated@@332)) - :pattern ( ($generated@@158 $generated@@331 $generated@@332)) + :pattern ( ($generated@@42 $generated@@43 $generated@@321 ($generated@@130 $generated@@322 $generated@@323))) ))) -(assert (forall (($generated@@333 T@U) ) (! (=> ($generated@@46 $generated@@333 $generated) (and (= ($generated@@189 $generated@@25 ($generated@@163 $generated@@25 $generated@@333)) $generated@@333) ($generated@@42 $generated@@25 ($generated@@163 $generated@@25 $generated@@333) $generated))) - :pattern ( ($generated@@46 $generated@@333 $generated)) +(assert (forall (($generated@@327 T@U) ($generated@@328 T@U) ) (! (and (= ($generated@@326 ($generated@@150 $generated@@327 $generated@@328)) $generated@@327) (= ($generated@@41 ($generated@@150 $generated@@327 $generated@@328)) $generated@@328)) + :pattern ( ($generated@@150 $generated@@327 $generated@@328)) ))) -(assert (forall (($generated@@334 T@U) ($generated@@335 T@U) ($generated@@336 T@T) ) (! (= ($generated@@46 ($generated@@189 $generated@@336 $generated@@334) $generated@@335) ($generated@@42 $generated@@336 $generated@@334 $generated@@335)) - :pattern ( ($generated@@46 ($generated@@189 $generated@@336 $generated@@334) $generated@@335)) +(assert (forall (($generated@@329 T@U) ) (! (=> ($generated@@46 $generated@@329 $generated) (and (= ($generated@@185 $generated@@25 ($generated@@158 $generated@@25 $generated@@329)) $generated@@329) ($generated@@42 $generated@@25 ($generated@@158 $generated@@25 $generated@@329) $generated))) + :pattern ( ($generated@@46 $generated@@329 $generated)) ))) -(assert (forall (($generated@@337 T@U) ($generated@@338 T@U) ($generated@@339 T@U) ($generated@@340 T@U) ($generated@@341 T@U) ($generated@@342 T@U) ($generated@@343 T@U) ) (! (=> ($generated@@28 ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@24 $generated@@341 $generated@@339 $generated@@343)) ($generated@@47 $generated@@337 $generated@@338 $generated@@339 ($generated@@56 $generated@@340 $generated@@341 $generated@@342) $generated@@343)) - :pattern ( ($generated@@47 $generated@@337 $generated@@338 $generated@@339 ($generated@@56 $generated@@340 $generated@@341 $generated@@342) $generated@@343)) +(assert (forall (($generated@@330 T@U) ($generated@@331 T@U) ($generated@@332 T@T) ) (! (= ($generated@@46 ($generated@@185 $generated@@332 $generated@@330) $generated@@331) ($generated@@42 $generated@@332 $generated@@330 $generated@@331)) + :pattern ( ($generated@@46 ($generated@@185 $generated@@332 $generated@@330) $generated@@331)) ))) -(assert (forall (($generated@@344 T@U) ($generated@@345 T@U) ($generated@@346 T@U) ) (! (= ($generated@@146 $generated@@62 $generated@@344 ($generated@@212 $generated@@345) $generated@@346) (forall (($generated@@347 T@U) ) (! (=> ($generated@@54 $generated@@344 $generated@@347) ($generated@@223 $generated@@347 $generated@@345 $generated@@346)) - :pattern ( ($generated@@54 $generated@@344 $generated@@347)) +(assert (forall (($generated@@333 T@U) ($generated@@334 T@U) ($generated@@335 T@U) ($generated@@336 T@U) ($generated@@337 T@U) ($generated@@338 T@U) ($generated@@339 T@U) ) (! (=> ($generated@@28 ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@24 $generated@@337 $generated@@335 $generated@@339)) ($generated@@47 $generated@@333 $generated@@334 $generated@@335 ($generated@@56 $generated@@336 $generated@@337 $generated@@338) $generated@@339)) + :pattern ( ($generated@@47 $generated@@333 $generated@@334 $generated@@335 ($generated@@56 $generated@@336 $generated@@337 $generated@@338) $generated@@339)) ))) - :pattern ( ($generated@@146 $generated@@62 $generated@@344 ($generated@@212 $generated@@345) $generated@@346)) +(assert (forall (($generated@@340 T@U) ($generated@@341 T@U) ($generated@@342 T@U) ) (! (= ($generated@@138 $generated@@62 $generated@@340 ($generated@@208 $generated@@341) $generated@@342) (forall (($generated@@343 T@U) ) (! (=> ($generated@@54 $generated@@340 $generated@@343) ($generated@@219 $generated@@343 $generated@@341 $generated@@342)) + :pattern ( ($generated@@54 $generated@@340 $generated@@343)) ))) -(assert (forall (($generated@@349 T@U) ($generated@@350 T@U) ) (! (= ($generated@@348 ($generated@@138 $generated@@349 $generated@@350)) $generated@@349) - :pattern ( ($generated@@138 $generated@@349 $generated@@350)) + :pattern ( ($generated@@138 $generated@@62 $generated@@340 ($generated@@208 $generated@@341) $generated@@342)) ))) -(assert (forall (($generated@@352 T@U) ($generated@@353 T@U) ) (! (= ($generated@@351 ($generated@@138 $generated@@352 $generated@@353)) $generated@@353) - :pattern ( ($generated@@138 $generated@@352 $generated@@353)) +(assert (forall (($generated@@345 T@U) ($generated@@346 T@U) ) (! (= ($generated@@344 ($generated@@130 $generated@@345 $generated@@346)) $generated@@345) + :pattern ( ($generated@@130 $generated@@345 $generated@@346)) ))) -(assert (forall (($generated@@355 T@U) ($generated@@356 T@U) ) (! (= ($generated@@354 ($generated@@45 $generated@@355 $generated@@356)) $generated@@355) - :pattern ( ($generated@@45 $generated@@355 $generated@@356)) +(assert (forall (($generated@@348 T@U) ($generated@@349 T@U) ) (! (= ($generated@@347 ($generated@@130 $generated@@348 $generated@@349)) $generated@@349) + :pattern ( ($generated@@130 $generated@@348 $generated@@349)) ))) -(assert (forall (($generated@@358 T@U) ($generated@@359 T@U) ) (! (= ($generated@@357 ($generated@@45 $generated@@358 $generated@@359)) $generated@@359) - :pattern ( ($generated@@45 $generated@@358 $generated@@359)) +(assert (forall (($generated@@351 T@U) ($generated@@352 T@U) ) (! (= ($generated@@350 ($generated@@45 $generated@@351 $generated@@352)) $generated@@351) + :pattern ( ($generated@@45 $generated@@351 $generated@@352)) ))) -(assert (forall (($generated@@361 T@U) ($generated@@362 T@U) ) (! (= ($generated@@360 ($generated@@44 $generated@@361 $generated@@362)) $generated@@361) - :pattern ( ($generated@@44 $generated@@361 $generated@@362)) +(assert (forall (($generated@@354 T@U) ($generated@@355 T@U) ) (! (= ($generated@@353 ($generated@@45 $generated@@354 $generated@@355)) $generated@@355) + :pattern ( ($generated@@45 $generated@@354 $generated@@355)) ))) -(assert (forall (($generated@@364 T@U) ($generated@@365 T@U) ) (! (= ($generated@@363 ($generated@@44 $generated@@364 $generated@@365)) $generated@@365) - :pattern ( ($generated@@44 $generated@@364 $generated@@365)) +(assert (forall (($generated@@357 T@U) ($generated@@358 T@U) ) (! (= ($generated@@356 ($generated@@44 $generated@@357 $generated@@358)) $generated@@357) + :pattern ( ($generated@@44 $generated@@357 $generated@@358)) ))) -(assert (forall (($generated@@366 T@U) ) (! ($generated@@42 $generated@@59 $generated@@366 $generated@@148) - :pattern ( ($generated@@42 $generated@@59 $generated@@366 $generated@@148)) +(assert (forall (($generated@@360 T@U) ($generated@@361 T@U) ) (! (= ($generated@@359 ($generated@@44 $generated@@360 $generated@@361)) $generated@@361) + :pattern ( ($generated@@44 $generated@@360 $generated@@361)) ))) -(assert (forall (($generated@@368 T@U) ) (! (= ($generated@@367 ($generated@@212 $generated@@368)) $generated@@368) - :pattern ( ($generated@@212 $generated@@368)) +(assert (forall (($generated@@362 T@U) ) (! ($generated@@42 $generated@@59 $generated@@362 $generated@@140) + :pattern ( ($generated@@42 $generated@@59 $generated@@362 $generated@@140)) ))) -(assert (forall (($generated@@369 T@U) ) (! (= ($generated@@40 ($generated@@212 $generated@@369)) $generated@@1) - :pattern ( ($generated@@212 $generated@@369)) +(assert (forall (($generated@@364 T@U) ) (! (= ($generated@@363 ($generated@@208 $generated@@364)) $generated@@364) + :pattern ( ($generated@@208 $generated@@364)) ))) -(assert (forall (($generated@@370 T@U) ($generated@@371 T@T) ) (! (= ($generated@@163 $generated@@371 ($generated@@189 $generated@@371 $generated@@370)) $generated@@370) - :pattern ( ($generated@@189 $generated@@371 $generated@@370)) +(assert (forall (($generated@@365 T@U) ) (! (= ($generated@@40 ($generated@@208 $generated@@365)) $generated@@1) + :pattern ( ($generated@@208 $generated@@365)) ))) -(assert (forall (($generated@@372 T@U) ($generated@@373 T@U) ) (! (=> (and ($generated@@132 $generated@@372) (and (or (not (= $generated@@373 $generated@@125)) (not true)) (= ($generated@@126 $generated@@373) $generated@@128))) ($generated@@42 $generated@@25 ($generated@@163 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@372 $generated@@373) $generated@@160)) $generated)) - :pattern ( ($generated@@163 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@372 $generated@@373) $generated@@160))) +(assert (forall (($generated@@366 T@U) ($generated@@367 T@T) ) (! (= ($generated@@158 $generated@@367 ($generated@@185 $generated@@367 $generated@@366)) $generated@@366) + :pattern ( ($generated@@185 $generated@@367 $generated@@366)) ))) -(assert (forall (($generated@@374 T@U) ($generated@@375 T@U) ($generated@@376 T@U) ) (! (= ($generated@@42 $generated@@43 $generated@@376 ($generated@@45 $generated@@374 $generated@@375)) (and ($generated@@42 $generated@@43 $generated@@376 ($generated@@138 $generated@@374 $generated@@375)) (forall (($generated@@377 T@U) ) (=> ($generated@@46 $generated@@377 $generated@@374) ($generated@@183 ($generated@@55 $generated@@374 $generated@@375 $generated@@48 $generated@@376 $generated@@377) $generated@@122))))) - :pattern ( ($generated@@42 $generated@@43 $generated@@376 ($generated@@45 $generated@@374 $generated@@375))) +(assert (forall (($generated@@368 T@U) ($generated@@369 T@U) ) (! (=> (and ($generated@@156 $generated@@368) (and (or (not (= $generated@@369 $generated@@125)) (not true)) (= ($generated@@126 $generated@@369) $generated@@128))) ($generated@@42 $generated@@25 ($generated@@158 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@368 $generated@@369) $generated@@152)) $generated)) + :pattern ( ($generated@@158 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@368 $generated@@369) $generated@@152))) ))) -(assert (forall (($generated@@379 T@U) ($generated@@380 T@U) ($generated@@381 T@T) ) (! (= ($generated@@216 $generated@@381 $generated@@379 ($generated@@378 $generated@@380)) ($generated@@216 $generated@@381 $generated@@379 $generated@@380)) - :pattern ( ($generated@@216 $generated@@381 $generated@@379 ($generated@@378 $generated@@380))) +(assert (forall (($generated@@370 T@U) ($generated@@371 T@U) ($generated@@372 T@U) ) (! (= ($generated@@42 $generated@@43 $generated@@372 ($generated@@45 $generated@@370 $generated@@371)) (and ($generated@@42 $generated@@43 $generated@@372 ($generated@@130 $generated@@370 $generated@@371)) (forall (($generated@@373 T@U) ) (=> ($generated@@46 $generated@@373 $generated@@370) ($generated@@179 ($generated@@55 $generated@@370 $generated@@371 $generated@@48 $generated@@372 $generated@@373) $generated@@122))))) + :pattern ( ($generated@@42 $generated@@43 $generated@@372 ($generated@@45 $generated@@370 $generated@@371))) ))) -(assert (forall (($generated@@382 T@U) ($generated@@383 T@U) ($generated@@384 T@U) ($generated@@385 T@U) ) (! (=> ($generated@@132 $generated@@385) (= ($generated@@146 $generated@@43 $generated@@382 ($generated@@138 $generated@@383 $generated@@384) $generated@@385) (forall (($generated@@386 T@U) ) (! (=> (and (and ($generated@@46 $generated@@386 $generated@@383) ($generated@@223 $generated@@386 $generated@@383 $generated@@385)) ($generated@@47 $generated@@383 $generated@@384 $generated@@385 $generated@@382 $generated@@386)) (forall (($generated@@387 T@U) ) (! (=> (and (or (not (= $generated@@387 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@383 $generated@@384 $generated@@385 $generated@@382 $generated@@386) ($generated@@189 $generated@@59 $generated@@387))) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@385 $generated@@387) $generated@@2)))) - :pattern ( ($generated@@54 ($generated@@55 $generated@@383 $generated@@384 $generated@@385 $generated@@382 $generated@@386) ($generated@@189 $generated@@59 $generated@@387))) +(assert (forall (($generated@@375 T@U) ($generated@@376 T@U) ($generated@@377 T@T) ) (! (= ($generated@@212 $generated@@377 $generated@@375 ($generated@@374 $generated@@376)) ($generated@@212 $generated@@377 $generated@@375 $generated@@376)) + :pattern ( ($generated@@212 $generated@@377 $generated@@375 ($generated@@374 $generated@@376))) ))) - :pattern ( ($generated@@253 $generated@@383 $generated@@384 $generated@@385 $generated@@382 $generated@@386)) - :pattern ( ($generated@@55 $generated@@383 $generated@@384 $generated@@385 $generated@@382 $generated@@386)) +(assert (forall (($generated@@378 T@U) ($generated@@379 T@U) ($generated@@380 T@U) ($generated@@381 T@U) ) (! (=> ($generated@@156 $generated@@381) (= ($generated@@138 $generated@@43 $generated@@378 ($generated@@130 $generated@@379 $generated@@380) $generated@@381) (forall (($generated@@382 T@U) ) (! (=> (and (and ($generated@@46 $generated@@382 $generated@@379) ($generated@@219 $generated@@382 $generated@@379 $generated@@381)) ($generated@@47 $generated@@379 $generated@@380 $generated@@381 $generated@@378 $generated@@382)) (forall (($generated@@383 T@U) ) (! (=> (and (or (not (= $generated@@383 $generated@@125)) (not true)) ($generated@@54 ($generated@@55 $generated@@379 $generated@@380 $generated@@381 $generated@@378 $generated@@382) ($generated@@185 $generated@@59 $generated@@383))) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@381 $generated@@383) $generated@@2)))) + :pattern ( ($generated@@54 ($generated@@55 $generated@@379 $generated@@380 $generated@@381 $generated@@378 $generated@@382) ($generated@@185 $generated@@59 $generated@@383))) +))) + :pattern ( ($generated@@249 $generated@@379 $generated@@380 $generated@@381 $generated@@378 $generated@@382)) + :pattern ( ($generated@@55 $generated@@379 $generated@@380 $generated@@381 $generated@@378 $generated@@382)) )))) - :pattern ( ($generated@@146 $generated@@43 $generated@@382 ($generated@@138 $generated@@383 $generated@@384) $generated@@385)) + :pattern ( ($generated@@138 $generated@@43 $generated@@378 ($generated@@130 $generated@@379 $generated@@380) $generated@@381)) ))) -(assert (forall (($generated@@388 T@U) ($generated@@389 T@U) ($generated@@390 T@U) ) (! (=> ($generated@@46 $generated@@390 ($generated@@138 $generated@@388 $generated@@389)) (and (= ($generated@@189 $generated@@43 ($generated@@163 $generated@@43 $generated@@390)) $generated@@390) ($generated@@42 $generated@@43 ($generated@@163 $generated@@43 $generated@@390) ($generated@@138 $generated@@388 $generated@@389)))) - :pattern ( ($generated@@46 $generated@@390 ($generated@@138 $generated@@388 $generated@@389))) +(assert (forall (($generated@@384 T@U) ($generated@@385 T@U) ($generated@@386 T@U) ) (! (=> ($generated@@46 $generated@@386 ($generated@@130 $generated@@384 $generated@@385)) (and (= ($generated@@185 $generated@@43 ($generated@@158 $generated@@43 $generated@@386)) $generated@@386) ($generated@@42 $generated@@43 ($generated@@158 $generated@@43 $generated@@386) ($generated@@130 $generated@@384 $generated@@385)))) + :pattern ( ($generated@@46 $generated@@386 ($generated@@130 $generated@@384 $generated@@385))) ))) -(assert (forall (($generated@@391 T@U) ($generated@@392 T@U) ($generated@@393 T@U) ) (! (=> ($generated@@46 $generated@@393 ($generated@@45 $generated@@391 $generated@@392)) (and (= ($generated@@189 $generated@@43 ($generated@@163 $generated@@43 $generated@@393)) $generated@@393) ($generated@@42 $generated@@43 ($generated@@163 $generated@@43 $generated@@393) ($generated@@45 $generated@@391 $generated@@392)))) - :pattern ( ($generated@@46 $generated@@393 ($generated@@45 $generated@@391 $generated@@392))) +(assert (forall (($generated@@387 T@U) ($generated@@388 T@U) ($generated@@389 T@U) ) (! (=> ($generated@@46 $generated@@389 ($generated@@45 $generated@@387 $generated@@388)) (and (= ($generated@@185 $generated@@43 ($generated@@158 $generated@@43 $generated@@389)) $generated@@389) ($generated@@42 $generated@@43 ($generated@@158 $generated@@43 $generated@@389) ($generated@@45 $generated@@387 $generated@@388)))) + :pattern ( ($generated@@46 $generated@@389 ($generated@@45 $generated@@387 $generated@@388))) ))) -(assert (forall (($generated@@394 T@U) ($generated@@395 T@U) ($generated@@396 T@U) ) (! (=> ($generated@@46 $generated@@396 ($generated@@44 $generated@@394 $generated@@395)) (and (= ($generated@@189 $generated@@43 ($generated@@163 $generated@@43 $generated@@396)) $generated@@396) ($generated@@42 $generated@@43 ($generated@@163 $generated@@43 $generated@@396) ($generated@@44 $generated@@394 $generated@@395)))) - :pattern ( ($generated@@46 $generated@@396 ($generated@@44 $generated@@394 $generated@@395))) +(assert (forall (($generated@@390 T@U) ($generated@@391 T@U) ($generated@@392 T@U) ) (! (=> ($generated@@46 $generated@@392 ($generated@@44 $generated@@390 $generated@@391)) (and (= ($generated@@185 $generated@@43 ($generated@@158 $generated@@43 $generated@@392)) $generated@@392) ($generated@@42 $generated@@43 ($generated@@158 $generated@@43 $generated@@392) ($generated@@44 $generated@@390 $generated@@391)))) + :pattern ( ($generated@@46 $generated@@392 ($generated@@44 $generated@@390 $generated@@391))) ))) -(assert (forall (($generated@@398 T@U) ($generated@@399 T@U) ($generated@@400 T@U) ($generated@@401 Bool) ($generated@@402 T@U) ($generated@@403 T@U) ) (! (= ($generated@@28 ($generated@@57 $generated@@59 $generated@@60 $generated@@24 ($generated@@397 $generated@@398 $generated@@399 $generated@@400 $generated@@401) $generated@@402 $generated@@403)) (=> (and (or (not (= $generated@@402 $generated@@398)) (not true)) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@399 $generated@@402) $generated@@400)))) $generated@@401)) - :pattern ( ($generated@@57 $generated@@59 $generated@@60 $generated@@24 ($generated@@397 $generated@@398 $generated@@399 $generated@@400 $generated@@401) $generated@@402 $generated@@403)) +(assert (forall (($generated@@394 T@U) ($generated@@395 T@U) ($generated@@396 T@U) ($generated@@397 Bool) ($generated@@398 T@U) ($generated@@399 T@U) ) (! (= ($generated@@28 ($generated@@57 $generated@@59 $generated@@60 $generated@@24 ($generated@@393 $generated@@394 $generated@@395 $generated@@396 $generated@@397) $generated@@398 $generated@@399)) (=> (and (or (not (= $generated@@398 $generated@@394)) (not true)) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@395 $generated@@398) $generated@@396)))) $generated@@397)) + :pattern ( ($generated@@57 $generated@@59 $generated@@60 $generated@@24 ($generated@@393 $generated@@394 $generated@@395 $generated@@396 $generated@@397) $generated@@398 $generated@@399)) ))) -(assert (forall (($generated@@405 T@U) ($generated@@406 T@U) ) (! (and (= ($generated@@40 ($generated@@138 $generated@@405 $generated@@406)) $generated@@6) (= ($generated@@404 ($generated@@138 $generated@@405 $generated@@406)) $generated@@16)) - :pattern ( ($generated@@138 $generated@@405 $generated@@406)) +(assert (forall (($generated@@401 T@U) ($generated@@402 T@U) ) (! (and (= ($generated@@40 ($generated@@130 $generated@@401 $generated@@402)) $generated@@6) (= ($generated@@400 ($generated@@130 $generated@@401 $generated@@402)) $generated@@16)) + :pattern ( ($generated@@130 $generated@@401 $generated@@402)) ))) -(assert (forall (($generated@@407 T@U) ($generated@@408 T@U) ) (! (and (= ($generated@@40 ($generated@@45 $generated@@407 $generated@@408)) $generated@@7) (= ($generated@@404 ($generated@@45 $generated@@407 $generated@@408)) $generated@@17)) - :pattern ( ($generated@@45 $generated@@407 $generated@@408)) +(assert (forall (($generated@@403 T@U) ($generated@@404 T@U) ) (! (and (= ($generated@@40 ($generated@@45 $generated@@403 $generated@@404)) $generated@@7) (= ($generated@@400 ($generated@@45 $generated@@403 $generated@@404)) $generated@@17)) + :pattern ( ($generated@@45 $generated@@403 $generated@@404)) ))) -(assert (forall (($generated@@409 T@U) ($generated@@410 T@U) ) (! (and (= ($generated@@40 ($generated@@44 $generated@@409 $generated@@410)) $generated@@8) (= ($generated@@404 ($generated@@44 $generated@@409 $generated@@410)) $generated@@18)) - :pattern ( ($generated@@44 $generated@@409 $generated@@410)) +(assert (forall (($generated@@405 T@U) ($generated@@406 T@U) ) (! (and (= ($generated@@40 ($generated@@44 $generated@@405 $generated@@406)) $generated@@8) (= ($generated@@400 ($generated@@44 $generated@@405 $generated@@406)) $generated@@18)) + :pattern ( ($generated@@44 $generated@@405 $generated@@406)) ))) -(assert (forall (($generated@@411 T@U) ($generated@@412 T@U) ($generated@@413 T@U) ($generated@@414 T@U) ($generated@@415 T@U) ) (! (=> (and (and ($generated@@132 $generated@@413) (and ($generated@@46 $generated@@415 $generated@@411) ($generated@@42 $generated@@43 $generated@@414 ($generated@@138 $generated@@411 $generated@@412)))) ($generated@@183 ($generated@@55 $generated@@411 $generated@@412 $generated@@48 $generated@@414 $generated@@415) $generated@@122)) (= ($generated@@47 $generated@@411 $generated@@412 $generated@@48 $generated@@414 $generated@@415) ($generated@@47 $generated@@411 $generated@@412 $generated@@413 $generated@@414 $generated@@415))) - :pattern ( ($generated@@47 $generated@@411 $generated@@412 $generated@@48 $generated@@414 $generated@@415) ($generated@@132 $generated@@413)) - :pattern ( ($generated@@47 $generated@@411 $generated@@412 $generated@@413 $generated@@414 $generated@@415)) +(assert (forall (($generated@@407 T@U) ($generated@@408 T@U) ($generated@@409 T@U) ($generated@@410 T@U) ($generated@@411 T@U) ) (! (=> (and (and ($generated@@156 $generated@@409) (and ($generated@@46 $generated@@411 $generated@@407) ($generated@@42 $generated@@43 $generated@@410 ($generated@@130 $generated@@407 $generated@@408)))) ($generated@@179 ($generated@@55 $generated@@407 $generated@@408 $generated@@48 $generated@@410 $generated@@411) $generated@@122)) (= ($generated@@47 $generated@@407 $generated@@408 $generated@@48 $generated@@410 $generated@@411) ($generated@@47 $generated@@407 $generated@@408 $generated@@409 $generated@@410 $generated@@411))) + :pattern ( ($generated@@47 $generated@@407 $generated@@408 $generated@@48 $generated@@410 $generated@@411) ($generated@@156 $generated@@409)) + :pattern ( ($generated@@47 $generated@@407 $generated@@408 $generated@@409 $generated@@410 $generated@@411)) ))) -(assert (forall (($generated@@416 T@U) ($generated@@417 T@U) ) (! (=> ($generated@@46 $generated@@416 ($generated@@212 $generated@@417)) (and (= ($generated@@189 $generated@@62 ($generated@@163 $generated@@62 $generated@@416)) $generated@@416) ($generated@@42 $generated@@62 ($generated@@163 $generated@@62 $generated@@416) ($generated@@212 $generated@@417)))) - :pattern ( ($generated@@46 $generated@@416 ($generated@@212 $generated@@417))) +(assert (forall (($generated@@412 T@U) ($generated@@413 T@U) ) (! (=> ($generated@@46 $generated@@412 ($generated@@208 $generated@@413)) (and (= ($generated@@185 $generated@@62 ($generated@@158 $generated@@62 $generated@@412)) $generated@@412) ($generated@@42 $generated@@62 ($generated@@158 $generated@@62 $generated@@412) ($generated@@208 $generated@@413)))) + :pattern ( ($generated@@46 $generated@@412 ($generated@@208 $generated@@413))) ))) -(assert (= ($generated@@40 $generated@@148) $generated@@4)) -(assert (= ($generated@@404 $generated@@148) $generated@@15)) -(assert (= ($generated@@40 $generated@@147) $generated@@5)) -(assert (= ($generated@@404 $generated@@147) $generated@@15)) -(assert (= ($generated@@40 $generated@@151) $generated@@9)) -(assert (= ($generated@@404 $generated@@151) $generated@@19)) +(assert (= ($generated@@40 $generated@@140) $generated@@4)) +(assert (= ($generated@@400 $generated@@140) $generated@@15)) +(assert (= ($generated@@40 $generated@@139) $generated@@5)) +(assert (= ($generated@@400 $generated@@139) $generated@@15)) +(assert (= ($generated@@40 $generated@@143) $generated@@9)) +(assert (= ($generated@@400 $generated@@143) $generated@@19)) (assert (= ($generated@@40 $generated@@124) $generated@@11)) -(assert (= ($generated@@404 $generated@@124) $generated@@19)) -(assert (= ($generated@@40 $generated@@154) $generated@@12)) -(assert (= ($generated@@404 $generated@@154) $generated@@20)) +(assert (= ($generated@@400 $generated@@124) $generated@@19)) +(assert (= ($generated@@40 $generated@@146) $generated@@12)) +(assert (= ($generated@@400 $generated@@146) $generated@@20)) (assert (= ($generated@@40 $generated@@128) $generated@@14)) -(assert (= ($generated@@404 $generated@@128) $generated@@20)) -(assert (forall (($generated@@418 T@U) ) (! ($generated@@42 $generated@@62 ($generated@@280 $generated@@418) ($generated@@212 $generated@@148)) - :pattern ( ($generated@@280 $generated@@418)) +(assert (= ($generated@@400 $generated@@128) $generated@@20)) +(assert (forall (($generated@@414 T@U) ) (! ($generated@@42 $generated@@62 ($generated@@273 $generated@@414) ($generated@@208 $generated@@140)) + :pattern ( ($generated@@273 $generated@@414)) +))) +(assert (forall (($generated@@415 T@U) ($generated@@416 Int) ($generated@@417 T@U) ) (! (=> ($generated@@157 $generated@@415 $generated@@416 $generated@@417) (and (and ($generated@@157 $generated@@415 $generated@@416 $generated@@417) (= ($generated@@155 $generated@@415 $generated@@416 $generated@@417) ($generated@@30 ($generated@@158 $generated@@25 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@415 ($generated@@158 $generated@@59 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@415 $generated@@417) $generated@@149))) $generated@@152))))) (<= ($generated@@174 0) ($generated@@155 $generated@@415 $generated@@416 $generated@@417)))) + :pattern ( ($generated@@155 $generated@@415 $generated@@416 $generated@@417)) ))) -(assert (forall (($generated@@419 T@U) ($generated@@420 T@U) ) (! (= ($generated@@183 $generated@@419 $generated@@420) (forall (($generated@@421 T@U) ) (! (= ($generated@@54 $generated@@419 $generated@@421) ($generated@@54 $generated@@420 $generated@@421)) - :pattern ( ($generated@@54 $generated@@419 $generated@@421)) - :pattern ( ($generated@@54 $generated@@420 $generated@@421)) +(assert (forall (($generated@@418 T@U) ($generated@@419 T@U) ) (! (= ($generated@@179 $generated@@418 $generated@@419) (forall (($generated@@420 T@U) ) (! (= ($generated@@54 $generated@@418 $generated@@420) ($generated@@54 $generated@@419 $generated@@420)) + :pattern ( ($generated@@54 $generated@@418 $generated@@420)) + :pattern ( ($generated@@54 $generated@@419 $generated@@420)) ))) - :pattern ( ($generated@@183 $generated@@419 $generated@@420)) + :pattern ( ($generated@@179 $generated@@418 $generated@@419)) ))) -(assert (forall (($generated@@422 Int) ) (! (= ($generated@@189 $generated@@25 ($generated@@29 ($generated@@134 $generated@@422))) ($generated@@180 $generated@@61 ($generated@@189 $generated@@25 ($generated@@29 $generated@@422)))) - :pattern ( ($generated@@189 $generated@@25 ($generated@@29 ($generated@@134 $generated@@422)))) +(assert (forall (($generated@@421 Int) ) (! (= ($generated@@185 $generated@@25 ($generated@@29 ($generated@@174 $generated@@421))) ($generated@@176 $generated@@61 ($generated@@185 $generated@@25 ($generated@@29 $generated@@421)))) + :pattern ( ($generated@@185 $generated@@25 ($generated@@29 ($generated@@174 $generated@@421)))) ))) -(assert (forall (($generated@@423 T@U) ($generated@@424 T@T) ) (! (= ($generated@@189 $generated@@424 ($generated@@180 $generated@@424 $generated@@423)) ($generated@@180 $generated@@61 ($generated@@189 $generated@@424 $generated@@423))) - :pattern ( ($generated@@189 $generated@@424 ($generated@@180 $generated@@424 $generated@@423))) +(assert (forall (($generated@@422 T@U) ($generated@@423 T@T) ) (! (= ($generated@@185 $generated@@423 ($generated@@176 $generated@@423 $generated@@422)) ($generated@@176 $generated@@61 ($generated@@185 $generated@@423 $generated@@422))) + :pattern ( ($generated@@185 $generated@@423 ($generated@@176 $generated@@423 $generated@@422))) ))) -(assert (forall (($generated@@425 T@U) ($generated@@426 T@U) ) (! ($generated@@146 $generated@@25 $generated@@426 $generated $generated@@425) - :pattern ( ($generated@@146 $generated@@25 $generated@@426 $generated $generated@@425)) +(assert (forall (($generated@@424 T@U) ($generated@@425 T@U) ) (! ($generated@@138 $generated@@25 $generated@@425 $generated $generated@@424) + :pattern ( ($generated@@138 $generated@@25 $generated@@425 $generated $generated@@424)) ))) -(assert (forall (($generated@@428 T@U) ($generated@@429 T@U) ($generated@@430 T@U) ) (! (= ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@62 ($generated@@427 $generated@@428) $generated@@429 $generated@@430) $generated@@428) - :pattern ( ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@62 ($generated@@427 $generated@@428) $generated@@429 $generated@@430)) +(assert (forall (($generated@@427 T@U) ($generated@@428 T@U) ($generated@@429 T@U) ) (! (= ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@62 ($generated@@426 $generated@@427) $generated@@428 $generated@@429) $generated@@427) + :pattern ( ($generated@@57 ($generated@@58 $generated@@59 ($generated@@58 $generated@@60 $generated@@61)) $generated@@61 $generated@@62 ($generated@@426 $generated@@427) $generated@@428 $generated@@429)) ))) -(assert (forall (($generated@@431 T@U) ) (! ($generated@@42 $generated@@25 $generated@@431 $generated) - :pattern ( ($generated@@42 $generated@@25 $generated@@431 $generated)) +(assert (forall (($generated@@430 T@U) ) (! ($generated@@42 $generated@@25 $generated@@430 $generated) + :pattern ( ($generated@@42 $generated@@25 $generated@@430 $generated)) ))) (push 1) (declare-fun ControlFlow (Int Int) Int) +(declare-fun $generated@@431 () T@U) (declare-fun $generated@@432 () T@U) -(declare-fun $generated@@433 () T@U) -(declare-fun $generated@@434 () Bool) -(declare-fun $generated@@435 () Int) +(declare-fun $generated@@433 () Bool) +(declare-fun $generated@@434 () Int) +(declare-fun $generated@@435 () T@U) (declare-fun $generated@@436 () T@U) (declare-fun $generated@@437 () T@U) (declare-fun $generated@@438 () T@U) (declare-fun $generated@@439 () T@U) (declare-fun $generated@@440 () T@U) -(declare-fun $generated@@441 () T@U) -(declare-fun $generated@@442 () Int) -(declare-fun $generated@@443 () Bool) +(declare-fun $generated@@441 () Int) +(declare-fun $generated@@442 () Bool) +(declare-fun $generated@@443 () T@U) (declare-fun $generated@@444 () T@U) -(declare-fun $generated@@445 () T@U) -(declare-fun $generated@@446 () Bool) -(declare-fun $generated@@447 () T@U) +(declare-fun $generated@@445 () Bool) +(declare-fun $generated@@446 () T@U) (set-option :timeout 0) (set-option :rlimit 0) (set-option :auto_config false) @@ -1041,18 +1038,18 @@ $generated@@193)))))) (set-option :pp.bv_literals false) (set-option :smt.arith.solver 2) (assert (not - (=> (= (ControlFlow 0 0) 9) (let (($generated@@448 true)) -(let (($generated@@449 true)) -(let (($generated@@450 (=> (and ($generated@@132 $generated@@432) (or (= $generated@@433 $generated@@432) ($generated@@162 $generated@@433 $generated@@432))) (and (=> (= (ControlFlow 0 7) 5) $generated@@449) (=> (= (ControlFlow 0 7) 6) $generated@@448))))) -(let (($generated@@451 (=> (= (ControlFlow 0 2) (- 0 1)) (= $generated@@434 (= $generated@@435 ($generated@@134 2)))))) -(let (($generated@@452 (=> (= $generated@@436 ($generated@@180 $generated@@43 ($generated@@216 $generated@@43 ($generated@@317 ($generated@@56 ($generated@@192 1) ($generated@@118 $generated) ($generated@@427 ($generated@@280 ($generated@@314 false))))) ($generated@@378 $generated@@437)))) (=> (and (and (or (not (= $generated@@438 $generated@@125)) (not true)) (and ($generated@@42 $generated@@59 $generated@@438 $generated@@151) ($generated@@146 $generated@@59 $generated@@438 $generated@@151 $generated@@439))) (and ($generated@@132 $generated@@440) ($generated@@161 $generated@@440))) (=> (and (and (and (or (not (= $generated@@441 $generated@@125)) (not true)) (and ($generated@@42 $generated@@59 $generated@@441 $generated@@151) ($generated@@146 $generated@@59 $generated@@441 $generated@@151 $generated@@440))) (not ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@433 $generated@@441) $generated@@2))))) (and (and (forall (($generated@@453 T@U) ) (! (=> (and (or (not (= $generated@@453 $generated@@125)) (not true)) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@433 $generated@@453) $generated@@2)))) (= ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@440 $generated@@453) ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@433 $generated@@453))) - :pattern ( ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@440 $generated@@453)) -)) ($generated@@162 $generated@@433 $generated@@440)) (and (= $generated@@442 ($generated@@134 42)) ($generated@@146 $generated@@25 ($generated@@29 $generated@@442) $generated $generated@@440)))) (and (=> (= (ControlFlow 0 3) (- 0 4)) true) (=> (and ($generated@@146 $generated@@59 $generated@@441 $generated@@151 $generated@@440) ($generated@@133 $generated@@440 ($generated@@134 42) $generated@@441)) (=> (and (and ($generated@@133 $generated@@440 ($generated@@134 42) $generated@@441) (= $generated@@443 (= $generated@@435 ($generated@@131 $generated@@440 ($generated@@134 42) $generated@@441)))) (and (= $generated@@434 $generated@@443) (= (ControlFlow 0 3) 2))) $generated@@451)))))))) -(let (($generated@@454 (=> (= $generated@@444 ($generated@@397 $generated@@125 $generated@@439 $generated@@2 false)) (=> (and (and (and ($generated@@132 $generated@@433) ($generated@@161 $generated@@433)) ($generated@@28 ($generated@@180 $generated@@24 ($generated@@27 false)))) (and (forall (($generated@@455 T@U) ) (! (=> (and (or (not (= $generated@@455 $generated@@125)) (not true)) ($generated@@28 ($generated@@163 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@439 $generated@@455) $generated@@2)))) (= ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@433 $generated@@455) ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@439 $generated@@455))) - :pattern ( ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@433 $generated@@455)) -)) ($generated@@162 $generated@@439 $generated@@433))) (and (=> (= (ControlFlow 0 8) 7) $generated@@450) (=> (= (ControlFlow 0 8) 3) $generated@@452)))))) -(let (($generated@@456 (=> (and ($generated@@132 $generated@@439) ($generated@@161 $generated@@439)) (=> (and (and ($generated@@42 $generated@@43 $generated@@445 ($generated@@44 $generated $generated)) ($generated@@146 $generated@@43 $generated@@445 ($generated@@44 $generated $generated) $generated@@439)) true) (=> (and (and (and (=> $generated@@446 (and ($generated@@42 $generated@@59 $generated@@447 $generated@@151) ($generated@@146 $generated@@59 $generated@@447 $generated@@151 $generated@@439))) true) (= 2 $generated@@130)) (and (= $generated@@435 ($generated@@134 2)) (= (ControlFlow 0 9) 8))) $generated@@454))))) -$generated@@456)))))))) + (=> (= (ControlFlow 0 0) 9) (let (($generated@@447 true)) +(let (($generated@@448 true)) +(let (($generated@@449 (=> (and ($generated@@156 $generated@@431) (or (= $generated@@432 $generated@@431) ($generated@@154 $generated@@432 $generated@@431))) (and (=> (= (ControlFlow 0 7) 5) $generated@@448) (=> (= (ControlFlow 0 7) 6) $generated@@447))))) +(let (($generated@@450 (=> (= (ControlFlow 0 2) (- 0 1)) (= $generated@@433 (= $generated@@434 ($generated@@174 2)))))) +(let (($generated@@451 (=> (= $generated@@435 ($generated@@176 $generated@@43 ($generated@@212 $generated@@43 ($generated@@313 ($generated@@56 ($generated@@188 1) ($generated@@118 $generated) ($generated@@426 ($generated@@273 ($generated@@310 false))))) ($generated@@374 $generated@@436)))) (=> (and (and (or (not (= $generated@@437 $generated@@125)) (not true)) (and ($generated@@42 $generated@@59 $generated@@437 $generated@@143) ($generated@@138 $generated@@59 $generated@@437 $generated@@143 $generated@@438))) (and ($generated@@156 $generated@@439) ($generated@@153 $generated@@439))) (=> (and (and (and (or (not (= $generated@@440 $generated@@125)) (not true)) (and ($generated@@42 $generated@@59 $generated@@440 $generated@@143) ($generated@@138 $generated@@59 $generated@@440 $generated@@143 $generated@@439))) (not ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@432 $generated@@440) $generated@@2))))) (and (and (forall (($generated@@452 T@U) ) (! (=> (and (or (not (= $generated@@452 $generated@@125)) (not true)) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@432 $generated@@452) $generated@@2)))) (= ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@439 $generated@@452) ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@432 $generated@@452))) + :pattern ( ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@439 $generated@@452)) +)) ($generated@@154 $generated@@432 $generated@@439)) (and (= $generated@@441 ($generated@@174 42)) ($generated@@138 $generated@@25 ($generated@@29 $generated@@441) $generated $generated@@439)))) (and (=> (= (ControlFlow 0 3) (- 0 4)) true) (=> (and ($generated@@138 $generated@@59 $generated@@440 $generated@@143 $generated@@439) ($generated@@157 $generated@@439 ($generated@@174 42) $generated@@440)) (=> (and (and ($generated@@157 $generated@@439 ($generated@@174 42) $generated@@440) (= $generated@@442 (= $generated@@434 ($generated@@155 $generated@@439 ($generated@@174 42) $generated@@440)))) (and (= $generated@@433 $generated@@442) (= (ControlFlow 0 3) 2))) $generated@@450)))))))) +(let (($generated@@453 (=> (= $generated@@443 ($generated@@393 $generated@@125 $generated@@438 $generated@@2 false)) (=> (and (and (and ($generated@@156 $generated@@432) ($generated@@153 $generated@@432)) ($generated@@28 ($generated@@176 $generated@@24 ($generated@@27 false)))) (and (forall (($generated@@454 T@U) ) (! (=> (and (or (not (= $generated@@454 $generated@@125)) (not true)) ($generated@@28 ($generated@@158 $generated@@24 ($generated@@64 $generated@@60 $generated@@61 ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@438 $generated@@454) $generated@@2)))) (= ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@432 $generated@@454) ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@438 $generated@@454))) + :pattern ( ($generated@@64 $generated@@59 ($generated@@58 $generated@@60 $generated@@61) $generated@@432 $generated@@454)) +)) ($generated@@154 $generated@@438 $generated@@432))) (and (=> (= (ControlFlow 0 8) 7) $generated@@449) (=> (= (ControlFlow 0 8) 3) $generated@@451)))))) +(let (($generated@@455 (=> (and ($generated@@156 $generated@@438) ($generated@@153 $generated@@438)) (=> (and (and (and ($generated@@42 $generated@@43 $generated@@444 ($generated@@44 $generated $generated)) ($generated@@138 $generated@@43 $generated@@444 ($generated@@44 $generated $generated) $generated@@438)) true) (and (and (=> $generated@@445 (and ($generated@@42 $generated@@59 $generated@@446 $generated@@143) ($generated@@138 $generated@@59 $generated@@446 $generated@@143 $generated@@438))) true) (and (= $generated@@434 ($generated@@174 2)) (= (ControlFlow 0 9) 8)))) $generated@@453)))) +$generated@@455)))))))) )) (check-sat) (get-info :rlimit) @@ -1108,57 +1105,55 @@ $generated@@456)))))))) (declare-fun $generated@@17 (T@U) Int) (declare-fun $generated@@18 (Real) T@U) (declare-fun $generated@@19 (T@U) Real) -(declare-fun $generated@@26 () Int) +(declare-fun $generated@@26 (T@U T@U T@U) Bool) (declare-fun $generated@@27 (T@U T@U T@U) Bool) -(declare-fun $generated@@28 (T@T T@U) T@U) -(declare-fun $generated@@29 () T@T) -(declare-fun $generated@@30 (T@U T@U T@U) Bool) -(declare-fun $generated@@31 (T@U T@U T@U T@U T@U) Bool) -(declare-fun $generated@@32 () T@U) +(declare-fun $generated@@28 (T@U T@U T@U T@U T@U) Bool) +(declare-fun $generated@@29 () T@U) +(declare-fun $generated@@30 (T@U) T@U) +(declare-fun $generated@@31 (T@T T@T T@U T@U) T@U) +(declare-fun $generated@@32 () T@T) (declare-fun $generated@@33 (T@U) T@U) -(declare-fun $generated@@34 (T@T T@T T@U T@U) T@U) -(declare-fun $generated@@35 () T@T) -(declare-fun $generated@@36 (T@U) T@U) -(declare-fun $generated@@37 (T@U T@U) Bool) -(declare-fun $generated@@38 (T@U) Bool) -(declare-fun $generated@@39 (T@T T@T) T@T) -(declare-fun $generated@@40 () T@T) -(declare-fun $generated@@41 (T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@42 (T@T) T@T) -(declare-fun $generated@@43 (T@T) T@T) -(declare-fun $generated@@66 (T@U) T@U) -(declare-fun $generated@@67 (T@T T@U T@U) Bool) -(declare-fun $generated@@68 (T@U T@U) T@U) -(declare-fun $generated@@72 (T@U T@U) Bool) -(declare-fun $generated@@73 () T@U) -(declare-fun $generated@@75 (T@U T@U) T@U) -(declare-fun $generated@@83 (T@T T@U T@U T@U) Bool) -(declare-fun $generated@@84 (T@U T@U) T@U) -(declare-fun $generated@@85 (T@U) Bool) -(declare-fun $generated@@90 (T@U) T@U) -(declare-fun $generated@@96 (T@U T@U T@U T@U T@U) T@U) -(declare-fun $generated@@97 (T@U T@U) Bool) -(declare-fun $generated@@103 (T@U T@U) T@U) -(declare-fun $generated@@108 (T@U) T@U) -(declare-fun $generated@@110 (T@T T@U) T@U) -(declare-fun $generated@@111 (T@T T@U) T@U) -(declare-fun $generated@@122 (T@U T@U T@U) Bool) -(declare-fun $generated@@131 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@34 (T@U T@U) Bool) +(declare-fun $generated@@35 (T@U) Bool) +(declare-fun $generated@@36 (T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@53 (T@U) T@U) +(declare-fun $generated@@54 (T@T T@U T@U) Bool) +(declare-fun $generated@@55 () T@T) +(declare-fun $generated@@56 (T@U T@U) T@U) +(declare-fun $generated@@60 (T@U T@U) Bool) +(declare-fun $generated@@61 () T@U) +(declare-fun $generated@@63 () T@T) +(declare-fun $generated@@64 (T@U T@U) T@U) +(declare-fun $generated@@72 (T@T T@U T@U T@U) Bool) +(declare-fun $generated@@73 (T@U T@U) T@U) +(declare-fun $generated@@74 (T@U) Bool) +(declare-fun $generated@@79 (T@T T@T) T@T) +(declare-fun $generated@@80 (T@U) T@U) +(declare-fun $generated@@81 (T@T) T@T) +(declare-fun $generated@@82 (T@T) T@T) +(declare-fun $generated@@92 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@93 (T@U T@U) Bool) +(declare-fun $generated@@99 (T@U T@U) T@U) +(declare-fun $generated@@104 (T@U) T@U) +(declare-fun $generated@@106 (T@T T@U) T@U) +(declare-fun $generated@@107 (T@T T@U) T@U) +(declare-fun $generated@@118 (T@U T@U T@U) Bool) +(declare-fun $generated@@127 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@148 (T@U) T@U) +(declare-fun $generated@@151 (T@U) T@U) +(declare-fun $generated@@154 (T@U) T@U) (declare-fun $generated@@157 (T@U) T@U) -(declare-fun $generated@@160 (T@U) T@U) -(declare-fun $generated@@163 (T@U) T@U) -(declare-fun $generated@@166 (T@U) T@U) -(declare-fun $generated@@171 (T@U) T@U) -(declare-fun $generated@@174 (T@U) T@U) -(declare-fun $generated@@181 (T@U) T@U) -(declare-fun $generated@@186 (T@U) Int) -(declare-fun $generated@@194 () T@T) -(declare-fun $generated@@195 () T@U) -(declare-fun $generated@@196 () T@T) -(declare-fun $generated@@212 (T@T T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@213 (T@U T@U T@U Bool) T@U) -(declare-fun $generated@@214 (T@T T@T T@T T@U T@U T@U T@U) T@U) -(declare-fun $generated@@246 (T@U) T@U) +(declare-fun $generated@@162 (T@U) T@U) +(declare-fun $generated@@165 (T@U) T@U) +(declare-fun $generated@@172 (T@U) T@U) +(declare-fun $generated@@177 (T@U) Int) +(declare-fun $generated@@185 () T@T) +(declare-fun $generated@@186 () T@U) +(declare-fun $generated@@187 () T@T) +(declare-fun $generated@@203 (T@T T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@204 (T@U T@U T@U Bool) T@U) +(declare-fun $generated@@205 (T@T T@T T@T T@U T@U T@U T@U) T@U) +(declare-fun $generated@@237 (T@U) T@U) (assert (and (and (and (and (and (and (and (and (= ($generated@@10 $generated@@11) 0) (= ($generated@@10 $generated@@12) 1)) (= ($generated@@10 $generated@@13) 2)) (forall (($generated@@20 Bool) ) (! (= ($generated@@15 ($generated@@14 $generated@@20)) $generated@@20) :pattern ( ($generated@@14 $generated@@20)) ))) (forall (($generated@@21 T@U) ) (! (= ($generated@@14 ($generated@@15 $generated@@21)) $generated@@21) @@ -1174,231 +1169,215 @@ $generated@@456)))))))) )))) (assert (distinct $generated $generated@@0 $generated@@1 $generated@@2 $generated@@3 $generated@@4 $generated@@5 $generated@@6 $generated@@7 $generated@@8 $generated@@9) ) -(assert (and (and (and (and (and (and (and (= ($generated@@10 $generated@@29) 3) (forall (($generated@@44 T@T) ($generated@@45 T@T) ($generated@@46 T@U) ($generated@@47 T@U) ($generated@@48 T@U) ) (! (= ($generated@@34 $generated@@44 $generated@@45 ($generated@@41 $generated@@44 $generated@@45 $generated@@47 $generated@@48 $generated@@46) $generated@@48) $generated@@46) +(assert (and (and (forall (($generated@@37 T@T) ($generated@@38 T@T) ($generated@@39 T@U) ($generated@@40 T@U) ($generated@@41 T@U) ) (! (= ($generated@@31 $generated@@37 $generated@@38 ($generated@@36 $generated@@37 $generated@@38 $generated@@40 $generated@@41 $generated@@39) $generated@@41) $generated@@39) :weight 0 -))) (forall (($generated@@49 T@T) ($generated@@50 T@T) ($generated@@51 T@U) ($generated@@52 T@U) ($generated@@53 T@U) ($generated@@54 T@U) ) (! (or (= $generated@@53 $generated@@54) (= ($generated@@34 $generated@@49 $generated@@50 ($generated@@41 $generated@@49 $generated@@50 $generated@@52 $generated@@53 $generated@@51) $generated@@54) ($generated@@34 $generated@@49 $generated@@50 $generated@@52 $generated@@54))) +)) (forall (($generated@@42 T@T) ($generated@@43 T@T) ($generated@@44 T@U) ($generated@@45 T@U) ($generated@@46 T@U) ($generated@@47 T@U) ) (! (or (= $generated@@46 $generated@@47) (= ($generated@@31 $generated@@42 $generated@@43 ($generated@@36 $generated@@42 $generated@@43 $generated@@45 $generated@@46 $generated@@44) $generated@@47) ($generated@@31 $generated@@42 $generated@@43 $generated@@45 $generated@@47))) :weight 0 -))) (= ($generated@@10 $generated@@35) 4)) (forall (($generated@@55 T@T) ($generated@@56 T@T) ) (= ($generated@@10 ($generated@@39 $generated@@55 $generated@@56)) 5))) (forall (($generated@@57 T@T) ($generated@@58 T@T) ) (! (= ($generated@@42 ($generated@@39 $generated@@57 $generated@@58)) $generated@@57) - :pattern ( ($generated@@39 $generated@@57 $generated@@58)) -))) (forall (($generated@@59 T@T) ($generated@@60 T@T) ) (! (= ($generated@@43 ($generated@@39 $generated@@59 $generated@@60)) $generated@@60) - :pattern ( ($generated@@39 $generated@@59 $generated@@60)) -))) (= ($generated@@10 $generated@@40) 6))) -(assert (=> (<= 0 $generated@@26) (forall (($generated@@61 T@U) ($generated@@62 T@U) ($generated@@63 T@U) ) (! (=> ($generated@@30 $generated@@61 $generated@@62 ($generated@@28 $generated@@29 $generated@@63)) (and (forall (($generated@@64 T@U) ) (! (=> ($generated@@37 $generated@@64 $generated@@61) (and ($generated@@38 ($generated@@28 $generated@@29 $generated@@63)) (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@28 ($generated@@39 $generated@@35 $generated@@11) ($generated@@36 ($generated@@28 $generated@@29 $generated@@63))) $generated@@64)) (and ($generated@@38 ($generated@@28 $generated@@29 $generated@@63)) true)))) - :pattern ( ($generated@@31 $generated@@61 $generated@@62 $generated@@32 ($generated@@33 $generated@@63) $generated@@64)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@63) $generated@@64)) -)) (= ($generated@@27 $generated@@61 $generated@@62 ($generated@@28 $generated@@29 $generated@@63)) (forall (($generated@@65 T@U) ) (! (=> (and ($generated@@37 $generated@@65 $generated@@61) ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@28 ($generated@@39 $generated@@35 $generated@@11) ($generated@@36 ($generated@@28 $generated@@29 $generated@@63))) $generated@@65))) ($generated@@31 $generated@@61 $generated@@62 $generated@@32 ($generated@@28 $generated@@40 ($generated@@33 ($generated@@28 $generated@@29 $generated@@63))) $generated@@65)) - :pattern ( ($generated@@31 $generated@@61 $generated@@62 $generated@@32 ($generated@@33 $generated@@63) $generated@@65)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@63) $generated@@65)) +))) (= ($generated@@10 $generated@@32) 3))) +(assert (forall (($generated@@48 T@U) ($generated@@49 T@U) ($generated@@50 T@U) ) (! (=> ($generated@@27 $generated@@48 $generated@@49 $generated@@50) (and (forall (($generated@@51 T@U) ) (! (=> ($generated@@34 $generated@@51 $generated@@48) (and ($generated@@35 $generated@@50) (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@50) $generated@@51)) (and ($generated@@35 $generated@@50) true)))) + :pattern ( ($generated@@28 $generated@@48 $generated@@49 $generated@@29 ($generated@@30 $generated@@50) $generated@@51)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@50) $generated@@51)) +)) (= ($generated@@26 $generated@@48 $generated@@49 $generated@@50) (forall (($generated@@52 T@U) ) (! (=> (and ($generated@@34 $generated@@52 $generated@@48) ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@50) $generated@@52))) ($generated@@28 $generated@@48 $generated@@49 $generated@@29 ($generated@@30 $generated@@50) $generated@@52)) + :pattern ( ($generated@@28 $generated@@48 $generated@@49 $generated@@29 ($generated@@30 $generated@@50) $generated@@52)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@50) $generated@@52)) ))))) - :weight 3 - :pattern ( ($generated@@27 $generated@@61 $generated@@62 ($generated@@28 $generated@@29 $generated@@63))) + :pattern ( ($generated@@26 $generated@@48 $generated@@49 $generated@@50)) +))) +(assert (= ($generated@@53 $generated) $generated@@0)) +(assert (= ($generated@@10 $generated@@55) 4)) +(assert (forall (($generated@@57 T@U) ($generated@@58 T@U) ($generated@@59 T@U) ) (! (=> ($generated@@54 $generated@@55 $generated@@59 ($generated@@56 $generated@@57 $generated@@58)) ($generated@@35 $generated@@59)) + :pattern ( ($generated@@35 $generated@@59) ($generated@@54 $generated@@55 $generated@@59 ($generated@@56 $generated@@57 $generated@@58))) +))) +(assert (forall (($generated@@62 T@U) ) (! (not ($generated@@60 $generated@@61 $generated@@62)) + :pattern ( ($generated@@60 $generated@@61 $generated@@62)) +))) +(assert (= ($generated@@10 $generated@@63) 5)) +(assert (forall (($generated@@65 T@U) ($generated@@66 T@U) ($generated@@67 T@U) ($generated@@68 T@U) ($generated@@69 T@U) ) (! (=> (and (and ($generated@@54 $generated@@63 $generated@@65 ($generated@@64 $generated@@66 $generated@@67)) (forall (($generated@@70 T@U) ) (! (=> ($generated@@34 $generated@@70 $generated@@68) ($generated@@34 $generated@@70 $generated@@66)) + :pattern ( ($generated@@34 $generated@@70 $generated@@68)) + :pattern ( ($generated@@34 $generated@@70 $generated@@66)) +))) (forall (($generated@@71 T@U) ) (! (=> ($generated@@34 $generated@@71 $generated@@67) ($generated@@34 $generated@@71 $generated@@69)) + :pattern ( ($generated@@34 $generated@@71 $generated@@67)) + :pattern ( ($generated@@34 $generated@@71 $generated@@69)) +))) ($generated@@54 $generated@@63 $generated@@65 ($generated@@64 $generated@@68 $generated@@69))) + :pattern ( ($generated@@54 $generated@@63 $generated@@65 ($generated@@64 $generated@@66 $generated@@67)) ($generated@@54 $generated@@63 $generated@@65 ($generated@@64 $generated@@68 $generated@@69))) +))) +(assert (forall (($generated@@75 T@U) ($generated@@76 T@U) ($generated@@77 T@U) ($generated@@78 T@U) ) (! (=> (and ($generated@@74 $generated@@78) (and ($generated@@35 $generated@@75) ($generated@@72 $generated@@55 $generated@@75 ($generated@@56 $generated@@76 $generated@@77) $generated@@78))) ($generated@@72 $generated@@63 ($generated@@30 $generated@@75) ($generated@@73 $generated@@76 $generated@@77) $generated@@78)) + :pattern ( ($generated@@72 $generated@@63 ($generated@@30 $generated@@75) ($generated@@73 $generated@@76 $generated@@77) $generated@@78)) +))) +(assert (and (and (forall (($generated@@83 T@T) ($generated@@84 T@T) ) (= ($generated@@10 ($generated@@79 $generated@@83 $generated@@84)) 6)) (forall (($generated@@85 T@T) ($generated@@86 T@T) ) (! (= ($generated@@81 ($generated@@79 $generated@@85 $generated@@86)) $generated@@85) + :pattern ( ($generated@@79 $generated@@85 $generated@@86)) +))) (forall (($generated@@87 T@T) ($generated@@88 T@T) ) (! (= ($generated@@82 ($generated@@79 $generated@@87 $generated@@88)) $generated@@88) + :pattern ( ($generated@@79 $generated@@87 $generated@@88)) )))) -(assert (= ($generated@@66 $generated) $generated@@0)) -(assert (forall (($generated@@69 T@U) ($generated@@70 T@U) ($generated@@71 T@U) ) (! (=> ($generated@@67 $generated@@29 $generated@@71 ($generated@@68 $generated@@69 $generated@@70)) ($generated@@38 $generated@@71)) - :pattern ( ($generated@@38 $generated@@71) ($generated@@67 $generated@@29 $generated@@71 ($generated@@68 $generated@@69 $generated@@70))) -))) -(assert (forall (($generated@@74 T@U) ) (! (not ($generated@@72 $generated@@73 $generated@@74)) - :pattern ( ($generated@@72 $generated@@73 $generated@@74)) -))) -(assert (forall (($generated@@76 T@U) ($generated@@77 T@U) ($generated@@78 T@U) ($generated@@79 T@U) ($generated@@80 T@U) ) (! (=> (and (and ($generated@@67 $generated@@40 $generated@@76 ($generated@@75 $generated@@77 $generated@@78)) (forall (($generated@@81 T@U) ) (! (=> ($generated@@37 $generated@@81 $generated@@79) ($generated@@37 $generated@@81 $generated@@77)) - :pattern ( ($generated@@37 $generated@@81 $generated@@79)) - :pattern ( ($generated@@37 $generated@@81 $generated@@77)) -))) (forall (($generated@@82 T@U) ) (! (=> ($generated@@37 $generated@@82 $generated@@78) ($generated@@37 $generated@@82 $generated@@80)) - :pattern ( ($generated@@37 $generated@@82 $generated@@78)) - :pattern ( ($generated@@37 $generated@@82 $generated@@80)) -))) ($generated@@67 $generated@@40 $generated@@76 ($generated@@75 $generated@@79 $generated@@80))) - :pattern ( ($generated@@67 $generated@@40 $generated@@76 ($generated@@75 $generated@@77 $generated@@78)) ($generated@@67 $generated@@40 $generated@@76 ($generated@@75 $generated@@79 $generated@@80))) +(assert (forall (($generated@@89 T@U) ($generated@@90 T@U) ) (! (= ($generated@@54 ($generated@@79 $generated@@32 $generated@@11) $generated@@89 ($generated@@80 $generated@@90)) (forall (($generated@@91 T@U) ) (! (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 $generated@@89 $generated@@91)) ($generated@@34 $generated@@91 $generated@@90)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 $generated@@89 $generated@@91)) ))) -(assert (forall (($generated@@86 T@U) ($generated@@87 T@U) ($generated@@88 T@U) ($generated@@89 T@U) ) (! (=> (and ($generated@@85 $generated@@89) (and ($generated@@38 $generated@@86) ($generated@@83 $generated@@29 $generated@@86 ($generated@@68 $generated@@87 $generated@@88) $generated@@89))) ($generated@@83 $generated@@40 ($generated@@33 $generated@@86) ($generated@@84 $generated@@87 $generated@@88) $generated@@89)) - :pattern ( ($generated@@83 $generated@@40 ($generated@@33 $generated@@86) ($generated@@84 $generated@@87 $generated@@88) $generated@@89)) + :pattern ( ($generated@@54 ($generated@@79 $generated@@32 $generated@@11) $generated@@89 ($generated@@80 $generated@@90))) ))) -(assert (forall (($generated@@91 T@U) ($generated@@92 T@U) ) (! (= ($generated@@67 ($generated@@39 $generated@@35 $generated@@11) $generated@@91 ($generated@@90 $generated@@92)) (forall (($generated@@93 T@U) ) (! (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 $generated@@91 $generated@@93)) ($generated@@37 $generated@@93 $generated@@92)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 $generated@@91 $generated@@93)) +(assert (forall (($generated@@94 T@U) ($generated@@95 T@U) ($generated@@96 T@U) ($generated@@97 T@U) ($generated@@98 T@U) ) (! (=> (and ($generated@@74 $generated@@96) (and ($generated@@34 $generated@@98 $generated@@94) ($generated@@54 $generated@@63 $generated@@97 ($generated@@64 $generated@@94 $generated@@95)))) (= ($generated@@93 ($generated@@92 $generated@@94 $generated@@95 $generated@@29 $generated@@97 $generated@@98) $generated@@61) ($generated@@93 ($generated@@92 $generated@@94 $generated@@95 $generated@@96 $generated@@97 $generated@@98) $generated@@61))) + :pattern ( ($generated@@92 $generated@@94 $generated@@95 $generated@@29 $generated@@97 $generated@@98) ($generated@@74 $generated@@96)) + :pattern ( ($generated@@92 $generated@@94 $generated@@95 $generated@@96 $generated@@97 $generated@@98)) ))) - :pattern ( ($generated@@67 ($generated@@39 $generated@@35 $generated@@11) $generated@@91 ($generated@@90 $generated@@92))) +(assert (forall (($generated@@100 T@U) ($generated@@101 T@U) ($generated@@102 T@U) ($generated@@103 T@U) ) (! (= ($generated@@54 $generated@@55 ($generated@@99 $generated@@102 $generated@@103) ($generated@@56 $generated@@100 $generated@@101)) (and ($generated@@54 ($generated@@79 $generated@@32 $generated@@11) $generated@@102 ($generated@@80 $generated@@100)) ($generated@@54 $generated@@63 $generated@@103 ($generated@@73 $generated@@100 $generated@@101)))) + :pattern ( ($generated@@54 $generated@@55 ($generated@@99 $generated@@102 $generated@@103) ($generated@@56 $generated@@100 $generated@@101))) ))) -(assert (forall (($generated@@94 T@U) ($generated@@95 T@T) ) (! (= ($generated@@28 $generated@@95 $generated@@94) $generated@@94) - :pattern ( ($generated@@28 $generated@@95 $generated@@94)) +(assert (forall (($generated@@105 T@U) ) (! (= ($generated@@35 $generated@@105) (= ($generated@@104 $generated@@105) $generated@@5)) + :pattern ( ($generated@@35 $generated@@105)) ))) -(assert (forall (($generated@@98 T@U) ($generated@@99 T@U) ($generated@@100 T@U) ($generated@@101 T@U) ($generated@@102 T@U) ) (! (=> (and ($generated@@85 $generated@@100) (and ($generated@@37 $generated@@102 $generated@@98) ($generated@@67 $generated@@40 $generated@@101 ($generated@@75 $generated@@98 $generated@@99)))) (= ($generated@@97 ($generated@@96 $generated@@98 $generated@@99 $generated@@32 $generated@@101 $generated@@102) $generated@@73) ($generated@@97 ($generated@@96 $generated@@98 $generated@@99 $generated@@100 $generated@@101 $generated@@102) $generated@@73))) - :pattern ( ($generated@@96 $generated@@98 $generated@@99 $generated@@32 $generated@@101 $generated@@102) ($generated@@85 $generated@@100)) - :pattern ( ($generated@@96 $generated@@98 $generated@@99 $generated@@100 $generated@@101 $generated@@102)) +(assert (forall (($generated@@108 T@U) ($generated@@109 T@T) ) (! (= ($generated@@107 $generated@@109 ($generated@@106 $generated@@109 $generated@@108)) $generated@@108) + :pattern ( ($generated@@106 $generated@@109 $generated@@108)) ))) -(assert (forall (($generated@@104 T@U) ($generated@@105 T@U) ($generated@@106 T@U) ($generated@@107 T@U) ) (! (= ($generated@@67 $generated@@29 ($generated@@103 $generated@@106 $generated@@107) ($generated@@68 $generated@@104 $generated@@105)) (and ($generated@@67 ($generated@@39 $generated@@35 $generated@@11) $generated@@106 ($generated@@90 $generated@@104)) ($generated@@67 $generated@@40 $generated@@107 ($generated@@84 $generated@@104 $generated@@105)))) - :pattern ( ($generated@@67 $generated@@29 ($generated@@103 $generated@@106 $generated@@107) ($generated@@68 $generated@@104 $generated@@105))) +(assert (forall (($generated@@110 T@U) ) (! (=> ($generated@@35 $generated@@110) (exists (($generated@@111 T@U) ($generated@@112 T@U) ) (= $generated@@110 ($generated@@99 $generated@@111 $generated@@112)))) + :pattern ( ($generated@@35 $generated@@110)) ))) -(assert (forall (($generated@@109 T@U) ) (! (= ($generated@@38 $generated@@109) (= ($generated@@108 $generated@@109) $generated@@5)) - :pattern ( ($generated@@38 $generated@@109)) +(assert (forall (($generated@@113 T@U) ($generated@@114 T@U) ($generated@@115 T@U) ($generated@@116 T@U) ($generated@@117 T@U) ) (! (=> ($generated@@74 $generated@@117) (= ($generated@@72 $generated@@55 ($generated@@99 $generated@@115 $generated@@116) ($generated@@56 $generated@@113 $generated@@114) $generated@@117) (and ($generated@@72 ($generated@@79 $generated@@32 $generated@@11) $generated@@115 ($generated@@80 $generated@@113) $generated@@117) ($generated@@72 $generated@@63 $generated@@116 ($generated@@73 $generated@@113 $generated@@114) $generated@@117)))) + :pattern ( ($generated@@72 $generated@@55 ($generated@@99 $generated@@115 $generated@@116) ($generated@@56 $generated@@113 $generated@@114) $generated@@117)) ))) -(assert (forall (($generated@@112 T@U) ($generated@@113 T@T) ) (! (= ($generated@@111 $generated@@113 ($generated@@110 $generated@@113 $generated@@112)) $generated@@112) - :pattern ( ($generated@@110 $generated@@113 $generated@@112)) +(assert ($generated@@74 $generated@@29)) +(assert (forall (($generated@@119 T@U) ($generated@@120 T@U) ($generated@@121 T@U) ($generated@@122 T@T) ) (! (= ($generated@@118 ($generated@@107 $generated@@122 $generated@@119) $generated@@120 $generated@@121) ($generated@@72 $generated@@122 $generated@@119 $generated@@120 $generated@@121)) + :pattern ( ($generated@@118 ($generated@@107 $generated@@122 $generated@@119) $generated@@120 $generated@@121)) ))) -(assert (forall (($generated@@114 T@U) ) (! (=> ($generated@@38 $generated@@114) (exists (($generated@@115 T@U) ($generated@@116 T@U) ) (= $generated@@114 ($generated@@103 $generated@@115 $generated@@116)))) - :pattern ( ($generated@@38 $generated@@114)) +(assert (forall (($generated@@123 T@U) ($generated@@124 T@U) ($generated@@125 T@U) ($generated@@126 T@U) ) (! (= ($generated@@72 $generated@@63 $generated@@125 ($generated@@73 $generated@@123 $generated@@124) $generated@@126) ($generated@@72 $generated@@63 $generated@@125 ($generated@@64 $generated@@123 $generated@@124) $generated@@126)) + :pattern ( ($generated@@72 $generated@@63 $generated@@125 ($generated@@73 $generated@@123 $generated@@124) $generated@@126)) ))) -(assert (forall (($generated@@117 T@U) ($generated@@118 T@U) ($generated@@119 T@U) ($generated@@120 T@U) ($generated@@121 T@U) ) (! (=> ($generated@@85 $generated@@121) (= ($generated@@83 $generated@@29 ($generated@@103 $generated@@119 $generated@@120) ($generated@@68 $generated@@117 $generated@@118) $generated@@121) (and ($generated@@83 ($generated@@39 $generated@@35 $generated@@11) $generated@@119 ($generated@@90 $generated@@117) $generated@@121) ($generated@@83 $generated@@40 $generated@@120 ($generated@@84 $generated@@117 $generated@@118) $generated@@121)))) - :pattern ( ($generated@@83 $generated@@29 ($generated@@103 $generated@@119 $generated@@120) ($generated@@68 $generated@@117 $generated@@118) $generated@@121)) +(assert (forall (($generated@@128 T@U) ($generated@@129 T@U) ($generated@@130 T@U) ($generated@@131 T@U) ) (! (=> (and ($generated@@74 $generated@@131) ($generated@@72 $generated@@63 $generated@@128 ($generated@@64 $generated@@129 $generated@@130) $generated@@131)) (forall (($generated@@132 T@U) ) (! (=> (and ($generated@@118 $generated@@132 $generated@@129 $generated@@131) ($generated@@28 $generated@@129 $generated@@130 $generated@@131 $generated@@128 $generated@@132)) ($generated@@118 ($generated@@127 $generated@@129 $generated@@130 $generated@@131 $generated@@128 $generated@@132) $generated@@130 $generated@@131)) + :pattern ( ($generated@@127 $generated@@129 $generated@@130 $generated@@131 $generated@@128 $generated@@132)) ))) -(assert ($generated@@85 $generated@@32)) -(assert (forall (($generated@@123 T@U) ($generated@@124 T@U) ($generated@@125 T@U) ($generated@@126 T@T) ) (! (= ($generated@@122 ($generated@@111 $generated@@126 $generated@@123) $generated@@124 $generated@@125) ($generated@@83 $generated@@126 $generated@@123 $generated@@124 $generated@@125)) - :pattern ( ($generated@@122 ($generated@@111 $generated@@126 $generated@@123) $generated@@124 $generated@@125)) + :pattern ( ($generated@@72 $generated@@63 $generated@@128 ($generated@@64 $generated@@129 $generated@@130) $generated@@131)) ))) -(assert (forall (($generated@@127 T@U) ($generated@@128 T@U) ($generated@@129 T@U) ($generated@@130 T@U) ) (! (= ($generated@@83 $generated@@40 $generated@@129 ($generated@@84 $generated@@127 $generated@@128) $generated@@130) ($generated@@83 $generated@@40 $generated@@129 ($generated@@75 $generated@@127 $generated@@128) $generated@@130)) - :pattern ( ($generated@@83 $generated@@40 $generated@@129 ($generated@@84 $generated@@127 $generated@@128) $generated@@130)) +(assert (forall (($generated@@133 T@U) ($generated@@134 T@U) ($generated@@135 T@U) ) (! (= ($generated@@72 ($generated@@79 $generated@@32 $generated@@11) $generated@@133 ($generated@@80 $generated@@134) $generated@@135) (forall (($generated@@136 T@U) ) (! (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 $generated@@133 $generated@@136)) ($generated@@118 $generated@@136 $generated@@134 $generated@@135)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 $generated@@133 $generated@@136)) ))) -(assert (forall (($generated@@132 T@U) ($generated@@133 T@U) ($generated@@134 T@U) ($generated@@135 T@U) ) (! (=> (and ($generated@@85 $generated@@135) ($generated@@83 $generated@@40 $generated@@132 ($generated@@75 $generated@@133 $generated@@134) $generated@@135)) (forall (($generated@@136 T@U) ) (! (=> (and ($generated@@122 $generated@@136 $generated@@133 $generated@@135) ($generated@@31 $generated@@133 $generated@@134 $generated@@135 $generated@@132 $generated@@136)) ($generated@@122 ($generated@@131 $generated@@133 $generated@@134 $generated@@135 $generated@@132 $generated@@136) $generated@@134 $generated@@135)) - :pattern ( ($generated@@131 $generated@@133 $generated@@134 $generated@@135 $generated@@132 $generated@@136)) + :pattern ( ($generated@@72 ($generated@@79 $generated@@32 $generated@@11) $generated@@133 ($generated@@80 $generated@@134) $generated@@135)) ))) - :pattern ( ($generated@@83 $generated@@40 $generated@@132 ($generated@@75 $generated@@133 $generated@@134) $generated@@135)) +(assert (forall (($generated@@137 T@U) ($generated@@138 T@U) ) (! (=> ($generated@@93 $generated@@137 $generated@@138) (= $generated@@137 $generated@@138)) + :pattern ( ($generated@@93 $generated@@137 $generated@@138)) ))) -(assert (forall (($generated@@137 T@U) ($generated@@138 T@U) ($generated@@139 T@U) ) (! (= ($generated@@83 ($generated@@39 $generated@@35 $generated@@11) $generated@@137 ($generated@@90 $generated@@138) $generated@@139) (forall (($generated@@140 T@U) ) (! (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 $generated@@137 $generated@@140)) ($generated@@122 $generated@@140 $generated@@138 $generated@@139)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 $generated@@137 $generated@@140)) -))) - :pattern ( ($generated@@83 ($generated@@39 $generated@@35 $generated@@11) $generated@@137 ($generated@@90 $generated@@138) $generated@@139)) -))) -(assert (=> (<= 0 $generated@@26) (forall (($generated@@141 T@U) ($generated@@142 T@U) ($generated@@143 T@U) ) (! (=> ($generated@@30 $generated@@141 $generated@@142 $generated@@143) (and (forall (($generated@@144 T@U) ) (! (=> ($generated@@37 $generated@@144 $generated@@141) (and ($generated@@38 $generated@@143) (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@143) $generated@@144)) (and ($generated@@38 $generated@@143) true)))) - :pattern ( ($generated@@31 $generated@@141 $generated@@142 $generated@@32 ($generated@@33 $generated@@143) $generated@@144)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@143) $generated@@144)) -)) (= ($generated@@27 $generated@@141 $generated@@142 $generated@@143) (forall (($generated@@145 T@U) ) (! (=> (and ($generated@@37 $generated@@145 $generated@@141) ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@143) $generated@@145))) ($generated@@31 $generated@@141 $generated@@142 $generated@@32 ($generated@@33 $generated@@143) $generated@@145)) - :pattern ( ($generated@@31 $generated@@141 $generated@@142 $generated@@32 ($generated@@33 $generated@@143) $generated@@145)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@143) $generated@@145)) -))))) - :pattern ( ($generated@@27 $generated@@141 $generated@@142 $generated@@143)) -)))) -(assert (forall (($generated@@146 T@U) ($generated@@147 T@U) ) (! (=> ($generated@@97 $generated@@146 $generated@@147) (= $generated@@146 $generated@@147)) - :pattern ( ($generated@@97 $generated@@146 $generated@@147)) +(assert (forall (($generated@@139 T@U) ($generated@@140 T@U) ($generated@@141 T@U) ) (! (= ($generated@@54 $generated@@63 $generated@@139 ($generated@@64 $generated@@140 $generated@@141)) (forall (($generated@@142 T@U) ($generated@@143 T@U) ) (! (=> (and (and ($generated@@74 $generated@@142) ($generated@@34 $generated@@143 $generated@@140)) ($generated@@28 $generated@@140 $generated@@141 $generated@@142 $generated@@139 $generated@@143)) ($generated@@34 ($generated@@127 $generated@@140 $generated@@141 $generated@@142 $generated@@139 $generated@@143) $generated@@141)) + :pattern ( ($generated@@127 $generated@@140 $generated@@141 $generated@@142 $generated@@139 $generated@@143)) ))) -(assert (forall (($generated@@148 T@U) ($generated@@149 T@U) ($generated@@150 T@U) ) (! (= ($generated@@67 $generated@@40 $generated@@148 ($generated@@75 $generated@@149 $generated@@150)) (forall (($generated@@151 T@U) ($generated@@152 T@U) ) (! (=> (and (and ($generated@@85 $generated@@151) ($generated@@37 $generated@@152 $generated@@149)) ($generated@@31 $generated@@149 $generated@@150 $generated@@151 $generated@@148 $generated@@152)) ($generated@@37 ($generated@@131 $generated@@149 $generated@@150 $generated@@151 $generated@@148 $generated@@152) $generated@@150)) - :pattern ( ($generated@@131 $generated@@149 $generated@@150 $generated@@151 $generated@@148 $generated@@152)) + :pattern ( ($generated@@54 $generated@@63 $generated@@139 ($generated@@64 $generated@@140 $generated@@141))) ))) - :pattern ( ($generated@@67 $generated@@40 $generated@@148 ($generated@@75 $generated@@149 $generated@@150))) +(assert (forall (($generated@@144 T@U) ) (! (=> ($generated@@34 $generated@@144 $generated) (and (= ($generated@@107 $generated@@11 ($generated@@106 $generated@@11 $generated@@144)) $generated@@144) ($generated@@54 $generated@@11 ($generated@@106 $generated@@11 $generated@@144) $generated))) + :pattern ( ($generated@@34 $generated@@144 $generated)) ))) -(assert (forall (($generated@@153 T@U) ) (! (=> ($generated@@37 $generated@@153 $generated) (and (= ($generated@@111 $generated@@11 ($generated@@110 $generated@@11 $generated@@153)) $generated@@153) ($generated@@67 $generated@@11 ($generated@@110 $generated@@11 $generated@@153) $generated))) - :pattern ( ($generated@@37 $generated@@153 $generated)) +(assert (forall (($generated@@145 T@U) ($generated@@146 T@U) ($generated@@147 T@T) ) (! (= ($generated@@34 ($generated@@107 $generated@@147 $generated@@145) $generated@@146) ($generated@@54 $generated@@147 $generated@@145 $generated@@146)) + :pattern ( ($generated@@34 ($generated@@107 $generated@@147 $generated@@145) $generated@@146)) ))) -(assert (forall (($generated@@154 T@U) ($generated@@155 T@U) ($generated@@156 T@T) ) (! (= ($generated@@37 ($generated@@111 $generated@@156 $generated@@154) $generated@@155) ($generated@@67 $generated@@156 $generated@@154 $generated@@155)) - :pattern ( ($generated@@37 ($generated@@111 $generated@@156 $generated@@154) $generated@@155)) +(assert (forall (($generated@@149 T@U) ($generated@@150 T@U) ) (! (= ($generated@@148 ($generated@@64 $generated@@149 $generated@@150)) $generated@@149) + :pattern ( ($generated@@64 $generated@@149 $generated@@150)) ))) -(assert (forall (($generated@@158 T@U) ($generated@@159 T@U) ) (! (= ($generated@@157 ($generated@@75 $generated@@158 $generated@@159)) $generated@@158) - :pattern ( ($generated@@75 $generated@@158 $generated@@159)) +(assert (forall (($generated@@152 T@U) ($generated@@153 T@U) ) (! (= ($generated@@151 ($generated@@64 $generated@@152 $generated@@153)) $generated@@153) + :pattern ( ($generated@@64 $generated@@152 $generated@@153)) ))) -(assert (forall (($generated@@161 T@U) ($generated@@162 T@U) ) (! (= ($generated@@160 ($generated@@75 $generated@@161 $generated@@162)) $generated@@162) - :pattern ( ($generated@@75 $generated@@161 $generated@@162)) +(assert (forall (($generated@@155 T@U) ($generated@@156 T@U) ) (! (= ($generated@@154 ($generated@@73 $generated@@155 $generated@@156)) $generated@@155) + :pattern ( ($generated@@73 $generated@@155 $generated@@156)) ))) -(assert (forall (($generated@@164 T@U) ($generated@@165 T@U) ) (! (= ($generated@@163 ($generated@@84 $generated@@164 $generated@@165)) $generated@@164) - :pattern ( ($generated@@84 $generated@@164 $generated@@165)) +(assert (forall (($generated@@158 T@U) ($generated@@159 T@U) ) (! (= ($generated@@157 ($generated@@73 $generated@@158 $generated@@159)) $generated@@159) + :pattern ( ($generated@@73 $generated@@158 $generated@@159)) ))) -(assert (forall (($generated@@167 T@U) ($generated@@168 T@U) ) (! (= ($generated@@166 ($generated@@84 $generated@@167 $generated@@168)) $generated@@168) - :pattern ( ($generated@@84 $generated@@167 $generated@@168)) +(assert (forall (($generated@@160 T@U) ($generated@@161 T@U) ) (! (= ($generated@@104 ($generated@@99 $generated@@160 $generated@@161)) $generated@@5) + :pattern ( ($generated@@99 $generated@@160 $generated@@161)) ))) -(assert (forall (($generated@@169 T@U) ($generated@@170 T@U) ) (! (= ($generated@@108 ($generated@@103 $generated@@169 $generated@@170)) $generated@@5) - :pattern ( ($generated@@103 $generated@@169 $generated@@170)) +(assert (forall (($generated@@163 T@U) ($generated@@164 T@U) ) (! (= ($generated@@162 ($generated@@56 $generated@@163 $generated@@164)) $generated@@163) + :pattern ( ($generated@@56 $generated@@163 $generated@@164)) ))) -(assert (forall (($generated@@172 T@U) ($generated@@173 T@U) ) (! (= ($generated@@171 ($generated@@68 $generated@@172 $generated@@173)) $generated@@172) - :pattern ( ($generated@@68 $generated@@172 $generated@@173)) +(assert (forall (($generated@@166 T@U) ($generated@@167 T@U) ) (! (= ($generated@@165 ($generated@@56 $generated@@166 $generated@@167)) $generated@@167) + :pattern ( ($generated@@56 $generated@@166 $generated@@167)) ))) -(assert (forall (($generated@@175 T@U) ($generated@@176 T@U) ) (! (= ($generated@@174 ($generated@@68 $generated@@175 $generated@@176)) $generated@@176) - :pattern ( ($generated@@68 $generated@@175 $generated@@176)) +(assert (forall (($generated@@168 T@U) ($generated@@169 T@U) ) (! (= ($generated@@33 ($generated@@99 $generated@@168 $generated@@169)) $generated@@168) + :pattern ( ($generated@@99 $generated@@168 $generated@@169)) ))) -(assert (forall (($generated@@177 T@U) ($generated@@178 T@U) ) (! (= ($generated@@36 ($generated@@103 $generated@@177 $generated@@178)) $generated@@177) - :pattern ( ($generated@@103 $generated@@177 $generated@@178)) +(assert (forall (($generated@@170 T@U) ($generated@@171 T@U) ) (! (= ($generated@@30 ($generated@@99 $generated@@170 $generated@@171)) $generated@@171) + :pattern ( ($generated@@99 $generated@@170 $generated@@171)) ))) -(assert (forall (($generated@@179 T@U) ($generated@@180 T@U) ) (! (= ($generated@@33 ($generated@@103 $generated@@179 $generated@@180)) $generated@@180) - :pattern ( ($generated@@103 $generated@@179 $generated@@180)) +(assert (forall (($generated@@173 T@U) ) (! (= ($generated@@172 ($generated@@80 $generated@@173)) $generated@@173) + :pattern ( ($generated@@80 $generated@@173)) ))) -(assert (forall (($generated@@182 T@U) ) (! (= ($generated@@181 ($generated@@90 $generated@@182)) $generated@@182) - :pattern ( ($generated@@90 $generated@@182)) +(assert (forall (($generated@@174 T@U) ) (! (= ($generated@@53 ($generated@@80 $generated@@174)) $generated@@1) + :pattern ( ($generated@@80 $generated@@174)) ))) -(assert (forall (($generated@@183 T@U) ) (! (= ($generated@@66 ($generated@@90 $generated@@183)) $generated@@1) - :pattern ( ($generated@@90 $generated@@183)) +(assert (forall (($generated@@175 T@U) ($generated@@176 T@T) ) (! (= ($generated@@106 $generated@@176 ($generated@@107 $generated@@176 $generated@@175)) $generated@@175) + :pattern ( ($generated@@107 $generated@@176 $generated@@175)) ))) -(assert (forall (($generated@@184 T@U) ($generated@@185 T@T) ) (! (= ($generated@@110 $generated@@185 ($generated@@111 $generated@@185 $generated@@184)) $generated@@184) - :pattern ( ($generated@@111 $generated@@185 $generated@@184)) +(assert (forall (($generated@@178 T@U) ($generated@@179 T@U) ($generated@@180 T@U) ) (! (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 $generated@@178 ($generated@@107 $generated@@55 $generated@@180))) (< ($generated@@177 $generated@@180) ($generated@@177 ($generated@@99 $generated@@178 $generated@@179)))) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 $generated@@178 ($generated@@107 $generated@@55 $generated@@180)) ($generated@@99 $generated@@178 $generated@@179)) ))) -(assert (forall (($generated@@187 T@U) ($generated@@188 T@U) ($generated@@189 T@U) ) (! (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 $generated@@187 ($generated@@111 $generated@@29 $generated@@189))) (< ($generated@@186 $generated@@189) ($generated@@186 ($generated@@103 $generated@@187 $generated@@188)))) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 $generated@@187 ($generated@@111 $generated@@29 $generated@@189)) ($generated@@103 $generated@@187 $generated@@188)) +(assert (forall (($generated@@181 T@U) ($generated@@182 T@U) ($generated@@183 T@U) ) (! (= ($generated@@54 $generated@@63 $generated@@183 ($generated@@73 $generated@@181 $generated@@182)) (and ($generated@@54 $generated@@63 $generated@@183 ($generated@@64 $generated@@181 $generated@@182)) (forall (($generated@@184 T@U) ) (=> ($generated@@34 $generated@@184 $generated@@181) ($generated@@93 ($generated@@92 $generated@@181 $generated@@182 $generated@@29 $generated@@183 $generated@@184) $generated@@61))))) + :pattern ( ($generated@@54 $generated@@63 $generated@@183 ($generated@@73 $generated@@181 $generated@@182))) ))) -(assert (forall (($generated@@190 T@U) ($generated@@191 T@U) ($generated@@192 T@U) ) (! (= ($generated@@67 $generated@@40 $generated@@192 ($generated@@84 $generated@@190 $generated@@191)) (and ($generated@@67 $generated@@40 $generated@@192 ($generated@@75 $generated@@190 $generated@@191)) (forall (($generated@@193 T@U) ) (=> ($generated@@37 $generated@@193 $generated@@190) ($generated@@97 ($generated@@96 $generated@@190 $generated@@191 $generated@@32 $generated@@192 $generated@@193) $generated@@73))))) - :pattern ( ($generated@@67 $generated@@40 $generated@@192 ($generated@@84 $generated@@190 $generated@@191))) +(assert (and (= ($generated@@10 $generated@@185) 7) (= ($generated@@10 $generated@@187) 8))) +(assert (forall (($generated@@188 T@U) ($generated@@189 T@U) ($generated@@190 T@U) ($generated@@191 T@U) ) (! (=> ($generated@@74 $generated@@191) (= ($generated@@72 $generated@@63 $generated@@188 ($generated@@64 $generated@@189 $generated@@190) $generated@@191) (forall (($generated@@192 T@U) ) (! (=> (and (and ($generated@@34 $generated@@192 $generated@@189) ($generated@@118 $generated@@192 $generated@@189 $generated@@191)) ($generated@@28 $generated@@189 $generated@@190 $generated@@191 $generated@@188 $generated@@192)) (forall (($generated@@193 T@U) ) (! (=> (and (or (not (= $generated@@193 $generated@@186)) (not true)) ($generated@@60 ($generated@@92 $generated@@189 $generated@@190 $generated@@191 $generated@@188 $generated@@192) ($generated@@107 $generated@@185 $generated@@193))) ($generated@@15 ($generated@@106 $generated@@11 ($generated@@31 $generated@@187 $generated@@32 ($generated@@31 $generated@@185 ($generated@@79 $generated@@187 $generated@@32) $generated@@191 $generated@@193) $generated@@2)))) + :pattern ( ($generated@@60 ($generated@@92 $generated@@189 $generated@@190 $generated@@191 $generated@@188 $generated@@192) ($generated@@107 $generated@@185 $generated@@193))) ))) -(assert (and (= ($generated@@10 $generated@@194) 7) (= ($generated@@10 $generated@@196) 8))) -(assert (forall (($generated@@197 T@U) ($generated@@198 T@U) ($generated@@199 T@U) ($generated@@200 T@U) ) (! (=> ($generated@@85 $generated@@200) (= ($generated@@83 $generated@@40 $generated@@197 ($generated@@75 $generated@@198 $generated@@199) $generated@@200) (forall (($generated@@201 T@U) ) (! (=> (and (and ($generated@@37 $generated@@201 $generated@@198) ($generated@@122 $generated@@201 $generated@@198 $generated@@200)) ($generated@@31 $generated@@198 $generated@@199 $generated@@200 $generated@@197 $generated@@201)) (forall (($generated@@202 T@U) ) (! (=> (and (or (not (= $generated@@202 $generated@@195)) (not true)) ($generated@@72 ($generated@@96 $generated@@198 $generated@@199 $generated@@200 $generated@@197 $generated@@201) ($generated@@111 $generated@@194 $generated@@202))) ($generated@@15 ($generated@@110 $generated@@11 ($generated@@34 $generated@@196 $generated@@35 ($generated@@34 $generated@@194 ($generated@@39 $generated@@196 $generated@@35) $generated@@200 $generated@@202) $generated@@2)))) - :pattern ( ($generated@@72 ($generated@@96 $generated@@198 $generated@@199 $generated@@200 $generated@@197 $generated@@201) ($generated@@111 $generated@@194 $generated@@202))) -))) - :pattern ( ($generated@@131 $generated@@198 $generated@@199 $generated@@200 $generated@@197 $generated@@201)) - :pattern ( ($generated@@96 $generated@@198 $generated@@199 $generated@@200 $generated@@197 $generated@@201)) + :pattern ( ($generated@@127 $generated@@189 $generated@@190 $generated@@191 $generated@@188 $generated@@192)) + :pattern ( ($generated@@92 $generated@@189 $generated@@190 $generated@@191 $generated@@188 $generated@@192)) )))) - :pattern ( ($generated@@83 $generated@@40 $generated@@197 ($generated@@75 $generated@@198 $generated@@199) $generated@@200)) + :pattern ( ($generated@@72 $generated@@63 $generated@@188 ($generated@@64 $generated@@189 $generated@@190) $generated@@191)) ))) -(assert (forall (($generated@@203 T@U) ($generated@@204 T@U) ($generated@@205 T@U) ) (! (=> ($generated@@37 $generated@@205 ($generated@@75 $generated@@203 $generated@@204)) (and (= ($generated@@111 $generated@@40 ($generated@@110 $generated@@40 $generated@@205)) $generated@@205) ($generated@@67 $generated@@40 ($generated@@110 $generated@@40 $generated@@205) ($generated@@75 $generated@@203 $generated@@204)))) - :pattern ( ($generated@@37 $generated@@205 ($generated@@75 $generated@@203 $generated@@204))) +(assert (forall (($generated@@194 T@U) ($generated@@195 T@U) ($generated@@196 T@U) ) (! (=> ($generated@@34 $generated@@196 ($generated@@64 $generated@@194 $generated@@195)) (and (= ($generated@@107 $generated@@63 ($generated@@106 $generated@@63 $generated@@196)) $generated@@196) ($generated@@54 $generated@@63 ($generated@@106 $generated@@63 $generated@@196) ($generated@@64 $generated@@194 $generated@@195)))) + :pattern ( ($generated@@34 $generated@@196 ($generated@@64 $generated@@194 $generated@@195))) ))) -(assert (forall (($generated@@206 T@U) ($generated@@207 T@U) ($generated@@208 T@U) ) (! (=> ($generated@@37 $generated@@208 ($generated@@84 $generated@@206 $generated@@207)) (and (= ($generated@@111 $generated@@40 ($generated@@110 $generated@@40 $generated@@208)) $generated@@208) ($generated@@67 $generated@@40 ($generated@@110 $generated@@40 $generated@@208) ($generated@@84 $generated@@206 $generated@@207)))) - :pattern ( ($generated@@37 $generated@@208 ($generated@@84 $generated@@206 $generated@@207))) +(assert (forall (($generated@@197 T@U) ($generated@@198 T@U) ($generated@@199 T@U) ) (! (=> ($generated@@34 $generated@@199 ($generated@@73 $generated@@197 $generated@@198)) (and (= ($generated@@107 $generated@@63 ($generated@@106 $generated@@63 $generated@@199)) $generated@@199) ($generated@@54 $generated@@63 ($generated@@106 $generated@@63 $generated@@199) ($generated@@73 $generated@@197 $generated@@198)))) + :pattern ( ($generated@@34 $generated@@199 ($generated@@73 $generated@@197 $generated@@198))) ))) -(assert (forall (($generated@@209 T@U) ($generated@@210 T@U) ($generated@@211 T@U) ) (! (=> ($generated@@37 $generated@@211 ($generated@@68 $generated@@209 $generated@@210)) (and (= ($generated@@111 $generated@@29 ($generated@@110 $generated@@29 $generated@@211)) $generated@@211) ($generated@@67 $generated@@29 ($generated@@110 $generated@@29 $generated@@211) ($generated@@68 $generated@@209 $generated@@210)))) - :pattern ( ($generated@@37 $generated@@211 ($generated@@68 $generated@@209 $generated@@210))) +(assert (forall (($generated@@200 T@U) ($generated@@201 T@U) ($generated@@202 T@U) ) (! (=> ($generated@@34 $generated@@202 ($generated@@56 $generated@@200 $generated@@201)) (and (= ($generated@@107 $generated@@55 ($generated@@106 $generated@@55 $generated@@202)) $generated@@202) ($generated@@54 $generated@@55 ($generated@@106 $generated@@55 $generated@@202) ($generated@@56 $generated@@200 $generated@@201)))) + :pattern ( ($generated@@34 $generated@@202 ($generated@@56 $generated@@200 $generated@@201))) ))) -(assert (and (forall (($generated@@215 T@T) ($generated@@216 T@T) ($generated@@217 T@T) ($generated@@218 T@U) ($generated@@219 T@U) ($generated@@220 T@U) ($generated@@221 T@U) ) (! (= ($generated@@212 $generated@@215 $generated@@216 $generated@@217 ($generated@@214 $generated@@215 $generated@@216 $generated@@217 $generated@@219 $generated@@220 $generated@@221 $generated@@218) $generated@@220 $generated@@221) $generated@@218) +(assert (and (forall (($generated@@206 T@T) ($generated@@207 T@T) ($generated@@208 T@T) ($generated@@209 T@U) ($generated@@210 T@U) ($generated@@211 T@U) ($generated@@212 T@U) ) (! (= ($generated@@203 $generated@@206 $generated@@207 $generated@@208 ($generated@@205 $generated@@206 $generated@@207 $generated@@208 $generated@@210 $generated@@211 $generated@@212 $generated@@209) $generated@@211 $generated@@212) $generated@@209) :weight 0 -)) (and (forall (($generated@@222 T@T) ($generated@@223 T@T) ($generated@@224 T@T) ($generated@@225 T@U) ($generated@@226 T@U) ($generated@@227 T@U) ($generated@@228 T@U) ($generated@@229 T@U) ($generated@@230 T@U) ) (! (or (= $generated@@227 $generated@@229) (= ($generated@@212 $generated@@222 $generated@@223 $generated@@224 ($generated@@214 $generated@@222 $generated@@223 $generated@@224 $generated@@226 $generated@@227 $generated@@228 $generated@@225) $generated@@229 $generated@@230) ($generated@@212 $generated@@222 $generated@@223 $generated@@224 $generated@@226 $generated@@229 $generated@@230))) +)) (and (forall (($generated@@213 T@T) ($generated@@214 T@T) ($generated@@215 T@T) ($generated@@216 T@U) ($generated@@217 T@U) ($generated@@218 T@U) ($generated@@219 T@U) ($generated@@220 T@U) ($generated@@221 T@U) ) (! (or (= $generated@@218 $generated@@220) (= ($generated@@203 $generated@@213 $generated@@214 $generated@@215 ($generated@@205 $generated@@213 $generated@@214 $generated@@215 $generated@@217 $generated@@218 $generated@@219 $generated@@216) $generated@@220 $generated@@221) ($generated@@203 $generated@@213 $generated@@214 $generated@@215 $generated@@217 $generated@@220 $generated@@221))) :weight 0 -)) (forall (($generated@@231 T@T) ($generated@@232 T@T) ($generated@@233 T@T) ($generated@@234 T@U) ($generated@@235 T@U) ($generated@@236 T@U) ($generated@@237 T@U) ($generated@@238 T@U) ($generated@@239 T@U) ) (! (or (= $generated@@237 $generated@@239) (= ($generated@@212 $generated@@231 $generated@@232 $generated@@233 ($generated@@214 $generated@@231 $generated@@232 $generated@@233 $generated@@235 $generated@@236 $generated@@237 $generated@@234) $generated@@238 $generated@@239) ($generated@@212 $generated@@231 $generated@@232 $generated@@233 $generated@@235 $generated@@238 $generated@@239))) +)) (forall (($generated@@222 T@T) ($generated@@223 T@T) ($generated@@224 T@T) ($generated@@225 T@U) ($generated@@226 T@U) ($generated@@227 T@U) ($generated@@228 T@U) ($generated@@229 T@U) ($generated@@230 T@U) ) (! (or (= $generated@@228 $generated@@230) (= ($generated@@203 $generated@@222 $generated@@223 $generated@@224 ($generated@@205 $generated@@222 $generated@@223 $generated@@224 $generated@@226 $generated@@227 $generated@@228 $generated@@225) $generated@@229 $generated@@230) ($generated@@203 $generated@@222 $generated@@223 $generated@@224 $generated@@226 $generated@@229 $generated@@230))) :weight 0 ))))) -(assert (forall (($generated@@240 T@U) ($generated@@241 T@U) ($generated@@242 T@U) ($generated@@243 Bool) ($generated@@244 T@U) ($generated@@245 T@U) ) (! (= ($generated@@15 ($generated@@212 $generated@@194 $generated@@196 $generated@@11 ($generated@@213 $generated@@240 $generated@@241 $generated@@242 $generated@@243) $generated@@244 $generated@@245)) (=> (and (or (not (= $generated@@244 $generated@@240)) (not true)) ($generated@@15 ($generated@@110 $generated@@11 ($generated@@34 $generated@@196 $generated@@35 ($generated@@34 $generated@@194 ($generated@@39 $generated@@196 $generated@@35) $generated@@241 $generated@@244) $generated@@242)))) $generated@@243)) - :pattern ( ($generated@@212 $generated@@194 $generated@@196 $generated@@11 ($generated@@213 $generated@@240 $generated@@241 $generated@@242 $generated@@243) $generated@@244 $generated@@245)) -))) -(assert (forall (($generated@@247 T@U) ($generated@@248 T@U) ) (! (and (= ($generated@@66 ($generated@@75 $generated@@247 $generated@@248)) $generated@@3) (= ($generated@@246 ($generated@@75 $generated@@247 $generated@@248)) $generated@@7)) - :pattern ( ($generated@@75 $generated@@247 $generated@@248)) +(assert (forall (($generated@@231 T@U) ($generated@@232 T@U) ($generated@@233 T@U) ($generated@@234 Bool) ($generated@@235 T@U) ($generated@@236 T@U) ) (! (= ($generated@@15 ($generated@@203 $generated@@185 $generated@@187 $generated@@11 ($generated@@204 $generated@@231 $generated@@232 $generated@@233 $generated@@234) $generated@@235 $generated@@236)) (=> (and (or (not (= $generated@@235 $generated@@231)) (not true)) ($generated@@15 ($generated@@106 $generated@@11 ($generated@@31 $generated@@187 $generated@@32 ($generated@@31 $generated@@185 ($generated@@79 $generated@@187 $generated@@32) $generated@@232 $generated@@235) $generated@@233)))) $generated@@234)) + :pattern ( ($generated@@203 $generated@@185 $generated@@187 $generated@@11 ($generated@@204 $generated@@231 $generated@@232 $generated@@233 $generated@@234) $generated@@235 $generated@@236)) ))) -(assert (forall (($generated@@249 T@U) ($generated@@250 T@U) ) (! (and (= ($generated@@66 ($generated@@84 $generated@@249 $generated@@250)) $generated@@4) (= ($generated@@246 ($generated@@84 $generated@@249 $generated@@250)) $generated@@8)) - :pattern ( ($generated@@84 $generated@@249 $generated@@250)) +(assert (forall (($generated@@238 T@U) ($generated@@239 T@U) ) (! (and (= ($generated@@53 ($generated@@64 $generated@@238 $generated@@239)) $generated@@3) (= ($generated@@237 ($generated@@64 $generated@@238 $generated@@239)) $generated@@7)) + :pattern ( ($generated@@64 $generated@@238 $generated@@239)) ))) -(assert (forall (($generated@@251 T@U) ($generated@@252 T@U) ) (! (and (= ($generated@@66 ($generated@@68 $generated@@251 $generated@@252)) $generated@@6) (= ($generated@@246 ($generated@@68 $generated@@251 $generated@@252)) $generated@@9)) - :pattern ( ($generated@@68 $generated@@251 $generated@@252)) +(assert (forall (($generated@@240 T@U) ($generated@@241 T@U) ) (! (and (= ($generated@@53 ($generated@@73 $generated@@240 $generated@@241)) $generated@@4) (= ($generated@@237 ($generated@@73 $generated@@240 $generated@@241)) $generated@@8)) + :pattern ( ($generated@@73 $generated@@240 $generated@@241)) ))) -(assert (forall (($generated@@253 T@U) ($generated@@254 T@U) ($generated@@255 T@U) ($generated@@256 T@U) ($generated@@257 T@U) ) (! (=> (and (and ($generated@@85 $generated@@255) (and ($generated@@37 $generated@@257 $generated@@253) ($generated@@67 $generated@@40 $generated@@256 ($generated@@75 $generated@@253 $generated@@254)))) ($generated@@97 ($generated@@96 $generated@@253 $generated@@254 $generated@@32 $generated@@256 $generated@@257) $generated@@73)) (= ($generated@@31 $generated@@253 $generated@@254 $generated@@32 $generated@@256 $generated@@257) ($generated@@31 $generated@@253 $generated@@254 $generated@@255 $generated@@256 $generated@@257))) - :pattern ( ($generated@@31 $generated@@253 $generated@@254 $generated@@32 $generated@@256 $generated@@257) ($generated@@85 $generated@@255)) - :pattern ( ($generated@@31 $generated@@253 $generated@@254 $generated@@255 $generated@@256 $generated@@257)) +(assert (forall (($generated@@242 T@U) ($generated@@243 T@U) ) (! (and (= ($generated@@53 ($generated@@56 $generated@@242 $generated@@243)) $generated@@6) (= ($generated@@237 ($generated@@56 $generated@@242 $generated@@243)) $generated@@9)) + :pattern ( ($generated@@56 $generated@@242 $generated@@243)) ))) -(assert (forall (($generated@@258 T@U) ($generated@@259 T@U) ) (! (=> ($generated@@37 $generated@@258 ($generated@@90 $generated@@259)) (and (= ($generated@@111 ($generated@@39 $generated@@35 $generated@@11) ($generated@@110 ($generated@@39 $generated@@35 $generated@@11) $generated@@258)) $generated@@258) ($generated@@67 ($generated@@39 $generated@@35 $generated@@11) ($generated@@110 ($generated@@39 $generated@@35 $generated@@11) $generated@@258) ($generated@@90 $generated@@259)))) - :pattern ( ($generated@@37 $generated@@258 ($generated@@90 $generated@@259))) +(assert (forall (($generated@@244 T@U) ($generated@@245 T@U) ($generated@@246 T@U) ($generated@@247 T@U) ($generated@@248 T@U) ) (! (=> (and (and ($generated@@74 $generated@@246) (and ($generated@@34 $generated@@248 $generated@@244) ($generated@@54 $generated@@63 $generated@@247 ($generated@@64 $generated@@244 $generated@@245)))) ($generated@@93 ($generated@@92 $generated@@244 $generated@@245 $generated@@29 $generated@@247 $generated@@248) $generated@@61)) (= ($generated@@28 $generated@@244 $generated@@245 $generated@@29 $generated@@247 $generated@@248) ($generated@@28 $generated@@244 $generated@@245 $generated@@246 $generated@@247 $generated@@248))) + :pattern ( ($generated@@28 $generated@@244 $generated@@245 $generated@@29 $generated@@247 $generated@@248) ($generated@@74 $generated@@246)) + :pattern ( ($generated@@28 $generated@@244 $generated@@245 $generated@@246 $generated@@247 $generated@@248)) ))) -(assert (forall (($generated@@260 T@U) ($generated@@261 T@U) ) (! (= ($generated@@97 $generated@@260 $generated@@261) (forall (($generated@@262 T@U) ) (! (= ($generated@@72 $generated@@260 $generated@@262) ($generated@@72 $generated@@261 $generated@@262)) - :pattern ( ($generated@@72 $generated@@260 $generated@@262)) - :pattern ( ($generated@@72 $generated@@261 $generated@@262)) +(assert (forall (($generated@@249 T@U) ($generated@@250 T@U) ) (! (=> ($generated@@34 $generated@@249 ($generated@@80 $generated@@250)) (and (= ($generated@@107 ($generated@@79 $generated@@32 $generated@@11) ($generated@@106 ($generated@@79 $generated@@32 $generated@@11) $generated@@249)) $generated@@249) ($generated@@54 ($generated@@79 $generated@@32 $generated@@11) ($generated@@106 ($generated@@79 $generated@@32 $generated@@11) $generated@@249) ($generated@@80 $generated@@250)))) + :pattern ( ($generated@@34 $generated@@249 ($generated@@80 $generated@@250))) ))) - :pattern ( ($generated@@97 $generated@@260 $generated@@261)) +(assert (forall (($generated@@251 T@U) ($generated@@252 T@U) ) (! (= ($generated@@93 $generated@@251 $generated@@252) (forall (($generated@@253 T@U) ) (! (= ($generated@@60 $generated@@251 $generated@@253) ($generated@@60 $generated@@252 $generated@@253)) + :pattern ( ($generated@@60 $generated@@251 $generated@@253)) + :pattern ( ($generated@@60 $generated@@252 $generated@@253)) ))) -(assert (forall (($generated@@263 T@U) ($generated@@264 T@U) ) (! (= ($generated@@103 ($generated@@28 ($generated@@39 $generated@@35 $generated@@11) $generated@@263) ($generated@@28 $generated@@40 $generated@@264)) ($generated@@28 $generated@@29 ($generated@@103 $generated@@263 $generated@@264))) - :pattern ( ($generated@@103 ($generated@@28 ($generated@@39 $generated@@35 $generated@@11) $generated@@263) ($generated@@28 $generated@@40 $generated@@264))) + :pattern ( ($generated@@93 $generated@@251 $generated@@252)) ))) -(assert (forall (($generated@@265 T@U) ($generated@@266 T@T) ) (! (= ($generated@@111 $generated@@266 ($generated@@28 $generated@@266 $generated@@265)) ($generated@@28 $generated@@35 ($generated@@111 $generated@@266 $generated@@265))) - :pattern ( ($generated@@111 $generated@@266 ($generated@@28 $generated@@266 $generated@@265))) +(assert (forall (($generated@@254 T@U) ($generated@@255 T@U) ($generated@@256 T@U) ) (! (=> (and ($generated@@74 $generated@@256) (and ($generated@@35 $generated@@254) (exists (($generated@@257 T@U) ) (! ($generated@@72 $generated@@55 $generated@@254 ($generated@@56 $generated@@255 $generated@@257) $generated@@256) + :pattern ( ($generated@@72 $generated@@55 $generated@@254 ($generated@@56 $generated@@255 $generated@@257) $generated@@256)) +)))) ($generated@@72 ($generated@@79 $generated@@32 $generated@@11) ($generated@@33 $generated@@254) ($generated@@80 $generated@@255) $generated@@256)) + :pattern ( ($generated@@72 ($generated@@79 $generated@@32 $generated@@11) ($generated@@33 $generated@@254) ($generated@@80 $generated@@255) $generated@@256)) ))) -(assert (forall (($generated@@267 T@U) ($generated@@268 T@U) ($generated@@269 T@U) ) (! (=> (and ($generated@@85 $generated@@269) (and ($generated@@38 $generated@@267) (exists (($generated@@270 T@U) ) (! ($generated@@83 $generated@@29 $generated@@267 ($generated@@68 $generated@@268 $generated@@270) $generated@@269) - :pattern ( ($generated@@83 $generated@@29 $generated@@267 ($generated@@68 $generated@@268 $generated@@270) $generated@@269)) -)))) ($generated@@83 ($generated@@39 $generated@@35 $generated@@11) ($generated@@36 $generated@@267) ($generated@@90 $generated@@268) $generated@@269)) - :pattern ( ($generated@@83 ($generated@@39 $generated@@35 $generated@@11) ($generated@@36 $generated@@267) ($generated@@90 $generated@@268) $generated@@269)) +(assert (forall (($generated@@258 T@U) ($generated@@259 T@U) ) (! ($generated@@72 $generated@@11 $generated@@259 $generated $generated@@258) + :pattern ( ($generated@@72 $generated@@11 $generated@@259 $generated $generated@@258)) ))) -(assert (forall (($generated@@271 T@U) ($generated@@272 T@U) ) (! ($generated@@83 $generated@@11 $generated@@272 $generated $generated@@271) - :pattern ( ($generated@@83 $generated@@11 $generated@@272 $generated $generated@@271)) -))) -(assert (forall (($generated@@273 T@U) ) (! ($generated@@67 $generated@@11 $generated@@273 $generated) - :pattern ( ($generated@@67 $generated@@11 $generated@@273 $generated)) +(assert (forall (($generated@@260 T@U) ) (! ($generated@@54 $generated@@11 $generated@@260 $generated) + :pattern ( ($generated@@54 $generated@@11 $generated@@260 $generated)) ))) (push 1) (declare-fun ControlFlow (Int Int) Int) -(declare-fun $generated@@274 () T@U) -(declare-fun $generated@@275 () T@U) -(declare-fun $generated@@276 () T@U) -(declare-fun $generated@@277 () T@U) -(declare-fun $generated@@278 () Bool) -(declare-fun $generated@@279 () T@U) -(declare-fun $generated@@280 () Bool) -(declare-fun $generated@@281 () T@U) -(declare-fun $generated@@282 (T@U) Bool) +(declare-fun $generated@@261 () T@U) +(declare-fun $generated@@262 () T@U) +(declare-fun $generated@@263 () T@U) +(declare-fun $generated@@264 () T@U) +(declare-fun $generated@@265 () Bool) +(declare-fun $generated@@266 () T@U) +(declare-fun $generated@@267 () Bool) +(declare-fun $generated@@268 () T@U) +(declare-fun $generated@@269 (T@U) Bool) (set-option :timeout 0) (set-option :rlimit 0) (set-option :auto_config false) @@ -1414,24 +1393,24 @@ $generated@@456)))))))) (set-option :pp.bv_literals false) (set-option :smt.arith.solver 2) (assert (not - (=> (= (ControlFlow 0 0) 9) (let (($generated@@283 (=> (forall (($generated@@284 T@U) ) (! (=> ($generated@@37 $generated@@284 $generated@@274) (and ($generated@@38 $generated@@277) (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@284)) (and ($generated@@38 $generated@@277) true)))) - :pattern ( ($generated@@31 $generated@@274 $generated@@275 $generated@@276 ($generated@@33 $generated@@277) $generated@@284)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@284)) -)) (=> (and (and (forall (($generated@@285 T@U) ) (! (=> ($generated@@37 $generated@@285 $generated@@274) (and ($generated@@38 $generated@@277) (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@285)) (and ($generated@@38 $generated@@277) true)))) - :pattern ( ($generated@@31 $generated@@274 $generated@@275 $generated@@276 ($generated@@33 $generated@@277) $generated@@285)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@285)) -)) (= ($generated@@27 $generated@@274 $generated@@275 $generated@@277) (forall (($generated@@286 T@U) ) (! (=> (and ($generated@@37 $generated@@286 $generated@@274) ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@286))) ($generated@@31 $generated@@274 $generated@@275 $generated@@276 ($generated@@33 $generated@@277) $generated@@286)) - :pattern ( ($generated@@31 $generated@@274 $generated@@275 $generated@@276 ($generated@@33 $generated@@277) $generated@@286)) - :pattern ( ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@286)) -)))) (and ($generated@@67 $generated@@11 ($generated@@14 ($generated@@27 $generated@@274 $generated@@275 $generated@@277)) $generated) (= (ControlFlow 0 3) (- 0 2)))) $generated@@278)))) -(let (($generated@@287 (=> (not ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@279))) (=> (and (= $generated@@278 true) (= (ControlFlow 0 6) 3)) $generated@@283)))) -(let (($generated@@288 (=> ($generated@@15 ($generated@@34 $generated@@35 $generated@@11 ($generated@@36 $generated@@277) $generated@@279)) (=> (and (and ($generated@@38 $generated@@277) ($generated@@38 $generated@@277)) (and ($generated@@122 ($generated@@111 $generated@@40 ($generated@@33 $generated@@277)) ($generated@@75 $generated@@274 $generated@@275) $generated@@276) ($generated@@122 $generated@@279 $generated@@274 $generated@@276))) (=> (and (and (and ($generated@@38 $generated@@277) true) (= $generated@@280 (forall (($generated@@289 T@U) ($generated@@290 T@U) ) (=> (and (and (or (not (= $generated@@289 $generated@@195)) (not true)) ($generated@@15 ($generated@@110 $generated@@11 ($generated@@34 $generated@@196 $generated@@35 ($generated@@34 $generated@@194 ($generated@@39 $generated@@196 $generated@@35) $generated@@276 $generated@@289) $generated@@2)))) ($generated@@72 ($generated@@96 $generated@@274 $generated@@275 $generated@@276 ($generated@@33 $generated@@277) $generated@@279) ($generated@@111 $generated@@194 $generated@@289))) ($generated@@15 ($generated@@212 $generated@@194 $generated@@196 $generated@@11 $generated@@281 $generated@@289 $generated@@290)))))) (and (= $generated@@278 $generated@@280) (= (ControlFlow 0 5) 3))) $generated@@283))))) -(let (($generated@@291 (=> (and (and ($generated@@37 $generated@@279 $generated@@274) ($generated@@122 $generated@@279 $generated@@274 $generated@@276)) (and ($generated@@38 $generated@@277) ($generated@@38 $generated@@277))) (and (=> (= (ControlFlow 0 7) 5) $generated@@288) (=> (= (ControlFlow 0 7) 6) $generated@@287))))) -(let (($generated@@292 (=> (not (and ($generated@@37 $generated@@279 $generated@@274) ($generated@@122 $generated@@279 $generated@@274 $generated@@276))) (=> (and (= $generated@@278 true) (= (ControlFlow 0 4) 3)) $generated@@283)))) -(let (($generated@@293 true)) -(let (($generated@@294 (=> (= $generated@@281 ($generated@@213 $generated@@195 $generated@@276 $generated@@2 false)) (and (and (=> (= (ControlFlow 0 8) 1) $generated@@293) (=> (= (ControlFlow 0 8) 7) $generated@@291)) (=> (= (ControlFlow 0 8) 4) $generated@@292))))) -(let (($generated@@295 (=> (and ($generated@@85 $generated@@276) ($generated@@282 $generated@@276)) (=> (and (and ($generated@@67 $generated@@29 $generated@@277 ($generated@@68 $generated@@274 $generated@@275)) ($generated@@83 $generated@@29 $generated@@277 ($generated@@68 $generated@@274 $generated@@275) $generated@@276)) (and (= 0 $generated@@26) (= (ControlFlow 0 9) 8))) $generated@@294)))) -$generated@@295))))))))) + (=> (= (ControlFlow 0 0) 9) (let (($generated@@270 (=> (forall (($generated@@271 T@U) ) (! (=> ($generated@@34 $generated@@271 $generated@@261) (and ($generated@@35 $generated@@264) (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@271)) (and ($generated@@35 $generated@@264) true)))) + :pattern ( ($generated@@28 $generated@@261 $generated@@262 $generated@@263 ($generated@@30 $generated@@264) $generated@@271)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@271)) +)) (=> (and (and (forall (($generated@@272 T@U) ) (! (=> ($generated@@34 $generated@@272 $generated@@261) (and ($generated@@35 $generated@@264) (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@272)) (and ($generated@@35 $generated@@264) true)))) + :pattern ( ($generated@@28 $generated@@261 $generated@@262 $generated@@263 ($generated@@30 $generated@@264) $generated@@272)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@272)) +)) (= ($generated@@26 $generated@@261 $generated@@262 $generated@@264) (forall (($generated@@273 T@U) ) (! (=> (and ($generated@@34 $generated@@273 $generated@@261) ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@273))) ($generated@@28 $generated@@261 $generated@@262 $generated@@263 ($generated@@30 $generated@@264) $generated@@273)) + :pattern ( ($generated@@28 $generated@@261 $generated@@262 $generated@@263 ($generated@@30 $generated@@264) $generated@@273)) + :pattern ( ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@273)) +)))) (and ($generated@@54 $generated@@11 ($generated@@14 ($generated@@26 $generated@@261 $generated@@262 $generated@@264)) $generated) (= (ControlFlow 0 3) (- 0 2)))) $generated@@265)))) +(let (($generated@@274 (=> (not ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@266))) (=> (and (= $generated@@265 true) (= (ControlFlow 0 6) 3)) $generated@@270)))) +(let (($generated@@275 (=> ($generated@@15 ($generated@@31 $generated@@32 $generated@@11 ($generated@@33 $generated@@264) $generated@@266)) (=> (and (and ($generated@@35 $generated@@264) ($generated@@35 $generated@@264)) (and ($generated@@118 ($generated@@107 $generated@@63 ($generated@@30 $generated@@264)) ($generated@@64 $generated@@261 $generated@@262) $generated@@263) ($generated@@118 $generated@@266 $generated@@261 $generated@@263))) (=> (and (and (and ($generated@@35 $generated@@264) true) (= $generated@@267 (forall (($generated@@276 T@U) ($generated@@277 T@U) ) (=> (and (and (or (not (= $generated@@276 $generated@@186)) (not true)) ($generated@@15 ($generated@@106 $generated@@11 ($generated@@31 $generated@@187 $generated@@32 ($generated@@31 $generated@@185 ($generated@@79 $generated@@187 $generated@@32) $generated@@263 $generated@@276) $generated@@2)))) ($generated@@60 ($generated@@92 $generated@@261 $generated@@262 $generated@@263 ($generated@@30 $generated@@264) $generated@@266) ($generated@@107 $generated@@185 $generated@@276))) ($generated@@15 ($generated@@203 $generated@@185 $generated@@187 $generated@@11 $generated@@268 $generated@@276 $generated@@277)))))) (and (= $generated@@265 $generated@@267) (= (ControlFlow 0 5) 3))) $generated@@270))))) +(let (($generated@@278 (=> (and (and ($generated@@34 $generated@@266 $generated@@261) ($generated@@118 $generated@@266 $generated@@261 $generated@@263)) (and ($generated@@35 $generated@@264) ($generated@@35 $generated@@264))) (and (=> (= (ControlFlow 0 7) 5) $generated@@275) (=> (= (ControlFlow 0 7) 6) $generated@@274))))) +(let (($generated@@279 (=> (not (and ($generated@@34 $generated@@266 $generated@@261) ($generated@@118 $generated@@266 $generated@@261 $generated@@263))) (=> (and (= $generated@@265 true) (= (ControlFlow 0 4) 3)) $generated@@270)))) +(let (($generated@@280 true)) +(let (($generated@@281 (=> (= $generated@@268 ($generated@@204 $generated@@186 $generated@@263 $generated@@2 false)) (and (and (=> (= (ControlFlow 0 8) 1) $generated@@280) (=> (= (ControlFlow 0 8) 7) $generated@@278)) (=> (= (ControlFlow 0 8) 4) $generated@@279))))) +(let (($generated@@282 (=> (and ($generated@@74 $generated@@263) ($generated@@269 $generated@@263)) (=> (and (and ($generated@@54 $generated@@55 $generated@@264 ($generated@@56 $generated@@261 $generated@@262)) ($generated@@72 $generated@@55 $generated@@264 ($generated@@56 $generated@@261 $generated@@262) $generated@@263)) (= (ControlFlow 0 9) 8)) $generated@@281)))) +$generated@@282))))))))) )) (check-sat) (get-info :rlimit) @@ -1492,76 +1471,75 @@ $generated@@295))))))))) (declare-fun $generated@@22 (T@U) Int) (declare-fun $generated@@23 (Real) T@U) (declare-fun $generated@@24 (T@U) Real) -(declare-fun $generated@@31 () Int) +(declare-fun $generated@@31 (T@U T@U T@U) Bool) (declare-fun $generated@@32 (T@U T@U T@U) Bool) -(declare-fun $generated@@33 (T@T T@U) T@U) -(declare-fun $generated@@34 () T@T) -(declare-fun $generated@@35 (T@U T@U T@U) Bool) -(declare-fun $generated@@36 (T@U T@U T@U T@U T@U) Bool) -(declare-fun $generated@@37 () T@U) +(declare-fun $generated@@33 (T@U T@U T@U T@U T@U) Bool) +(declare-fun $generated@@34 () T@U) +(declare-fun $generated@@35 (T@U) T@U) +(declare-fun $generated@@36 (T@T T@T T@U T@U) T@U) +(declare-fun $generated@@37 () T@T) (declare-fun $generated@@38 (T@U) T@U) -(declare-fun $generated@@39 (T@T T@T T@U T@U) T@U) -(declare-fun $generated@@40 () T@T) -(declare-fun $generated@@41 (T@U) T@U) -(declare-fun $generated@@42 (T@U T@U) Bool) -(declare-fun $generated@@43 (T@U) Bool) -(declare-fun $generated@@44 (T@T T@T) T@T) -(declare-fun $generated@@45 () T@T) -(declare-fun $generated@@46 (T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@47 (T@T) T@T) -(declare-fun $generated@@48 (T@T) T@T) -(declare-fun $generated@@71 (T@U T@U) Bool) -(declare-fun $generated@@72 (T@U T@U T@U T@U T@U) T@U) -(declare-fun $generated@@73 (T@U T@U T@U) T@U) -(declare-fun $generated@@74 (T@T T@T T@T T@U T@U T@U) T@U) -(declare-fun $generated@@75 () T@T) -(declare-fun $generated@@76 () T@T) -(declare-fun $generated@@77 () T@T) -(declare-fun $generated@@78 (T@T T@T T@T T@U T@U T@U T@U) T@U) -(declare-fun $generated@@112 (T@T T@U T@U) Bool) -(declare-fun $generated@@113 (T@U T@U) T@U) +(declare-fun $generated@@39 (T@U T@U) Bool) +(declare-fun $generated@@40 (T@U) Bool) +(declare-fun $generated@@41 (T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@58 (T@U T@U) Bool) +(declare-fun $generated@@59 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@60 (T@U T@U T@U) T@U) +(declare-fun $generated@@61 (T@T T@T T@T T@U T@U T@U) T@U) +(declare-fun $generated@@62 (T@T T@T) T@T) +(declare-fun $generated@@63 () T@T) +(declare-fun $generated@@64 () T@T) +(declare-fun $generated@@65 () T@T) +(declare-fun $generated@@66 (T@T T@T T@T T@U T@U T@U T@U) T@U) +(declare-fun $generated@@67 (T@T) T@T) +(declare-fun $generated@@68 (T@T) T@T) +(declare-fun $generated@@108 (T@T T@U T@U) Bool) +(declare-fun $generated@@109 () T@T) +(declare-fun $generated@@110 (T@U T@U) T@U) +(declare-fun $generated@@114 () T@U) +(declare-fun $generated@@116 (T@U) T@U) (declare-fun $generated@@117 () T@U) -(declare-fun $generated@@119 (T@U) T@U) -(declare-fun $generated@@120 () T@U) -(declare-fun $generated@@121 (T@U T@U) T@U) -(declare-fun $generated@@129 (T@T T@U T@U T@U) Bool) -(declare-fun $generated@@130 () T@U) -(declare-fun $generated@@131 () T@U) -(declare-fun $generated@@134 () T@U) -(declare-fun $generated@@135 () T@U) -(declare-fun $generated@@136 (T@T T@U) T@U) -(declare-fun $generated@@139 (T@U T@U) T@U) -(declare-fun $generated@@140 (T@U) Bool) -(declare-fun $generated@@145 (T@U T@U) Bool) -(declare-fun $generated@@149 (T@U) T@U) -(declare-fun $generated@@155 (T@U T@U) Bool) -(declare-fun $generated@@161 (T@U T@U) T@U) -(declare-fun $generated@@167 (T@T T@U) T@U) -(declare-fun $generated@@189 (T@U) T@U) -(declare-fun $generated@@193 (T@T T@U T@U) T@U) -(declare-fun $generated@@194 () T@T) -(declare-fun $generated@@203 (T@U T@U T@U) Bool) -(declare-fun $generated@@233 (T@U T@U T@U T@U T@U) T@U) -(declare-fun $generated@@250 (T@U) T@U) -(declare-fun $generated@@273 (Bool) T@U) -(declare-fun $generated@@276 (T@U) T@U) -(declare-fun $generated@@312 (T@U) T@U) -(declare-fun $generated@@315 (T@U) T@U) -(declare-fun $generated@@318 (T@U) T@U) -(declare-fun $generated@@321 (T@U) T@U) -(declare-fun $generated@@326 (T@U) T@U) -(declare-fun $generated@@329 (T@U) T@U) -(declare-fun $generated@@337 (T@U) T@U) -(declare-fun $generated@@339 (T@U) T@U) -(declare-fun $generated@@341 (T@U) T@U) -(declare-fun $generated@@346 (T@U) Int) -(declare-fun $generated@@354 (T@U) T@U) -(declare-fun $generated@@373 () T@U) -(declare-fun $generated@@375 (T@U T@U T@U Bool) T@U) -(declare-fun $generated@@382 (T@U) T@U) -(declare-fun $generated@@412 (T@U) T@U) -(declare-fun $generated@@416 (T@U) T@U) -(declare-fun $generated@@420 (T@U Bool) T@U) +(declare-fun $generated@@118 () T@T) +(declare-fun $generated@@119 (T@U T@U) T@U) +(declare-fun $generated@@127 (T@T T@U T@U T@U) Bool) +(declare-fun $generated@@128 () T@U) +(declare-fun $generated@@129 () T@U) +(declare-fun $generated@@132 () T@U) +(declare-fun $generated@@133 () T@U) +(declare-fun $generated@@134 (T@T T@U) T@U) +(declare-fun $generated@@137 (T@U T@U) T@U) +(declare-fun $generated@@138 (T@U) Bool) +(declare-fun $generated@@143 (T@U T@U) Bool) +(declare-fun $generated@@147 (T@U) T@U) +(declare-fun $generated@@151 (T@T T@U) T@U) +(declare-fun $generated@@154 (T@U T@U) Bool) +(declare-fun $generated@@160 (T@U T@U) T@U) +(declare-fun $generated@@166 (T@T T@U) T@U) +(declare-fun $generated@@188 (T@U) T@U) +(declare-fun $generated@@192 (T@T T@U T@U) T@U) +(declare-fun $generated@@193 () T@T) +(declare-fun $generated@@202 (T@U T@U T@U) Bool) +(declare-fun $generated@@237 (T@U T@U T@U T@U T@U) T@U) +(declare-fun $generated@@254 (T@U) T@U) +(declare-fun $generated@@277 (Bool) T@U) +(declare-fun $generated@@280 (T@U) T@U) +(declare-fun $generated@@311 (T@U) T@U) +(declare-fun $generated@@314 (T@U) T@U) +(declare-fun $generated@@317 (T@U) T@U) +(declare-fun $generated@@320 (T@U) T@U) +(declare-fun $generated@@325 (T@U) T@U) +(declare-fun $generated@@328 (T@U) T@U) +(declare-fun $generated@@336 (T@U) T@U) +(declare-fun $generated@@338 (T@U) T@U) +(declare-fun $generated@@340 (T@U) T@U) +(declare-fun $generated@@345 (T@U) Int) +(declare-fun $generated@@353 (T@U) T@U) +(declare-fun $generated@@372 () T@U) +(declare-fun $generated@@374 (T@U T@U T@U Bool) T@U) +(declare-fun $generated@@381 (T@U) T@U) +(declare-fun $generated@@411 (T@U) T@U) +(declare-fun $generated@@415 (T@U) T@U) +(declare-fun $generated@@419 (T@U Bool) T@U) (assert (and (and (and (and (and (and (and (and (= ($generated@@15 $generated@@16) 0) (= ($generated@@15 $generated@@17) 1)) (= ($generated@@15 $generated@@18) 2)) (forall (($generated@@25 Bool) ) (! (= ($generated@@20 ($generated@@19 $generated@@25)) $generated@@25) :pattern ( ($generated@@19 $generated@@25)) ))) (forall (($generated@@26 T@U) ) (! (= ($generated@@19 ($generated@@20 $generated@@26)) $generated@@26) @@ -1577,336 +1555,339 @@ $generated@@295))))))))) )))) (assert (distinct $generated $generated@@0 $generated@@1 $generated@@2 $generated@@3 $generated@@4 $generated@@5 $generated@@6 $generated@@7 $generated@@8 $generated@@9 $generated@@10 $generated@@11 $generated@@12 $generated@@13 $generated@@14) ) -(assert (and (and (and (and (and (and (and (= ($generated@@15 $generated@@34) 3) (forall (($generated@@49 T@T) ($generated@@50 T@T) ($generated@@51 T@U) ($generated@@52 T@U) ($generated@@53 T@U) ) (! (= ($generated@@39 $generated@@49 $generated@@50 ($generated@@46 $generated@@49 $generated@@50 $generated@@52 $generated@@53 $generated@@51) $generated@@53) $generated@@51) +(assert (and (and (forall (($generated@@42 T@T) ($generated@@43 T@T) ($generated@@44 T@U) ($generated@@45 T@U) ($generated@@46 T@U) ) (! (= ($generated@@36 $generated@@42 $generated@@43 ($generated@@41 $generated@@42 $generated@@43 $generated@@45 $generated@@46 $generated@@44) $generated@@46) $generated@@44) :weight 0 -))) (forall (($generated@@54 T@T) ($generated@@55 T@T) ($generated@@56 T@U) ($generated@@57 T@U) ($generated@@58 T@U) ($generated@@59 T@U) ) (! (or (= $generated@@58 $generated@@59) (= ($generated@@39 $generated@@54 $generated@@55 ($generated@@46 $generated@@54 $generated@@55 $generated@@57 $generated@@58 $generated@@56) $generated@@59) ($generated@@39 $generated@@54 $generated@@55 $generated@@57 $generated@@59))) +)) (forall (($generated@@47 T@T) ($generated@@48 T@T) ($generated@@49 T@U) ($generated@@50 T@U) ($generated@@51 T@U) ($generated@@52 T@U) ) (! (or (= $generated@@51 $generated@@52) (= ($generated@@36 $generated@@47 $generated@@48 ($generated@@41 $generated@@47 $generated@@48 $generated@@50 $generated@@51 $generated@@49) $generated@@52) ($generated@@36 $generated@@47 $generated@@48 $generated@@50 $generated@@52))) :weight 0 -))) (= ($generated@@15 $generated@@40) 4)) (forall (($generated@@60 T@T) ($generated@@61 T@T) ) (= ($generated@@15 ($generated@@44 $generated@@60 $generated@@61)) 5))) (forall (($generated@@62 T@T) ($generated@@63 T@T) ) (! (= ($generated@@47 ($generated@@44 $generated@@62 $generated@@63)) $generated@@62) - :pattern ( ($generated@@44 $generated@@62 $generated@@63)) -))) (forall (($generated@@64 T@T) ($generated@@65 T@T) ) (! (= ($generated@@48 ($generated@@44 $generated@@64 $generated@@65)) $generated@@65) - :pattern ( ($generated@@44 $generated@@64 $generated@@65)) -))) (= ($generated@@15 $generated@@45) 6))) -(assert (=> (<= 0 $generated@@31) (forall (($generated@@66 T@U) ($generated@@67 T@U) ($generated@@68 T@U) ) (! (=> ($generated@@35 $generated@@66 $generated@@67 ($generated@@33 $generated@@34 $generated@@68)) (and (forall (($generated@@69 T@U) ) (! (=> ($generated@@42 $generated@@69 $generated@@66) (and ($generated@@43 ($generated@@33 $generated@@34 $generated@@68)) (=> ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) ($generated@@41 ($generated@@33 $generated@@34 $generated@@68))) $generated@@69)) (and ($generated@@43 ($generated@@33 $generated@@34 $generated@@68)) true)))) - :pattern ( ($generated@@36 $generated@@66 $generated@@67 $generated@@37 ($generated@@38 $generated@@68) $generated@@69)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@68) $generated@@69)) -)) (= ($generated@@32 $generated@@66 $generated@@67 ($generated@@33 $generated@@34 $generated@@68)) (forall (($generated@@70 T@U) ) (! (=> (and ($generated@@42 $generated@@70 $generated@@66) ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) ($generated@@41 ($generated@@33 $generated@@34 $generated@@68))) $generated@@70))) ($generated@@36 $generated@@66 $generated@@67 $generated@@37 ($generated@@33 $generated@@45 ($generated@@38 ($generated@@33 $generated@@34 $generated@@68))) $generated@@70)) - :pattern ( ($generated@@36 $generated@@66 $generated@@67 $generated@@37 ($generated@@38 $generated@@68) $generated@@70)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@68) $generated@@70)) +))) (= ($generated@@15 $generated@@37) 3))) +(assert (forall (($generated@@53 T@U) ($generated@@54 T@U) ($generated@@55 T@U) ) (! (=> ($generated@@32 $generated@@53 $generated@@54 $generated@@55) (and (forall (($generated@@56 T@U) ) (! (=> ($generated@@39 $generated@@56 $generated@@53) (and ($generated@@40 $generated@@55) (=> ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@55) $generated@@56)) (and ($generated@@40 $generated@@55) true)))) + :pattern ( ($generated@@33 $generated@@53 $generated@@54 $generated@@34 ($generated@@35 $generated@@55) $generated@@56)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@55) $generated@@56)) +)) (= ($generated@@31 $generated@@53 $generated@@54 $generated@@55) (forall (($generated@@57 T@U) ) (! (=> (and ($generated@@39 $generated@@57 $generated@@53) ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@55) $generated@@57))) ($generated@@33 $generated@@53 $generated@@54 $generated@@34 ($generated@@35 $generated@@55) $generated@@57)) + :pattern ( ($generated@@33 $generated@@53 $generated@@54 $generated@@34 ($generated@@35 $generated@@55) $generated@@57)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@55) $generated@@57)) ))))) - :weight 3 - :pattern ( ($generated@@32 $generated@@66 $generated@@67 ($generated@@33 $generated@@34 $generated@@68))) -)))) -(assert (and (and (and (and (forall (($generated@@79 T@T) ($generated@@80 T@T) ($generated@@81 T@T) ($generated@@82 T@U) ($generated@@83 T@U) ($generated@@84 T@U) ($generated@@85 T@U) ) (! (= ($generated@@74 $generated@@79 $generated@@80 $generated@@81 ($generated@@78 $generated@@79 $generated@@80 $generated@@81 $generated@@83 $generated@@84 $generated@@85 $generated@@82) $generated@@84 $generated@@85) $generated@@82) + :pattern ( ($generated@@31 $generated@@53 $generated@@54 $generated@@55)) +))) +(assert (and (and (and (and (and (and (and (forall (($generated@@69 T@T) ($generated@@70 T@T) ($generated@@71 T@T) ($generated@@72 T@U) ($generated@@73 T@U) ($generated@@74 T@U) ($generated@@75 T@U) ) (! (= ($generated@@61 $generated@@69 $generated@@70 $generated@@71 ($generated@@66 $generated@@69 $generated@@70 $generated@@71 $generated@@73 $generated@@74 $generated@@75 $generated@@72) $generated@@74 $generated@@75) $generated@@72) :weight 0 -)) (and (forall (($generated@@86 T@T) ($generated@@87 T@T) ($generated@@88 T@T) ($generated@@89 T@U) ($generated@@90 T@U) ($generated@@91 T@U) ($generated@@92 T@U) ($generated@@93 T@U) ($generated@@94 T@U) ) (! (or (= $generated@@91 $generated@@93) (= ($generated@@74 $generated@@86 $generated@@87 $generated@@88 ($generated@@78 $generated@@86 $generated@@87 $generated@@88 $generated@@90 $generated@@91 $generated@@92 $generated@@89) $generated@@93 $generated@@94) ($generated@@74 $generated@@86 $generated@@87 $generated@@88 $generated@@90 $generated@@93 $generated@@94))) +)) (and (forall (($generated@@76 T@T) ($generated@@77 T@T) ($generated@@78 T@T) ($generated@@79 T@U) ($generated@@80 T@U) ($generated@@81 T@U) ($generated@@82 T@U) ($generated@@83 T@U) ($generated@@84 T@U) ) (! (or (= $generated@@81 $generated@@83) (= ($generated@@61 $generated@@76 $generated@@77 $generated@@78 ($generated@@66 $generated@@76 $generated@@77 $generated@@78 $generated@@80 $generated@@81 $generated@@82 $generated@@79) $generated@@83 $generated@@84) ($generated@@61 $generated@@76 $generated@@77 $generated@@78 $generated@@80 $generated@@83 $generated@@84))) :weight 0 -)) (forall (($generated@@95 T@T) ($generated@@96 T@T) ($generated@@97 T@T) ($generated@@98 T@U) ($generated@@99 T@U) ($generated@@100 T@U) ($generated@@101 T@U) ($generated@@102 T@U) ($generated@@103 T@U) ) (! (or (= $generated@@101 $generated@@103) (= ($generated@@74 $generated@@95 $generated@@96 $generated@@97 ($generated@@78 $generated@@95 $generated@@96 $generated@@97 $generated@@99 $generated@@100 $generated@@101 $generated@@98) $generated@@102 $generated@@103) ($generated@@74 $generated@@95 $generated@@96 $generated@@97 $generated@@99 $generated@@102 $generated@@103))) +)) (forall (($generated@@85 T@T) ($generated@@86 T@T) ($generated@@87 T@T) ($generated@@88 T@U) ($generated@@89 T@U) ($generated@@90 T@U) ($generated@@91 T@U) ($generated@@92 T@U) ($generated@@93 T@U) ) (! (or (= $generated@@91 $generated@@93) (= ($generated@@61 $generated@@85 $generated@@86 $generated@@87 ($generated@@66 $generated@@85 $generated@@86 $generated@@87 $generated@@89 $generated@@90 $generated@@91 $generated@@88) $generated@@92 $generated@@93) ($generated@@61 $generated@@85 $generated@@86 $generated@@87 $generated@@89 $generated@@92 $generated@@93))) :weight 0 -)))) (= ($generated@@15 $generated@@75) 7)) (= ($generated@@15 $generated@@76) 8)) (= ($generated@@15 $generated@@77) 9))) -(assert (forall (($generated@@104 T@U) ($generated@@105 T@U) ($generated@@106 T@U) ($generated@@107 T@U) ($generated@@108 T@U) ($generated@@109 T@U) ($generated@@110 T@U) ($generated@@111 T@U) ) (! (= ($generated@@71 ($generated@@72 $generated@@104 $generated@@105 $generated@@106 ($generated@@73 $generated@@107 $generated@@108 $generated@@109) $generated@@110) $generated@@111) ($generated@@71 ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@77 $generated@@109 $generated@@106 $generated@@110) $generated@@111)) - :pattern ( ($generated@@71 ($generated@@72 $generated@@104 $generated@@105 $generated@@106 ($generated@@73 $generated@@107 $generated@@108 $generated@@109) $generated@@110) $generated@@111)) +)))) (forall (($generated@@94 T@T) ($generated@@95 T@T) ) (= ($generated@@15 ($generated@@62 $generated@@94 $generated@@95)) 4))) (forall (($generated@@96 T@T) ($generated@@97 T@T) ) (! (= ($generated@@67 ($generated@@62 $generated@@96 $generated@@97)) $generated@@96) + :pattern ( ($generated@@62 $generated@@96 $generated@@97)) +))) (forall (($generated@@98 T@T) ($generated@@99 T@T) ) (! (= ($generated@@68 ($generated@@62 $generated@@98 $generated@@99)) $generated@@99) + :pattern ( ($generated@@62 $generated@@98 $generated@@99)) +))) (= ($generated@@15 $generated@@63) 5)) (= ($generated@@15 $generated@@64) 6)) (= ($generated@@15 $generated@@65) 7))) +(assert (forall (($generated@@100 T@U) ($generated@@101 T@U) ($generated@@102 T@U) ($generated@@103 T@U) ($generated@@104 T@U) ($generated@@105 T@U) ($generated@@106 T@U) ($generated@@107 T@U) ) (! (= ($generated@@58 ($generated@@59 $generated@@100 $generated@@101 $generated@@102 ($generated@@60 $generated@@103 $generated@@104 $generated@@105) $generated@@106) $generated@@107) ($generated@@58 ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@65 $generated@@105 $generated@@102 $generated@@106) $generated@@107)) + :pattern ( ($generated@@58 ($generated@@59 $generated@@100 $generated@@101 $generated@@102 ($generated@@60 $generated@@103 $generated@@104 $generated@@105) $generated@@106) $generated@@107)) ))) -(assert (forall (($generated@@114 T@U) ($generated@@115 T@U) ($generated@@116 T@U) ) (! (=> ($generated@@112 $generated@@34 $generated@@116 ($generated@@113 $generated@@114 $generated@@115)) ($generated@@43 $generated@@116)) - :pattern ( ($generated@@43 $generated@@116) ($generated@@112 $generated@@34 $generated@@116 ($generated@@113 $generated@@114 $generated@@115))) +(assert (= ($generated@@15 $generated@@109) 8)) +(assert (forall (($generated@@111 T@U) ($generated@@112 T@U) ($generated@@113 T@U) ) (! (=> ($generated@@108 $generated@@109 $generated@@113 ($generated@@110 $generated@@111 $generated@@112)) ($generated@@40 $generated@@113)) + :pattern ( ($generated@@40 $generated@@113) ($generated@@108 $generated@@109 $generated@@113 ($generated@@110 $generated@@111 $generated@@112))) ))) -(assert (forall (($generated@@118 T@U) ) (! (not ($generated@@71 $generated@@117 $generated@@118)) - :pattern ( ($generated@@71 $generated@@117 $generated@@118)) +(assert (forall (($generated@@115 T@U) ) (! (not ($generated@@58 $generated@@114 $generated@@115)) + :pattern ( ($generated@@58 $generated@@114 $generated@@115)) ))) -(assert (= ($generated@@119 $generated@@120) $generated@@6)) -(assert (forall (($generated@@122 T@U) ($generated@@123 T@U) ($generated@@124 T@U) ($generated@@125 T@U) ($generated@@126 T@U) ) (! (=> (and (and ($generated@@112 $generated@@45 $generated@@122 ($generated@@121 $generated@@123 $generated@@124)) (forall (($generated@@127 T@U) ) (! (=> ($generated@@42 $generated@@127 $generated@@125) ($generated@@42 $generated@@127 $generated@@123)) - :pattern ( ($generated@@42 $generated@@127 $generated@@125)) - :pattern ( ($generated@@42 $generated@@127 $generated@@123)) -))) (forall (($generated@@128 T@U) ) (! (=> ($generated@@42 $generated@@128 $generated@@124) ($generated@@42 $generated@@128 $generated@@126)) - :pattern ( ($generated@@42 $generated@@128 $generated@@124)) - :pattern ( ($generated@@42 $generated@@128 $generated@@126)) -))) ($generated@@112 $generated@@45 $generated@@122 ($generated@@121 $generated@@125 $generated@@126))) - :pattern ( ($generated@@112 $generated@@45 $generated@@122 ($generated@@121 $generated@@123 $generated@@124)) ($generated@@112 $generated@@45 $generated@@122 ($generated@@121 $generated@@125 $generated@@126))) +(assert (= ($generated@@116 $generated@@117) $generated@@6)) +(assert (= ($generated@@15 $generated@@118) 9)) +(assert (forall (($generated@@120 T@U) ($generated@@121 T@U) ($generated@@122 T@U) ($generated@@123 T@U) ($generated@@124 T@U) ) (! (=> (and (and ($generated@@108 $generated@@118 $generated@@120 ($generated@@119 $generated@@121 $generated@@122)) (forall (($generated@@125 T@U) ) (! (=> ($generated@@39 $generated@@125 $generated@@123) ($generated@@39 $generated@@125 $generated@@121)) + :pattern ( ($generated@@39 $generated@@125 $generated@@123)) + :pattern ( ($generated@@39 $generated@@125 $generated@@121)) +))) (forall (($generated@@126 T@U) ) (! (=> ($generated@@39 $generated@@126 $generated@@122) ($generated@@39 $generated@@126 $generated@@124)) + :pattern ( ($generated@@39 $generated@@126 $generated@@122)) + :pattern ( ($generated@@39 $generated@@126 $generated@@124)) +))) ($generated@@108 $generated@@118 $generated@@120 ($generated@@119 $generated@@123 $generated@@124))) + :pattern ( ($generated@@108 $generated@@118 $generated@@120 ($generated@@119 $generated@@121 $generated@@122)) ($generated@@108 $generated@@118 $generated@@120 ($generated@@119 $generated@@123 $generated@@124))) ))) -(assert (forall (($generated@@132 T@U) ($generated@@133 T@U) ) (! (= ($generated@@129 $generated@@75 $generated@@132 $generated@@130 $generated@@133) ($generated@@129 $generated@@75 $generated@@132 $generated@@131 $generated@@133)) - :pattern ( ($generated@@129 $generated@@75 $generated@@132 $generated@@130 $generated@@133)) +(assert (forall (($generated@@130 T@U) ($generated@@131 T@U) ) (! (= ($generated@@127 $generated@@63 $generated@@130 $generated@@128 $generated@@131) ($generated@@127 $generated@@63 $generated@@130 $generated@@129 $generated@@131)) + :pattern ( ($generated@@127 $generated@@63 $generated@@130 $generated@@128 $generated@@131)) ))) -(assert ($generated@@112 $generated@@34 $generated@@120 $generated@@134)) -(assert (forall (($generated@@137 T@U) ($generated@@138 T@U) ) (! (= ($generated@@129 $generated@@75 $generated@@137 $generated@@131 $generated@@138) (or (= $generated@@137 $generated@@135) ($generated@@20 ($generated@@136 $generated@@16 ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@138 $generated@@137) $generated@@1))))) - :pattern ( ($generated@@129 $generated@@75 $generated@@137 $generated@@131 $generated@@138)) +(assert ($generated@@108 $generated@@109 $generated@@117 $generated@@132)) +(assert (forall (($generated@@135 T@U) ($generated@@136 T@U) ) (! (= ($generated@@127 $generated@@63 $generated@@135 $generated@@129 $generated@@136) (or (= $generated@@135 $generated@@133) ($generated@@20 ($generated@@134 $generated@@16 ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@136 $generated@@135) $generated@@1))))) + :pattern ( ($generated@@127 $generated@@63 $generated@@135 $generated@@129 $generated@@136)) ))) -(assert (forall (($generated@@141 T@U) ($generated@@142 T@U) ($generated@@143 T@U) ($generated@@144 T@U) ) (! (=> (and ($generated@@140 $generated@@144) (and ($generated@@43 $generated@@141) ($generated@@129 $generated@@34 $generated@@141 ($generated@@113 $generated@@142 $generated@@143) $generated@@144))) ($generated@@129 $generated@@45 ($generated@@38 $generated@@141) ($generated@@139 $generated@@142 $generated@@143) $generated@@144)) - :pattern ( ($generated@@129 $generated@@45 ($generated@@38 $generated@@141) ($generated@@139 $generated@@142 $generated@@143) $generated@@144)) +(assert (forall (($generated@@139 T@U) ($generated@@140 T@U) ($generated@@141 T@U) ($generated@@142 T@U) ) (! (=> (and ($generated@@138 $generated@@142) (and ($generated@@40 $generated@@139) ($generated@@127 $generated@@109 $generated@@139 ($generated@@110 $generated@@140 $generated@@141) $generated@@142))) ($generated@@127 $generated@@118 ($generated@@35 $generated@@139) ($generated@@137 $generated@@140 $generated@@141) $generated@@142)) + :pattern ( ($generated@@127 $generated@@118 ($generated@@35 $generated@@139) ($generated@@137 $generated@@140 $generated@@141) $generated@@142)) ))) -(assert (forall (($generated@@146 T@U) ($generated@@147 T@U) ) (! (=> ($generated@@145 $generated@@146 $generated@@147) (forall (($generated@@148 T@U) ) (! (=> ($generated@@20 ($generated@@136 $generated@@16 ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@146 $generated@@148) $generated@@1))) ($generated@@20 ($generated@@136 $generated@@16 ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@147 $generated@@148) $generated@@1)))) - :pattern ( ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@147 $generated@@148) $generated@@1)) +(assert (forall (($generated@@144 T@U) ($generated@@145 T@U) ) (! (=> ($generated@@143 $generated@@144 $generated@@145) (forall (($generated@@146 T@U) ) (! (=> ($generated@@20 ($generated@@134 $generated@@16 ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@144 $generated@@146) $generated@@1))) ($generated@@20 ($generated@@134 $generated@@16 ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@145 $generated@@146) $generated@@1)))) + :pattern ( ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@145 $generated@@146) $generated@@1)) ))) - :pattern ( ($generated@@145 $generated@@146 $generated@@147)) + :pattern ( ($generated@@143 $generated@@144 $generated@@145)) ))) -(assert (forall (($generated@@150 T@U) ($generated@@151 T@U) ) (! (= ($generated@@112 ($generated@@44 $generated@@40 $generated@@16) $generated@@150 ($generated@@149 $generated@@151)) (forall (($generated@@152 T@U) ) (! (=> ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 $generated@@150 $generated@@152)) ($generated@@42 $generated@@152 $generated@@151)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 $generated@@150 $generated@@152)) +(assert (forall (($generated@@148 T@U) ($generated@@149 T@U) ) (! (= ($generated@@108 ($generated@@62 $generated@@37 $generated@@16) $generated@@148 ($generated@@147 $generated@@149)) (forall (($generated@@150 T@U) ) (! (=> ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 $generated@@148 $generated@@150)) ($generated@@39 $generated@@150 $generated@@149)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 $generated@@148 $generated@@150)) ))) - :pattern ( ($generated@@112 ($generated@@44 $generated@@40 $generated@@16) $generated@@150 ($generated@@149 $generated@@151))) + :pattern ( ($generated@@108 ($generated@@62 $generated@@37 $generated@@16) $generated@@148 ($generated@@147 $generated@@149))) ))) -(assert (forall (($generated@@153 T@U) ($generated@@154 T@T) ) (! (= ($generated@@33 $generated@@154 $generated@@153) $generated@@153) - :pattern ( ($generated@@33 $generated@@154 $generated@@153)) +(assert (forall (($generated@@152 T@U) ($generated@@153 T@T) ) (! (= ($generated@@151 $generated@@153 $generated@@152) $generated@@152) + :pattern ( ($generated@@151 $generated@@153 $generated@@152)) ))) -(assert (forall (($generated@@156 T@U) ($generated@@157 T@U) ($generated@@158 T@U) ($generated@@159 T@U) ($generated@@160 T@U) ) (! (=> (and ($generated@@140 $generated@@158) (and ($generated@@42 $generated@@160 $generated@@156) ($generated@@112 $generated@@45 $generated@@159 ($generated@@121 $generated@@156 $generated@@157)))) (= ($generated@@155 ($generated@@72 $generated@@156 $generated@@157 $generated@@37 $generated@@159 $generated@@160) $generated@@117) ($generated@@155 ($generated@@72 $generated@@156 $generated@@157 $generated@@158 $generated@@159 $generated@@160) $generated@@117))) - :pattern ( ($generated@@72 $generated@@156 $generated@@157 $generated@@37 $generated@@159 $generated@@160) ($generated@@140 $generated@@158)) - :pattern ( ($generated@@72 $generated@@156 $generated@@157 $generated@@158 $generated@@159 $generated@@160)) +(assert (forall (($generated@@155 T@U) ($generated@@156 T@U) ($generated@@157 T@U) ($generated@@158 T@U) ($generated@@159 T@U) ) (! (=> (and ($generated@@138 $generated@@157) (and ($generated@@39 $generated@@159 $generated@@155) ($generated@@108 $generated@@118 $generated@@158 ($generated@@119 $generated@@155 $generated@@156)))) (= ($generated@@154 ($generated@@59 $generated@@155 $generated@@156 $generated@@34 $generated@@158 $generated@@159) $generated@@114) ($generated@@154 ($generated@@59 $generated@@155 $generated@@156 $generated@@157 $generated@@158 $generated@@159) $generated@@114))) + :pattern ( ($generated@@59 $generated@@155 $generated@@156 $generated@@34 $generated@@158 $generated@@159) ($generated@@138 $generated@@157)) + :pattern ( ($generated@@59 $generated@@155 $generated@@156 $generated@@157 $generated@@158 $generated@@159)) ))) -(assert (forall (($generated@@162 T@U) ($generated@@163 T@U) ($generated@@164 T@U) ($generated@@165 T@U) ) (! (= ($generated@@112 $generated@@34 ($generated@@161 $generated@@164 $generated@@165) ($generated@@113 $generated@@162 $generated@@163)) (and ($generated@@112 ($generated@@44 $generated@@40 $generated@@16) $generated@@164 ($generated@@149 $generated@@162)) ($generated@@112 $generated@@45 $generated@@165 ($generated@@139 $generated@@162 $generated@@163)))) - :pattern ( ($generated@@112 $generated@@34 ($generated@@161 $generated@@164 $generated@@165) ($generated@@113 $generated@@162 $generated@@163))) +(assert (forall (($generated@@161 T@U) ($generated@@162 T@U) ($generated@@163 T@U) ($generated@@164 T@U) ) (! (= ($generated@@108 $generated@@109 ($generated@@160 $generated@@163 $generated@@164) ($generated@@110 $generated@@161 $generated@@162)) (and ($generated@@108 ($generated@@62 $generated@@37 $generated@@16) $generated@@163 ($generated@@147 $generated@@161)) ($generated@@108 $generated@@118 $generated@@164 ($generated@@137 $generated@@161 $generated@@162)))) + :pattern ( ($generated@@108 $generated@@109 ($generated@@160 $generated@@163 $generated@@164) ($generated@@110 $generated@@161 $generated@@162))) ))) -(assert (forall (($generated@@166 T@U) ) (! (= ($generated@@43 $generated@@166) (= ($generated@@119 $generated@@166) $generated@@8)) - :pattern ( ($generated@@43 $generated@@166)) +(assert (forall (($generated@@165 T@U) ) (! (= ($generated@@40 $generated@@165) (= ($generated@@116 $generated@@165) $generated@@8)) + :pattern ( ($generated@@40 $generated@@165)) ))) -(assert (forall (($generated@@168 T@U) ($generated@@169 T@T) ) (! (= ($generated@@167 $generated@@169 ($generated@@136 $generated@@169 $generated@@168)) $generated@@168) - :pattern ( ($generated@@136 $generated@@169 $generated@@168)) +(assert (forall (($generated@@167 T@U) ($generated@@168 T@T) ) (! (= ($generated@@166 $generated@@168 ($generated@@134 $generated@@168 $generated@@167)) $generated@@167) + :pattern ( ($generated@@134 $generated@@168 $generated@@167)) ))) -(assert (forall (($generated@@170 T@U) ) (! (=> ($generated@@43 $generated@@170) (exists (($generated@@171 T@U) ($generated@@172 T@U) ) (= $generated@@170 ($generated@@161 $generated@@171 $generated@@172)))) - :pattern ( ($generated@@43 $generated@@170)) +(assert (forall (($generated@@169 T@U) ) (! (=> ($generated@@40 $generated@@169) (exists (($generated@@170 T@U) ($generated@@171 T@U) ) (= $generated@@169 ($generated@@160 $generated@@170 $generated@@171)))) + :pattern ( ($generated@@40 $generated@@169)) ))) -(assert (forall (($generated@@173 T@U) ($generated@@174 T@U) ($generated@@175 T@U) ($generated@@176 T@U) ($generated@@177 T@U) ($generated@@178 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@175 $generated@@176) (and ($generated@@140 $generated@@175) ($generated@@140 $generated@@176))) (and ($generated@@42 $generated@@178 $generated@@173) ($generated@@112 $generated@@45 $generated@@177 ($generated@@121 $generated@@173 $generated@@174)))) (forall (($generated@@179 T@U) ($generated@@180 T@U) ) (=> (and (or (not (= $generated@@179 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@173 $generated@@174 $generated@@175 $generated@@177 $generated@@178) ($generated@@167 $generated@@75 $generated@@179))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@175 $generated@@179) $generated@@180) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@176 $generated@@179) $generated@@180))))) (= ($generated@@36 $generated@@173 $generated@@174 $generated@@175 $generated@@177 $generated@@178) ($generated@@36 $generated@@173 $generated@@174 $generated@@176 $generated@@177 $generated@@178))) - :pattern ( ($generated@@145 $generated@@175 $generated@@176) ($generated@@36 $generated@@173 $generated@@174 $generated@@176 $generated@@177 $generated@@178)) +(assert (forall (($generated@@172 T@U) ($generated@@173 T@U) ($generated@@174 T@U) ($generated@@175 T@U) ($generated@@176 T@U) ($generated@@177 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@174 $generated@@175) (and ($generated@@138 $generated@@174) ($generated@@138 $generated@@175))) (and ($generated@@39 $generated@@177 $generated@@172) ($generated@@108 $generated@@118 $generated@@176 ($generated@@119 $generated@@172 $generated@@173)))) (forall (($generated@@178 T@U) ($generated@@179 T@U) ) (=> (and (or (not (= $generated@@178 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@172 $generated@@173 $generated@@174 $generated@@176 $generated@@177) ($generated@@166 $generated@@63 $generated@@178))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@174 $generated@@178) $generated@@179) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@175 $generated@@178) $generated@@179))))) (= ($generated@@33 $generated@@172 $generated@@173 $generated@@174 $generated@@176 $generated@@177) ($generated@@33 $generated@@172 $generated@@173 $generated@@175 $generated@@176 $generated@@177))) + :pattern ( ($generated@@143 $generated@@174 $generated@@175) ($generated@@33 $generated@@172 $generated@@173 $generated@@175 $generated@@176 $generated@@177)) ))) -(assert (forall (($generated@@181 T@U) ($generated@@182 T@U) ($generated@@183 T@U) ($generated@@184 T@U) ($generated@@185 T@U) ($generated@@186 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@183 $generated@@184) (and ($generated@@140 $generated@@183) ($generated@@140 $generated@@184))) (and ($generated@@42 $generated@@186 $generated@@181) ($generated@@112 $generated@@45 $generated@@185 ($generated@@121 $generated@@181 $generated@@182)))) (forall (($generated@@187 T@U) ($generated@@188 T@U) ) (=> (and (or (not (= $generated@@187 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@181 $generated@@182 $generated@@184 $generated@@185 $generated@@186) ($generated@@167 $generated@@75 $generated@@187))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@183 $generated@@187) $generated@@188) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@184 $generated@@187) $generated@@188))))) (= ($generated@@36 $generated@@181 $generated@@182 $generated@@183 $generated@@185 $generated@@186) ($generated@@36 $generated@@181 $generated@@182 $generated@@184 $generated@@185 $generated@@186))) - :pattern ( ($generated@@145 $generated@@183 $generated@@184) ($generated@@36 $generated@@181 $generated@@182 $generated@@184 $generated@@185 $generated@@186)) +(assert (forall (($generated@@180 T@U) ($generated@@181 T@U) ($generated@@182 T@U) ($generated@@183 T@U) ($generated@@184 T@U) ($generated@@185 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@182 $generated@@183) (and ($generated@@138 $generated@@182) ($generated@@138 $generated@@183))) (and ($generated@@39 $generated@@185 $generated@@180) ($generated@@108 $generated@@118 $generated@@184 ($generated@@119 $generated@@180 $generated@@181)))) (forall (($generated@@186 T@U) ($generated@@187 T@U) ) (=> (and (or (not (= $generated@@186 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@180 $generated@@181 $generated@@183 $generated@@184 $generated@@185) ($generated@@166 $generated@@63 $generated@@186))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@182 $generated@@186) $generated@@187) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@183 $generated@@186) $generated@@187))))) (= ($generated@@33 $generated@@180 $generated@@181 $generated@@182 $generated@@184 $generated@@185) ($generated@@33 $generated@@180 $generated@@181 $generated@@183 $generated@@184 $generated@@185))) + :pattern ( ($generated@@143 $generated@@182 $generated@@183) ($generated@@33 $generated@@180 $generated@@181 $generated@@183 $generated@@184 $generated@@185)) ))) -(assert (forall (($generated@@190 T@U) ($generated@@191 T@U) ) (! (= ($generated@@112 $generated@@77 $generated@@190 ($generated@@189 $generated@@191)) (forall (($generated@@192 T@U) ) (! (=> ($generated@@71 $generated@@190 $generated@@192) ($generated@@42 $generated@@192 $generated@@191)) - :pattern ( ($generated@@71 $generated@@190 $generated@@192)) +(assert (forall (($generated@@189 T@U) ($generated@@190 T@U) ) (! (= ($generated@@108 $generated@@65 $generated@@189 ($generated@@188 $generated@@190)) (forall (($generated@@191 T@U) ) (! (=> ($generated@@58 $generated@@189 $generated@@191) ($generated@@39 $generated@@191 $generated@@190)) + :pattern ( ($generated@@58 $generated@@189 $generated@@191)) ))) - :pattern ( ($generated@@112 $generated@@77 $generated@@190 ($generated@@189 $generated@@191))) + :pattern ( ($generated@@108 $generated@@65 $generated@@189 ($generated@@188 $generated@@190))) ))) -(assert (= ($generated@@15 $generated@@194) 10)) -(assert (forall (($generated@@195 T@U) ($generated@@196 T@U) ($generated@@197 T@T) ) (! (= ($generated@@193 $generated@@197 $generated@@195 $generated@@196) ($generated@@39 $generated@@194 $generated@@197 $generated@@195 $generated@@196)) - :pattern ( ($generated@@193 $generated@@197 $generated@@195 $generated@@196)) +(assert (= ($generated@@15 $generated@@193) 10)) +(assert (forall (($generated@@194 T@U) ($generated@@195 T@U) ($generated@@196 T@T) ) (! (= ($generated@@192 $generated@@196 $generated@@194 $generated@@195) ($generated@@36 $generated@@193 $generated@@196 $generated@@194 $generated@@195)) + :pattern ( ($generated@@192 $generated@@196 $generated@@194 $generated@@195)) ))) -(assert (forall (($generated@@198 T@U) ($generated@@199 T@U) ($generated@@200 T@U) ($generated@@201 T@U) ($generated@@202 T@U) ) (! (=> ($generated@@140 $generated@@202) (= ($generated@@129 $generated@@34 ($generated@@161 $generated@@200 $generated@@201) ($generated@@113 $generated@@198 $generated@@199) $generated@@202) (and ($generated@@129 ($generated@@44 $generated@@40 $generated@@16) $generated@@200 ($generated@@149 $generated@@198) $generated@@202) ($generated@@129 $generated@@45 $generated@@201 ($generated@@139 $generated@@198 $generated@@199) $generated@@202)))) - :pattern ( ($generated@@129 $generated@@34 ($generated@@161 $generated@@200 $generated@@201) ($generated@@113 $generated@@198 $generated@@199) $generated@@202)) +(assert (forall (($generated@@197 T@U) ($generated@@198 T@U) ($generated@@199 T@U) ($generated@@200 T@U) ($generated@@201 T@U) ) (! (=> ($generated@@138 $generated@@201) (= ($generated@@127 $generated@@109 ($generated@@160 $generated@@199 $generated@@200) ($generated@@110 $generated@@197 $generated@@198) $generated@@201) (and ($generated@@127 ($generated@@62 $generated@@37 $generated@@16) $generated@@199 ($generated@@147 $generated@@197) $generated@@201) ($generated@@127 $generated@@118 $generated@@200 ($generated@@137 $generated@@197 $generated@@198) $generated@@201)))) + :pattern ( ($generated@@127 $generated@@109 ($generated@@160 $generated@@199 $generated@@200) ($generated@@110 $generated@@197 $generated@@198) $generated@@201)) ))) -(assert ($generated@@140 $generated@@37)) -(assert (forall (($generated@@204 T@U) ($generated@@205 T@U) ($generated@@206 T@U) ($generated@@207 T@T) ) (! (= ($generated@@203 ($generated@@167 $generated@@207 $generated@@204) $generated@@205 $generated@@206) ($generated@@129 $generated@@207 $generated@@204 $generated@@205 $generated@@206)) - :pattern ( ($generated@@203 ($generated@@167 $generated@@207 $generated@@204) $generated@@205 $generated@@206)) +(assert ($generated@@138 $generated@@34)) +(assert (forall (($generated@@203 T@U) ($generated@@204 T@U) ($generated@@205 T@U) ($generated@@206 T@T) ) (! (= ($generated@@202 ($generated@@166 $generated@@206 $generated@@203) $generated@@204 $generated@@205) ($generated@@127 $generated@@206 $generated@@203 $generated@@204 $generated@@205)) + :pattern ( ($generated@@202 ($generated@@166 $generated@@206 $generated@@203) $generated@@204 $generated@@205)) ))) -(assert (forall (($generated@@208 T@U) ($generated@@209 T@U) ($generated@@210 T@U) ($generated@@211 T@U) ) (! (=> ($generated@@145 $generated@@208 $generated@@209) (=> ($generated@@203 $generated@@210 $generated@@211 $generated@@208) ($generated@@203 $generated@@210 $generated@@211 $generated@@209))) - :pattern ( ($generated@@145 $generated@@208 $generated@@209) ($generated@@203 $generated@@210 $generated@@211 $generated@@208)) +(assert (forall (($generated@@207 T@U) ($generated@@208 T@U) ($generated@@209 T@U) ($generated@@210 T@U) ) (! (=> ($generated@@143 $generated@@207 $generated@@208) (=> ($generated@@202 $generated@@209 $generated@@210 $generated@@207) ($generated@@202 $generated@@209 $generated@@210 $generated@@208))) + :pattern ( ($generated@@143 $generated@@207 $generated@@208) ($generated@@202 $generated@@209 $generated@@210 $generated@@207)) ))) -(assert (forall (($generated@@212 T@U) ($generated@@213 T@U) ($generated@@214 T@U) ($generated@@215 T@U) ($generated@@216 T@T) ) (! (=> ($generated@@145 $generated@@212 $generated@@213) (=> ($generated@@129 $generated@@216 $generated@@214 $generated@@215 $generated@@212) ($generated@@129 $generated@@216 $generated@@214 $generated@@215 $generated@@213))) - :pattern ( ($generated@@145 $generated@@212 $generated@@213) ($generated@@129 $generated@@216 $generated@@214 $generated@@215 $generated@@212)) +(assert (forall (($generated@@211 T@U) ($generated@@212 T@U) ($generated@@213 T@U) ($generated@@214 T@U) ($generated@@215 T@T) ) (! (=> ($generated@@143 $generated@@211 $generated@@212) (=> ($generated@@127 $generated@@215 $generated@@213 $generated@@214 $generated@@211) ($generated@@127 $generated@@215 $generated@@213 $generated@@214 $generated@@212))) + :pattern ( ($generated@@143 $generated@@211 $generated@@212) ($generated@@127 $generated@@215 $generated@@213 $generated@@214 $generated@@211)) ))) -(assert (forall (($generated@@217 T@U) ($generated@@218 T@U) ($generated@@219 T@U) ($generated@@220 T@U) ($generated@@221 T@U) ($generated@@222 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@219 $generated@@220) (and ($generated@@140 $generated@@219) ($generated@@140 $generated@@220))) (and ($generated@@42 $generated@@222 $generated@@217) ($generated@@112 $generated@@45 $generated@@221 ($generated@@121 $generated@@217 $generated@@218)))) (forall (($generated@@223 T@U) ($generated@@224 T@U) ) (=> (and (or (not (= $generated@@223 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@217 $generated@@218 $generated@@219 $generated@@221 $generated@@222) ($generated@@167 $generated@@75 $generated@@223))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@219 $generated@@223) $generated@@224) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@220 $generated@@223) $generated@@224))))) (= ($generated@@72 $generated@@217 $generated@@218 $generated@@219 $generated@@221 $generated@@222) ($generated@@72 $generated@@217 $generated@@218 $generated@@220 $generated@@221 $generated@@222))) - :pattern ( ($generated@@145 $generated@@219 $generated@@220) ($generated@@72 $generated@@217 $generated@@218 $generated@@220 $generated@@221 $generated@@222)) +(assert (forall (($generated@@216 T@U) ($generated@@217 T@U) ($generated@@218 T@U) ) (! (=> ($generated@@32 $generated@@216 $generated@@217 ($generated@@151 $generated@@109 $generated@@218)) (and (forall (($generated@@219 T@U) ) (! (=> ($generated@@39 $generated@@219 $generated@@216) (and ($generated@@40 ($generated@@151 $generated@@109 $generated@@218)) (=> ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) ($generated@@38 ($generated@@151 $generated@@109 $generated@@218))) $generated@@219)) (and ($generated@@40 ($generated@@151 $generated@@109 $generated@@218)) true)))) + :pattern ( ($generated@@33 $generated@@216 $generated@@217 $generated@@34 ($generated@@35 $generated@@218) $generated@@219)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@218) $generated@@219)) +)) (= ($generated@@31 $generated@@216 $generated@@217 ($generated@@151 $generated@@109 $generated@@218)) (forall (($generated@@220 T@U) ) (! (=> (and ($generated@@39 $generated@@220 $generated@@216) ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) ($generated@@38 ($generated@@151 $generated@@109 $generated@@218))) $generated@@220))) ($generated@@33 $generated@@216 $generated@@217 $generated@@34 ($generated@@151 $generated@@118 ($generated@@35 ($generated@@151 $generated@@109 $generated@@218))) $generated@@220)) + :pattern ( ($generated@@33 $generated@@216 $generated@@217 $generated@@34 ($generated@@35 $generated@@218) $generated@@220)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 ($generated@@38 $generated@@218) $generated@@220)) +))))) + :weight 3 + :pattern ( ($generated@@31 $generated@@216 $generated@@217 ($generated@@151 $generated@@109 $generated@@218))) ))) -(assert (forall (($generated@@225 T@U) ($generated@@226 T@U) ($generated@@227 T@U) ($generated@@228 T@U) ($generated@@229 T@U) ($generated@@230 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@227 $generated@@228) (and ($generated@@140 $generated@@227) ($generated@@140 $generated@@228))) (and ($generated@@42 $generated@@230 $generated@@225) ($generated@@112 $generated@@45 $generated@@229 ($generated@@121 $generated@@225 $generated@@226)))) (forall (($generated@@231 T@U) ($generated@@232 T@U) ) (=> (and (or (not (= $generated@@231 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@225 $generated@@226 $generated@@228 $generated@@229 $generated@@230) ($generated@@167 $generated@@75 $generated@@231))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@227 $generated@@231) $generated@@232) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@228 $generated@@231) $generated@@232))))) (= ($generated@@72 $generated@@225 $generated@@226 $generated@@227 $generated@@229 $generated@@230) ($generated@@72 $generated@@225 $generated@@226 $generated@@228 $generated@@229 $generated@@230))) - :pattern ( ($generated@@145 $generated@@227 $generated@@228) ($generated@@72 $generated@@225 $generated@@226 $generated@@228 $generated@@229 $generated@@230)) +(assert (forall (($generated@@221 T@U) ($generated@@222 T@U) ($generated@@223 T@U) ($generated@@224 T@U) ($generated@@225 T@U) ($generated@@226 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@223 $generated@@224) (and ($generated@@138 $generated@@223) ($generated@@138 $generated@@224))) (and ($generated@@39 $generated@@226 $generated@@221) ($generated@@108 $generated@@118 $generated@@225 ($generated@@119 $generated@@221 $generated@@222)))) (forall (($generated@@227 T@U) ($generated@@228 T@U) ) (=> (and (or (not (= $generated@@227 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@221 $generated@@222 $generated@@223 $generated@@225 $generated@@226) ($generated@@166 $generated@@63 $generated@@227))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@223 $generated@@227) $generated@@228) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@224 $generated@@227) $generated@@228))))) (= ($generated@@59 $generated@@221 $generated@@222 $generated@@223 $generated@@225 $generated@@226) ($generated@@59 $generated@@221 $generated@@222 $generated@@224 $generated@@225 $generated@@226))) + :pattern ( ($generated@@143 $generated@@223 $generated@@224) ($generated@@59 $generated@@221 $generated@@222 $generated@@224 $generated@@225 $generated@@226)) ))) -(assert (forall (($generated@@234 T@U) ($generated@@235 T@U) ($generated@@236 T@U) ($generated@@237 T@U) ($generated@@238 T@U) ($generated@@239 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@236 $generated@@237) (and ($generated@@140 $generated@@236) ($generated@@140 $generated@@237))) (and ($generated@@42 $generated@@239 $generated@@234) ($generated@@112 $generated@@45 $generated@@238 ($generated@@121 $generated@@234 $generated@@235)))) (forall (($generated@@240 T@U) ($generated@@241 T@U) ) (=> (and (or (not (= $generated@@240 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@234 $generated@@235 $generated@@236 $generated@@238 $generated@@239) ($generated@@167 $generated@@75 $generated@@240))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@236 $generated@@240) $generated@@241) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@237 $generated@@240) $generated@@241))))) (= ($generated@@233 $generated@@234 $generated@@235 $generated@@236 $generated@@238 $generated@@239) ($generated@@233 $generated@@234 $generated@@235 $generated@@237 $generated@@238 $generated@@239))) - :pattern ( ($generated@@145 $generated@@236 $generated@@237) ($generated@@233 $generated@@234 $generated@@235 $generated@@237 $generated@@238 $generated@@239)) +(assert (forall (($generated@@229 T@U) ($generated@@230 T@U) ($generated@@231 T@U) ($generated@@232 T@U) ($generated@@233 T@U) ($generated@@234 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@231 $generated@@232) (and ($generated@@138 $generated@@231) ($generated@@138 $generated@@232))) (and ($generated@@39 $generated@@234 $generated@@229) ($generated@@108 $generated@@118 $generated@@233 ($generated@@119 $generated@@229 $generated@@230)))) (forall (($generated@@235 T@U) ($generated@@236 T@U) ) (=> (and (or (not (= $generated@@235 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@229 $generated@@230 $generated@@232 $generated@@233 $generated@@234) ($generated@@166 $generated@@63 $generated@@235))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@231 $generated@@235) $generated@@236) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@232 $generated@@235) $generated@@236))))) (= ($generated@@59 $generated@@229 $generated@@230 $generated@@231 $generated@@233 $generated@@234) ($generated@@59 $generated@@229 $generated@@230 $generated@@232 $generated@@233 $generated@@234))) + :pattern ( ($generated@@143 $generated@@231 $generated@@232) ($generated@@59 $generated@@229 $generated@@230 $generated@@232 $generated@@233 $generated@@234)) ))) -(assert (forall (($generated@@242 T@U) ($generated@@243 T@U) ($generated@@244 T@U) ($generated@@245 T@U) ($generated@@246 T@U) ($generated@@247 T@U) ) (! (=> (and (and (and ($generated@@145 $generated@@244 $generated@@245) (and ($generated@@140 $generated@@244) ($generated@@140 $generated@@245))) (and ($generated@@42 $generated@@247 $generated@@242) ($generated@@112 $generated@@45 $generated@@246 ($generated@@121 $generated@@242 $generated@@243)))) (forall (($generated@@248 T@U) ($generated@@249 T@U) ) (=> (and (or (not (= $generated@@248 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@242 $generated@@243 $generated@@245 $generated@@246 $generated@@247) ($generated@@167 $generated@@75 $generated@@248))) (= ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@244 $generated@@248) $generated@@249) ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@245 $generated@@248) $generated@@249))))) (= ($generated@@233 $generated@@242 $generated@@243 $generated@@244 $generated@@246 $generated@@247) ($generated@@233 $generated@@242 $generated@@243 $generated@@245 $generated@@246 $generated@@247))) - :pattern ( ($generated@@145 $generated@@244 $generated@@245) ($generated@@233 $generated@@242 $generated@@243 $generated@@245 $generated@@246 $generated@@247)) +(assert (forall (($generated@@238 T@U) ($generated@@239 T@U) ($generated@@240 T@U) ($generated@@241 T@U) ($generated@@242 T@U) ($generated@@243 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@240 $generated@@241) (and ($generated@@138 $generated@@240) ($generated@@138 $generated@@241))) (and ($generated@@39 $generated@@243 $generated@@238) ($generated@@108 $generated@@118 $generated@@242 ($generated@@119 $generated@@238 $generated@@239)))) (forall (($generated@@244 T@U) ($generated@@245 T@U) ) (=> (and (or (not (= $generated@@244 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@238 $generated@@239 $generated@@240 $generated@@242 $generated@@243) ($generated@@166 $generated@@63 $generated@@244))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@240 $generated@@244) $generated@@245) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@241 $generated@@244) $generated@@245))))) (= ($generated@@237 $generated@@238 $generated@@239 $generated@@240 $generated@@242 $generated@@243) ($generated@@237 $generated@@238 $generated@@239 $generated@@241 $generated@@242 $generated@@243))) + :pattern ( ($generated@@143 $generated@@240 $generated@@241) ($generated@@237 $generated@@238 $generated@@239 $generated@@241 $generated@@242 $generated@@243)) ))) -(assert (forall (($generated@@251 T@U) ($generated@@252 T@U) ) (! (= ($generated@@71 ($generated@@250 $generated@@251) $generated@@252) ($generated@@20 ($generated@@39 $generated@@75 $generated@@16 $generated@@251 ($generated@@136 $generated@@75 $generated@@252)))) - :pattern ( ($generated@@71 ($generated@@250 $generated@@251) $generated@@252)) +(assert (forall (($generated@@246 T@U) ($generated@@247 T@U) ($generated@@248 T@U) ($generated@@249 T@U) ($generated@@250 T@U) ($generated@@251 T@U) ) (! (=> (and (and (and ($generated@@143 $generated@@248 $generated@@249) (and ($generated@@138 $generated@@248) ($generated@@138 $generated@@249))) (and ($generated@@39 $generated@@251 $generated@@246) ($generated@@108 $generated@@118 $generated@@250 ($generated@@119 $generated@@246 $generated@@247)))) (forall (($generated@@252 T@U) ($generated@@253 T@U) ) (=> (and (or (not (= $generated@@252 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@246 $generated@@247 $generated@@249 $generated@@250 $generated@@251) ($generated@@166 $generated@@63 $generated@@252))) (= ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@248 $generated@@252) $generated@@253) ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@249 $generated@@252) $generated@@253))))) (= ($generated@@237 $generated@@246 $generated@@247 $generated@@248 $generated@@250 $generated@@251) ($generated@@237 $generated@@246 $generated@@247 $generated@@249 $generated@@250 $generated@@251))) + :pattern ( ($generated@@143 $generated@@248 $generated@@249) ($generated@@237 $generated@@246 $generated@@247 $generated@@249 $generated@@250 $generated@@251)) ))) -(assert (forall (($generated@@253 T@U) ($generated@@254 T@U) ($generated@@255 T@U) ($generated@@256 T@U) ) (! (= ($generated@@129 $generated@@45 $generated@@255 ($generated@@139 $generated@@253 $generated@@254) $generated@@256) ($generated@@129 $generated@@45 $generated@@255 ($generated@@121 $generated@@253 $generated@@254) $generated@@256)) - :pattern ( ($generated@@129 $generated@@45 $generated@@255 ($generated@@139 $generated@@253 $generated@@254) $generated@@256)) +(assert (forall (($generated@@255 T@U) ($generated@@256 T@U) ) (! (= ($generated@@58 ($generated@@254 $generated@@255) $generated@@256) ($generated@@20 ($generated@@36 $generated@@63 $generated@@16 $generated@@255 ($generated@@134 $generated@@63 $generated@@256)))) + :pattern ( ($generated@@58 ($generated@@254 $generated@@255) $generated@@256)) ))) -(assert (forall (($generated@@257 T@U) ($generated@@258 T@U) ($generated@@259 T@U) ($generated@@260 T@U) ($generated@@261 T@U) ($generated@@262 T@U) ($generated@@263 T@U) ) (! (= ($generated@@233 $generated@@257 $generated@@258 $generated@@259 ($generated@@73 $generated@@260 $generated@@261 $generated@@262) $generated@@263) ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@40 $generated@@260 $generated@@259 $generated@@263)) - :pattern ( ($generated@@233 $generated@@257 $generated@@258 $generated@@259 ($generated@@73 $generated@@260 $generated@@261 $generated@@262) $generated@@263)) +(assert (forall (($generated@@257 T@U) ($generated@@258 T@U) ($generated@@259 T@U) ($generated@@260 T@U) ) (! (= ($generated@@127 $generated@@118 $generated@@259 ($generated@@137 $generated@@257 $generated@@258) $generated@@260) ($generated@@127 $generated@@118 $generated@@259 ($generated@@119 $generated@@257 $generated@@258) $generated@@260)) + :pattern ( ($generated@@127 $generated@@118 $generated@@259 ($generated@@137 $generated@@257 $generated@@258) $generated@@260)) ))) -(assert (forall (($generated@@264 T@U) ) (! (=> ($generated@@42 $generated@@264 $generated@@131) (and (= ($generated@@167 $generated@@75 ($generated@@136 $generated@@75 $generated@@264)) $generated@@264) ($generated@@112 $generated@@75 ($generated@@136 $generated@@75 $generated@@264) $generated@@131))) - :pattern ( ($generated@@42 $generated@@264 $generated@@131)) +(assert (forall (($generated@@261 T@U) ($generated@@262 T@U) ($generated@@263 T@U) ($generated@@264 T@U) ($generated@@265 T@U) ($generated@@266 T@U) ($generated@@267 T@U) ) (! (= ($generated@@237 $generated@@261 $generated@@262 $generated@@263 ($generated@@60 $generated@@264 $generated@@265 $generated@@266) $generated@@267) ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@37 $generated@@264 $generated@@263 $generated@@267)) + :pattern ( ($generated@@237 $generated@@261 $generated@@262 $generated@@263 ($generated@@60 $generated@@264 $generated@@265 $generated@@266) $generated@@267)) ))) -(assert (forall (($generated@@265 T@U) ) (! (=> ($generated@@42 $generated@@265 $generated@@130) (and (= ($generated@@167 $generated@@75 ($generated@@136 $generated@@75 $generated@@265)) $generated@@265) ($generated@@112 $generated@@75 ($generated@@136 $generated@@75 $generated@@265) $generated@@130))) - :pattern ( ($generated@@42 $generated@@265 $generated@@130)) +(assert (forall (($generated@@268 T@U) ) (! (=> ($generated@@39 $generated@@268 $generated@@129) (and (= ($generated@@166 $generated@@63 ($generated@@134 $generated@@63 $generated@@268)) $generated@@268) ($generated@@108 $generated@@63 ($generated@@134 $generated@@63 $generated@@268) $generated@@129))) + :pattern ( ($generated@@39 $generated@@268 $generated@@129)) ))) -(assert (forall (($generated@@266 T@U) ) (! (=> ($generated@@42 $generated@@266 $generated@@134) (and (= ($generated@@167 $generated@@34 ($generated@@136 $generated@@34 $generated@@266)) $generated@@266) ($generated@@112 $generated@@34 ($generated@@136 $generated@@34 $generated@@266) $generated@@134))) - :pattern ( ($generated@@42 $generated@@266 $generated@@134)) +(assert (forall (($generated@@269 T@U) ) (! (=> ($generated@@39 $generated@@269 $generated@@128) (and (= ($generated@@166 $generated@@63 ($generated@@134 $generated@@63 $generated@@269)) $generated@@269) ($generated@@108 $generated@@63 ($generated@@134 $generated@@63 $generated@@269) $generated@@128))) + :pattern ( ($generated@@39 $generated@@269 $generated@@128)) ))) -(assert (forall (($generated@@267 T@U) ) (! (= ($generated@@112 $generated@@75 $generated@@267 $generated@@130) (and ($generated@@112 $generated@@75 $generated@@267 $generated@@131) (or (not (= $generated@@267 $generated@@135)) (not true)))) - :pattern ( ($generated@@112 $generated@@75 $generated@@267 $generated@@130)) - :pattern ( ($generated@@112 $generated@@75 $generated@@267 $generated@@131)) +(assert (forall (($generated@@270 T@U) ) (! (=> ($generated@@39 $generated@@270 $generated@@132) (and (= ($generated@@166 $generated@@109 ($generated@@134 $generated@@109 $generated@@270)) $generated@@270) ($generated@@108 $generated@@109 ($generated@@134 $generated@@109 $generated@@270) $generated@@132))) + :pattern ( ($generated@@39 $generated@@270 $generated@@132)) ))) -(assert (forall (($generated@@268 T@U) ($generated@@269 T@U) ($generated@@270 T@U) ($generated@@271 T@U) ) (! (=> (and ($generated@@140 $generated@@271) ($generated@@129 $generated@@45 $generated@@268 ($generated@@121 $generated@@269 $generated@@270) $generated@@271)) (forall (($generated@@272 T@U) ) (! (=> (and ($generated@@203 $generated@@272 $generated@@269 $generated@@271) ($generated@@36 $generated@@269 $generated@@270 $generated@@271 $generated@@268 $generated@@272)) ($generated@@203 ($generated@@233 $generated@@269 $generated@@270 $generated@@271 $generated@@268 $generated@@272) $generated@@270 $generated@@271)) - :pattern ( ($generated@@233 $generated@@269 $generated@@270 $generated@@271 $generated@@268 $generated@@272)) +(assert (forall (($generated@@271 T@U) ) (! (= ($generated@@108 $generated@@63 $generated@@271 $generated@@128) (and ($generated@@108 $generated@@63 $generated@@271 $generated@@129) (or (not (= $generated@@271 $generated@@133)) (not true)))) + :pattern ( ($generated@@108 $generated@@63 $generated@@271 $generated@@128)) + :pattern ( ($generated@@108 $generated@@63 $generated@@271 $generated@@129)) ))) - :pattern ( ($generated@@129 $generated@@45 $generated@@268 ($generated@@121 $generated@@269 $generated@@270) $generated@@271)) +(assert (forall (($generated@@272 T@U) ($generated@@273 T@U) ($generated@@274 T@U) ($generated@@275 T@U) ) (! (=> (and ($generated@@138 $generated@@275) ($generated@@127 $generated@@118 $generated@@272 ($generated@@119 $generated@@273 $generated@@274) $generated@@275)) (forall (($generated@@276 T@U) ) (! (=> (and ($generated@@202 $generated@@276 $generated@@273 $generated@@275) ($generated@@33 $generated@@273 $generated@@274 $generated@@275 $generated@@272 $generated@@276)) ($generated@@202 ($generated@@237 $generated@@273 $generated@@274 $generated@@275 $generated@@272 $generated@@276) $generated@@274 $generated@@275)) + :pattern ( ($generated@@237 $generated@@273 $generated@@274 $generated@@275 $generated@@272 $generated@@276)) ))) -(assert (forall (($generated@@274 Bool) ($generated@@275 T@U) ) (! (= ($generated@@20 ($generated@@39 $generated@@75 $generated@@16 ($generated@@273 $generated@@274) $generated@@275)) $generated@@274) - :pattern ( ($generated@@39 $generated@@75 $generated@@16 ($generated@@273 $generated@@274) $generated@@275)) + :pattern ( ($generated@@127 $generated@@118 $generated@@272 ($generated@@119 $generated@@273 $generated@@274) $generated@@275)) ))) -(assert (forall (($generated@@277 T@U) ($generated@@278 T@U) ) (! (= ($generated@@39 $generated@@194 $generated@@45 ($generated@@276 $generated@@277) $generated@@278) $generated@@277) - :pattern ( ($generated@@39 $generated@@194 $generated@@45 ($generated@@276 $generated@@277) $generated@@278)) +(assert (forall (($generated@@278 Bool) ($generated@@279 T@U) ) (! (= ($generated@@20 ($generated@@36 $generated@@63 $generated@@16 ($generated@@277 $generated@@278) $generated@@279)) $generated@@278) + :pattern ( ($generated@@36 $generated@@63 $generated@@16 ($generated@@277 $generated@@278) $generated@@279)) ))) -(assert (forall (($generated@@279 T@U) ($generated@@280 T@U) ($generated@@281 T@U) ) (! (= ($generated@@129 ($generated@@44 $generated@@40 $generated@@16) $generated@@279 ($generated@@149 $generated@@280) $generated@@281) (forall (($generated@@282 T@U) ) (! (=> ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 $generated@@279 $generated@@282)) ($generated@@203 $generated@@282 $generated@@280 $generated@@281)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 $generated@@279 $generated@@282)) +(assert (forall (($generated@@281 T@U) ($generated@@282 T@U) ) (! (= ($generated@@36 $generated@@193 $generated@@118 ($generated@@280 $generated@@281) $generated@@282) $generated@@281) + :pattern ( ($generated@@36 $generated@@193 $generated@@118 ($generated@@280 $generated@@281) $generated@@282)) ))) - :pattern ( ($generated@@129 ($generated@@44 $generated@@40 $generated@@16) $generated@@279 ($generated@@149 $generated@@280) $generated@@281)) +(assert (forall (($generated@@283 T@U) ($generated@@284 T@U) ($generated@@285 T@U) ) (! (= ($generated@@127 ($generated@@62 $generated@@37 $generated@@16) $generated@@283 ($generated@@147 $generated@@284) $generated@@285) (forall (($generated@@286 T@U) ) (! (=> ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 $generated@@283 $generated@@286)) ($generated@@202 $generated@@286 $generated@@284 $generated@@285)) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 $generated@@283 $generated@@286)) ))) -(assert (=> (<= 0 $generated@@31) (forall (($generated@@283 T@U) ($generated@@284 T@U) ($generated@@285 T@U) ) (! (=> ($generated@@35 $generated@@283 $generated@@284 $generated@@285) (and (forall (($generated@@286 T@U) ) (! (=> ($generated@@42 $generated@@286 $generated@@283) (and ($generated@@43 $generated@@285) (=> ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@285) $generated@@286)) (and ($generated@@43 $generated@@285) true)))) - :pattern ( ($generated@@36 $generated@@283 $generated@@284 $generated@@37 ($generated@@38 $generated@@285) $generated@@286)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@285) $generated@@286)) -)) (= ($generated@@32 $generated@@283 $generated@@284 $generated@@285) (forall (($generated@@287 T@U) ) (! (=> (and ($generated@@42 $generated@@287 $generated@@283) ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@285) $generated@@287))) ($generated@@36 $generated@@283 $generated@@284 $generated@@37 ($generated@@38 $generated@@285) $generated@@287)) - :pattern ( ($generated@@36 $generated@@283 $generated@@284 $generated@@37 ($generated@@38 $generated@@285) $generated@@287)) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 ($generated@@41 $generated@@285) $generated@@287)) -))))) - :pattern ( ($generated@@32 $generated@@283 $generated@@284 $generated@@285)) -)))) -(assert (forall (($generated@@288 T@U) ($generated@@289 T@U) ) (! (=> ($generated@@155 $generated@@288 $generated@@289) (= $generated@@288 $generated@@289)) - :pattern ( ($generated@@155 $generated@@288 $generated@@289)) + :pattern ( ($generated@@127 ($generated@@62 $generated@@37 $generated@@16) $generated@@283 ($generated@@147 $generated@@284) $generated@@285)) +))) +(assert (forall (($generated@@287 T@U) ($generated@@288 T@U) ) (! (=> ($generated@@154 $generated@@287 $generated@@288) (= $generated@@287 $generated@@288)) + :pattern ( ($generated@@154 $generated@@287 $generated@@288)) ))) -(assert (forall (($generated@@290 T@U) ($generated@@291 T@U) ($generated@@292 T@U) ) (! (=> (or (not (= $generated@@290 $generated@@292)) (not true)) (=> (and ($generated@@145 $generated@@290 $generated@@291) ($generated@@145 $generated@@291 $generated@@292)) ($generated@@145 $generated@@290 $generated@@292))) - :pattern ( ($generated@@145 $generated@@290 $generated@@291) ($generated@@145 $generated@@291 $generated@@292)) +(assert (forall (($generated@@289 T@U) ($generated@@290 T@U) ($generated@@291 T@U) ) (! (=> (or (not (= $generated@@289 $generated@@291)) (not true)) (=> (and ($generated@@143 $generated@@289 $generated@@290) ($generated@@143 $generated@@290 $generated@@291)) ($generated@@143 $generated@@289 $generated@@291))) + :pattern ( ($generated@@143 $generated@@289 $generated@@290) ($generated@@143 $generated@@290 $generated@@291)) ))) -(assert (forall (($generated@@293 T@U) ($generated@@294 T@U) ($generated@@295 T@U) ) (! (= ($generated@@112 $generated@@45 $generated@@293 ($generated@@121 $generated@@294 $generated@@295)) (forall (($generated@@296 T@U) ($generated@@297 T@U) ) (! (=> (and (and ($generated@@140 $generated@@296) ($generated@@42 $generated@@297 $generated@@294)) ($generated@@36 $generated@@294 $generated@@295 $generated@@296 $generated@@293 $generated@@297)) ($generated@@42 ($generated@@233 $generated@@294 $generated@@295 $generated@@296 $generated@@293 $generated@@297) $generated@@295)) - :pattern ( ($generated@@233 $generated@@294 $generated@@295 $generated@@296 $generated@@293 $generated@@297)) +(assert (forall (($generated@@292 T@U) ($generated@@293 T@U) ($generated@@294 T@U) ) (! (= ($generated@@108 $generated@@118 $generated@@292 ($generated@@119 $generated@@293 $generated@@294)) (forall (($generated@@295 T@U) ($generated@@296 T@U) ) (! (=> (and (and ($generated@@138 $generated@@295) ($generated@@39 $generated@@296 $generated@@293)) ($generated@@33 $generated@@293 $generated@@294 $generated@@295 $generated@@292 $generated@@296)) ($generated@@39 ($generated@@237 $generated@@293 $generated@@294 $generated@@295 $generated@@292 $generated@@296) $generated@@294)) + :pattern ( ($generated@@237 $generated@@293 $generated@@294 $generated@@295 $generated@@292 $generated@@296)) ))) - :pattern ( ($generated@@112 $generated@@45 $generated@@293 ($generated@@121 $generated@@294 $generated@@295))) + :pattern ( ($generated@@108 $generated@@118 $generated@@292 ($generated@@119 $generated@@293 $generated@@294))) ))) -(assert (forall (($generated@@298 T@U) ($generated@@299 T@U) ($generated@@300 T@T) ) (! (= ($generated@@42 ($generated@@167 $generated@@300 $generated@@298) $generated@@299) ($generated@@112 $generated@@300 $generated@@298 $generated@@299)) - :pattern ( ($generated@@42 ($generated@@167 $generated@@300 $generated@@298) $generated@@299)) +(assert (forall (($generated@@297 T@U) ($generated@@298 T@U) ($generated@@299 T@T) ) (! (= ($generated@@39 ($generated@@166 $generated@@299 $generated@@297) $generated@@298) ($generated@@108 $generated@@299 $generated@@297 $generated@@298)) + :pattern ( ($generated@@39 ($generated@@166 $generated@@299 $generated@@297) $generated@@298)) ))) -(assert (forall (($generated@@301 T@U) ($generated@@302 T@U) ($generated@@303 T@U) ($generated@@304 T@U) ($generated@@305 T@U) ($generated@@306 T@U) ($generated@@307 T@U) ) (! (=> ($generated@@20 ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@16 $generated@@305 $generated@@303 $generated@@307)) ($generated@@36 $generated@@301 $generated@@302 $generated@@303 ($generated@@73 $generated@@304 $generated@@305 $generated@@306) $generated@@307)) - :pattern ( ($generated@@36 $generated@@301 $generated@@302 $generated@@303 ($generated@@73 $generated@@304 $generated@@305 $generated@@306) $generated@@307)) +(assert (forall (($generated@@300 T@U) ($generated@@301 T@U) ($generated@@302 T@U) ($generated@@303 T@U) ($generated@@304 T@U) ($generated@@305 T@U) ($generated@@306 T@U) ) (! (=> ($generated@@20 ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@16 $generated@@304 $generated@@302 $generated@@306)) ($generated@@33 $generated@@300 $generated@@301 $generated@@302 ($generated@@60 $generated@@303 $generated@@304 $generated@@305) $generated@@306)) + :pattern ( ($generated@@33 $generated@@300 $generated@@301 $generated@@302 ($generated@@60 $generated@@303 $generated@@304 $generated@@305) $generated@@306)) ))) -(assert (forall (($generated@@308 T@U) ($generated@@309 T@U) ($generated@@310 T@U) ) (! (= ($generated@@129 $generated@@77 $generated@@308 ($generated@@189 $generated@@309) $generated@@310) (forall (($generated@@311 T@U) ) (! (=> ($generated@@71 $generated@@308 $generated@@311) ($generated@@203 $generated@@311 $generated@@309 $generated@@310)) - :pattern ( ($generated@@71 $generated@@308 $generated@@311)) +(assert (forall (($generated@@307 T@U) ($generated@@308 T@U) ($generated@@309 T@U) ) (! (= ($generated@@127 $generated@@65 $generated@@307 ($generated@@188 $generated@@308) $generated@@309) (forall (($generated@@310 T@U) ) (! (=> ($generated@@58 $generated@@307 $generated@@310) ($generated@@202 $generated@@310 $generated@@308 $generated@@309)) + :pattern ( ($generated@@58 $generated@@307 $generated@@310)) ))) - :pattern ( ($generated@@129 $generated@@77 $generated@@308 ($generated@@189 $generated@@309) $generated@@310)) + :pattern ( ($generated@@127 $generated@@65 $generated@@307 ($generated@@188 $generated@@308) $generated@@309)) ))) -(assert (forall (($generated@@313 T@U) ($generated@@314 T@U) ) (! (= ($generated@@312 ($generated@@121 $generated@@313 $generated@@314)) $generated@@313) - :pattern ( ($generated@@121 $generated@@313 $generated@@314)) +(assert (forall (($generated@@312 T@U) ($generated@@313 T@U) ) (! (= ($generated@@311 ($generated@@119 $generated@@312 $generated@@313)) $generated@@312) + :pattern ( ($generated@@119 $generated@@312 $generated@@313)) ))) -(assert (forall (($generated@@316 T@U) ($generated@@317 T@U) ) (! (= ($generated@@315 ($generated@@121 $generated@@316 $generated@@317)) $generated@@317) - :pattern ( ($generated@@121 $generated@@316 $generated@@317)) +(assert (forall (($generated@@315 T@U) ($generated@@316 T@U) ) (! (= ($generated@@314 ($generated@@119 $generated@@315 $generated@@316)) $generated@@316) + :pattern ( ($generated@@119 $generated@@315 $generated@@316)) ))) -(assert (forall (($generated@@319 T@U) ($generated@@320 T@U) ) (! (= ($generated@@318 ($generated@@139 $generated@@319 $generated@@320)) $generated@@319) - :pattern ( ($generated@@139 $generated@@319 $generated@@320)) +(assert (forall (($generated@@318 T@U) ($generated@@319 T@U) ) (! (= ($generated@@317 ($generated@@137 $generated@@318 $generated@@319)) $generated@@318) + :pattern ( ($generated@@137 $generated@@318 $generated@@319)) ))) -(assert (forall (($generated@@322 T@U) ($generated@@323 T@U) ) (! (= ($generated@@321 ($generated@@139 $generated@@322 $generated@@323)) $generated@@323) - :pattern ( ($generated@@139 $generated@@322 $generated@@323)) +(assert (forall (($generated@@321 T@U) ($generated@@322 T@U) ) (! (= ($generated@@320 ($generated@@137 $generated@@321 $generated@@322)) $generated@@322) + :pattern ( ($generated@@137 $generated@@321 $generated@@322)) ))) -(assert (forall (($generated@@324 T@U) ($generated@@325 T@U) ) (! (= ($generated@@119 ($generated@@161 $generated@@324 $generated@@325)) $generated@@8) - :pattern ( ($generated@@161 $generated@@324 $generated@@325)) +(assert (forall (($generated@@323 T@U) ($generated@@324 T@U) ) (! (= ($generated@@116 ($generated@@160 $generated@@323 $generated@@324)) $generated@@8) + :pattern ( ($generated@@160 $generated@@323 $generated@@324)) ))) -(assert (forall (($generated@@327 T@U) ($generated@@328 T@U) ) (! (= ($generated@@326 ($generated@@113 $generated@@327 $generated@@328)) $generated@@327) - :pattern ( ($generated@@113 $generated@@327 $generated@@328)) +(assert (forall (($generated@@326 T@U) ($generated@@327 T@U) ) (! (= ($generated@@325 ($generated@@110 $generated@@326 $generated@@327)) $generated@@326) + :pattern ( ($generated@@110 $generated@@326 $generated@@327)) ))) -(assert (forall (($generated@@330 T@U) ($generated@@331 T@U) ) (! (= ($generated@@329 ($generated@@113 $generated@@330 $generated@@331)) $generated@@331) - :pattern ( ($generated@@113 $generated@@330 $generated@@331)) +(assert (forall (($generated@@329 T@U) ($generated@@330 T@U) ) (! (= ($generated@@328 ($generated@@110 $generated@@329 $generated@@330)) $generated@@330) + :pattern ( ($generated@@110 $generated@@329 $generated@@330)) ))) -(assert (forall (($generated@@332 T@U) ($generated@@333 T@U) ) (! (= ($generated@@41 ($generated@@161 $generated@@332 $generated@@333)) $generated@@332) - :pattern ( ($generated@@161 $generated@@332 $generated@@333)) +(assert (forall (($generated@@331 T@U) ($generated@@332 T@U) ) (! (= ($generated@@38 ($generated@@160 $generated@@331 $generated@@332)) $generated@@331) + :pattern ( ($generated@@160 $generated@@331 $generated@@332)) ))) -(assert (forall (($generated@@334 T@U) ($generated@@335 T@U) ) (! (= ($generated@@38 ($generated@@161 $generated@@334 $generated@@335)) $generated@@335) - :pattern ( ($generated@@161 $generated@@334 $generated@@335)) +(assert (forall (($generated@@333 T@U) ($generated@@334 T@U) ) (! (= ($generated@@35 ($generated@@160 $generated@@333 $generated@@334)) $generated@@334) + :pattern ( ($generated@@160 $generated@@333 $generated@@334)) ))) -(assert (forall (($generated@@336 T@U) ) (! ($generated@@112 $generated@@75 $generated@@336 $generated@@131) - :pattern ( ($generated@@112 $generated@@75 $generated@@336 $generated@@131)) +(assert (forall (($generated@@335 T@U) ) (! ($generated@@108 $generated@@63 $generated@@335 $generated@@129) + :pattern ( ($generated@@108 $generated@@63 $generated@@335 $generated@@129)) ))) -(assert (forall (($generated@@338 T@U) ) (! (= ($generated@@337 ($generated@@189 $generated@@338)) $generated@@338) - :pattern ( ($generated@@189 $generated@@338)) +(assert (forall (($generated@@337 T@U) ) (! (= ($generated@@336 ($generated@@188 $generated@@337)) $generated@@337) + :pattern ( ($generated@@188 $generated@@337)) ))) -(assert (forall (($generated@@340 T@U) ) (! (= ($generated@@339 ($generated@@189 $generated@@340)) $generated) - :pattern ( ($generated@@189 $generated@@340)) +(assert (forall (($generated@@339 T@U) ) (! (= ($generated@@338 ($generated@@188 $generated@@339)) $generated) + :pattern ( ($generated@@188 $generated@@339)) ))) -(assert (forall (($generated@@342 T@U) ) (! (= ($generated@@341 ($generated@@149 $generated@@342)) $generated@@342) - :pattern ( ($generated@@149 $generated@@342)) +(assert (forall (($generated@@341 T@U) ) (! (= ($generated@@340 ($generated@@147 $generated@@341)) $generated@@341) + :pattern ( ($generated@@147 $generated@@341)) ))) -(assert (forall (($generated@@343 T@U) ) (! (= ($generated@@339 ($generated@@149 $generated@@343)) $generated@@0) - :pattern ( ($generated@@149 $generated@@343)) +(assert (forall (($generated@@342 T@U) ) (! (= ($generated@@338 ($generated@@147 $generated@@342)) $generated@@0) + :pattern ( ($generated@@147 $generated@@342)) ))) -(assert (forall (($generated@@344 T@U) ($generated@@345 T@T) ) (! (= ($generated@@136 $generated@@345 ($generated@@167 $generated@@345 $generated@@344)) $generated@@344) - :pattern ( ($generated@@167 $generated@@345 $generated@@344)) +(assert (forall (($generated@@343 T@U) ($generated@@344 T@T) ) (! (= ($generated@@134 $generated@@344 ($generated@@166 $generated@@344 $generated@@343)) $generated@@343) + :pattern ( ($generated@@166 $generated@@344 $generated@@343)) ))) -(assert (forall (($generated@@347 T@U) ($generated@@348 T@U) ($generated@@349 T@U) ) (! (=> ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 $generated@@347 ($generated@@167 $generated@@34 $generated@@349))) (< ($generated@@346 $generated@@349) ($generated@@346 ($generated@@161 $generated@@347 $generated@@348)))) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 $generated@@347 ($generated@@167 $generated@@34 $generated@@349)) ($generated@@161 $generated@@347 $generated@@348)) +(assert (forall (($generated@@346 T@U) ($generated@@347 T@U) ($generated@@348 T@U) ) (! (=> ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 $generated@@346 ($generated@@166 $generated@@109 $generated@@348))) (< ($generated@@345 $generated@@348) ($generated@@345 ($generated@@160 $generated@@346 $generated@@347)))) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 $generated@@346 ($generated@@166 $generated@@109 $generated@@348)) ($generated@@160 $generated@@346 $generated@@347)) ))) -(assert (forall (($generated@@350 T@U) ($generated@@351 T@U) ($generated@@352 T@U) ) (! (= ($generated@@112 $generated@@45 $generated@@352 ($generated@@139 $generated@@350 $generated@@351)) (and ($generated@@112 $generated@@45 $generated@@352 ($generated@@121 $generated@@350 $generated@@351)) (forall (($generated@@353 T@U) ) (=> ($generated@@42 $generated@@353 $generated@@350) ($generated@@155 ($generated@@72 $generated@@350 $generated@@351 $generated@@37 $generated@@352 $generated@@353) $generated@@117))))) - :pattern ( ($generated@@112 $generated@@45 $generated@@352 ($generated@@139 $generated@@350 $generated@@351))) +(assert (forall (($generated@@349 T@U) ($generated@@350 T@U) ($generated@@351 T@U) ) (! (= ($generated@@108 $generated@@118 $generated@@351 ($generated@@137 $generated@@349 $generated@@350)) (and ($generated@@108 $generated@@118 $generated@@351 ($generated@@119 $generated@@349 $generated@@350)) (forall (($generated@@352 T@U) ) (=> ($generated@@39 $generated@@352 $generated@@349) ($generated@@154 ($generated@@59 $generated@@349 $generated@@350 $generated@@34 $generated@@351 $generated@@352) $generated@@114))))) + :pattern ( ($generated@@108 $generated@@118 $generated@@351 ($generated@@137 $generated@@349 $generated@@350))) ))) -(assert (forall (($generated@@355 T@U) ($generated@@356 T@U) ($generated@@357 T@T) ) (! (= ($generated@@193 $generated@@357 $generated@@355 ($generated@@354 $generated@@356)) ($generated@@193 $generated@@357 $generated@@355 $generated@@356)) - :pattern ( ($generated@@193 $generated@@357 $generated@@355 ($generated@@354 $generated@@356))) +(assert (forall (($generated@@354 T@U) ($generated@@355 T@U) ($generated@@356 T@T) ) (! (= ($generated@@192 $generated@@356 $generated@@354 ($generated@@353 $generated@@355)) ($generated@@192 $generated@@356 $generated@@354 $generated@@355)) + :pattern ( ($generated@@192 $generated@@356 $generated@@354 ($generated@@353 $generated@@355))) ))) -(assert (forall (($generated@@358 T@U) ($generated@@359 T@U) ($generated@@360 T@U) ($generated@@361 T@U) ) (! (=> ($generated@@140 $generated@@361) (= ($generated@@129 $generated@@45 $generated@@358 ($generated@@121 $generated@@359 $generated@@360) $generated@@361) (forall (($generated@@362 T@U) ) (! (=> (and (and ($generated@@42 $generated@@362 $generated@@359) ($generated@@203 $generated@@362 $generated@@359 $generated@@361)) ($generated@@36 $generated@@359 $generated@@360 $generated@@361 $generated@@358 $generated@@362)) (forall (($generated@@363 T@U) ) (! (=> (and (or (not (= $generated@@363 $generated@@135)) (not true)) ($generated@@71 ($generated@@72 $generated@@359 $generated@@360 $generated@@361 $generated@@358 $generated@@362) ($generated@@167 $generated@@75 $generated@@363))) ($generated@@20 ($generated@@136 $generated@@16 ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@361 $generated@@363) $generated@@1)))) - :pattern ( ($generated@@71 ($generated@@72 $generated@@359 $generated@@360 $generated@@361 $generated@@358 $generated@@362) ($generated@@167 $generated@@75 $generated@@363))) +(assert (forall (($generated@@357 T@U) ($generated@@358 T@U) ($generated@@359 T@U) ($generated@@360 T@U) ) (! (=> ($generated@@138 $generated@@360) (= ($generated@@127 $generated@@118 $generated@@357 ($generated@@119 $generated@@358 $generated@@359) $generated@@360) (forall (($generated@@361 T@U) ) (! (=> (and (and ($generated@@39 $generated@@361 $generated@@358) ($generated@@202 $generated@@361 $generated@@358 $generated@@360)) ($generated@@33 $generated@@358 $generated@@359 $generated@@360 $generated@@357 $generated@@361)) (forall (($generated@@362 T@U) ) (! (=> (and (or (not (= $generated@@362 $generated@@133)) (not true)) ($generated@@58 ($generated@@59 $generated@@358 $generated@@359 $generated@@360 $generated@@357 $generated@@361) ($generated@@166 $generated@@63 $generated@@362))) ($generated@@20 ($generated@@134 $generated@@16 ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@360 $generated@@362) $generated@@1)))) + :pattern ( ($generated@@58 ($generated@@59 $generated@@358 $generated@@359 $generated@@360 $generated@@357 $generated@@361) ($generated@@166 $generated@@63 $generated@@362))) ))) - :pattern ( ($generated@@233 $generated@@359 $generated@@360 $generated@@361 $generated@@358 $generated@@362)) - :pattern ( ($generated@@72 $generated@@359 $generated@@360 $generated@@361 $generated@@358 $generated@@362)) + :pattern ( ($generated@@237 $generated@@358 $generated@@359 $generated@@360 $generated@@357 $generated@@361)) + :pattern ( ($generated@@59 $generated@@358 $generated@@359 $generated@@360 $generated@@357 $generated@@361)) )))) - :pattern ( ($generated@@129 $generated@@45 $generated@@358 ($generated@@121 $generated@@359 $generated@@360) $generated@@361)) + :pattern ( ($generated@@127 $generated@@118 $generated@@357 ($generated@@119 $generated@@358 $generated@@359) $generated@@360)) ))) -(assert (forall (($generated@@364 T@U) ($generated@@365 T@U) ($generated@@366 T@U) ) (! (=> ($generated@@42 $generated@@366 ($generated@@121 $generated@@364 $generated@@365)) (and (= ($generated@@167 $generated@@45 ($generated@@136 $generated@@45 $generated@@366)) $generated@@366) ($generated@@112 $generated@@45 ($generated@@136 $generated@@45 $generated@@366) ($generated@@121 $generated@@364 $generated@@365)))) - :pattern ( ($generated@@42 $generated@@366 ($generated@@121 $generated@@364 $generated@@365))) +(assert (forall (($generated@@363 T@U) ($generated@@364 T@U) ($generated@@365 T@U) ) (! (=> ($generated@@39 $generated@@365 ($generated@@119 $generated@@363 $generated@@364)) (and (= ($generated@@166 $generated@@118 ($generated@@134 $generated@@118 $generated@@365)) $generated@@365) ($generated@@108 $generated@@118 ($generated@@134 $generated@@118 $generated@@365) ($generated@@119 $generated@@363 $generated@@364)))) + :pattern ( ($generated@@39 $generated@@365 ($generated@@119 $generated@@363 $generated@@364))) ))) -(assert (forall (($generated@@367 T@U) ($generated@@368 T@U) ($generated@@369 T@U) ) (! (=> ($generated@@42 $generated@@369 ($generated@@139 $generated@@367 $generated@@368)) (and (= ($generated@@167 $generated@@45 ($generated@@136 $generated@@45 $generated@@369)) $generated@@369) ($generated@@112 $generated@@45 ($generated@@136 $generated@@45 $generated@@369) ($generated@@139 $generated@@367 $generated@@368)))) - :pattern ( ($generated@@42 $generated@@369 ($generated@@139 $generated@@367 $generated@@368))) +(assert (forall (($generated@@366 T@U) ($generated@@367 T@U) ($generated@@368 T@U) ) (! (=> ($generated@@39 $generated@@368 ($generated@@137 $generated@@366 $generated@@367)) (and (= ($generated@@166 $generated@@118 ($generated@@134 $generated@@118 $generated@@368)) $generated@@368) ($generated@@108 $generated@@118 ($generated@@134 $generated@@118 $generated@@368) ($generated@@137 $generated@@366 $generated@@367)))) + :pattern ( ($generated@@39 $generated@@368 ($generated@@137 $generated@@366 $generated@@367))) ))) -(assert (forall (($generated@@370 T@U) ($generated@@371 T@U) ($generated@@372 T@U) ) (! (=> ($generated@@42 $generated@@372 ($generated@@113 $generated@@370 $generated@@371)) (and (= ($generated@@167 $generated@@34 ($generated@@136 $generated@@34 $generated@@372)) $generated@@372) ($generated@@112 $generated@@34 ($generated@@136 $generated@@34 $generated@@372) ($generated@@113 $generated@@370 $generated@@371)))) - :pattern ( ($generated@@42 $generated@@372 ($generated@@113 $generated@@370 $generated@@371))) +(assert (forall (($generated@@369 T@U) ($generated@@370 T@U) ($generated@@371 T@U) ) (! (=> ($generated@@39 $generated@@371 ($generated@@110 $generated@@369 $generated@@370)) (and (= ($generated@@166 $generated@@109 ($generated@@134 $generated@@109 $generated@@371)) $generated@@371) ($generated@@108 $generated@@109 ($generated@@134 $generated@@109 $generated@@371) ($generated@@110 $generated@@369 $generated@@370)))) + :pattern ( ($generated@@39 $generated@@371 ($generated@@110 $generated@@369 $generated@@370))) ))) -(assert (forall (($generated@@374 T@U) ) (! (not ($generated@@20 ($generated@@39 $generated@@40 $generated@@16 $generated@@373 $generated@@374))) - :pattern ( ($generated@@39 $generated@@40 $generated@@16 $generated@@373 $generated@@374)) +(assert (forall (($generated@@373 T@U) ) (! (not ($generated@@20 ($generated@@36 $generated@@37 $generated@@16 $generated@@372 $generated@@373))) + :pattern ( ($generated@@36 $generated@@37 $generated@@16 $generated@@372 $generated@@373)) ))) -(assert (forall (($generated@@376 T@U) ($generated@@377 T@U) ($generated@@378 T@U) ($generated@@379 Bool) ($generated@@380 T@U) ($generated@@381 T@U) ) (! (= ($generated@@20 ($generated@@74 $generated@@75 $generated@@76 $generated@@16 ($generated@@375 $generated@@376 $generated@@377 $generated@@378 $generated@@379) $generated@@380 $generated@@381)) (=> (and (or (not (= $generated@@380 $generated@@376)) (not true)) ($generated@@20 ($generated@@136 $generated@@16 ($generated@@39 $generated@@76 $generated@@40 ($generated@@39 $generated@@75 ($generated@@44 $generated@@76 $generated@@40) $generated@@377 $generated@@380) $generated@@378)))) $generated@@379)) - :pattern ( ($generated@@74 $generated@@75 $generated@@76 $generated@@16 ($generated@@375 $generated@@376 $generated@@377 $generated@@378 $generated@@379) $generated@@380 $generated@@381)) +(assert (forall (($generated@@375 T@U) ($generated@@376 T@U) ($generated@@377 T@U) ($generated@@378 Bool) ($generated@@379 T@U) ($generated@@380 T@U) ) (! (= ($generated@@20 ($generated@@61 $generated@@63 $generated@@64 $generated@@16 ($generated@@374 $generated@@375 $generated@@376 $generated@@377 $generated@@378) $generated@@379 $generated@@380)) (=> (and (or (not (= $generated@@379 $generated@@375)) (not true)) ($generated@@20 ($generated@@134 $generated@@16 ($generated@@36 $generated@@64 $generated@@37 ($generated@@36 $generated@@63 ($generated@@62 $generated@@64 $generated@@37) $generated@@376 $generated@@379) $generated@@377)))) $generated@@378)) + :pattern ( ($generated@@61 $generated@@63 $generated@@64 $generated@@16 ($generated@@374 $generated@@375 $generated@@376 $generated@@377 $generated@@378) $generated@@379 $generated@@380)) ))) -(assert (forall (($generated@@383 T@U) ($generated@@384 T@U) ) (! (and (= ($generated@@339 ($generated@@121 $generated@@383 $generated@@384)) $generated@@4) (= ($generated@@382 ($generated@@121 $generated@@383 $generated@@384)) $generated@@11)) - :pattern ( ($generated@@121 $generated@@383 $generated@@384)) +(assert (forall (($generated@@382 T@U) ($generated@@383 T@U) ) (! (and (= ($generated@@338 ($generated@@119 $generated@@382 $generated@@383)) $generated@@4) (= ($generated@@381 ($generated@@119 $generated@@382 $generated@@383)) $generated@@11)) + :pattern ( ($generated@@119 $generated@@382 $generated@@383)) ))) -(assert (forall (($generated@@385 T@U) ($generated@@386 T@U) ) (! (and (= ($generated@@339 ($generated@@139 $generated@@385 $generated@@386)) $generated@@5) (= ($generated@@382 ($generated@@139 $generated@@385 $generated@@386)) $generated@@12)) - :pattern ( ($generated@@139 $generated@@385 $generated@@386)) +(assert (forall (($generated@@384 T@U) ($generated@@385 T@U) ) (! (and (= ($generated@@338 ($generated@@137 $generated@@384 $generated@@385)) $generated@@5) (= ($generated@@381 ($generated@@137 $generated@@384 $generated@@385)) $generated@@12)) + :pattern ( ($generated@@137 $generated@@384 $generated@@385)) ))) -(assert (forall (($generated@@387 T@U) ($generated@@388 T@U) ) (! (and (= ($generated@@339 ($generated@@113 $generated@@387 $generated@@388)) $generated@@9) (= ($generated@@382 ($generated@@113 $generated@@387 $generated@@388)) $generated@@14)) - :pattern ( ($generated@@113 $generated@@387 $generated@@388)) +(assert (forall (($generated@@386 T@U) ($generated@@387 T@U) ) (! (and (= ($generated@@338 ($generated@@110 $generated@@386 $generated@@387)) $generated@@9) (= ($generated@@381 ($generated@@110 $generated@@386 $generated@@387)) $generated@@14)) + :pattern ( ($generated@@110 $generated@@386 $generated@@387)) ))) -(assert (forall (($generated@@389 T@U) ($generated@@390 T@U) ($generated@@391 T@U) ($generated@@392 T@U) ($generated@@393 T@U) ) (! (=> (and (and ($generated@@140 $generated@@391) (and ($generated@@42 $generated@@393 $generated@@389) ($generated@@112 $generated@@45 $generated@@392 ($generated@@121 $generated@@389 $generated@@390)))) ($generated@@155 ($generated@@72 $generated@@389 $generated@@390 $generated@@37 $generated@@392 $generated@@393) $generated@@117)) (= ($generated@@36 $generated@@389 $generated@@390 $generated@@37 $generated@@392 $generated@@393) ($generated@@36 $generated@@389 $generated@@390 $generated@@391 $generated@@392 $generated@@393))) - :pattern ( ($generated@@36 $generated@@389 $generated@@390 $generated@@37 $generated@@392 $generated@@393) ($generated@@140 $generated@@391)) - :pattern ( ($generated@@36 $generated@@389 $generated@@390 $generated@@391 $generated@@392 $generated@@393)) +(assert (forall (($generated@@388 T@U) ($generated@@389 T@U) ($generated@@390 T@U) ($generated@@391 T@U) ($generated@@392 T@U) ) (! (=> (and (and ($generated@@138 $generated@@390) (and ($generated@@39 $generated@@392 $generated@@388) ($generated@@108 $generated@@118 $generated@@391 ($generated@@119 $generated@@388 $generated@@389)))) ($generated@@154 ($generated@@59 $generated@@388 $generated@@389 $generated@@34 $generated@@391 $generated@@392) $generated@@114)) (= ($generated@@33 $generated@@388 $generated@@389 $generated@@34 $generated@@391 $generated@@392) ($generated@@33 $generated@@388 $generated@@389 $generated@@390 $generated@@391 $generated@@392))) + :pattern ( ($generated@@33 $generated@@388 $generated@@389 $generated@@34 $generated@@391 $generated@@392) ($generated@@138 $generated@@390)) + :pattern ( ($generated@@33 $generated@@388 $generated@@389 $generated@@390 $generated@@391 $generated@@392)) ))) -(assert (forall (($generated@@394 T@U) ($generated@@395 T@U) ) (! (=> ($generated@@42 $generated@@394 ($generated@@189 $generated@@395)) (and (= ($generated@@167 $generated@@77 ($generated@@136 $generated@@77 $generated@@394)) $generated@@394) ($generated@@112 $generated@@77 ($generated@@136 $generated@@77 $generated@@394) ($generated@@189 $generated@@395)))) - :pattern ( ($generated@@42 $generated@@394 ($generated@@189 $generated@@395))) +(assert (forall (($generated@@393 T@U) ($generated@@394 T@U) ) (! (=> ($generated@@39 $generated@@393 ($generated@@188 $generated@@394)) (and (= ($generated@@166 $generated@@65 ($generated@@134 $generated@@65 $generated@@393)) $generated@@393) ($generated@@108 $generated@@65 ($generated@@134 $generated@@65 $generated@@393) ($generated@@188 $generated@@394)))) + :pattern ( ($generated@@39 $generated@@393 ($generated@@188 $generated@@394))) ))) -(assert (forall (($generated@@396 T@U) ($generated@@397 T@U) ) (! (=> ($generated@@42 $generated@@396 ($generated@@149 $generated@@397)) (and (= ($generated@@167 ($generated@@44 $generated@@40 $generated@@16) ($generated@@136 ($generated@@44 $generated@@40 $generated@@16) $generated@@396)) $generated@@396) ($generated@@112 ($generated@@44 $generated@@40 $generated@@16) ($generated@@136 ($generated@@44 $generated@@40 $generated@@16) $generated@@396) ($generated@@149 $generated@@397)))) - :pattern ( ($generated@@42 $generated@@396 ($generated@@149 $generated@@397))) +(assert (forall (($generated@@395 T@U) ($generated@@396 T@U) ) (! (=> ($generated@@39 $generated@@395 ($generated@@147 $generated@@396)) (and (= ($generated@@166 ($generated@@62 $generated@@37 $generated@@16) ($generated@@134 ($generated@@62 $generated@@37 $generated@@16) $generated@@395)) $generated@@395) ($generated@@108 ($generated@@62 $generated@@37 $generated@@16) ($generated@@134 ($generated@@62 $generated@@37 $generated@@16) $generated@@395) ($generated@@147 $generated@@396)))) + :pattern ( ($generated@@39 $generated@@395 ($generated@@147 $generated@@396))) ))) -(assert (forall (($generated@@398 T@U) ($generated@@399 T@U) ) (! (=> (and ($generated@@140 $generated@@399) ($generated@@112 $generated@@34 $generated@@398 $generated@@134)) ($generated@@129 $generated@@34 $generated@@398 $generated@@134 $generated@@399)) - :pattern ( ($generated@@129 $generated@@34 $generated@@398 $generated@@134 $generated@@399)) +(assert (forall (($generated@@397 T@U) ($generated@@398 T@U) ) (! (=> (and ($generated@@138 $generated@@398) ($generated@@108 $generated@@109 $generated@@397 $generated@@132)) ($generated@@127 $generated@@109 $generated@@397 $generated@@132 $generated@@398)) + :pattern ( ($generated@@127 $generated@@109 $generated@@397 $generated@@132 $generated@@398)) ))) -(assert (= ($generated@@339 $generated@@131) $generated@@2)) -(assert (= ($generated@@382 $generated@@131) $generated@@10)) -(assert (= ($generated@@339 $generated@@130) $generated@@3)) -(assert (= ($generated@@382 $generated@@130) $generated@@10)) -(assert (= ($generated@@339 $generated@@134) $generated@@7)) -(assert (= ($generated@@382 $generated@@134) $generated@@13)) -(assert (= $generated@@120 ($generated@@33 $generated@@34 $generated@@120))) -(assert (forall (($generated@@400 T@U) ) (! ($generated@@112 $generated@@77 ($generated@@250 $generated@@400) ($generated@@189 $generated@@131)) - :pattern ( ($generated@@250 $generated@@400)) +(assert (= ($generated@@338 $generated@@129) $generated@@2)) +(assert (= ($generated@@381 $generated@@129) $generated@@10)) +(assert (= ($generated@@338 $generated@@128) $generated@@3)) +(assert (= ($generated@@381 $generated@@128) $generated@@10)) +(assert (= ($generated@@338 $generated@@132) $generated@@7)) +(assert (= ($generated@@381 $generated@@132) $generated@@13)) +(assert (= $generated@@117 ($generated@@151 $generated@@109 $generated@@117))) +(assert (forall (($generated@@399 T@U) ) (! ($generated@@108 $generated@@65 ($generated@@254 $generated@@399) ($generated@@188 $generated@@129)) + :pattern ( ($generated@@254 $generated@@399)) ))) -(assert (forall (($generated@@401 T@U) ($generated@@402 T@U) ) (! (= ($generated@@155 $generated@@401 $generated@@402) (forall (($generated@@403 T@U) ) (! (= ($generated@@71 $generated@@401 $generated@@403) ($generated@@71 $generated@@402 $generated@@403)) - :pattern ( ($generated@@71 $generated@@401 $generated@@403)) - :pattern ( ($generated@@71 $generated@@402 $generated@@403)) +(assert (forall (($generated@@400 T@U) ($generated@@401 T@U) ) (! (= ($generated@@154 $generated@@400 $generated@@401) (forall (($generated@@402 T@U) ) (! (= ($generated@@58 $generated@@400 $generated@@402) ($generated@@58 $generated@@401 $generated@@402)) + :pattern ( ($generated@@58 $generated@@400 $generated@@402)) + :pattern ( ($generated@@58 $generated@@401 $generated@@402)) ))) - :pattern ( ($generated@@155 $generated@@401 $generated@@402)) + :pattern ( ($generated@@154 $generated@@400 $generated@@401)) ))) -(assert (forall (($generated@@404 T@U) ($generated@@405 T@U) ) (! (= ($generated@@161 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) $generated@@404) ($generated@@33 $generated@@45 $generated@@405)) ($generated@@33 $generated@@34 ($generated@@161 $generated@@404 $generated@@405))) - :pattern ( ($generated@@161 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) $generated@@404) ($generated@@33 $generated@@45 $generated@@405))) +(assert (forall (($generated@@403 T@U) ($generated@@404 T@U) ) (! (= ($generated@@160 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) $generated@@403) ($generated@@151 $generated@@118 $generated@@404)) ($generated@@151 $generated@@109 ($generated@@160 $generated@@403 $generated@@404))) + :pattern ( ($generated@@160 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) $generated@@403) ($generated@@151 $generated@@118 $generated@@404))) ))) -(assert (forall (($generated@@406 T@U) ($generated@@407 T@T) ) (! (= ($generated@@167 $generated@@407 ($generated@@33 $generated@@407 $generated@@406)) ($generated@@33 $generated@@40 ($generated@@167 $generated@@407 $generated@@406))) - :pattern ( ($generated@@167 $generated@@407 ($generated@@33 $generated@@407 $generated@@406))) +(assert (forall (($generated@@405 T@U) ($generated@@406 T@T) ) (! (= ($generated@@166 $generated@@406 ($generated@@151 $generated@@406 $generated@@405)) ($generated@@151 $generated@@37 ($generated@@166 $generated@@406 $generated@@405))) + :pattern ( ($generated@@166 $generated@@406 ($generated@@151 $generated@@406 $generated@@405))) ))) -(assert (forall (($generated@@408 T@U) ($generated@@409 T@U) ($generated@@410 T@U) ) (! (=> (and ($generated@@140 $generated@@410) (and ($generated@@43 $generated@@408) (exists (($generated@@411 T@U) ) (! ($generated@@129 $generated@@34 $generated@@408 ($generated@@113 $generated@@409 $generated@@411) $generated@@410) - :pattern ( ($generated@@129 $generated@@34 $generated@@408 ($generated@@113 $generated@@409 $generated@@411) $generated@@410)) -)))) ($generated@@129 ($generated@@44 $generated@@40 $generated@@16) ($generated@@41 $generated@@408) ($generated@@149 $generated@@409) $generated@@410)) - :pattern ( ($generated@@129 ($generated@@44 $generated@@40 $generated@@16) ($generated@@41 $generated@@408) ($generated@@149 $generated@@409) $generated@@410)) +(assert (forall (($generated@@407 T@U) ($generated@@408 T@U) ($generated@@409 T@U) ) (! (=> (and ($generated@@138 $generated@@409) (and ($generated@@40 $generated@@407) (exists (($generated@@410 T@U) ) (! ($generated@@127 $generated@@109 $generated@@407 ($generated@@110 $generated@@408 $generated@@410) $generated@@409) + :pattern ( ($generated@@127 $generated@@109 $generated@@407 ($generated@@110 $generated@@408 $generated@@410) $generated@@409)) +)))) ($generated@@127 ($generated@@62 $generated@@37 $generated@@16) ($generated@@38 $generated@@407) ($generated@@147 $generated@@408) $generated@@409)) + :pattern ( ($generated@@127 ($generated@@62 $generated@@37 $generated@@16) ($generated@@38 $generated@@407) ($generated@@147 $generated@@408) $generated@@409)) ))) -(assert (forall (($generated@@413 T@U) ($generated@@414 T@U) ($generated@@415 T@U) ) (! (= ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@77 ($generated@@412 $generated@@413) $generated@@414 $generated@@415) $generated@@413) - :pattern ( ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@77 ($generated@@412 $generated@@413) $generated@@414 $generated@@415)) +(assert (forall (($generated@@412 T@U) ($generated@@413 T@U) ($generated@@414 T@U) ) (! (= ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@65 ($generated@@411 $generated@@412) $generated@@413 $generated@@414) $generated@@412) + :pattern ( ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@65 ($generated@@411 $generated@@412) $generated@@413 $generated@@414)) ))) -(assert (forall (($generated@@417 T@U) ($generated@@418 T@U) ($generated@@419 T@U) ) (! (= ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@40 ($generated@@416 $generated@@417) $generated@@418 $generated@@419) $generated@@417) - :pattern ( ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@40 ($generated@@416 $generated@@417) $generated@@418 $generated@@419)) +(assert (forall (($generated@@416 T@U) ($generated@@417 T@U) ($generated@@418 T@U) ) (! (= ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@37 ($generated@@415 $generated@@416) $generated@@417 $generated@@418) $generated@@416) + :pattern ( ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@37 ($generated@@415 $generated@@416) $generated@@417 $generated@@418)) ))) -(assert (forall (($generated@@421 T@U) ($generated@@422 Bool) ($generated@@423 T@U) ($generated@@424 T@U) ) (! (= ($generated@@20 ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@16 ($generated@@420 $generated@@421 $generated@@422) $generated@@423 $generated@@424)) (and ($generated@@42 $generated@@424 $generated@@421) $generated@@422)) - :pattern ( ($generated@@74 ($generated@@44 $generated@@75 ($generated@@44 $generated@@76 $generated@@40)) $generated@@40 $generated@@16 ($generated@@420 $generated@@421 $generated@@422) $generated@@423 $generated@@424)) +(assert (forall (($generated@@420 T@U) ($generated@@421 Bool) ($generated@@422 T@U) ($generated@@423 T@U) ) (! (= ($generated@@20 ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@16 ($generated@@419 $generated@@420 $generated@@421) $generated@@422 $generated@@423)) (and ($generated@@39 $generated@@423 $generated@@420) $generated@@421)) + :pattern ( ($generated@@61 ($generated@@62 $generated@@63 ($generated@@62 $generated@@64 $generated@@37)) $generated@@37 $generated@@16 ($generated@@419 $generated@@420 $generated@@421) $generated@@422 $generated@@423)) ))) (push 1) (declare-fun ControlFlow (Int Int) Int) +(declare-fun $generated@@424 () T@U) (declare-fun $generated@@425 () T@U) (declare-fun $generated@@426 () T@U) (declare-fun $generated@@427 () T@U) @@ -1915,8 +1896,7 @@ $generated@@295))))))))) (declare-fun $generated@@430 () T@U) (declare-fun $generated@@431 () T@U) (declare-fun $generated@@432 () T@U) -(declare-fun $generated@@433 () T@U) -(declare-fun $generated@@434 (T@U) Bool) +(declare-fun $generated@@433 (T@U) Bool) (set-option :timeout 0) (set-option :rlimit 0) (set-option :auto_config false) @@ -1932,19 +1912,19 @@ $generated@@295))))))))) (set-option :pp.bv_literals false) (set-option :smt.arith.solver 2) (assert (not - (=> (= (ControlFlow 0 0) 14) (let (($generated@@435 true)) -(let (($generated@@436 (=> (and (= ($generated@@33 $generated@@34 $generated@@120) $generated@@120) (= (ControlFlow 0 8) (- 0 7))) false))) -(let (($generated@@437 (=> ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 false))) (and (=> (= (ControlFlow 0 10) 8) $generated@@436) (=> (= (ControlFlow 0 10) 9) $generated@@435))))) -(let (($generated@@438 true)) -(let (($generated@@439 (=> (and (not ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 false)))) (= (ControlFlow 0 6) 4)) $generated@@438))) -(let (($generated@@440 (=> (and (and ($generated@@42 $generated@@425 $generated@@426) ($generated@@203 $generated@@425 $generated@@426 $generated@@427)) (= $generated@@428 ($generated@@375 $generated@@135 $generated@@427 $generated@@1 false))) (and (=> (= (ControlFlow 0 11) 10) $generated@@437) (=> (= (ControlFlow 0 11) 6) $generated@@439))))) -(let (($generated@@441 (=> (and (not (and ($generated@@42 $generated@@425 $generated@@426) ($generated@@203 $generated@@425 $generated@@426 $generated@@427))) (= (ControlFlow 0 5) 4)) $generated@@438))) -(let (($generated@@442 (=> (and ($generated@@140 $generated@@427) (or (= $generated@@429 $generated@@427) ($generated@@145 $generated@@429 $generated@@427))) (and (=> (= (ControlFlow 0 12) 11) $generated@@440) (=> (= (ControlFlow 0 12) 5) $generated@@441))))) -(let (($generated@@443 (=> (and (and ($generated@@35 $generated@@426 $generated@@430 ($generated@@33 $generated@@34 ($generated@@161 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) $generated@@373) ($generated@@33 $generated@@45 ($generated@@193 $generated@@45 ($generated@@276 ($generated@@73 ($generated@@416 $generated@@431) ($generated@@420 $generated@@426 ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 false)))) ($generated@@412 ($generated@@250 ($generated@@273 false))))) ($generated@@354 $generated@@432)))))) (= (ControlFlow 0 3) (- 0 2))) ($generated@@35 $generated@@426 $generated@@430 ($generated@@33 $generated@@34 ($generated@@161 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) $generated@@373) ($generated@@33 $generated@@45 ($generated@@193 $generated@@45 ($generated@@276 ($generated@@73 ($generated@@416 $generated@@431) ($generated@@420 $generated@@426 ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 false)))) ($generated@@412 ($generated@@250 ($generated@@273 false))))) ($generated@@354 $generated@@432))))))) ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 ($generated@@32 $generated@@426 $generated@@430 ($generated@@33 $generated@@34 ($generated@@161 ($generated@@33 ($generated@@44 $generated@@40 $generated@@16) $generated@@373) ($generated@@33 $generated@@45 ($generated@@193 $generated@@45 ($generated@@276 ($generated@@73 ($generated@@416 $generated@@431) ($generated@@420 $generated@@426 ($generated@@20 ($generated@@33 $generated@@16 ($generated@@19 false)))) ($generated@@412 ($generated@@250 ($generated@@273 false))))) ($generated@@354 $generated@@432)))))))))))) -(let (($generated@@444 true)) -(let (($generated@@445 (=> (= $generated@@433 ($generated@@375 $generated@@135 $generated@@429 $generated@@1 false)) (and (and (=> (= (ControlFlow 0 13) 1) $generated@@444) (=> (= (ControlFlow 0 13) 12) $generated@@442)) (=> (= (ControlFlow 0 13) 3) $generated@@443))))) -(let (($generated@@446 (=> (and (and ($generated@@140 $generated@@429) ($generated@@434 $generated@@429)) (and (= 1 $generated@@31) (= (ControlFlow 0 14) 13))) $generated@@445))) -$generated@@446))))))))))))) + (=> (= (ControlFlow 0 0) 14) (let (($generated@@434 true)) +(let (($generated@@435 (=> (and (= ($generated@@151 $generated@@109 $generated@@117) $generated@@117) (= (ControlFlow 0 8) (- 0 7))) false))) +(let (($generated@@436 (=> ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 false))) (and (=> (= (ControlFlow 0 10) 8) $generated@@435) (=> (= (ControlFlow 0 10) 9) $generated@@434))))) +(let (($generated@@437 true)) +(let (($generated@@438 (=> (and (not ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 false)))) (= (ControlFlow 0 6) 4)) $generated@@437))) +(let (($generated@@439 (=> (and (and ($generated@@39 $generated@@424 $generated@@425) ($generated@@202 $generated@@424 $generated@@425 $generated@@426)) (= $generated@@427 ($generated@@374 $generated@@133 $generated@@426 $generated@@1 false))) (and (=> (= (ControlFlow 0 11) 10) $generated@@436) (=> (= (ControlFlow 0 11) 6) $generated@@438))))) +(let (($generated@@440 (=> (and (not (and ($generated@@39 $generated@@424 $generated@@425) ($generated@@202 $generated@@424 $generated@@425 $generated@@426))) (= (ControlFlow 0 5) 4)) $generated@@437))) +(let (($generated@@441 (=> (and ($generated@@138 $generated@@426) (or (= $generated@@428 $generated@@426) ($generated@@143 $generated@@428 $generated@@426))) (and (=> (= (ControlFlow 0 12) 11) $generated@@439) (=> (= (ControlFlow 0 12) 5) $generated@@440))))) +(let (($generated@@442 (=> (and (and ($generated@@32 $generated@@425 $generated@@429 ($generated@@151 $generated@@109 ($generated@@160 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) $generated@@372) ($generated@@151 $generated@@118 ($generated@@192 $generated@@118 ($generated@@280 ($generated@@60 ($generated@@415 $generated@@430) ($generated@@419 $generated@@425 ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 false)))) ($generated@@411 ($generated@@254 ($generated@@277 false))))) ($generated@@353 $generated@@431)))))) (= (ControlFlow 0 3) (- 0 2))) ($generated@@32 $generated@@425 $generated@@429 ($generated@@151 $generated@@109 ($generated@@160 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) $generated@@372) ($generated@@151 $generated@@118 ($generated@@192 $generated@@118 ($generated@@280 ($generated@@60 ($generated@@415 $generated@@430) ($generated@@419 $generated@@425 ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 false)))) ($generated@@411 ($generated@@254 ($generated@@277 false))))) ($generated@@353 $generated@@431))))))) ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 ($generated@@31 $generated@@425 $generated@@429 ($generated@@151 $generated@@109 ($generated@@160 ($generated@@151 ($generated@@62 $generated@@37 $generated@@16) $generated@@372) ($generated@@151 $generated@@118 ($generated@@192 $generated@@118 ($generated@@280 ($generated@@60 ($generated@@415 $generated@@430) ($generated@@419 $generated@@425 ($generated@@20 ($generated@@151 $generated@@16 ($generated@@19 false)))) ($generated@@411 ($generated@@254 ($generated@@277 false))))) ($generated@@353 $generated@@431)))))))))))) +(let (($generated@@443 true)) +(let (($generated@@444 (=> (= $generated@@432 ($generated@@374 $generated@@133 $generated@@428 $generated@@1 false)) (and (and (=> (= (ControlFlow 0 13) 1) $generated@@443) (=> (= (ControlFlow 0 13) 12) $generated@@441)) (=> (= (ControlFlow 0 13) 3) $generated@@442))))) +(let (($generated@@445 (=> (and (and ($generated@@138 $generated@@428) ($generated@@433 $generated@@428)) (= (ControlFlow 0 14) 13)) $generated@@444))) +$generated@@445))))))))))))) )) (check-sat) (get-info :rlimit) diff --git a/Source/DafnyRuntime/DafnyRuntimeRust/src/lib.rs b/Source/DafnyRuntime/DafnyRuntimeRust/src/lib.rs index fc267756b73..5e7e3a67e82 100644 --- a/Source/DafnyRuntime/DafnyRuntimeRust/src/lib.rs +++ b/Source/DafnyRuntime/DafnyRuntimeRust/src/lib.rs @@ -2106,7 +2106,7 @@ impl DafnyPrint for () { } } -#[derive(Clone)] +#[derive(Clone, Copy)] pub struct DafnyCharUTF16(pub u16); pub type DafnyStringUTF16 = Sequence; @@ -2182,7 +2182,7 @@ impl Sub for DafnyCharUTF16 { } } -#[derive(Clone)] +#[derive(Clone, Copy)] pub struct DafnyChar(pub char); pub type DafnyString = Sequence; diff --git a/Source/DafnyRuntime/DafnyRuntimeRust/src/tests/mod.rs b/Source/DafnyRuntime/DafnyRuntimeRust/src/tests/mod.rs index 6f04042bd62..f3ce7796c7f 100644 --- a/Source/DafnyRuntime/DafnyRuntimeRust/src/tests/mod.rs +++ b/Source/DafnyRuntime/DafnyRuntimeRust/src/tests/mod.rs @@ -1022,6 +1022,18 @@ mod tests { assert_eq!(gtsgt._as_Datatype(), x); assert_eq!(gtsgt._as_Datatype(), x); } + + #[test] + fn test_chars_copy() { + let c = DafnyChar('a'); + let c2 = c; + let c3 = c; + assert_eq!(c3, c2); + let c = DafnyCharUTF16(213); + let c2 = c; + let c3 = c; + assert_eq!(c3, c2); + } /*impl GeneralTrait for Rc { fn _clone(&self) -> Box { Box::new(self.as_ref().clone()) diff --git a/Source/DafnyServer/DafnyServer.csproj b/Source/DafnyServer/DafnyServer.csproj index d736ee1074e..f9cd46eb532 100644 --- a/Source/DafnyServer/DafnyServer.csproj +++ b/Source/DafnyServer/DafnyServer.csproj @@ -10,16 +10,6 @@ MIT - - false - false - - - - - $(RUNTIME_IDENTIFIER) - - diff --git a/Source/DafnyTestGeneration/DafnyInfo.cs b/Source/DafnyTestGeneration/DafnyInfo.cs index f454e35a7b1..f60ac153bdd 100644 --- a/Source/DafnyTestGeneration/DafnyInfo.cs +++ b/Source/DafnyTestGeneration/DafnyInfo.cs @@ -478,7 +478,7 @@ public override Expression CloneExpr(Expression expr) { return null; } switch (expr) { - case ImplicitThisExpr_ConstructorCall: + case ImplicitThisExprConstructorCall: isValidExpression = false; return base.CloneExpr(expr); case ThisExpr: diff --git a/Source/DafnyTestGeneration/DafnyTestGeneration.csproj b/Source/DafnyTestGeneration/DafnyTestGeneration.csproj index 016cf01c491..f4f2f78ffd1 100644 --- a/Source/DafnyTestGeneration/DafnyTestGeneration.csproj +++ b/Source/DafnyTestGeneration/DafnyTestGeneration.csproj @@ -15,7 +15,6 @@ - diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass1.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass1.dfy.expect index 4a61ec10c3e..ce97f8cf02f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass1.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass1.dfy.expect @@ -1,3 +1,3 @@ -ReadPreconditionBypass1.dfy(23,20): Error: function precondition could not be proved +ReadPreconditionBypass1.dfy(23,25): Error: function precondition could not be proved Dafny program verifier finished with 1 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass4.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass4.dfy.expect index a861091b066..5898f59f007 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass4.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/HigherOrderIntrinsicSpecification/ReadPreconditionBypass4.dfy.expect @@ -1,6 +1,4 @@ ReadPreconditionBypass4.dfy(30,2): Error: assertion might not hold -ReadPreconditionBypass4.dfy(31,2): Error: assertion might not hold ReadPreconditionBypass4.dfy(44,2): Error: assertion might not hold -ReadPreconditionBypass4.dfy(45,2): Error: assertion might not hold -Dafny program verifier finished with 2 verified, 4 errors +Dafny program verifier finished with 2 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/README.md b/Source/IntegrationTests/TestFiles/LitTests/LitTest/README.md index d630eb72a7b..be1c7db654c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/README.md +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/README.md @@ -68,6 +68,14 @@ will be flagged by CI, and should be fixed by either converting it to use to flag it as intentionally inconsistent, for tests of backend-specific externs for example. +If a platform is not supported, please use the following command: + +``` +// UNSUPPORTED: windows, macosx +``` + +You can specify one or multiple platforms separated by a comma among `windows`, `posix`, `macosx` + ## Executing Tests from JetBrains Rider You will likely find it more convenient to run tests from an IDE such as diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/at-attributes/at-attributes-typos.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/at-attributes/at-attributes-typos.dfy.expect index dffa11472d5..59735cf6892 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/at-attributes/at-attributes-typos.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/at-attributes/at-attributes-typos.dfy.expect @@ -17,7 +17,7 @@ at-attributes-typos.dfy(5,0): Error: @AutoContracts attribute cannot be applied at-attributes-typos.dfy(58,9): Error: the parameter named 'low' is already given positionally at-attributes-typos.dfy(56,14): Error: Argument to attribute Compile must be a literal at-attributes-typos.dfy(55,0): Error: wrong number of arguments (got 2, but attribute 'Compile' expects at most 1: (0: bool)) -at-attributes-typos.dfy(54,0): Error: incorrect argument type for attribute parameter '0' (expected bool, found string) +at-attributes-typos.dfy(54,9): Error: incorrect argument type for attribute parameter '0' (expected bool, found string) at-attributes-typos.dfy(82,0): Error: @Transparent attribute cannot be applied to method at-attributes-typos.dfy(80,0): Error: wrong number of arguments (got 1, but attribute 'IsolateAssertions' expects 0) at-attributes-typos.dfy(49,0): Error: @Synthesize attribute cannot be applied to module definition @@ -33,7 +33,7 @@ at-attributes-typos.dfy(40,0): Error: @Verify attribute cannot be applied to mod at-attributes-typos.dfy(39,0): Error: @TimeLimitMultiplier attribute cannot be applied to module definition at-attributes-typos.dfy(38,0): Error: @TimeLimit attribute cannot be applied to module definition at-attributes-typos.dfy(37,0): Error: @ResourceLimit attribute cannot be applied to module definition -at-attributes-typos.dfy(37,0): Error: incorrect argument type for attribute parameter '0' (expected seq, found int) +at-attributes-typos.dfy(37,15): Error: incorrect argument type for attribute parameter '0' (expected seq, found int) at-attributes-typos.dfy(36,0): Error: @Priority attribute cannot be applied to module definition at-attributes-typos.dfy(35,0): Error: @Print attribute cannot be applied to module definition at-attributes-typos.dfy(34,0): Error: @VerifyOnly attribute cannot be applied to module definition diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/autoRevealDependencies/func-depth-fail.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/autoRevealDependencies/func-depth-fail.dfy.expect index 2f69d3fbc83..76bba8c2c45 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/autoRevealDependencies/func-depth-fail.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/autoRevealDependencies/func-depth-fail.dfy.expect @@ -1,4 +1,4 @@ -func-depth-fail.dfy(12,2): Error: a postcondition could not be proved on this return path +func-depth-fail.dfy(12,3): Error: a postcondition could not be proved on this return path func-depth-fail.dfy(10,10): Related location: this is the postcondition that could not be proved Dafny program verifier finished with 3 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/blogposts/TestGenerationWithInliningQuantifiedDefinitions.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/blogposts/TestGenerationWithInliningQuantifiedDefinitions.dfy index 49295d90922..c5935efb182 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/blogposts/TestGenerationWithInliningQuantifiedDefinitions.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/blogposts/TestGenerationWithInliningQuantifiedDefinitions.dfy @@ -1,13 +1,17 @@ // Generating and Running Path-Based Tests: // RUN: %baredafny generate-tests %args Path %S/TestGenerationWithInliningQuantifiedDefinitions.dfy > %t-tests.dfy -// RUN: %baredafny test %args --target:cs "%t-tests.dfy" >> "%t" +// RUN: %baredafny test %args --target:cs "%t-tests.dfy" > "%t" +// Syntactically, the test method has 4 paths: yes-yes, yes-no, no-yes, no-no. But the no-yes path is +// not feasible. +// For Path test coverage, the order in which the tests are generated depends on what +// the verifier chooses to do first. Thus, if something changes in the verifier, then the CHECK lines below +// may need to be permuted. // RUN: %OutputCheck --file-to-check "%t" "%s" -// CHECK: .*Dafny program verifier finished with 5 verified, 0 errors* +// CHECK: .*Dafny program verifier finished with 4 verified, 0 errors* // CHECK: .*Evaluating the position: checked=yes, checkmate=yes, pawn is attacking* // CHECK: .*Evaluating the position: checked=yes, checkmate=no, pawn is attacking* // CHECK: .*Evaluating the position: checked=no, checkmate=no* -// CHECK: .*Evaluating the position: checked=yes, checkmate=yes, knight is attacking* // CHECK: .*Evaluating the position: checked=yes, checkmate=no, knight is attacking* include "Inputs/TestGenerationShared.dfy" diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy new file mode 100644 index 00000000000..e91e3331f33 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy @@ -0,0 +1,17 @@ +// RUN: ! %baredafny verify --use-basename-for-filename "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Foo() { + // Assert something that takes a long time to verify + assert Ack(4, 2) == 1; +} + +function Ack(m: nat, n: nat): nat +{ + if m == 0 then + n + 1 + else if n == 0 then + Ack(m - 1, 1) + else + Ack(m - 1, Ack(m, n - 1)) +} \ No newline at end of file diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy.expect new file mode 100644 index 00000000000..b7677c39850 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/defaultTimeLimit.dfy.expect @@ -0,0 +1,7 @@ +defaultTimeLimit.dfy(4,7): Error: Verification of 'Foo' timed out after 30 seconds. (the limit can be increased using --verification-time-limit) + | +4 | method Foo() { + | ^^^ + + +Dafny program verifier finished with 1 verified, 0 errors, 1 time out diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/comp/Arrays.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/comp/Arrays.dfy index cd1247526f6..cd35cc00ca0 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/comp/Arrays.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/comp/Arrays.dfy @@ -492,7 +492,9 @@ module NativeArrays { var iIndex: int, bIndex: byte, bvIndex: bv9 := 3, 4, 5; m[iIndex, bIndex] := arr[iIndex]; arr[iIndex] := m[iIndex, bvIndex - 1]; - assert arr[iIndex] == 17; + assert arr[iIndex] == 17 by { + assert true; + } print arr[iIndex], " "; // 17 m[bIndex, iIndex] := arr[bIndex]; arr[bIndex] := m[bvIndex - 1, iIndex]; diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AsIs-Resolve.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AsIs-Resolve.dfy.expect index a2a9906566e..770b8b7113f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AsIs-Resolve.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AsIs-Resolve.dfy.expect @@ -54,7 +54,7 @@ AsIs-Resolve.dfy(212,11): Error: type test for type 'int -> real' must be from a AsIs-Resolve.dfy(213,11): Error: type test for type 'int -> Odd' must be from an expression assignable to it (got 'int -> nat') (covariant type parameter 1 would require nat <: Odd) AsIs-Resolve.dfy(220,11): Error: type test for type 'int ~> real' must be from an expression assignable to it (got 'int ~> nat') (covariant type parameter 1 would require nat <: real) AsIs-Resolve.dfy(185,11): Error: type cast to reference type 'C<(int, real)>' must be from an expression assignable to it (got 'M') (non-variant type parameter would require (int, real) = (string, string)) (covariant type parameter 0 would require string <: int) -AsIs-Resolve.dfy(196,9): Error: incorrect argument type at index 0 for datatype constructor parameter (expected real, found int) +AsIs-Resolve.dfy(196,14): Error: incorrect argument type at index 0 for datatype constructor parameter (expected real, found int) AsIs-Resolve.dfy(229,15): Error: type test for type 'object' must be from an expression assignable to it (got 'T') AsIs-Resolve.dfy(230,18): Error: type test for type 'array' must be from an expression assignable to it (got 'array') (nonvariance for type parameter expects object = T) AsIs-Resolve.dfy(231,18): Error: type test for type 'array' must be from an expression assignable to it (got 'array') (nonvariance for type parameter expects int = T) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AutoReq.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AutoReq.dfy.expect index f149c64f7bb..c9c5d88bc16 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AutoReq.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/AutoReq.dfy.expect @@ -1,21 +1,21 @@ -AutoReq.dfy(13,2): Error: function precondition could not be proved +AutoReq.dfy(13,3): Error: function precondition could not be proved AutoReq.dfy(5,13): Related location: this proposition could not be proved -AutoReq.dfy(25,2): Error: function precondition could not be proved +AutoReq.dfy(25,3): Error: function precondition could not be proved AutoReq.dfy(5,13): Related location: this proposition could not be proved -AutoReq.dfy(38,11): Error: function precondition could not be proved +AutoReq.dfy(38,12): Error: function precondition could not be proved AutoReq.dfy(5,13): Related location: this proposition could not be proved -AutoReq.dfy(38,11): Error: assertion might not hold -AutoReq.dfy(31,12): Related location: this proposition could not be proved +AutoReq.dfy(38,12): Error: assertion might not hold +AutoReq.dfy(31,13): Related location: this proposition could not be proved AutoReq.dfy(7,4): Related location: this proposition could not be proved -AutoReq.dfy(40,11): Error: function precondition could not be proved +AutoReq.dfy(40,12): Error: function precondition could not be proved AutoReq.dfy(5,13): Related location: this proposition could not be proved -AutoReq.dfy(40,11): Error: assertion might not hold -AutoReq.dfy(31,26): Related location: this proposition could not be proved +AutoReq.dfy(40,12): Error: assertion might not hold +AutoReq.dfy(31,27): Related location: this proposition could not be proved AutoReq.dfy(7,4): Related location: this proposition could not be proved -AutoReq.dfy(45,11): Error: assertion might not hold -AutoReq.dfy(31,12): Related location: this proposition could not be proved +AutoReq.dfy(45,12): Error: assertion might not hold +AutoReq.dfy(31,13): Related location: this proposition could not be proved AutoReq.dfy(7,4): Related location: this proposition could not be proved -AutoReq.dfy(247,4): Error: function precondition could not be proved +AutoReq.dfy(247,6): Error: function precondition could not be proved AutoReq.dfy(239,13): Related location: this proposition could not be proved Dafny program verifier finished with 30 verified, 8 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Backticks.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Backticks.dfy.expect index a9e311a972b..a88d403b08f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Backticks.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Backticks.dfy.expect @@ -1,4 +1,4 @@ -Backticks.dfy(38,4): Error: insufficient reads clause to invoke function +Backticks.dfy(38,5): Error: insufficient reads clause to invoke function Backticks.dfy(77,7): Error: call might violate context's modifies clause Dafny program verifier finished with 12 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BadFunction.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BadFunction.dfy.expect index da64c408849..779318f5de2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BadFunction.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BadFunction.dfy.expect @@ -1,3 +1,3 @@ -BadFunction.dfy(9,2): Error: decreases clause might not decrease +BadFunction.dfy(9,3): Error: decreases clause might not decrease Dafny program verifier finished with 1 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuards.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuards.dfy.expect index 8902587fa5f..9b7274564b2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuards.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuards.dfy.expect @@ -304,7 +304,7 @@ method AltSyntax9(x: int, y: int, c: Color) datatype Color = Red | Green | Blue BindingGuards.dfy(85,10): Error: a postcondition could not be proved on this return path BindingGuards.dfy(71,12): Related location: this is the postcondition that could not be proved -BindingGuards.dfy(134,9): Error: assertion might not hold +BindingGuards.dfy(134,10): Error: assertion might not hold BindingGuards.dfy(6,8): Related location: this proposition could not be proved BindingGuards.dfy(139,2): Error: alternative cases fail to cover all possibilities BindingGuards.dfy(147,2): Error: alternative cases fail to cover all possibilities diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuardsResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuardsResolution.dfy.expect index 1891cae0e35..b15b54c7c49 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuardsResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BindingGuardsResolution.dfy.expect @@ -164,5 +164,5 @@ BindingGuardsResolution.dfy(132,8): Error: assignment to non-ghost variable is n BindingGuardsResolution.dfy(140,8): Error: assignment to non-ghost variable is not allowed in this context, because the statement is in a ghost context; e.g., it may be guarded by a specification-only expression BindingGuardsResolution.dfy(142,8): Error: assignment to non-ghost variable is not allowed in this context, because the statement is in a ghost context; e.g., it may be guarded by a specification-only expression BindingGuardsResolution.dfy(146,8): Error: assignment to non-ghost variable is not allowed in this context, because the statement is in a ghost context; e.g., it may be guarded by a specification-only expression -BindingGuardsResolution.dfy(149,37): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +BindingGuardsResolution.dfy(149,38): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) 11 resolution/type errors detected in BindingGuardsResolution.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorResolution.dfy.expect index fd0c43672d2..2866e8a95d2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorResolution.dfy.expect @@ -8,8 +8,8 @@ BitvectorResolution.dfy(38,6): Error: RHS (of type bv67) not assignable to LHS ( BitvectorResolution.dfy(39,6): Error: RHS (of type bv67) not assignable to LHS (of type int) BitvectorResolution.dfy(40,15): Error: type of right argument to << (real) must be an integer-numeric or bitvector type BitvectorResolution.dfy(41,15): Error: type of right argument to << (SmallReal) must be an integer-numeric or bitvector type -BitvectorResolution.dfy(42,25): Error: incorrect argument type for function parameter 'w' (expected nat, found real) -BitvectorResolution.dfy(43,25): Error: incorrect argument type for function parameter 'w' (expected nat, found SmallReal) +BitvectorResolution.dfy(42,26): Error: incorrect argument type for function parameter 'w' (expected nat, found real) +BitvectorResolution.dfy(43,26): Error: incorrect argument type for function parameter 'w' (expected nat, found SmallReal) BitvectorResolution.dfy(94,10): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. BitvectorResolution.dfy(95,10): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. BitvectorResolution.dfy(96,10): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.expect index 4dadf8c6b25..3564bde88c2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.expect @@ -490,7 +490,7 @@ BitvectorsMore.dfy(168,33): Error: when converting shift amount to a bit vector, BitvectorsMore.dfy(169,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 BitvectorsMore.dfy(170,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 BitvectorsMore.dfy(171,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 -BitvectorsMore.dfy(193,26): Error: rotate amount must not exceed the width of the result (5) -BitvectorsMore.dfy(194,26): Error: rotate amount must not exceed the width of the result (5) +BitvectorsMore.dfy(193,36): Error: rotate amount must not exceed the width of the result (5) +BitvectorsMore.dfy(194,37): Error: rotate amount must not exceed the width of the result (5) Dafny program verifier finished with 9 verified, 41 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.refresh.expect index cbd32a5e5c9..fd45bb23c41 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BitvectorsMore.dfy.refresh.expect @@ -550,7 +550,7 @@ BitvectorsMore.dfy(168,33): Error: when converting shift amount to a bit vector, BitvectorsMore.dfy(169,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 BitvectorsMore.dfy(170,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 BitvectorsMore.dfy(171,33): Error: when converting shift amount to a bit vector, the value to be converted might not fit in bv0 -BitvectorsMore.dfy(193,26): Error: rotate amount must not exceed the width of the result (5) -BitvectorsMore.dfy(194,26): Error: rotate amount must not exceed the width of the result (5) +BitvectorsMore.dfy(193,36): Error: rotate amount must not exceed the width of the result (5) +BitvectorsMore.dfy(194,37): Error: rotate amount must not exceed the width of the result (5) Dafny program verifier finished with 9 verified, 41 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.expect index b1e0d888a7b..76243c18260 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.expect @@ -65,7 +65,7 @@ BoundedPolymorphismResolution.dfy(216,23): Error: type parameter 'A' of type 'To BoundedPolymorphismResolution.dfy(218,24): Error: type bound for type parameter 'A' of class 'ToBeReplaced5' is different from the corresponding type bound of the corresponding type parameter of the corresponding class in the module it refines (expected 'Trait', found 'object') BoundedPolymorphismResolution.dfy(218,10): Error: type parameter ('A') passed to type 'ToBeReplaced5' must meet type bound 'object' (got 'A') BoundedPolymorphismResolution.dfy(251,12): Error: type parameter ('Y') passed to method 'MyMethod' must meet type bound 'Trait' (got 'RandomClass') -BoundedPolymorphismResolution.dfy(254,13): Error: type parameter ('Y') passed to function 'MyFunction' must meet type bound 'Trait' (got 'RandomClass') +BoundedPolymorphismResolution.dfy(254,23): Error: type parameter ('Y') passed to function 'MyFunction' must meet type bound 'Trait' (got 'RandomClass') BoundedPolymorphismResolution.dfy(257,18): Error: type parameter ('Y') passed to type 'MyClass' must meet type bound 'Trait' (got 'RandomClass') BoundedPolymorphismResolution.dfy(257,18): Error: type parameter ('Y') passed to type 'MyClass' must meet type bound 'Trait' (got 'RandomClass') BoundedPolymorphismResolution.dfy(268,15): Error: type parameter 'X' of function 'F' is declared with a different number of type bounds than in the function it overrides (expected 1, found 2) @@ -93,7 +93,7 @@ BoundedPolymorphismResolution.dfy(355,39): Error: type bound for type parameter BoundedPolymorphismResolution.dfy(378,15): Error: type parameters are not allowed to be renamed from the names given in the datatype in the module being refined (expected 'X', found 'Y') BoundedPolymorphismResolution.dfy(399,11): Error: type parameters are not allowed to be renamed from the names given in the type in the module being refined (expected 'X', found 'Z') BoundedPolymorphismResolution.dfy(401,12): Error: type parameters are not allowed to be renamed from the names given in the class in the module being refined (expected 'X', found 'Y') -BoundedPolymorphismResolution.dfy[YY](394,23): Error: incorrect argument type for constructor in-parameter 'x' (expected X, found char) +BoundedPolymorphismResolution.dfy[YY](394,28): Error: incorrect argument type for constructor in-parameter 'x' (expected X, found char) BoundedPolymorphismResolution.dfy(425,5): Error: type parameter ('G') passed to method 'M' must meet type bound 'GoodTrait' (got 'real') BoundedPolymorphismResolution.dfy(426,5): Error: type parameter ('G') passed to method 'M' must meet type bound 'GoodTrait' (got 'nat') BoundedPolymorphismResolution.dfy(440,5): Error: type parameter 2 ('T') passed to method 'P' must meet type bound 'ConstrainedReferenceTrait' (got 'ReferenceTrait') diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.refresh.expect index 43f285bca79..c349cc75f8f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/BoundedPolymorphismResolution.dfy.refresh.expect @@ -41,9 +41,9 @@ BoundedPolymorphismResolution.dfy(214,27): Error: type bound for type parameter BoundedPolymorphismResolution.dfy(216,23): Error: type parameter 'A' of type 'ToBeReplaced3' is declared with a different number of type bounds than in the corresponding type in the module it refines (expected 1, found 0) BoundedPolymorphismResolution.dfy(218,24): Error: type bound for type parameter 'A' of class 'ToBeReplaced5' is different from the corresponding type bound of the corresponding type parameter of the corresponding class in the module it refines (expected 'Trait', found 'object') BoundedPolymorphismResolution.dfy(218,10): Error: type parameter ('A') passed to type 'ToBeReplaced5' must meet type bound 'object' (got 'A') -BoundedPolymorphismResolution.dfy(251,12): Error: incorrect argument type for method in-parameter 'y0' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = real) -BoundedPolymorphismResolution.dfy(254,23): Error: incorrect argument type for function parameter 'y1' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = char) -BoundedPolymorphismResolution.dfy(257,14): Error: incorrect argument type for constructor in-parameter 'y2' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = int) +BoundedPolymorphismResolution.dfy(251,13): Error: incorrect argument type for method in-parameter 'y0' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = real) +BoundedPolymorphismResolution.dfy(254,24): Error: incorrect argument type for function parameter 'y1' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = char) +BoundedPolymorphismResolution.dfy(257,26): Error: incorrect argument type for constructor in-parameter 'y2' (expected RandomClass?, found RandomClass?) (non-variant type parameter 'R' would require string = int) BoundedPolymorphismResolution.dfy(268,15): Error: type parameter 'X' of function 'F' is declared with a different number of type bounds than in the function it overrides (expected 1, found 2) BoundedPolymorphismResolution.dfy(269,13): Error: type bound for type parameter 'X' of method 'M' is different from the corresponding type bound of the corresponding type parameter of the method it overrides (expected 'object', found 'object?') BoundedPolymorphismResolution.dfy(275,15): Error: type parameters in this function override are not allowed to be renamed from the names given in the the function it overrides (expected 'X', got 'Y') diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethod.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethod.dfy.expect index 0b4010a5344..e39c155089c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethod.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethod.dfy.expect @@ -3,9 +3,9 @@ ByMethod.dfy(38,18): Error: this invariant could not be proved to be maintained ByMethod.dfy(42,4): Error: a postcondition could not be proved on this return path ByMethod.dfy(35,4): Related location: this is the postcondition that could not be proved ByMethod.dfy(50,4): Error: a postcondition could not be proved on this return path -ByMethod.dfy(48,12): Related location: this is the postcondition that could not be proved +ByMethod.dfy(48,13): Related location: this is the postcondition that could not be proved ByMethod.dfy(58,4): Error: a postcondition could not be proved on this return path -ByMethod.dfy(56,12): Related location: this is the postcondition that could not be proved +ByMethod.dfy(56,13): Related location: this is the postcondition that could not be proved ByMethod.dfy(60,4): Error: a postcondition could not be proved on this return path ByMethod.dfy(59,4): Related location: this is the postcondition that could not be proved ByMethod.dfy(66,12): Error: a postcondition could not be proved on this return path @@ -14,13 +14,13 @@ ByMethod.dfy(68,4): Error: a postcondition could not be proved on this return pa ByMethod.dfy(67,4): Related location: this is the postcondition that could not be proved ByMethod.dfy(74,12): Error: a postcondition could not be proved on this return path ByMethod.dfy(72,27): Related location: this is the postcondition that could not be proved -ByMethod.dfy(93,11): Error: decreases clause might not decrease -ByMethod.dfy(102,11): Error: decreases clause might not decrease -ByMethod.dfy(111,11): Error: decreases clause might not decrease +ByMethod.dfy(93,13): Error: decreases clause might not decrease +ByMethod.dfy(102,12): Error: decreases clause might not decrease +ByMethod.dfy(111,12): Error: decreases clause might not decrease ByMethod.dfy(126,10): Error: cannot prove termination; try supplying a decreases clause -ByMethod.dfy(132,13): Error: cannot prove termination; try supplying a decreases clause +ByMethod.dfy(132,14): Error: cannot prove termination; try supplying a decreases clause ByMethod.dfy(148,11): Error: cannot prove termination; try supplying a decreases clause -ByMethod.dfy(152,13): Error: cannot prove termination; try supplying a decreases clause -ByMethod.dfy(175,13): Error: decreases clause might not decrease +ByMethod.dfy(152,14): Error: cannot prove termination; try supplying a decreases clause +ByMethod.dfy(175,18): Error: decreases clause might not decrease Dafny program verifier finished with 15 verified, 16 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethodResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethodResolution.dfy.expect index 62bf527a53d..b0220aed8d0 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethodResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ByMethodResolution.dfy.expect @@ -1,12 +1,12 @@ ByMethodResolution.dfy(17,6): Error: number of return parameters does not match declaration (found 2, expected 1) ByMethodResolution.dfy(25,4): Error: Method return value mismatch (expected real, got bv9) ByMethodResolution.dfy(24,6): Error: RHS (of type int) not assignable to LHS (of type real) -ByMethodResolution.dfy(63,13): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ByMethodResolution.dfy(64,13): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) -ByMethodResolution.dfy(65,13): Error: a call to a twostate function is allowed only in specification contexts +ByMethodResolution.dfy(63,14): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ByMethodResolution.dfy(64,15): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +ByMethodResolution.dfy(65,15): Error: a call to a twostate function is allowed only in specification contexts ByMethodResolution.dfy(85,9): Error: ghost variables such as k are allowed only in specification contexts. k was inferred to be ghost based on its declaration or initialization. ByMethodResolution.dfy(92,14): Error: ghost variables such as a are allowed only in specification contexts. a was inferred to be ghost based on its declaration or initialization. -ByMethodResolution.dfy(106,4): Error: a recursive call from a least predicate can go only to other least predicates -ByMethodResolution.dfy(142,4): Error: a recursive call from a least predicate can go only to other least predicates -ByMethodResolution.dfy(157,4): Error: a recursive call from a least predicate can go only to other least predicates +ByMethodResolution.dfy(106,5): Error: a recursive call from a least predicate can go only to other least predicates +ByMethodResolution.dfy(142,7): Error: a recursive call from a least predicate can go only to other least predicates +ByMethodResolution.dfy(157,7): Error: a recursive call from a least predicate can go only to other least predicates 11 resolution/type errors detected in ByMethodResolution.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CanCall.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CanCall.dfy.expect index 225990a8a3f..c18c921d1d7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CanCall.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CanCall.dfy.expect @@ -1,8 +1,8 @@ -CanCall.dfy(113,13): Error: function precondition could not be proved +CanCall.dfy(113,22): Error: function precondition could not be proved CanCall.dfy(100,13): Related location: this proposition could not be proved CanCall.dfy(127,4): Error: a postcondition could not be proved on this return path CanCall.dfy(126,14): Related location: this is the postcondition that could not be proved -CanCall.dfy(142,15): Error: function precondition could not be proved +CanCall.dfy(142,24): Error: function precondition could not be proved CanCall.dfy(131,15): Related location: this proposition could not be proved Dafny program verifier finished with 34 verified, 3 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoPrefix.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoPrefix.dfy.expect index d5f27399a5a..583894b649f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoPrefix.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoPrefix.dfy.expect @@ -1,8 +1,8 @@ CoPrefix.dfy(63,56): Error: decreases clause might not decrease CoPrefix.dfy(76,55): Error: cannot prove termination; try supplying a decreases clause CoPrefix.dfy(114,0): Error: a postcondition could not be proved on this return path -CoPrefix.dfy(113,10): Related location: this is the postcondition that could not be proved -CoPrefix.dfy(101,16): Related location: this proposition could not be proved +CoPrefix.dfy(113,13): Related location: this is the postcondition that could not be proved +CoPrefix.dfy(101,19): Related location: this proposition could not be proved CoPrefix.dfy(142,24): Error: assertion might not hold CoPrefix.dfy(117,22): Related location: this proposition could not be proved CoPrefix.dfy(151,0): Error: a postcondition could not be proved on this return path diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoResolution.dfy.expect index 0502672291d..6f6574afa7d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoResolution.dfy.expect @@ -4,21 +4,21 @@ CoResolution.dfy(22,9): Error: unresolved identifier: _k CoResolution.dfy(41,8): Error: == can only be applied to expressions of types that support equality (got Stream<_T0>) CoResolution.dfy(52,8): Error: assignment to non-ghost variable is not allowed in this context, because the statement is in a ghost context; e.g., it may be guarded by a specification-only expression CoResolution.dfy(76,33): Error: a greatest predicate is not allowed to declare any ensures clause -CoResolution.dfy(86,27): Error: a recursive call from a greatest predicate can go only to other greatest predicates -CoResolution.dfy(90,27): Error: a recursive call from a greatest predicate can go only to other greatest predicates +CoResolution.dfy(86,28): Error: a recursive call from a greatest predicate can go only to other greatest predicates +CoResolution.dfy(90,33): Error: a recursive call from a greatest predicate can go only to other greatest predicates CoResolution.dfy(99,5): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -CoResolution.dfy(113,13): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -CoResolution.dfy(114,13): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas +CoResolution.dfy(113,14): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas +CoResolution.dfy(114,14): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas CoResolution.dfy(119,24): Error: a recursive call from a greatest predicate can go only to other greatest predicates CoResolution.dfy(125,28): Error: a recursive call from a greatest predicate can go only to other greatest predicates -CoResolution.dfy(133,13): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -CoResolution.dfy(134,13): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas +CoResolution.dfy(133,20): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas +CoResolution.dfy(134,20): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas CoResolution.dfy(139,26): Error: a recursive call from a greatest predicate can go only to other greatest predicates CoResolution.dfy(145,30): Error: a recursive call from a greatest predicate can go only to other greatest predicates -CoResolution.dfy(153,4): Error: a recursive call from a greatest predicate can go only to other greatest predicates -CoResolution.dfy(155,4): Error: a recursive call from a greatest predicate can go only to other greatest predicates -CoResolution.dfy(171,13): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -CoResolution.dfy(206,12): Error: type parameter '_T0' (inferred to be '?') in the function call to 'A' could not be determined +CoResolution.dfy(153,6): Error: a recursive call from a greatest predicate can go only to other greatest predicates +CoResolution.dfy(155,6): Error: a recursive call from a greatest predicate can go only to other greatest predicates +CoResolution.dfy(171,15): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas +CoResolution.dfy(206,13): Error: type parameter '_T0' (inferred to be '?') in the function call to 'A' could not be determined CoResolution.dfy(206,13): Error: the type of this expression is underspecified -CoResolution.dfy(206,19): Error: type parameter '_T0' (inferred to be '?') in the function call to 'S' could not be determined +CoResolution.dfy(206,20): Error: type parameter '_T0' (inferred to be '?') in the function call to 'S' could not be determined 23 resolution/type errors detected in CoResolution.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Coinductive.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Coinductive.dfy.expect index 5a5f281ae11..5a82b659a4c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Coinductive.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Coinductive.dfy.expect @@ -2,40 +2,40 @@ Coinductive.dfy(13,11): Warning: because of cyclic dependencies among constructo Coinductive.dfy(16,11): Warning: because of cyclic dependencies among constructor argument types, no instances of datatype 'D' can be constructed Coinductive.dfy(38,11): Warning: because of cyclic dependencies among constructor argument types, no instances of datatype 'K' can be constructed Coinductive.dfy(64,11): Warning: because of cyclic dependencies among constructor argument types, no instances of datatype 'NotFiniteEnough_Dt' can be constructed -Coinductive.dfy(93,8): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(94,8): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(95,8): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(95,21): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(101,5): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(104,27): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(105,28): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(106,17): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(116,24): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(122,15): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(123,10): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(93,11): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(94,12): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(95,12): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(95,25): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(101,7): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(104,29): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(105,30): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(106,19): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(116,26): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(122,17): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(123,12): Error: a greatest predicate can be called recursively only in positive positions Coinductive.dfy(148,21): Error: a recursive call from a greatest predicate can go only to other greatest predicates -Coinductive.dfy(204,8): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(205,8): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(206,8): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(206,21): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(219,15): Error: a greatest predicate can be called recursively only in positive positions -Coinductive.dfy(226,16): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(238,5): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(241,28): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier -Coinductive.dfy(242,29): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier -Coinductive.dfy(243,17): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier -Coinductive.dfy(253,12): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(259,15): Error: a least predicate can be called recursively only in positive positions -Coinductive.dfy(260,10): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(204,11): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(205,12): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(206,12): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(206,25): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(219,28): Error: a greatest predicate can be called recursively only in positive positions +Coinductive.dfy(226,34): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(238,7): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(241,30): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier +Coinductive.dfy(242,31): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier +Coinductive.dfy(243,19): Error: a least predicate can be called recursively only in positive positions and cannot sit inside an unbounded universal quantifier +Coinductive.dfy(253,14): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(259,17): Error: a least predicate can be called recursively only in positive positions +Coinductive.dfy(260,12): Error: a least predicate can be called recursively only in positive positions Coinductive.dfy(280,21): Error: a recursive call from a least predicate can go only to other least predicates -Coinductive.dfy(296,4): Error: this call does not type check, because the context uses a _k parameter of type ORDINAL whereas the callee uses a _k parameter of type nat -Coinductive.dfy(299,4): Error: this call does not type check, because the context uses a _k parameter of type nat whereas the callee uses a _k parameter of type ORDINAL -Coinductive.dfy(307,13): Error: this call does not type check, because the context uses a _k parameter of type nat whereas the callee uses a _k parameter of type ORDINAL -Coinductive.dfy(313,13): Error: this call does not type check, because the context uses a _k parameter of type ORDINAL whereas the callee uses a _k parameter of type nat -Coinductive.dfy(323,5): Error: incorrect argument type at index 0 for prefix lemma in-parameter (expected nat, found ORDINAL) -Coinductive.dfy(329,5): Error: incorrect argument type at index 0 for prefix lemma in-parameter (expected ORDINAL, found int) -Coinductive.dfy(355,19): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(355,44): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(358,19): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier -Coinductive.dfy(358,46): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(296,5): Error: this call does not type check, because the context uses a _k parameter of type ORDINAL whereas the callee uses a _k parameter of type nat +Coinductive.dfy(299,5): Error: this call does not type check, because the context uses a _k parameter of type nat whereas the callee uses a _k parameter of type ORDINAL +Coinductive.dfy(307,14): Error: this call does not type check, because the context uses a _k parameter of type nat whereas the callee uses a _k parameter of type ORDINAL +Coinductive.dfy(313,14): Error: this call does not type check, because the context uses a _k parameter of type ORDINAL whereas the callee uses a _k parameter of type nat +Coinductive.dfy(320,14): Error: incorrect argument type at index 0 for prefix lemma in-parameter (expected nat, found ORDINAL) +Coinductive.dfy(326,14): Error: incorrect argument type at index 0 for prefix lemma in-parameter (expected ORDINAL, found int) +Coinductive.dfy(355,29): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(355,54): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(358,29): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier +Coinductive.dfy(358,56): Error: a greatest predicate can be called recursively only in positive positions and cannot sit inside an unbounded existential quantifier 36 resolution/type errors detected in Coinductive.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy index f89bf98bb9d..6014efe5df7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy @@ -1,6 +1,6 @@ +// UNSUPPORTED: macosx +// Unsupported because the resource count is slightly different on macosx // RUN: %testDafnyForEachResolver --expect-exit-code=4 "%s" -- --allow-deprecation --performance-stats=1 - - codatatype Stream = Cons(head: T, tail: Stream) ghost function Upward(n: int): Stream diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy.expect index f789a5612c8..53fd056694d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CoinductiveProofs.dfy.expect @@ -1,27 +1,27 @@ -CoinductiveProofs.dfy(30,11): Error: assertion might not hold -CoinductiveProofs.dfy(15,42): Related location: this proposition could not be proved -CoinductiveProofs.dfy(13,16): Related location: this proposition could not be proved -CoinductiveProofs.dfy(44,11): Error: assertion might not hold -CoinductiveProofs.dfy(48,11): Error: assertion might not hold -CoinductiveProofs.dfy(13,16): Related location: this proposition could not be proved +CoinductiveProofs.dfy(30,18): Error: assertion might not hold +CoinductiveProofs.dfy(15,45): Related location: this proposition could not be proved +CoinductiveProofs.dfy(13,19): Related location: this proposition could not be proved +CoinductiveProofs.dfy(44,19): Error: assertion might not hold +CoinductiveProofs.dfy(48,21): Error: assertion might not hold +CoinductiveProofs.dfy(13,19): Related location: this proposition could not be proved CoinductiveProofs.dfy(78,0): Error: a postcondition could not be proved on this return path -CoinductiveProofs.dfy(77,10): Related location: this is the postcondition that could not be proved -CoinductiveProofs.dfy(73,2): Related location: this proposition could not be proved -CoinductiveProofs.dfy(94,11): Error: assertion might not hold -CoinductiveProofs.dfy(87,35): Related location: this proposition could not be proved -CoinductiveProofs.dfy(73,2): Related location: this proposition could not be proved +CoinductiveProofs.dfy(77,11): Related location: this is the postcondition that could not be proved +CoinductiveProofs.dfy(73,3): Related location: this proposition could not be proved +CoinductiveProofs.dfy(94,16): Error: assertion might not hold +CoinductiveProofs.dfy(87,36): Related location: this proposition could not be proved +CoinductiveProofs.dfy(73,3): Related location: this proposition could not be proved CoinductiveProofs.dfy(127,0): Error: a postcondition could not be proved on this return path -CoinductiveProofs.dfy(126,10): Related location: this is the postcondition that could not be proved -CoinductiveProofs.dfy(115,2): Related location: this proposition could not be proved -CoinductiveProofs.dfy(136,11): Error: assertion might not hold -CoinductiveProofs.dfy(117,35): Related location: this proposition could not be proved -CoinductiveProofs.dfy(115,2): Related location: this proposition could not be proved -CoinductiveProofs.dfy(149,11): Error: assertion might not hold -CoinductiveProofs.dfy(115,2): Related location: this proposition could not be proved -CoinductiveProofs.dfy(153,11): Error: assertion might not hold -CoinductiveProofs.dfy(115,2): Related location: this proposition could not be proved +CoinductiveProofs.dfy(126,11): Related location: this is the postcondition that could not be proved +CoinductiveProofs.dfy(115,3): Related location: this proposition could not be proved +CoinductiveProofs.dfy(136,16): Error: assertion might not hold +CoinductiveProofs.dfy(117,36): Related location: this proposition could not be proved +CoinductiveProofs.dfy(115,3): Related location: this proposition could not be proved +CoinductiveProofs.dfy(149,17): Error: assertion might not hold +CoinductiveProofs.dfy(115,3): Related location: this proposition could not be proved +CoinductiveProofs.dfy(153,19): Error: assertion might not hold +CoinductiveProofs.dfy(115,3): Related location: this proposition could not be proved CoinductiveProofs.dfy(164,0): Error: a postcondition could not be proved on this return path -CoinductiveProofs.dfy(163,10): Related location: this is the postcondition that could not be proved +CoinductiveProofs.dfy(163,11): Related location: this is the postcondition that could not be proved CoinductiveProofs.dfy(159,2): Related location: this proposition could not be proved CoinductiveProofs.dfy(203,0): Error: a postcondition could not be proved on this return path CoinductiveProofs.dfy(202,21): Related location: this is the postcondition that could not be proved @@ -31,5 +31,5 @@ CoinductiveProofs.dfy(208,21): Related location: this is the postcondition that CoinductiveProofs.dfy(4,23): Related location: this proposition could not be proved Dafny program verifier finished with 23 verified, 12 errors -Total resources used is 749841 -Max resources used by VC is 59810 +Total resources used is 748143 +Max resources used by VC is 59297 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop.dfy.expect index 4f04a7b0bee..07df1e764c2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop.dfy.expect @@ -1,4 +1,4 @@ -ComputationsLoop.dfy(7,2): Error: decreases clause might not decrease +ComputationsLoop.dfy(7,13): Error: decreases clause might not decrease ComputationsLoop.dfy(12,25): Error: assertion might not hold Dafny program verifier finished with 0 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop2.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop2.dfy.expect index 54ff9dbe7f7..1182d1fde00 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop2.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsLoop2.dfy.expect @@ -1,5 +1,5 @@ -ComputationsLoop2.dfy(6,2): Error: cannot prove termination; try supplying a decreases clause -ComputationsLoop2.dfy(11,2): Error: cannot prove termination; try supplying a decreases clause +ComputationsLoop2.dfy(6,16): Error: cannot prove termination; try supplying a decreases clause +ComputationsLoop2.dfy(11,13): Error: cannot prove termination; try supplying a decreases clause ComputationsLoop2.dfy(16,25): Error: assertion might not hold Dafny program verifier finished with 0 verified, 3 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsNeg.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsNeg.dfy.expect index 2cc6f12efab..bb75ba7257e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsNeg.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ComputationsNeg.dfy.expect @@ -1,8 +1,8 @@ -ComputationsNeg.dfy(7,2): Error: decreases clause might not decrease +ComputationsNeg.dfy(7,5): Error: decreases clause might not decrease ComputationsNeg.dfy(11,0): Error: a postcondition could not be proved on this return path ComputationsNeg.dfy(10,16): Related location: this is the postcondition that could not be proved ComputationsNeg.dfy(23,0): Error: a postcondition could not be proved on this return path -ComputationsNeg.dfy(22,10): Related location: this is the postcondition that could not be proved +ComputationsNeg.dfy(22,20): Related location: this is the postcondition that could not be proved ComputationsNeg.dfy(19,28): Related location: this proposition could not be proved ComputationsNeg.dfy(36,2): Error: assertion might not hold ComputationsNeg.dfy(45,2): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Corecursion.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Corecursion.dfy.expect index e20d2f68114..b7b9fadda97 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Corecursion.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Corecursion.dfy.expect @@ -1,10 +1,10 @@ -Corecursion.dfy(17,12): Error: cannot prove termination; try supplying a decreases clause (note that only functions without side effects can be called co-recursively) -Corecursion.dfy(23,12): Error: cannot prove termination; try supplying a decreases clause (note that only functions without any ensures clause can be called co-recursively) -Corecursion.dfy(58,4): Error: cannot prove termination; try supplying a decreases clause -Corecursion.dfy(71,15): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context) -Corecursion.dfy(93,14): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) -Corecursion.dfy(103,14): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) -Corecursion.dfy(148,12): Error: decreases clause might not decrease (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) -Corecursion.dfy(161,12): Error: decreases clause might not decrease (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) +Corecursion.dfy(17,33): Error: cannot prove termination; try supplying a decreases clause (note that only functions without side effects can be called co-recursively) +Corecursion.dfy(23,42): Error: cannot prove termination; try supplying a decreases clause (note that only functions without any ensures clause can be called co-recursively) +Corecursion.dfy(58,11): Error: cannot prove termination; try supplying a decreases clause +Corecursion.dfy(71,16): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context) +Corecursion.dfy(93,15): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) +Corecursion.dfy(103,15): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) +Corecursion.dfy(148,13): Error: decreases clause might not decrease (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) +Corecursion.dfy(161,13): Error: decreases clause might not decrease (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) Dafny program verifier finished with 14 verified, 8 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CustomErrorMesage.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CustomErrorMesage.dfy.expect index 17e15bd3b92..c33d4050316 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CustomErrorMesage.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/CustomErrorMesage.dfy.expect @@ -1,6 +1,6 @@ CustomErrorMesage.dfy(6,2): Error: m: x must be positive CustomErrorMesage.dfy(10,2): Error: f: x must be positive -CustomErrorMesage.dfy(15,2): Error: when calling foo, you must supply a positive x +CustomErrorMesage.dfy(15,5): Error: when calling foo, you must supply a positive x CustomErrorMesage.dfy(19,71): Related location: this proposition could not be proved CustomErrorMesage.dfy(22,2): Error: a postcondition could not be proved on this return path CustomErrorMesage.dfy(20,85): Related location: cannot establish that return value of foo is always negative diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DTypes.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DTypes.dfy.expect index 82fe2d6625f..0d32b44bad3 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DTypes.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DTypes.dfy.expect @@ -12,7 +12,7 @@ DTypes.dfy(121,11): Error: assertion might not hold DTypes.dfy(93,29): Related location: this proposition could not be proved DTypes.dfy(127,11): Error: assertion might not hold DTypes.dfy(93,19): Related location: this proposition could not be proved -DTypes.dfy(137,11): Error: assertion might not hold +DTypes.dfy(137,20): Error: assertion might not hold DTypes.dfy(132,4): Related location: this proposition could not be proved DTypes.dfy(93,19): Related location: this proposition could not be proved DTypes.dfy(156,4): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DecreasesTo1.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DecreasesTo1.dfy.expect index 0040f993e87..b9772de2560 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DecreasesTo1.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DecreasesTo1.dfy.expect @@ -4,7 +4,7 @@ DecreasesTo1.dfy(23,2): Error: assertion might not hold Asserted expression: x - 1 decreases to x DecreasesTo1.dfy(27,2): Error: assertion might not hold Asserted expression: (x, y - 1 decreases to x, y) -DecreasesTo1.dfy(39,34): Error: decreases clause might not decrease +DecreasesTo1.dfy(39,39): Error: decreases clause might not decrease Asserted expression: n + m decreases to n + m + 1 DecreasesTo1.dfy(49,20): Error: decreases clause might not decrease Asserted expression: old(n + m) decreases to n + m + 1 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DefaultParameters.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DefaultParameters.dfy.expect index 080bb16f10d..edd1f6bca0e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DefaultParameters.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DefaultParameters.dfy.expect @@ -1,4 +1,4 @@ -DefaultParameters.dfy(55,23): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(55,24): Error: default-value expression is not allowed to involve recursive or mutually recursive calls DefaultParameters.dfy(63,42): Error: default value could not be proved to be allocated in the two-state function's previous state DefaultParameters.dfy(67,38): Error: default value could not be proved to be allocated in the two-state lemma's previous state DefaultParameters.dfy(92,2): Error: a postcondition could not be proved on this return path @@ -28,18 +28,18 @@ DefaultParameters.dfy(178,41): Error: value does not satisfy the subset constrai DefaultParameters.dfy(179,33): Error: value does not satisfy the subset constraints of 'nat' DefaultParameters.dfy(180,35): Error: value does not satisfy the subset constraints of 'nat' DefaultParameters.dfy(180,35): Error: value does not satisfy the subset constraints of 'nat' -DefaultParameters.dfy(181,37): Error: value does not satisfy the subset constraints of 'nat' -DefaultParameters.dfy(194,39): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(200,40): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(211,62): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(219,29): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(220,29): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(229,8): Error: decreases clause might not decrease -DefaultParameters.dfy(235,4): Error: decreases clause might not decrease -DefaultParameters.dfy(235,6): Error: decreases clause might not decrease -DefaultParameters.dfy(241,4): Error: decreases clause might not decrease +DefaultParameters.dfy(181,40): Error: value does not satisfy the subset constraints of 'nat' +DefaultParameters.dfy(194,40): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(200,42): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(211,63): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(219,30): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(220,30): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(229,9): Error: decreases clause might not decrease +DefaultParameters.dfy(235,5): Error: decreases clause might not decrease +DefaultParameters.dfy(235,7): Error: decreases clause might not decrease +DefaultParameters.dfy(241,5): Error: decreases clause might not decrease DefaultParameters.dfy(251,31): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls -DefaultParameters.dfy(258,40): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(258,42): Error: default-value expression is not allowed to involve recursive or mutually recursive calls DefaultParameters.dfy(267,41): Error: possible division by zero DefaultParameters.dfy(320,45): Error: a precondition for this call could not be proved DefaultParameters.dfy(319,15): Related location: this is the precondition that could not be proved @@ -58,10 +58,10 @@ DefaultParameters.dfy(388,34): Error: value does not satisfy the subset constrai DefaultParameters.dfy(388,34): Error: value does not satisfy the subset constraints of 'nat' DefaultParameters.dfy(390,35): Error: value does not satisfy the subset constraints of 'nat' DefaultParameters.dfy(416,28): Error: default-value expression is not allowed to involve recursive or mutually recursive calls -DefaultParameters.dfy(417,29): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(417,30): Error: default-value expression is not allowed to involve recursive or mutually recursive calls DefaultParameters.dfy(418,30): Error: cannot prove termination; try supplying a decreases clause DefaultParameters.dfy(419,21): Error: cannot prove termination; try supplying a decreases clause -DefaultParameters.dfy(438,27): Error: default-value expression is not allowed to involve recursive or mutually recursive calls +DefaultParameters.dfy(438,28): Error: default-value expression is not allowed to involve recursive or mutually recursive calls DefaultParameters.dfy(443,28): Error: default-value expression is not allowed to involve recursive or mutually recursive calls DefaultParameters.dfy(447,5): Error: cannot prove termination; try supplying a decreases clause DefaultParameters.dfy(453,32): Error: default-value expression is not allowed to involve recursive or mutually recursive calls @@ -74,7 +74,7 @@ DefaultParameters.dfy(520,38): Error: insufficient reads clause to read field; M DefaultParameters.dfy(521,40): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls DefaultParameters.dfy(524,49): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls DefaultParameters.dfy(548,38): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls -DefaultParameters.dfy(601,11): Error: assertion might not hold +DefaultParameters.dfy(601,16): Error: assertion might not hold DefaultParameters.dfy(582,18): Related location: this proposition could not be proved Dafny program verifier finished with 72 verified, 74 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Definedness.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Definedness.dfy.expect index 9a6e1e5b3d8..bd28e97ab5e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Definedness.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Definedness.dfy.expect @@ -14,32 +14,32 @@ Definedness.dfy(60,21): Related location: this is the postcondition that could n Definedness.dfy(68,2): Error: a postcondition could not be proved on this return path Definedness.dfy(67,21): Related location: this is the postcondition that could not be proved Definedness.dfy(88,6): Error: target object might be null -Definedness.dfy(89,4): Error: function precondition could not be proved +Definedness.dfy(89,5): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved Definedness.dfy(89,9): Error: assignment might update an object not in the enclosing context's modifies clause Definedness.dfy(89,9): Error: target object might be null -Definedness.dfy(90,9): Error: function precondition could not be proved +Definedness.dfy(90,10): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved Definedness.dfy(95,13): Error: possible division by zero Definedness.dfy(95,22): Error: possible division by zero Definedness.dfy(96,14): Error: possible division by zero Definedness.dfy(101,11): Error: possible division by zero Definedness.dfy(108,14): Error: possible division by zero -Definedness.dfy(117,22): Error: function precondition could not be proved +Definedness.dfy(117,23): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved -Definedness.dfy(123,16): Error: function precondition could not be proved +Definedness.dfy(123,17): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved -Definedness.dfy(133,16): Error: function precondition could not be proved +Definedness.dfy(133,17): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved Definedness.dfy(133,21): Error: this loop invariant could not be proved on entry Related message: loop invariant violation -Definedness.dfy(134,16): Error: function precondition could not be proved +Definedness.dfy(134,17): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved Definedness.dfy(143,14): Error: possible division by zero Definedness.dfy(162,14): Error: possible division by zero Definedness.dfy(175,27): Error: this loop invariant could not be proved on entry Related message: loop invariant violation -Definedness.dfy(181,16): Error: function precondition could not be proved +Definedness.dfy(181,17): Error: function precondition could not be proved Definedness.dfy(79,15): Related location: this proposition could not be proved Definedness.dfy(196,18): Error: possible division by zero Definedness.dfy(196,22): Error: this loop invariant could not be proved on entry diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DiscoverBoundsErrors.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DiscoverBoundsErrors.dfy.expect index 0db8cb742e8..658736bab52 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DiscoverBoundsErrors.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/DiscoverBoundsErrors.dfy.expect @@ -4,7 +4,7 @@ DiscoverBoundsErrors.dfy(13,7): Error: quantifiers in non-ghost contexts must be DiscoverBoundsErrors.dfy(31,2): Error: forall statements in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'i' DiscoverBoundsErrors.dfy(34,2): Error: forall statements in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'i' DiscoverBoundsErrors.dfy(52,2): Error: forall statements in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'k' -DiscoverBoundsErrors.dfy(96,44): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +DiscoverBoundsErrors.dfy(96,51): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) DiscoverBoundsErrors.dfy(104,8): Error: quantifiers in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'x' DiscoverBoundsErrors.dfy(105,8): Error: quantifiers in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'x' DiscoverBoundsErrors.dfy(106,8): Error: quantifiers in non-ghost contexts must be compilable, but Dafny's heuristics can't figure out how to produce or compile a bounded set of values for 'x' diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypes.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypes.dfy.expect index a25a0eccfbe..2b4c8387ad8 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypes.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypes.dfy.expect @@ -10,7 +10,7 @@ EqualityTypes.dfy(109,7): Error: == can only be applied to expressions of types EqualityTypes.dfy(114,13): Error: == can only be applied to expressions of types that support equality (got D) EqualityTypes.dfy(118,16): Error: == can only be applied to expressions of types that support equality (got D) EqualityTypes.dfy(147,8): Error: set argument type must support equality (got Co) -EqualityTypes.dfy(149,13): Error: type parameter (Y) passed to function G must support equality (got Co) +EqualityTypes.dfy(149,14): Error: type parameter (Y) passed to function G must support equality (got Co) EqualityTypes.dfy(156,11): Error: set argument type must support equality (got Co) EqualityTypes.dfy(173,8): Error: set argument type must support equality (got Dt) EqualityTypes.dfy(176,8): Error: set argument type must support equality (got Left) @@ -35,7 +35,7 @@ EqualityTypes.dfy(238,24): Error: set argument type must support equality (got C EqualityTypes.dfy(239,21): Error: multiset argument type must support equality (got Co) EqualityTypes.dfy(241,8): Error: map domain type must support equality (got Co) EqualityTypes.dfy(241,14): Error: map domain type must support equality (got Co) -EqualityTypes.dfy(255,13): Error: type parameter 'T' (inferred to be '?') in the function call to 'UG' could not be determined +EqualityTypes.dfy(255,15): Error: type parameter 'T' (inferred to be '?') in the function call to 'UG' could not be determined EqualityTypes.dfy(256,4): Error: type parameter 'T' (inferred to be '?') to the method 'UP' could not be determined EqualityTypes.dfy(259,8): Error: the type of this local variable is underspecified EqualityTypes.dfy(261,4): Error: type parameter 'T' (inferred to be 'set') to the method 'Callee' could not be determined @@ -49,20 +49,20 @@ EqualityTypes.dfy(293,8): Error: map domain type must support equality (got Dt) EqualityTypes.dfy(295,8): Error: imap domain type must support equality (got Dt) EqualityTypes.dfy(303,8): Error: set argument type must support equality (got Stream) EqualityTypes.dfy(305,28): Error: set argument type must support equality (got Stream) -EqualityTypes.dfy(306,14): Error: set argument type must support equality (got Stream) +EqualityTypes.dfy(306,33): Error: set argument type must support equality (got Stream) EqualityTypes.dfy(309,13): Error: type parameter 0 (V) passed to type AClass must support equality (got Stream) EqualityTypes.dfy(312,19): Error: type parameter 0 (V) passed to type AClass must support equality (got Stream) -EqualityTypes.dfy(313,19): Error: type parameter 1 (X) passed to function H must support equality (got Stream) +EqualityTypes.dfy(313,39): Error: type parameter 1 (X) passed to function H must support equality (got Stream) EqualityTypes.dfy(315,19): Error: type parameter 0 (V) passed to type AClass must support equality (got Stream) EqualityTypes.dfy(316,19): Error: type parameter 1 (X) passed to function H must support equality (got Stream) -EqualityTypes.dfy(319,31): Error: type parameter 1 (X) passed to function H must support equality (got Stream) +EqualityTypes.dfy(319,51): Error: type parameter 1 (X) passed to function H must support equality (got Stream) EqualityTypes.dfy(321,15): Error: type parameter 0 (V) passed to type AClass must support equality (got Stream) EqualityTypes.dfy(323,4): Error: type parameter 0 (V) passed to type AClass must support equality (got Stream) EqualityTypes.dfy(326,48): Error: type parameter 1 (B) passed to method Q must support equality (got Stream) EqualityTypes.dfy(328,4): Error: set argument type must support equality (got Stream) EqualityTypes.dfy(329,45): Error: set argument type must support equality (got Stream) EqualityTypes.dfy(330,15): Error: set argument type must support equality (got Stream) -EqualityTypes.dfy(331,31): Error: set argument type must support equality (got Stream) +EqualityTypes.dfy(331,56): Error: set argument type must support equality (got Stream) EqualityTypes.dfy(334,7): Error: == can only be applied to expressions of types that support equality (got seq int>) EqualityTypes.dfy(337,14): Error: in can only be applied to expressions of sequence types that support equality (got seq int>) EqualityTypes.dfy(340,16): Error: in can only be applied to expressions of sequence types that support equality (got seq int>) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypesModuleExports.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypesModuleExports.dfy.expect index 3a65091043b..d26388e10dd 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypesModuleExports.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/EqualityTypesModuleExports.dfy.expect @@ -17,7 +17,7 @@ EqualityTypesModuleExports.dfy(135,11): Error: type parameter (A) passed to type EqualityTypesModuleExports.dfy(139,11): Error: type parameter (A) passed to type Syn5 must support equality (got Syn1 int>) EqualityTypesModuleExports.dfy(13,8): Error: set argument type must support equality (got Klm) (perhaps try declaring type parameter 'Klm' on line 11 as 'Klm(==)', which says it can only be instantiated with a type that supports equality) EqualityTypesModuleExports.dfy(13,23): Error: set argument type must support equality (got Klm) (perhaps try declaring type parameter 'Klm' on line 11 as 'Klm(==)', which says it can only be instantiated with a type that supports equality) -EqualityTypesModuleExports.dfy(32,15): Error: type parameter (X) passed to function Fib must support equality (got Y) (perhaps try declaring type parameter 'Y' on line 26 as 'Y(==)', which says it can only be instantiated with a type that supports equality) +EqualityTypesModuleExports.dfy(32,18): Error: type parameter (X) passed to function Fib must support equality (got Y) (perhaps try declaring type parameter 'Y' on line 26 as 'Y(==)', which says it can only be instantiated with a type that supports equality) EqualityTypesModuleExports.dfy(32,23): Error: set argument type must support equality (got Y) (perhaps try declaring type parameter 'Y' on line 26 as 'Y(==)', which says it can only be instantiated with a type that supports equality) EqualityTypesModuleExports.dfy(34,13): Error: set argument type must support equality (got GG) (perhaps try declaring type parameter 'GG' on line 21 as 'GG(==)', which says it can only be instantiated with a type that supports equality) EqualityTypesModuleExports.dfy(84,7): Error: type 'Syn4' declared as supporting equality, but the RHS type ((real, A)) might not (perhaps try declaring type parameter 'A' on line 84 as 'A(==)', which says it can only be instantiated with a type that supports equality) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ExtremeReads.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ExtremeReads.dfy.expect index 587974ee82f..03925a2d138 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ExtremeReads.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ExtremeReads.dfy.expect @@ -1,36 +1,36 @@ -ExtremeReads.dfy(47,11): Error: assertion might not hold -ExtremeReads.dfy(13,20): Related location: this proposition could not be proved -ExtremeReads.dfy(50,11): Error: assertion might not hold -ExtremeReads.dfy(13,20): Related location: this proposition could not be proved -ExtremeReads.dfy(69,11): Error: assertion might not hold -ExtremeReads.dfy(20,20): Related location: this proposition could not be proved -ExtremeReads.dfy(83,11): Error: assertion might not hold -ExtremeReads.dfy(26,2): Related location: this proposition could not be proved -ExtremeReads.dfy(105,11): Error: assertion might not hold -ExtremeReads.dfy(89,2): Related location: this proposition could not be proved -ExtremeReads.dfy(127,11): Error: assertion might not hold +ExtremeReads.dfy(47,12): Error: assertion might not hold +ExtremeReads.dfy(13,21): Related location: this proposition could not be proved +ExtremeReads.dfy(50,12): Error: assertion might not hold +ExtremeReads.dfy(13,21): Related location: this proposition could not be proved +ExtremeReads.dfy(69,12): Error: assertion might not hold +ExtremeReads.dfy(20,21): Related location: this proposition could not be proved +ExtremeReads.dfy(83,12): Error: assertion might not hold +ExtremeReads.dfy(26,3): Related location: this proposition could not be proved +ExtremeReads.dfy(105,12): Error: assertion might not hold +ExtremeReads.dfy(89,3): Related location: this proposition could not be proved +ExtremeReads.dfy(127,16): Error: assertion might not hold ExtremeReads.dfy(9,19): Related location: this proposition could not be proved -ExtremeReads.dfy(127,11): Error: assertion might not hold -ExtremeReads.dfy(13,20): Related location: this proposition could not be proved -ExtremeReads.dfy(130,11): Error: assertion might not hold +ExtremeReads.dfy(127,16): Error: assertion might not hold +ExtremeReads.dfy(13,21): Related location: this proposition could not be proved +ExtremeReads.dfy(130,16): Error: assertion might not hold ExtremeReads.dfy(9,19): Related location: this proposition could not be proved -ExtremeReads.dfy(130,11): Error: assertion might not hold -ExtremeReads.dfy(13,20): Related location: this proposition could not be proved -ExtremeReads.dfy(149,11): Error: assertion might not hold +ExtremeReads.dfy(130,16): Error: assertion might not hold +ExtremeReads.dfy(13,21): Related location: this proposition could not be proved +ExtremeReads.dfy(149,16): Error: assertion might not hold ExtremeReads.dfy(16,19): Related location: this proposition could not be proved -ExtremeReads.dfy(149,11): Error: assertion might not hold -ExtremeReads.dfy(20,20): Related location: this proposition could not be proved -ExtremeReads.dfy(168,11): Error: assertion might not hold +ExtremeReads.dfy(149,16): Error: assertion might not hold +ExtremeReads.dfy(20,21): Related location: this proposition could not be proved +ExtremeReads.dfy(168,16): Error: assertion might not hold ExtremeReads.dfy(23,19): Related location: this proposition could not be proved -ExtremeReads.dfy(168,11): Error: assertion might not hold -ExtremeReads.dfy(26,2): Related location: this proposition could not be proved -ExtremeReads.dfy(171,11): Error: assertion might not hold +ExtremeReads.dfy(168,16): Error: assertion might not hold +ExtremeReads.dfy(26,3): Related location: this proposition could not be proved +ExtremeReads.dfy(171,16): Error: assertion might not hold ExtremeReads.dfy(23,19): Related location: this proposition could not be proved -ExtremeReads.dfy(171,11): Error: assertion might not hold -ExtremeReads.dfy(26,2): Related location: this proposition could not be proved -ExtremeReads.dfy(181,11): Error: assertion might not hold +ExtremeReads.dfy(171,16): Error: assertion might not hold +ExtremeReads.dfy(26,3): Related location: this proposition could not be proved +ExtremeReads.dfy(181,16): Error: assertion might not hold ExtremeReads.dfy(86,16): Related location: this proposition could not be proved -ExtremeReads.dfy(181,11): Error: assertion might not hold -ExtremeReads.dfy(89,2): Related location: this proposition could not be proved +ExtremeReads.dfy(181,16): Error: assertion might not hold +ExtremeReads.dfy(89,3): Related location: this proposition could not be proved Dafny program verifier finished with 10 verified, 17 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ForallStmt.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ForallStmt.dfy.expect index 91d7e3250bb..9e75436b90c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ForallStmt.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ForallStmt.dfy.expect @@ -7,7 +7,7 @@ ForallStmt.dfy(91,4): Error: assertion might not hold ForallStmt.dfy(97,19): Error: possible violation of postcondition of forall statement ForallStmt.dfy(119,11): Error: value does not satisfy the subset constraints of 'nat' ForallStmt.dfy(182,11): Error: left-hand sides for different forall-statement bound variables might refer to the same location (and right-hand sides might not be equivalent) -ForallStmt.dfy(303,9): Error: assertion might not hold +ForallStmt.dfy(303,14): Error: assertion might not hold ForallStmt.dfy(290,32): Related location: this proposition could not be proved Dafny program verifier finished with 17 verified, 9 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Fuel.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Fuel.dfy.expect index 9263a740963..ef4a432d124 100755 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Fuel.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Fuel.dfy.expect @@ -15,46 +15,46 @@ Fuel.dfy(200,55): Error: assertion might not hold Fuel.dfy(245,22): Error: assertion might not hold Fuel.dfy(247,22): Error: assertion might not hold Fuel.dfy(280,26): Error: assertion might not hold -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved Fuel.dfy(312,43): Related location: this proposition could not be proved -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved Fuel.dfy(312,58): Related location: this proposition could not be proved -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved Fuel.dfy(313,41): Related location: this proposition could not be proved -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved Fuel.dfy(314,46): Related location: this proposition could not be proved -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved Fuel.dfy(314,72): Related location: this proposition could not be proved -Fuel.dfy(335,26): Error: function precondition could not be proved -Fuel.dfy(324,21): Related location: this proposition could not be proved -Fuel.dfy(314,93): Related location: this proposition could not be proved +Fuel.dfy(335,40): Error: function precondition could not be proved +Fuel.dfy(324,33): Related location: this proposition could not be proved +Fuel.dfy(314,105): Related location: this proposition could not be proved Fuel.dfy(335,49): Error: destructor 't' can only be applied to datatype values constructed by 'VTuple' Fuel.dfy(335,50): Error: index out of range Fuel.dfy(336,38): Error: index out of range Fuel.dfy(336,42): Error: destructor 'u' can only be applied to datatype values constructed by 'VUint64' -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved Fuel.dfy(311,43): Related location: this proposition could not be proved -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved Fuel.dfy(312,43): Related location: this proposition could not be proved -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved Fuel.dfy(312,58): Related location: this proposition could not be proved -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved Fuel.dfy(313,41): Related location: this proposition could not be proved -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved Fuel.dfy(314,72): Related location: this proposition could not be proved -Fuel.dfy(336,45): Error: function precondition could not be proved -Fuel.dfy(329,21): Related location: this proposition could not be proved -Fuel.dfy(314,93): Related location: this proposition could not be proved +Fuel.dfy(336,61): Error: function precondition could not be proved +Fuel.dfy(329,33): Related location: this proposition could not be proved +Fuel.dfy(314,105): Related location: this proposition could not be proved Fuel.dfy(336,71): Error: index out of range Fuel.dfy(407,8): Error: Fuel can only increase within a given scope. Fuel.dfy(397,22): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/FunctionSpecifications.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/FunctionSpecifications.dfy.expect index aa0c01e6261..203a0aa2d9c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/FunctionSpecifications.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/FunctionSpecifications.dfy.expect @@ -1,16 +1,16 @@ -FunctionSpecifications.dfy(35,45): Error: a postcondition could not be proved on this return path +FunctionSpecifications.dfy(35,59): Error: a postcondition could not be proved on this return path FunctionSpecifications.dfy(31,12): Related location: this is the postcondition that could not be proved -FunctionSpecifications.dfy(61,10): Error: cannot prove termination; try supplying a decreases clause +FunctionSpecifications.dfy(61,23): Error: cannot prove termination; try supplying a decreases clause FunctionSpecifications.dfy(71,4): Error: a postcondition could not be proved on this return path -FunctionSpecifications.dfy(69,21): Related location: this is the postcondition that could not be proved +FunctionSpecifications.dfy(69,40): Related location: this is the postcondition that could not be proved FunctionSpecifications.dfy(117,2): Error: assertion might not hold FunctionSpecifications.dfy(120,2): Error: assertion might not hold FunctionSpecifications.dfy(135,26): Error: assertion might not hold FunctionSpecifications.dfy(139,26): Error: assertion might not hold FunctionSpecifications.dfy(148,4): Error: a postcondition could not be proved on this return path FunctionSpecifications.dfy(146,28): Related location: this is the postcondition that could not be proved -FunctionSpecifications.dfy(155,2): Error: decreases clause might not decrease -FunctionSpecifications.dfy(162,2): Error: decreases clause might not decrease -FunctionSpecifications.dfy(167,2): Error: cannot prove termination; try supplying a decreases clause +FunctionSpecifications.dfy(155,3): Error: decreases clause might not decrease +FunctionSpecifications.dfy(162,3): Error: decreases clause might not decrease +FunctionSpecifications.dfy(167,3): Error: cannot prove termination; try supplying a decreases clause Dafny program verifier finished with 11 verified, 11 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeResolution.dfy.expect index 60ec73a31a3..da8c7fbe034 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeResolution.dfy.expect @@ -244,8 +244,8 @@ GeneralNewtypeResolution.dfy(277,6): Error: RHS (of type Big) not assignable to GeneralNewtypeResolution.dfy(282,16): Error: type of left argument to << (bv32) must agree with the result type (BV) GeneralNewtypeResolution.dfy(283,16): Error: type of left argument to >> (bv32) must agree with the result type (BV) GeneralNewtypeResolution.dfy(267,11): Error: type of right argument to - (BV) must agree with the result type (Big) -GeneralNewtypeResolution.dfy(286,36): Error: incorrect argument type for function parameter 'w' (expected nat, found int32) -GeneralNewtypeResolution.dfy(287,22): Error: incorrect argument type for function parameter 'w' (expected nat, found int32) +GeneralNewtypeResolution.dfy(286,37): Error: incorrect argument type for function parameter 'w' (expected nat, found int32) +GeneralNewtypeResolution.dfy(287,23): Error: incorrect argument type for function parameter 'w' (expected nat, found int32) GeneralNewtypeResolution.dfy(289,6): Error: RHS (of type bv32) not assignable to LHS (of type BV) GeneralNewtypeResolution.dfy(294,11): Error: arguments to <= must have a common supertype (got BV and bv32) GeneralNewtypeResolution.dfy(295,11): Error: arguments to >= must have a common supertype (got BV and bv1024) @@ -266,7 +266,7 @@ GeneralNewtypeResolution.dfy(308,6): Error: RHS (of type int32) not assignable t GeneralNewtypeResolution.dfy(399,6): Error: RHS (of type bv17) not assignable to LHS (of type BV) GeneralNewtypeResolution.dfy(403,6): Error: RHS (of type bv17) not assignable to LHS (of type BV) GeneralNewtypeResolution.dfy(422,15): Error: GhostBits is a newtype and its constraint is not compilable, hence it cannot yet be used as the type of a bound variable in set comprehension. -GeneralNewtypeResolution.dfy(411,33): Related location: The constraint is not compilable because a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +GeneralNewtypeResolution.dfy(411,47): Related location: The constraint is not compilable because a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) GeneralNewtypeResolution.dfy(434,13): Error: type conversion to a char type is allowed only from numeric and bitvector types, char, and ORDINAL (got bv5) GeneralNewtypeResolution.dfy(441,30): Error: :nativeType can only be used on a newtype based on integers or bitvectors GeneralNewtypeResolution.dfy(443,31): Error: The width of bitvector type bv325 cannot fit into native type 'uint'. Note: constraints of bitvector-based newtypes are not considered when determining native types. diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeVerify.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeVerify.dfy.expect index 09cb0bbbfbd..643fdcb9ea3 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeVerify.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GeneralNewtypeVerify.dfy.expect @@ -32,8 +32,8 @@ GeneralNewtypeVerify.dfy(330,25): Error: result of operation might violate newty GeneralNewtypeVerify.dfy(351,11): Error: shift amount must not exceed the width of the result (5) GeneralNewtypeVerify.dfy(352,11): Error: shift amount must not exceed the width of the result (5) GeneralNewtypeVerify.dfy(354,13): Error: shift amount must be non-negative -GeneralNewtypeVerify.dfy(361,13): Error: rotate amount must be non-negative -GeneralNewtypeVerify.dfy(364,11): Error: rotate amount must not exceed the width of the result (5) +GeneralNewtypeVerify.dfy(361,23): Error: rotate amount must be non-negative +GeneralNewtypeVerify.dfy(364,22): Error: rotate amount must not exceed the width of the result (5) GeneralNewtypeVerify.dfy(367,27): Error: result of operation might violate subset type constraint for 'nat' GeneralNewtypeVerify.dfy(371,35): Error: result of operation might violate newtype constraint for 'BV' GeneralNewtypeVerify.dfy(490,7): Error: cannot find witness that shows type is inhabited; try giving a hint through a 'witness' or 'ghost witness' clause, or use 'witness *' to treat as a possibly empty type @@ -41,9 +41,9 @@ GeneralNewtypeVerify.dfy(491,10): Error: cannot find witness that shows type is GeneralNewtypeVerify.dfy(496,7): Error: trying witness 0: result of operation might violate subset type constraint for 'Never' GeneralNewtypeVerify.dfy(507,10): Error: trying witness 0: result of operation might violate newtype constraint for 'Never' GeneralNewtypeVerify.dfy(518,10): Error: trying witness 0: result of operation might violate newtype constraint for 'Never' -GeneralNewtypeVerify.dfy(536,37): Error: function precondition could not be proved +GeneralNewtypeVerify.dfy(536,38): Error: function precondition could not be proved GeneralNewtypeVerify.dfy(529,15): Related location -GeneralNewtypeVerify.dfy(548,40): Error: function precondition could not be proved +GeneralNewtypeVerify.dfy(548,41): Error: function precondition could not be proved GeneralNewtypeVerify.dfy(541,15): Related location GeneralNewtypeVerify.dfy(555,10): Error: trying witness 0: result of operation might violate newtype constraint for 'A' GeneralNewtypeVerify.dfy(560,24): Error: result of operation might violate newtype constraint for 'A' diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GhostDatatypeConstructors-Resolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GhostDatatypeConstructors-Resolution.dfy.expect index 54a81dca448..5aceb627740 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GhostDatatypeConstructors-Resolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/GhostDatatypeConstructors-Resolution.dfy.expect @@ -6,7 +6,7 @@ GhostDatatypeConstructors-Resolution.dfy(44,12): Error: field 'y' can be used on GhostDatatypeConstructors-Resolution.dfy(45,12): Error: field 'w' can be used only in specification contexts GhostDatatypeConstructors-Resolution.dfy(46,9): Error: ghost variables such as xy are allowed only in specification contexts. xy was inferred to be ghost based on its declaration or initialization. GhostDatatypeConstructors-Resolution.dfy(101,17): Error: assignment to non-ghost variable is not allowed in this context, because the statement is in a ghost context; e.g., it may be guarded by a specification-only expression -GhostDatatypeConstructors-Resolution.dfy(218,7): Error: type parameter (T) passed to function Eq must support equality (got XY) +GhostDatatypeConstructors-Resolution.dfy(218,9): Error: type parameter (T) passed to function Eq must support equality (got XY) GhostDatatypeConstructors-Resolution.dfy(234,11): Error: ghost constructor is allowed only in specification contexts GhostDatatypeConstructors-Resolution.dfy(248,11): Error: ghost variables such as c are allowed only in specification contexts. c was inferred to be ghost based on its declaration or initialization. GhostDatatypeConstructors-Resolution.dfy(258,6): Error: ghost constructor is allowed only in specification contexts diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy index a46a18dd769..b78017eb2b9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy @@ -259,19 +259,36 @@ module SomeCoolDisjunctionTests { P(x) } - least lemma L[ORDINAL](x: int) - requires P(x) || Q(x) + least lemma L[ORDINAL](x: int, b: bool) + requires (b && P(x)) || (!b && Q(x)) ensures false // fine { // The following proof should not be necessary. This lemma used to verify // automatically, but after a change with CanCall, it stopped verifying. // The problem may be due to https://github.com/Z3Prover/z3/issues/7444. // After it is fixed, we should try removing the following lines again. + + // After some more changes to Dafny, this test is failing again. And again, + // the problem seems to be due an issue in Z3. Annoyingly, the part Z3 + // can't figure out is in the _k.IsLimit case, which Dafny fills in automatically + // and gives no way for a user to interact with. By introducing an "if" statement + // if (_module.__default.P_h($LS($LS($LZ)), _k#0, x#1)) { + // } else { + // assert _module.__default.Q_h($LS($LS($LZ)), _k#0, x#1); + // } + // in Boogie (inside the _k.IsLimit branch), Z3 completes the proof. So, it + // seems the boolean that Boogie introduces for the control flow somehow helps. + // For this reason, the parameter "b: bool" was introduced above. Apparently, + // it is enough to get Z3 in a better mood to complete the proof. Once this has + // been fixed in Z3, this boolean parameter should be removed from this test again. + assert !_k.IsLimit; - if P#[_k](x) { + if b && P#[_k](x) { assert P#[_k](x) == Q#[_k - 1](x); + L(x, !b); } else { - assert Q#[_k](x); + assert !b && Q#[_k](x); + L(x, !b); } } diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy.expect index 556db511fb2..f446ce813f9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/InductivePredicates.dfy.expect @@ -1,4 +1,4 @@ InductivePredicates.dfy(80,2): Error: assertion might not hold -InductivePredicates.dfy(92,10): Error: assertion might not hold +InductivePredicates.dfy(92,14): Error: assertion might not hold Dafny program verifier finished with 32 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/IteratorResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/IteratorResolution.dfy.expect index 985ba4bbf12..92422484fdc 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/IteratorResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/IteratorResolution.dfy.expect @@ -2,7 +2,7 @@ IteratorResolution.dfy(22,9): Error: LHS of assignment must denote a mutable fie IteratorResolution.dfy(24,9): Error: LHS of assignment must denote a mutable field IteratorResolution.dfy(64,9): Error: LHS of assignment must denote a mutable field IteratorResolution.dfy(69,18): Error: arguments must have comparable types (got _T0 and int) -IteratorResolution.dfy(84,16): Error: incorrect argument type for constructor in-parameter 't' (expected bool, found int) +IteratorResolution.dfy(84,36): Error: incorrect argument type for constructor in-parameter 't' (expected bool, found int) IteratorResolution.dfy(81,19): Error: RHS (of type bool) not assignable to LHS (of type int) IteratorResolution.dfy(129,11): Error: unresolved identifier: _decreases3 IteratorResolution.dfy(131,4): Error: LHS of assignment must denote a mutable field @@ -21,8 +21,8 @@ IteratorResolution.dfy(173,40): Error: type parameter 0 (A) passed to constructo IteratorResolution.dfy(174,40): Error: type parameter 1 (B) passed to constructor Init must support auto-initialization (got Six) IteratorResolution.dfy(179,24): Error: type parameter 0 (A) passed to method MyMethod must support equality (got Stream) IteratorResolution.dfy(180,22): Error: type parameter 1 (B) passed to method MyMethod must support auto-initialization (got Six) -IteratorResolution.dfy(185,13): Error: type parameter 0 (A) passed to function MyFunction must support equality (got Stream) -IteratorResolution.dfy(186,13): Error: type parameter 1 (B) passed to function MyFunction must support auto-initialization (got Six) +IteratorResolution.dfy(185,35): Error: type parameter 0 (A) passed to function MyFunction must support equality (got Stream) +IteratorResolution.dfy(186,33): Error: type parameter 1 (B) passed to function MyFunction must support auto-initialization (got Six) IteratorResolution.dfy(213,22): Error: type parameter 0 (A) passed to type MyIter must support equality (got Stream) IteratorResolution.dfy(213,22): Error: type parameter 0 (A) passed to type MyIter must support equality (got Stream) IteratorResolution.dfy(216,22): Error: type parameter 0 (A) passed to type MyIter must support equality (got Stream) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/LitTriggers.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/LitTriggers.dfy.expect index be0cd55b1a7..640bb8f4a52 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/LitTriggers.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/LitTriggers.dfy.expect @@ -1,3 +1,3 @@ -LitTriggers.dfy(56,21): Error: assertion might not hold +LitTriggers.dfy(56,27): Error: assertion might not hold Dafny program verifier finished with 5 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Maps.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Maps.dfy.expect index b389e27c125..c862122da79 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Maps.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Maps.dfy.expect @@ -5,9 +5,9 @@ Maps.dfy(220,36): Error: key expressions might be referring to the same value Maps.dfy(226,36): Error: key expressions might be referring to the same value Maps.dfy(232,37): Error: key expressions might be referring to the same value Maps.dfy(234,24): Error: key expressions might be referring to the same value -Maps.dfy(241,41): Error: function precondition could not be proved +Maps.dfy(241,42): Error: function precondition could not be proved Maps.dfy(215,13): Related location: this proposition could not be proved -Maps.dfy(243,36): Error: function precondition could not be proved +Maps.dfy(243,37): Error: function precondition could not be proved Maps.dfy(215,13): Related location: this proposition could not be proved Maps.dfy(243,37): Error: key expressions might be referring to the same value Maps.dfy(264,54): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NatTypes.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NatTypes.dfy.expect index d0cacd4888f..4dfd23d81ac 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NatTypes.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NatTypes.dfy.expect @@ -9,7 +9,7 @@ NatTypes.dfy(74,6): Error: assertion might not hold NatTypes.dfy(91,6): Error: assertion might not hold NatTypes.dfy(105,6): Error: assertion might not hold NatTypes.dfy(141,44): Error: value does not satisfy the subset constraints of 'nat' -NatTypes.dfy(164,20): Error: value does not satisfy the subset constraints of 'nat' +NatTypes.dfy(164,34): Error: value does not satisfy the subset constraints of 'nat' NatTypes.dfy(184,16): Error: value does not satisfy the subset constraints of 'nat' Dafny program verifier finished with 7 verified, 13 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NewtypesResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NewtypesResolution.dfy.expect index baea05bf75a..d23711b6192 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NewtypesResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NewtypesResolution.dfy.expect @@ -21,7 +21,7 @@ NewtypesResolution.dfy(156,9): Error: name of type (B) is used as a variable NewtypesResolution.dfy(157,11): Error: name of type (Syn) is used as a variable NewtypesResolution.dfy(162,8): Error: member 'U' does not exist in type synonym 'Y' NewtypesResolution.dfy(162,9): Error: expected method call, found expression -NewtypesResolution.dfy(188,56): Error: incorrect argument type at index 0 for datatype constructor parameter (expected int, found bool) +NewtypesResolution.dfy(188,61): Error: incorrect argument type at index 0 for datatype constructor parameter (expected int, found bool) NewtypesResolution.dfy(221,13): Error: arguments to < must have a common supertype (got Even and nat) NewtypesResolution.dfy(223,13): Error: arguments to < must have a common supertype (got Even and int) NewtypesResolution.dfy(227,13): Error: arguments to < must have a common supertype (got Even and int) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NoMoreAssume2Less2.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NoMoreAssume2Less2.dfy.expect index 3e6837fd074..5f8198a482b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NoMoreAssume2Less2.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/NoMoreAssume2Less2.dfy.expect @@ -11,7 +11,7 @@ NoMoreAssume2Less2.dfy(86,2): Error: assertion might not hold NoMoreAssume2Less2.dfy(92,18): Error: assertion might not hold NoMoreAssume2Less2.dfy(95,2): Error: assertion might not hold NoMoreAssume2Less2.dfy(104,2): Error: assertion might not hold -NoMoreAssume2Less2.dfy(110,11): Error: assertion might not hold +NoMoreAssume2Less2.dfy(110,16): Error: assertion might not hold NoMoreAssume2Less2.dfy(78,26): Related location: this proposition could not be proved NoMoreAssume2Less2.dfy(113,2): Error: assertion might not hold NoMoreAssume2Less2.dfy(119,19): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueFunctions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueFunctions.dfy.expect index ade075e17f8..438262974a1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueFunctions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueFunctions.dfy.expect @@ -2,13 +2,13 @@ OpaqueFunctions.dfy(214,2): Error: assertion might not hold OpaqueFunctions.dfy(229,2): Error: assertion might not hold OpaqueFunctions.dfy(38,6): Error: assertion might not hold OpaqueFunctions.dfy(69,7): Error: a precondition for this call could not be proved -OpaqueFunctions.dfy(35,15): Related location: this is the precondition that could not be proved +OpaqueFunctions.dfy(35,20): Related location: this is the precondition that could not be proved OpaqueFunctions.dfy(75,4): Error: assertion might not hold OpaqueFunctions.dfy(77,6): Error: assertion might not hold OpaqueFunctions.dfy(80,6): Error: assertion might not hold OpaqueFunctions.dfy(96,8): Error: assertion might not hold OpaqueFunctions.dfy(98,11): Error: a precondition for this call could not be proved -OpaqueFunctions.dfy[A'](35,15): Related location: this is the precondition that could not be proved +OpaqueFunctions.dfy[A'](35,20): Related location: this is the precondition that could not be proved OpaqueFunctions.dfy(102,6): Error: assertion might not hold OpaqueFunctions.dfy(109,4): Error: assertion might not hold OpaqueFunctions.dfy(111,6): Error: assertion might not hold @@ -16,14 +16,14 @@ OpaqueFunctions.dfy(114,6): Error: assertion might not hold OpaqueFunctions.dfy(123,31): Error: assertion might not hold OpaqueFunctions.dfy(146,6): Error: assertion might not hold OpaqueFunctions.dfy(148,9): Error: a precondition for this call could not be proved -OpaqueFunctions.dfy[A'](35,15): Related location: this is the precondition that could not be proved +OpaqueFunctions.dfy[A'](35,20): Related location: this is the precondition that could not be proved OpaqueFunctions.dfy(155,4): Error: assertion might not hold OpaqueFunctions.dfy(157,6): Error: assertion might not hold OpaqueFunctions.dfy(160,6): Error: assertion might not hold OpaqueFunctions.dfy(165,31): Error: assertion might not hold OpaqueFunctions.dfy(181,4): Error: assertion might not hold -OpaqueFunctions.dfy(246,11): Error: assertion might not hold -OpaqueFunctions.dfy(261,11): Error: assertion might not hold +OpaqueFunctions.dfy(246,12): Error: assertion might not hold +OpaqueFunctions.dfy(261,12): Error: assertion might not hold OpaqueFunctions.dfy(326,6): Error: assertion might not hold OpaqueFunctions.dfy(328,6): Error: assertion might not hold OpaqueFunctions.dfy(330,6): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueTypeWithMembers.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueTypeWithMembers.dfy.expect index 99d122f355c..31dab81017d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueTypeWithMembers.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/OpaqueTypeWithMembers.dfy.expect @@ -8,10 +8,10 @@ OpaqueTypeWithMembers.dfy(90,22): Error: index out of range OpaqueTypeWithMembers.dfy(93,18): Error: index out of range OpaqueTypeWithMembers.dfy(100,8): Error: possible division by zero OpaqueTypeWithMembers.dfy(107,17): Error: possible division by zero -OpaqueTypeWithMembers.dfy(139,15): Error: function precondition could not be proved +OpaqueTypeWithMembers.dfy(139,22): Error: function precondition could not be proved OpaqueTypeWithMembers.dfy(120,13): Related location: this proposition could not be proved -OpaqueTypeWithMembers.dfy(141,16): Error: function precondition could not be proved -OpaqueTypeWithMembers.dfy(115,13): Related location: this proposition could not be proved +OpaqueTypeWithMembers.dfy(141,32): Error: function precondition could not be proved +OpaqueTypeWithMembers.dfy(115,22): Related location: this proposition could not be proved OpaqueTypeWithMembers.dfy(113,28): Related location: this proposition could not be proved Dafny program verifier finished with 17 verified, 9 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.expect index 23a85631c5d..fa181252059 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.expect @@ -31,8 +31,8 @@ ParameterResolution.dfy(74,54): Error: default-valued expressions are cyclicly d ParameterResolution.dfy(99,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(109,32): Error: ghost variables such as y are allowed only in specification contexts. y was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(79,22): Error: ghost variables such as y are allowed only in specification contexts. y was inferred to be ghost based on its declaration or initialization. -ParameterResolution.dfy(86,52): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ParameterResolution.dfy(88,58): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ParameterResolution.dfy(86,65): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ParameterResolution.dfy(88,71): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ParameterResolution.dfy(95,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(97,82): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(101,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. @@ -46,12 +46,12 @@ ParameterResolution.dfy(172,14): Error: a refining formal parameter ('x') in a r ParameterResolution.dfy(174,12): Error: a refining formal parameter ('x') in a refinement module is not allowed to give a default-value expression ParameterResolution.dfy(169,12): Error: wrong number of arguments (got 0, but function 'O' expects 1: (x: int)) ParameterResolution.dfy[RefinementB](147,12): Error: wrong number of arguments (got 0, but function 'O' expects 1: (x: int)) -ParameterResolution.dfy(193,21): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined -ParameterResolution.dfy(194,13): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined -ParameterResolution.dfy(196,29): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined -ParameterResolution.dfy(197,26): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined -ParameterResolution.dfy(197,26): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined -ParameterResolution.dfy(198,37): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(193,22): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(194,14): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(196,30): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(197,27): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(197,27): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined +ParameterResolution.dfy(198,38): Error: type parameter 'X' (inferred to be '?') in the function call to 'F' could not be determined ParameterResolution.dfy(211,23): Error: old expressions are not allowed in this context ParameterResolution.dfy(213,25): Error: old expressions are not allowed in this context ParameterResolution.dfy(216,32): Error: old expressions are not allowed in this context diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.refresh.expect index 4aaf2f3b776..e9c3c665ac6 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ParameterResolution.dfy.refresh.expect @@ -31,8 +31,8 @@ ParameterResolution.dfy(74,54): Error: default-valued expressions are cyclicly d ParameterResolution.dfy(99,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(109,32): Error: ghost variables such as y are allowed only in specification contexts. y was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(79,22): Error: ghost variables such as y are allowed only in specification contexts. y was inferred to be ghost based on its declaration or initialization. -ParameterResolution.dfy(86,52): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ParameterResolution.dfy(88,58): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ParameterResolution.dfy(86,65): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ParameterResolution.dfy(88,71): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ParameterResolution.dfy(95,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(97,82): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. ParameterResolution.dfy(101,89): Error: ghost variables such as x are allowed only in specification contexts. x was inferred to be ghost based on its declaration or initialization. @@ -46,12 +46,12 @@ ParameterResolution.dfy(172,14): Error: a refining formal parameter ('x') in a r ParameterResolution.dfy(174,12): Error: a refining formal parameter ('x') in a refinement module is not allowed to give a default-value expression ParameterResolution.dfy(169,12): Error: wrong number of arguments (function 'O' expects 1, got 0) ParameterResolution.dfy[RefinementB](147,12): Error: wrong number of arguments (function 'O' expects 1, got 0) -ParameterResolution.dfy(193,21): Error: type parameter 'X' (inferred to be '?0') in the function call to 'F' could not be determined -ParameterResolution.dfy(194,13): Error: type parameter 'X' (inferred to be '?1') in the function call to 'F' could not be determined -ParameterResolution.dfy(196,29): Error: type parameter 'X' (inferred to be '?3') in the function call to 'F' could not be determined -ParameterResolution.dfy(197,26): Error: type parameter 'X' (inferred to be '?4') in the function call to 'F' could not be determined -ParameterResolution.dfy(197,26): Error: type parameter 'X' (inferred to be '?4') in the function call to 'F' could not be determined -ParameterResolution.dfy(198,37): Error: type parameter 'X' (inferred to be '?27') in the function call to 'F' could not be determined +ParameterResolution.dfy(193,22): Error: type parameter 'X' (inferred to be '?0') in the function call to 'F' could not be determined +ParameterResolution.dfy(194,14): Error: type parameter 'X' (inferred to be '?1') in the function call to 'F' could not be determined +ParameterResolution.dfy(196,30): Error: type parameter 'X' (inferred to be '?3') in the function call to 'F' could not be determined +ParameterResolution.dfy(197,27): Error: type parameter 'X' (inferred to be '?4') in the function call to 'F' could not be determined +ParameterResolution.dfy(197,27): Error: type parameter 'X' (inferred to be '?4') in the function call to 'F' could not be determined +ParameterResolution.dfy(198,38): Error: type parameter 'X' (inferred to be '?27') in the function call to 'F' could not be determined ParameterResolution.dfy(211,23): Error: old expressions are not allowed in this context ParameterResolution.dfy(213,25): Error: old expressions are not allowed in this context ParameterResolution.dfy(216,32): Error: old expressions are not allowed in this context diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/PrefixTypeSubst.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/PrefixTypeSubst.dfy.expect index 88360b7fc14..f9c007a32cc 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/PrefixTypeSubst.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/PrefixTypeSubst.dfy.expect @@ -688,19 +688,19 @@ module DefaultValueExpressionSubstitution { } } PrefixTypeSubst.dfy(52,0): Error: a postcondition could not be proved on this return path -PrefixTypeSubst.dfy(51,30): Related location: this is the postcondition that could not be proved -PrefixTypeSubst.dfy(19,17): Related location: this proposition could not be proved +PrefixTypeSubst.dfy(51,40): Related location: this is the postcondition that could not be proved +PrefixTypeSubst.dfy(19,24): Related location: this proposition could not be proved PrefixTypeSubst.dfy(58,0): Error: a postcondition could not be proved on this return path -PrefixTypeSubst.dfy(57,30): Related location: this is the postcondition that could not be proved -PrefixTypeSubst.dfy(19,17): Related location: this proposition could not be proved +PrefixTypeSubst.dfy(57,40): Related location: this is the postcondition that could not be proved +PrefixTypeSubst.dfy(19,24): Related location: this proposition could not be proved PrefixTypeSubst.dfy(64,0): Error: a postcondition could not be proved on this return path -PrefixTypeSubst.dfy(63,30): Related location: this is the postcondition that could not be proved -PrefixTypeSubst.dfy(19,17): Related location: this proposition could not be proved +PrefixTypeSubst.dfy(63,40): Related location: this is the postcondition that could not be proved +PrefixTypeSubst.dfy(19,24): Related location: this proposition could not be proved PrefixTypeSubst.dfy(70,0): Error: a postcondition could not be proved on this return path -PrefixTypeSubst.dfy(69,30): Related location: this is the postcondition that could not be proved -PrefixTypeSubst.dfy(19,17): Related location: this proposition could not be proved +PrefixTypeSubst.dfy(69,40): Related location: this is the postcondition that could not be proved +PrefixTypeSubst.dfy(19,24): Related location: this proposition could not be proved PrefixTypeSubst.dfy(85,9): Error: a postcondition could not be proved on this return path -PrefixTypeSubst.dfy(81,30): Related location: this is the postcondition that could not be proved -PrefixTypeSubst.dfy(19,17): Related location: this proposition could not be proved +PrefixTypeSubst.dfy(81,40): Related location: this is the postcondition that could not be proved +PrefixTypeSubst.dfy(19,24): Related location: this proposition could not be proved Dafny program verifier finished with 12 verified, 5 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/QuantificationNewSyntax.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/QuantificationNewSyntax.dfy.expect index 12c32401b70..ad5488fa695 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/QuantificationNewSyntax.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/QuantificationNewSyntax.dfy.expect @@ -1,7 +1,7 @@ QuantificationNewSyntax.dfy(11,13): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. QuantificationNewSyntax.dfy(12,13): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. QuantificationNewSyntax.dfy(11,42): Error: possible division by zero -QuantificationNewSyntax.dfy(13,36): Error: function precondition could not be proved +QuantificationNewSyntax.dfy(13,37): Error: function precondition could not be proved QuantificationNewSyntax.dfy(19,48): Related location: this proposition could not be proved QuantificationNewSyntax.dfy(15,54): Error: result of operation might violate subset type constraint for 'nat' diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/RankNeg.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/RankNeg.dfy.expect index d1d8c427d8f..0c448891373 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/RankNeg.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/RankNeg.dfy.expect @@ -1,6 +1,6 @@ -RankNeg.dfy(10,25): Error: cannot prove termination; try supplying a decreases clause -RankNeg.dfy(15,27): Error: cannot prove termination; try supplying a decreases clause -RankNeg.dfy(22,30): Error: cannot prove termination; try supplying a decreases clause -RankNeg.dfy(32,24): Error: cannot prove termination; try supplying a decreases clause +RankNeg.dfy(10,35): Error: cannot prove termination; try supplying a decreases clause +RankNeg.dfy(15,37): Error: cannot prove termination; try supplying a decreases clause +RankNeg.dfy(22,41): Error: cannot prove termination; try supplying a decreases clause +RankNeg.dfy(32,35): Error: cannot prove termination; try supplying a decreases clause Dafny program verifier finished with 1 verified, 4 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Reads.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Reads.dfy.expect index f23fdc08228..caf65274159 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Reads.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Reads.dfy.expect @@ -5,10 +5,10 @@ Reads.dfy(37,29): Error: insufficient reads clause to read field; Consider addin Reads.dfy(56,29): Error: insufficient reads clause to read field; Consider adding 'reads r' or 'reads r`r' in the enclosing function specification for resolution Reads.dfy(122,35): Error: function precondition could not be proved Reads.dfy(122,35): Error: insufficient reads clause to invoke function -Reads.dfy(125,37): Error: insufficient reads clause to invoke function +Reads.dfy(125,45): Error: insufficient reads clause to invoke function Reads.dfy(138,10): Error: insufficient reads clause to read field; Consider adding 'reads this' or 'reads this`Repr' in the enclosing predicate specification for resolution Reads.dfy(149,25): Error: insufficient reads clause to read field; Consider adding 'reads this' or 'reads this`y' in the enclosing function specification for resolution Reads.dfy(157,18): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls -Reads.dfy(159,18): Error: insufficient reads clause to invoke function +Reads.dfy(159,19): Error: insufficient reads clause to invoke function Dafny program verifier finished with 19 verified, 12 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ReadsOnMethods.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ReadsOnMethods.dfy.expect index 9a887a59af8..5fcfdebf415 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ReadsOnMethods.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ReadsOnMethods.dfy.expect @@ -10,15 +10,15 @@ ReadsOnMethods.dfy(54,29): Error: insufficient reads clause to read field; Consi ReadsOnMethods.dfy(73,29): Error: insufficient reads clause to read field; Consider adding 'reads r' or 'reads r`r' in the enclosing method specification for resolution ReadsOnMethods.dfy(147,35): Error: function precondition could not be proved ReadsOnMethods.dfy(147,35): Error: insufficient reads clause to invoke function -ReadsOnMethods.dfy(151,37): Error: insufficient reads clause to invoke function -ReadsOnMethods.dfy(162,25): Error: insufficient reads clause to invoke function -ReadsOnMethods.dfy(162,43): Error: insufficient reads clause to invoke function +ReadsOnMethods.dfy(151,45): Error: insufficient reads clause to invoke function +ReadsOnMethods.dfy(162,33): Error: insufficient reads clause to invoke function +ReadsOnMethods.dfy(162,48): Error: insufficient reads clause to invoke function ReadsOnMethods.dfy(169,10): Error: insufficient reads clause to read field; Consider adding 'reads this' or 'reads this`Repr' in the enclosing method specification for resolution ReadsOnMethods.dfy(172,19): Error: insufficient reads clause to read field; Consider adding 'reads this' or 'reads this`Repr' in the enclosing method specification for resolution ReadsOnMethods.dfy(183,25): Error: insufficient reads clause to read field; Consider adding 'reads this' or 'reads this`y' in the enclosing method specification for resolution ReadsOnMethods.dfy(245,9): Error: insufficient reads clause to read field; Consider adding 'reads b' or 'reads b`x' in the enclosing method specification for resolution ReadsOnMethods.dfy(304,33): Error: insufficient reads clause to read field; Consider adding 'reads cache' or 'reads cache`state' in the enclosing method specification for resolution -ReadsOnMethods.dfy(308,22): Error: insufficient reads clause to invoke function +ReadsOnMethods.dfy(308,25): Error: insufficient reads clause to invoke function ReadsOnMethods.dfy(313,13): Error: insufficient reads clause to call ReadsOnMethods.dfy(360,20): Error: insufficient reads clause to call ReadsOnMethods.dfy(402,23): Error: insufficient reads clause to read field; Consider adding 'reads b' or 'reads b`x' in the enclosing function specification for resolution @@ -30,8 +30,8 @@ ReadsOnMethods.dfy(469,9): Error: method might read an object not in the parent ReadsOnMethods.dfy(479,26): Error: insufficient reads clause to call ReadsOnMethods.dfy(484,24): Error: insufficient reads clause to call ReadsOnMethods.dfy(494,35): Error: insufficient reads clause to call -ReadsOnMethods.dfy(499,9): Error: insufficient reads clause to invoke function -ReadsOnMethods.dfy(505,9): Error: assertion might not hold +ReadsOnMethods.dfy(499,18): Error: insufficient reads clause to invoke function +ReadsOnMethods.dfy(505,14): Error: assertion might not hold ReadsOnMethods.dfy(516,11): Related location: this proposition could not be proved ReadsOnMethods.dfy(523,13): Error: insufficient reads clause to read field; Consider adding 'reads b' or 'reads b`x' in the enclosing method specification for resolution ReadsOnMethods.dfy(530,50): Error: insufficient reads clause to read field; Mutable fields cannot be accessed within certain scopes, such as default values, the right-hand side of constants, or co-recursive calls diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.expect index a9030966c2a..ede36cc876b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.expect @@ -19,7 +19,7 @@ ResolutionErrors0.dfy(94,16): Error: the name 'David' denotes a datatype constru ResolutionErrors0.dfy(96,16): Error: the name 'David' denotes a datatype constructor, but does not do so uniquely; add an explicit qualification (for example, 'Abc.David') ResolutionErrors0.dfy(98,20): Error: wrong number of arguments (got 2, but datatype constructor 'David' expects 1: (x: int)) ResolutionErrors0.dfy(116,11): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. -ResolutionErrors0.dfy(117,11): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors0.dfy(117,12): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors0.dfy(121,13): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. ResolutionErrors0.dfy(122,12): Error: actual out-parameter is required to be a ghost variable ResolutionErrors0.dfy(133,25): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. @@ -37,9 +37,9 @@ ResolutionErrors0.dfy(345,27): Error: arguments must have comparable types (got ResolutionErrors0.dfy(343,18): Error: arguments must have comparable types (got int and DTD_List) ResolutionErrors0.dfy(344,18): Error: arguments must have comparable types (got DTD_List and int) ResolutionErrors0.dfy(358,17): Error: ghost variables such as b are allowed only in specification contexts. b was inferred to be ghost based on its declaration or initialization. -ResolutionErrors0.dfy(382,7): Error: incorrect argument type at index 1 for method in-parameter 'b' (expected GenericClass, found GenericClass) (non-variant type parameter would require int = bool) -ResolutionErrors0.dfy(396,13): Error: incorrect argument type at index 0 for datatype constructor parameter 'hd' (expected _T0, found int) -ResolutionErrors0.dfy(397,9): Error: incorrect argument type at index 0 for datatype constructor parameter 'hd' (expected _T0, found int) +ResolutionErrors0.dfy(382,11): Error: incorrect argument type at index 1 for method in-parameter 'b' (expected GenericClass, found GenericClass) (non-variant type parameter would require int = bool) +ResolutionErrors0.dfy(396,19): Error: incorrect argument type at index 0 for datatype constructor parameter 'hd' (expected _T0, found int) +ResolutionErrors0.dfy(397,15): Error: incorrect argument type at index 0 for datatype constructor parameter 'hd' (expected _T0, found int) ResolutionErrors0.dfy(406,8): Error: all lines in a calculation must have the same type (got int after bool) ResolutionErrors0.dfy(410,8): Error: all lines in a calculation must have the same type (got int after bool) ResolutionErrors0.dfy(413,8): Error: first argument to ==> must be of type bool (instead got int) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.refresh.expect index a41828425eb..c7fe0d81f57 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors0.dfy.refresh.expect @@ -19,7 +19,7 @@ ResolutionErrors0.dfy(94,16): Error: the name 'David' denotes a datatype constru ResolutionErrors0.dfy(96,16): Error: the name 'David' denotes a datatype constructor, but does not do so uniquely; add an explicit qualification (for example, 'Abc.David') ResolutionErrors0.dfy(98,20): Error: wrong number of arguments (datatype constructor 'David' expects 1, got 2) ResolutionErrors0.dfy(116,11): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. -ResolutionErrors0.dfy(117,11): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors0.dfy(117,12): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors0.dfy(121,13): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. ResolutionErrors0.dfy(122,12): Error: actual out-parameter is required to be a ghost variable ResolutionErrors0.dfy(133,25): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors1.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors1.dfy.expect index 8f2753f6266..387a015543f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors1.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors1.dfy.expect @@ -5,7 +5,7 @@ ResolutionErrors1.dfy(51,30): Error: Wrong number of type arguments (0 instead o ResolutionErrors1.dfy(66,20): Error: unresolved identifier: w ResolutionErrors1.dfy(85,8): Error: the type of this local variable is underspecified ResolutionErrors1.dfy(86,25): Error: the type of this variable is underspecified -ResolutionErrors1.dfy(86,23): Error: type parameter 'T' (inferred to be '?') in the function call to 'P' could not be determined +ResolutionErrors1.dfy(86,24): Error: type parameter 'T' (inferred to be '?') in the function call to 'P' could not be determined ResolutionErrors1.dfy(86,18): Error: type of bound variable 'z' could not be determined; please specify the type explicitly ResolutionErrors1.dfy(99,13): Error: a lemma is not allowed to use 'new' ResolutionErrors1.dfy(100,9): Error: a lemma is not allowed to use 'new' diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.expect index a5c7a7d045e..3637b047d63 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.expect @@ -1,6 +1,6 @@ -ResolutionErrors3.dfy(53,13): Error: type parameter 'PT' (inferred to be '?') in the function call to 'P' could not be determined +ResolutionErrors3.dfy(53,14): Error: type parameter 'PT' (inferred to be '?') in the function call to 'P' could not be determined ResolutionErrors3.dfy(54,14): Error: the type of this variable is underspecified -ResolutionErrors3.dfy(54,19): Error: type parameter 'QT' (inferred to be '?') in the function call to 'Q' could not be determined +ResolutionErrors3.dfy(54,20): Error: type parameter 'QT' (inferred to be '?') in the function call to 'Q' could not be determined ResolutionErrors3.dfy(54,20): Error: the type of this expression is underspecified ResolutionErrors3.dfy(55,4): Error: type parameter 'MT' (inferred to be '?') to the method 'M' could not be determined ResolutionErrors3.dfy(56,8): Error: the type of this variable is underspecified diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.refresh.expect index 6aff850b5dc..353a3e7b0f5 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors3.dfy.refresh.expect @@ -1,6 +1,6 @@ -ResolutionErrors3.dfy(53,13): Error: type parameter 'PT' (inferred to be '?40') in the function call to 'P' could not be determined +ResolutionErrors3.dfy(53,14): Error: type parameter 'PT' (inferred to be '?40') in the function call to 'P' could not be determined ResolutionErrors3.dfy(54,14): Error: the type of this variable is underspecified -ResolutionErrors3.dfy(54,19): Error: type parameter 'QT' (inferred to be '?42') in the function call to 'Q' could not be determined +ResolutionErrors3.dfy(54,20): Error: type parameter 'QT' (inferred to be '?42') in the function call to 'Q' could not be determined ResolutionErrors3.dfy(54,20): Error: the type of this expression is underspecified ResolutionErrors3.dfy(55,4): Error: type parameter 'MT' (inferred to be '?44') to the method 'M' could not be determined ResolutionErrors3.dfy(56,8): Error: the type of this variable is underspecified diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.expect index 1a41d63271f..9cdb2e42c5f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.expect @@ -2,9 +2,9 @@ ResolutionErrors5.dfy(50,33): Error: type of yield-parameter must support auto-i ResolutionErrors5.dfy(58,13): Error: a ghost function is allowed only in specification contexts ResolutionErrors5.dfy(72,8): Error: an ORDINAL type is not allowed to be used as a type argument ResolutionErrors5.dfy(73,8): Error: an ORDINAL type is not allowed to be used as a type argument -ResolutionErrors5.dfy(75,19): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL -ResolutionErrors5.dfy(76,9): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL -ResolutionErrors5.dfy(77,9): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(75,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL +ResolutionErrors5.dfy(76,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(77,27): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(78,18): Error: type parameter 'G' (passed in as 'ORDINAL') to the function 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(79,4): Error: type parameter 'G' (passed in as 'ORDINAL') to the method 'ParameterizedMethod' is not allowed to use ORDINAL ResolutionErrors5.dfy(83,8): Error: an ORDINAL type is not allowed to be used as a type argument @@ -68,9 +68,9 @@ ResolutionErrors5.dfy(425,32): Error: an abstemious function is allowed to invok ResolutionErrors5.dfy(430,12): Error: an abstemious function is allowed to codatatype-match only on its parameters ResolutionErrors5.dfy(437,9): Error: an abstemious function is not allowed to check codatatype equality ResolutionErrors5.dfy(439,14): Error: an abstemious function is not allowed to check codatatype equality -ResolutionErrors5.dfy(464,19): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL -ResolutionErrors5.dfy(465,13): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL -ResolutionErrors5.dfy(466,13): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(464,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL +ResolutionErrors5.dfy(465,24): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(466,31): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(467,18): Error: type parameter 'G' (passed in as 'ORDINAL') to the function 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(468,4): Error: type parameter 'G' (passed in as 'ORDINAL') to the lemma 'ParameterizedLemma' is not allowed to use ORDINAL ResolutionErrors5.dfy(469,18): Error: type of bound variable 'r' ('ORDINAL') is not allowed to use type ORDINAL diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.refresh.expect index da6eaa0c35c..9953c13159e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors5.dfy.refresh.expect @@ -2,9 +2,9 @@ ResolutionErrors5.dfy(50,33): Error: type of yield-parameter must support auto-i ResolutionErrors5.dfy(58,13): Error: a ghost function is allowed only in specification contexts ResolutionErrors5.dfy(72,8): Error: an ORDINAL type is not allowed to be used as a type argument ResolutionErrors5.dfy(73,8): Error: an ORDINAL type is not allowed to be used as a type argument -ResolutionErrors5.dfy(75,19): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL -ResolutionErrors5.dfy(76,9): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL -ResolutionErrors5.dfy(77,9): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(75,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL +ResolutionErrors5.dfy(76,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(77,27): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(78,18): Error: type parameter 'G' (passed in as 'ORDINAL') to the function 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(79,4): Error: type parameter 'G' (passed in as 'ORDINAL') to the method 'ParameterizedMethod' is not allowed to use ORDINAL ResolutionErrors5.dfy(83,8): Error: an ORDINAL type is not allowed to be used as a type argument @@ -69,9 +69,9 @@ ResolutionErrors5.dfy(425,32): Error: an abstemious function is allowed to invok ResolutionErrors5.dfy(430,12): Error: an abstemious function is allowed to codatatype-match only on its parameters ResolutionErrors5.dfy(437,9): Error: an abstemious function is not allowed to check codatatype equality ResolutionErrors5.dfy(439,14): Error: an abstemious function is not allowed to check codatatype equality -ResolutionErrors5.dfy(464,19): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL -ResolutionErrors5.dfy(465,13): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL -ResolutionErrors5.dfy(466,13): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(464,20): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F' is not allowed to use ORDINAL +ResolutionErrors5.dfy(465,24): Error: type parameter 'G' (passed in as 'ORDINAL') to function call 'F'' is not allowed to use ORDINAL +ResolutionErrors5.dfy(466,31): Error: type parameter 'G' (passed in as '(char, ORDINAL)') to function call 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(467,18): Error: type parameter 'G' (passed in as 'ORDINAL') to the function 'F'' is not allowed to use ORDINAL ResolutionErrors5.dfy(472,17): Error: type of bound variable 'r' ('ORDINAL') is not allowed to use type ORDINAL ResolutionErrors5.dfy(473,18): Error: type of bound variable 'r' ('ORDINAL') is not allowed to use type ORDINAL diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.expect index 99b6f7f5ab0..5bfa32af752 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.expect @@ -4,14 +4,14 @@ ResolutionErrors6.dfy(71,11): Error: name of type (Cache) is used as a variable ResolutionErrors6.dfy(71,17): Error: incorrect type for selection into ? (got X) ResolutionErrors6.dfy(79,13): Warning: the quantifier has the form 'exists x :: A ==> B', which most often is a typo for 'exists x :: A && B'; if you think otherwise, rewrite as 'exists x :: (A ==> B)' or 'exists x :: !A || B' to suppress this warning ResolutionErrors6.dfy(89,13): Warning: the quantifier has the form 'exists x :: A ==> B', which most often is a typo for 'exists x :: A && B'; if you think otherwise, rewrite as 'exists x :: (A ==> B)' or 'exists x :: !A || B' to suppress this warning -ResolutionErrors6.dfy(123,13): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(124,13): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(123,14): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(124,14): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors6.dfy(126,11): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. ResolutionErrors6.dfy(147,4): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. -ResolutionErrors6.dfy(157,15): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(158,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(164,15): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(165,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(157,16): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(158,23): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(164,16): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(165,23): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors6.dfy(182,23): Error: type of left argument to * (int) must agree with the result type (bool) ResolutionErrors6.dfy(182,23): Error: type of * must be of a numeric type, bitvector type, or a set-like type (instead got bool) ResolutionErrors6.dfy(181,13): Error: not resolving module 'V' because there were errors in resolving its nested module 'W' @@ -45,7 +45,7 @@ ResolutionErrors6.dfy(343,18): Error: map update requires the value to have the ResolutionErrors6.dfy(368,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 363 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) ResolutionErrors6.dfy(371,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 363 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) ResolutionErrors6.dfy(372,5): Error: type parameter (G) passed to method P must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 363 as 'Z(00)', which says it can only be instantiated with a nonempty type) -ResolutionErrors6.dfy(381,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 376 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors6.dfy(384,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors6.dfy(385,9): Error: type parameter (G) passed to function FP must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors6.dfy(381,11): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 376 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors6.dfy(384,11): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors6.dfy(385,11): Error: type parameter (G) passed to function FP must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(00)', which says it can only be instantiated with a nonempty type) 46 resolution/type errors detected in ResolutionErrors6.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.refresh.expect index 09a91ef2e9a..6d46a15c7e2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors6.dfy.refresh.expect @@ -4,14 +4,14 @@ ResolutionErrors6.dfy(44,50): Error: the argument of a fresh expression must den ResolutionErrors6.dfy(71,11): Error: name of type (Cache) is used as a variable ResolutionErrors6.dfy(79,13): Warning: the quantifier has the form 'exists x :: A ==> B', which most often is a typo for 'exists x :: A && B'; if you think otherwise, rewrite as 'exists x :: (A ==> B)' or 'exists x :: !A || B' to suppress this warning ResolutionErrors6.dfy(89,13): Warning: the quantifier has the form 'exists x :: A ==> B', which most often is a typo for 'exists x :: A && B'; if you think otherwise, rewrite as 'exists x :: (A ==> B)' or 'exists x :: !A || B' to suppress this warning -ResolutionErrors6.dfy(123,13): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(124,13): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(123,14): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(124,14): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors6.dfy(126,11): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. ResolutionErrors6.dfy(147,4): Error: ghost variables such as g are allowed only in specification contexts. g was inferred to be ghost based on its declaration or initialization. -ResolutionErrors6.dfy(157,15): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(158,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(164,15): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors6.dfy(165,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(157,16): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(158,23): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(164,16): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors6.dfy(165,23): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) ResolutionErrors6.dfy(182,23): Error: type of right argument to * (bool) must agree with the result type (int) ResolutionErrors6.dfy(181,13): Error: not resolving module 'V' because there were errors in resolving its nested module 'W' ResolutionErrors6.dfy(191,21): Error: type of right argument to * (bool) must agree with the result type (int) @@ -43,7 +43,7 @@ ResolutionErrors6.dfy(343,18): Error: map update requires the value to have the ResolutionErrors6.dfy(368,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 363 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) ResolutionErrors6.dfy(371,5): Error: type parameter (F) passed to method Q must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 363 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) ResolutionErrors6.dfy(372,5): Error: type parameter (G) passed to method P must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 363 as 'Z(00)', which says it can only be instantiated with a nonempty type) -ResolutionErrors6.dfy(381,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 376 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors6.dfy(384,9): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors6.dfy(385,9): Error: type parameter (G) passed to function FP must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors6.dfy(381,11): Error: type parameter (F) passed to function FQ must support auto-initialization (got Y) (perhaps try declaring type parameter 'Y' on line 376 as 'Y(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors6.dfy(384,11): Error: type parameter (F) passed to function FQ must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors6.dfy(385,11): Error: type parameter (G) passed to function FP must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 376 as 'Z(00)', which says it can only be instantiated with a nonempty type) 44 resolution/type errors detected in ResolutionErrors6.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.expect index 2f9f7d8468d..7624fc3e4c3 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.expect @@ -1,9 +1,9 @@ -ResolutionErrors7.dfy(16,9): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors7.dfy(17,9): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) -ResolutionErrors7.dfy(18,9): Error: a call to a least predicate is allowed only in specification contexts -ResolutionErrors7.dfy(19,9): Error: a call to a greatest predicate is allowed only in specification contexts -ResolutionErrors7.dfy(20,9): Error: a call to a twostate function is allowed only in specification contexts -ResolutionErrors7.dfy(21,9): Error: a call to a twostate predicate is allowed only in specification contexts +ResolutionErrors7.dfy(16,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors7.dfy(17,23): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +ResolutionErrors7.dfy(18,23): Error: a call to a least predicate is allowed only in specification contexts +ResolutionErrors7.dfy(19,26): Error: a call to a greatest predicate is allowed only in specification contexts +ResolutionErrors7.dfy(20,20): Error: a call to a twostate function is allowed only in specification contexts +ResolutionErrors7.dfy(21,21): Error: a call to a twostate predicate is allowed only in specification contexts ResolutionErrors7.dfy(38,9): Error: function 'F0' expects 0 type arguments (got 1) ResolutionErrors7.dfy(40,9): Error: function 'F2' expects 2 type arguments (got 1) ResolutionErrors7.dfy(41,9): Error: function 'F0' expects 0 type arguments (got 2) @@ -16,23 +16,23 @@ ResolutionErrors7.dfy(67,10): Error: ghost variables such as c are allowed only ResolutionErrors7.dfy(71,14): Error: ghost variables such as t are allowed only in specification contexts. t was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(76,10): Error: ghost variables such as a' are allowed only in specification contexts. a' was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(77,10): Error: ghost variables such as c' are allowed only in specification contexts. c' was inferred to be ghost based on its declaration or initialization. -ResolutionErrors7.dfy(101,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(106,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(00)', which says it can only be instantiated with a nonempty type) -ResolutionErrors7.dfy(108,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(109,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(113,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors7.dfy(117,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(120,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(125,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(127,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(!new)', which says it can only be instantiated with a type that contains no references) -ResolutionErrors7.dfy(134,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(140,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(155,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(101,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(106,26): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors7.dfy(108,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(109,33): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(113,26): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors7.dfy(117,40): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(120,31): Error: type parameter (T) passed to function MustSupportEquality must support equality (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors7.dfy(125,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(127,24): Error: type parameter (T) passed to function NoReferences must contain no references (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(!new)', which says it can only be instantiated with a type that contains no references) +ResolutionErrors7.dfy(134,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(140,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(155,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) ResolutionErrors7.dfy(165,12): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 163 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(167,7): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 163 as 'T(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(170,12): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) -ResolutionErrors7.dfy(172,7): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) -ResolutionErrors7.dfy(175,19): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(170,30): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(172,25): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(175,37): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) ResolutionErrors7.dfy(183,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(188,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(190,23): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) @@ -42,33 +42,33 @@ ResolutionErrors7.dfy(193,15): Error: type parameter 1 (U) passed to type QuadEq ResolutionErrors7.dfy(193,15): Error: type parameter 1 (U) passed to type QuadEq must support equality (got seq) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(202,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 199 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(211,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 199 as 'T(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(229,11): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(230,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(231,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(232,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(233,11): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(237,47): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(238,12): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(242,11): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(243,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(244,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(245,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(246,11): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(250,50): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(251,12): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(254,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(258,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(263,53): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(266,63): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(229,40): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(230,40): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(231,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(232,42): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(233,31): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(237,76): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(238,41): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(242,40): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(243,40): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(244,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(245,42): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(246,31): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(250,79): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(251,41): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(254,43): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(258,43): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(263,82): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(266,92): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) ResolutionErrors7.dfy(283,6): Error: ghost variables such as m are allowed only in specification contexts. m was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(287,8): Error: non-ghost variable cannot be assigned a value that depends on a ghost ResolutionErrors7.dfy(291,18): Error: ghost variables such as m are allowed only in specification contexts. m was inferred to be ghost based on its declaration or initialization. -ResolutionErrors7.dfy(317,6): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(323,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(324,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(331,6): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(338,6): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(344,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(350,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(365,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(317,35): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(323,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(324,30): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(331,37): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(338,26): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(344,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(350,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(365,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) 73 resolution/type errors detected in ResolutionErrors7.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.refresh.expect index 2f9f7d8468d..7624fc3e4c3 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/ResolutionErrors7.dfy.refresh.expect @@ -1,9 +1,9 @@ -ResolutionErrors7.dfy(16,9): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) -ResolutionErrors7.dfy(17,9): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) -ResolutionErrors7.dfy(18,9): Error: a call to a least predicate is allowed only in specification contexts -ResolutionErrors7.dfy(19,9): Error: a call to a greatest predicate is allowed only in specification contexts -ResolutionErrors7.dfy(20,9): Error: a call to a twostate function is allowed only in specification contexts -ResolutionErrors7.dfy(21,9): Error: a call to a twostate predicate is allowed only in specification contexts +ResolutionErrors7.dfy(16,22): Error: a call to a ghost function is allowed only in specification contexts (consider declaring the function without the 'ghost' keyword) +ResolutionErrors7.dfy(17,23): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +ResolutionErrors7.dfy(18,23): Error: a call to a least predicate is allowed only in specification contexts +ResolutionErrors7.dfy(19,26): Error: a call to a greatest predicate is allowed only in specification contexts +ResolutionErrors7.dfy(20,20): Error: a call to a twostate function is allowed only in specification contexts +ResolutionErrors7.dfy(21,21): Error: a call to a twostate predicate is allowed only in specification contexts ResolutionErrors7.dfy(38,9): Error: function 'F0' expects 0 type arguments (got 1) ResolutionErrors7.dfy(40,9): Error: function 'F2' expects 2 type arguments (got 1) ResolutionErrors7.dfy(41,9): Error: function 'F0' expects 0 type arguments (got 2) @@ -16,23 +16,23 @@ ResolutionErrors7.dfy(67,10): Error: ghost variables such as c are allowed only ResolutionErrors7.dfy(71,14): Error: ghost variables such as t are allowed only in specification contexts. t was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(76,10): Error: ghost variables such as a' are allowed only in specification contexts. a' was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(77,10): Error: ghost variables such as c' are allowed only in specification contexts. c' was inferred to be ghost based on its declaration or initialization. -ResolutionErrors7.dfy(101,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(106,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(00)', which says it can only be instantiated with a nonempty type) -ResolutionErrors7.dfy(108,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(109,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(113,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) -ResolutionErrors7.dfy(117,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(120,9): Error: type parameter (T) passed to function MustSupportEquality must support equality (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(125,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(127,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(!new)', which says it can only be instantiated with a type that contains no references) -ResolutionErrors7.dfy(134,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(140,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(155,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(101,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(106,26): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(00)', which says it can only be instantiated with a nonempty type) +ResolutionErrors7.dfy(108,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(109,33): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(113,26): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(0)', which says it can only be instantiated with a type that supports auto-initialization) +ResolutionErrors7.dfy(117,40): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(120,31): Error: type parameter (T) passed to function MustSupportEquality must support equality (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(==)', which says it can only be instantiated with a type that supports equality) +ResolutionErrors7.dfy(125,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(127,24): Error: type parameter (T) passed to function NoReferences must contain no references (got Z) (perhaps try declaring type parameter 'Z' on line 97 as 'Z(!new)', which says it can only be instantiated with a type that contains no references) +ResolutionErrors7.dfy(134,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(140,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(155,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) ResolutionErrors7.dfy(165,12): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 163 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(167,7): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 163 as 'T(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(170,12): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) -ResolutionErrors7.dfy(172,7): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) -ResolutionErrors7.dfy(175,19): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(170,30): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(172,25): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) +ResolutionErrors7.dfy(175,37): Error: type parameter (T) passed to function GetInt must support equality (got NoEquality) ResolutionErrors7.dfy(183,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(188,13): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(190,23): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) @@ -42,33 +42,33 @@ ResolutionErrors7.dfy(193,15): Error: type parameter 1 (U) passed to type QuadEq ResolutionErrors7.dfy(193,15): Error: type parameter 1 (U) passed to type QuadEq must support equality (got seq) (perhaps try declaring type parameter 'T' on line 182 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(202,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 199 as 'T(==)', which says it can only be instantiated with a type that supports equality) ResolutionErrors7.dfy(211,15): Error: == can only be applied to expressions of types that support equality (got T) (perhaps try declaring type parameter 'T' on line 199 as 'T(==)', which says it can only be instantiated with a type that supports equality) -ResolutionErrors7.dfy(229,11): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(230,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(231,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(232,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(233,11): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(237,47): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(238,12): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(242,11): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(243,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(244,11): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(245,11): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(246,11): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(250,50): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(251,12): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(254,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(258,12): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(263,53): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(266,63): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(229,40): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(230,40): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(231,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(232,42): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(233,31): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(237,76): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(238,41): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(242,40): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(243,40): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(244,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(245,42): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(246,31): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(250,79): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(251,41): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(254,43): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(258,43): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(263,82): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(266,92): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) ResolutionErrors7.dfy(283,6): Error: ghost variables such as m are allowed only in specification contexts. m was inferred to be ghost based on its declaration or initialization. ResolutionErrors7.dfy(287,8): Error: non-ghost variable cannot be assigned a value that depends on a ghost ResolutionErrors7.dfy(291,18): Error: ghost variables such as m are allowed only in specification contexts. m was inferred to be ghost based on its declaration or initialization. -ResolutionErrors7.dfy(317,6): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(323,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(324,6): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) -ResolutionErrors7.dfy(331,6): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) -ResolutionErrors7.dfy(338,6): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) -ResolutionErrors7.dfy(344,9): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) -ResolutionErrors7.dfy(350,9): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) -ResolutionErrors7.dfy(365,9): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(317,35): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(323,35): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(324,30): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got Nonempty) +ResolutionErrors7.dfy(331,37): Error: type parameter (T) passed to function MustSupportEquality must support equality (got NoEquality) +ResolutionErrors7.dfy(338,26): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) +ResolutionErrors7.dfy(344,38): Error: type parameter (T) passed to function MustBeNonempty must be nonempty (got PossiblyEmpty) +ResolutionErrors7.dfy(350,38): Error: type parameter (T) passed to function MustBeAutoInit must support auto-initialization (got PossiblyEmpty) +ResolutionErrors7.dfy(365,29): Error: type parameter (T) passed to function NoReferences must contain no references (got Class?) 73 resolution/type errors detected in ResolutionErrors7.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SmallTests.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SmallTests.dfy.expect index c48ba2ad2be..352e0f7ec43 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SmallTests.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SmallTests.dfy.expect @@ -37,10 +37,10 @@ SmallTests.dfy(338,2): Error: a postcondition could not be proved on this return SmallTests.dfy(332,10): Related location: this is the postcondition that could not be proved SmallTests.dfy(379,2): Error: assertion might not hold SmallTests.dfy(386,2): Error: assertion might not hold -SmallTests.dfy(396,3): Error: cannot prove termination; try supplying a decreases clause +SmallTests.dfy(396,8): Error: cannot prove termination; try supplying a decreases clause SmallTests.dfy(408,4): Error: assertion might not hold SmallTests.dfy(418,4): Error: assertion might not hold -SmallTests.dfy(428,5): Error: cannot prove termination; try supplying a decreases clause +SmallTests.dfy(428,10): Error: cannot prove termination; try supplying a decreases clause SmallTests.dfy(445,2): Error: a postcondition could not be proved on this return path SmallTests.dfy(443,40): Related location: this is the postcondition that could not be proved SmallTests.dfy(604,2): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SplitExpr.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SplitExpr.dfy.expect index b849528f64d..f8171dcbad5 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SplitExpr.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SplitExpr.dfy.expect @@ -1,4 +1,4 @@ -SplitExpr.dfy(96,14): Error: loop invariant violation +SplitExpr.dfy(96,26): Error: loop invariant violation SplitExpr.dfy(90,49): Related location: this proposition could not be proved Dafny program verifier finished with 8 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/StatementExpressions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/StatementExpressions.dfy.expect index 2f8d955c6b6..fc5d3a4fa78 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/StatementExpressions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/StatementExpressions.dfy.expect @@ -3,7 +3,7 @@ StatementExpressions.dfy(59,4): Error: assertion might not hold StatementExpressions.dfy(77,5): Error: possible division by zero StatementExpressions.dfy(88,4): Error: value does not satisfy the subset constraints of 'nat' StatementExpressions.dfy(98,17): Error: cannot prove termination; try supplying a decreases clause -StatementExpressions.dfy(178,2): Error: function precondition could not be proved +StatementExpressions.dfy(178,22): Error: function precondition could not be proved StatementExpressions.dfy(164,13): Related location: this proposition could not be proved Dafny program verifier finished with 20 verified, 6 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SubsetTypes.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SubsetTypes.dfy.expect index fa895e61eab..61e24262814 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SubsetTypes.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/SubsetTypes.dfy.expect @@ -7,7 +7,7 @@ SubsetTypes.dfy(16,6): Error: cannot establish the existence of LHS values that SubsetTypes.dfy(19,11): Error: value does not satisfy the subset constraints of 'nat' SubsetTypes.dfy(21,15): Error: value does not satisfy the subset constraints of 'nat' SubsetTypes.dfy(23,8): Error: value does not satisfy the subset constraints of 'nat' -SubsetTypes.dfy(30,4): Error: value does not satisfy the subset constraints of 'nat' +SubsetTypes.dfy(31,6): Error: value does not satisfy the subset constraints of 'nat' SubsetTypes.dfy(31,7): Error: value does not satisfy the subset constraints of 'nat' SubsetTypes.dfy(42,24): Error: value does not satisfy the subset constraints of 'nat' SubsetTypes.dfy(44,15): Error: value does not satisfy the subset constraints of 'nat' @@ -23,7 +23,7 @@ SubsetTypes.dfy(72,6): Error: cannot establish the existence of LHS values that SubsetTypes.dfy(75,11): Error: value of expression (of type 'set') is not known to be an instance of type 'set' SubsetTypes.dfy(77,15): Error: value of expression (of type 'set') is not known to be an instance of type 'set' SubsetTypes.dfy(79,8): Error: value of expression (of type 'set') is not known to be an instance of type 'set' -SubsetTypes.dfy(86,4): Error: value of expression (of type 'set') is not known to be an instance of type 'set' +SubsetTypes.dfy(87,6): Error: value of expression (of type 'set') is not known to be an instance of type 'set' SubsetTypes.dfy(87,7): Error: value of expression (of type 'set') is not known to be an instance of type 'set' SubsetTypes.dfy(98,24): Error: value of expression (of type 'set') is not known to be an instance of type 'set' SubsetTypes.dfy(100,15): Error: value of expression (of type 'set') is not known to be an instance of type 'set' @@ -91,5 +91,5 @@ SubsetTypes.dfy(459,6): Error: assertion might not hold SubsetTypes.dfy(464,4): Error: assertion might not hold Dafny program verifier finished with 13 verified, 91 errors -Total resources used is 739000 -Max resources used by VC is 75000 +Total resources used is 738600 +Max resources used by VC is 76700 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy index 631e74547d8..4f43f10f3c9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy @@ -168,7 +168,7 @@ function U(x: int, ghost y: int): nat function {:tailrecursion} Q(n: nat): nat { if n % 5 == 0 then - var s := Q; // error: this use of Q is not a tail call + var s := Q; // error (x2): this use of Q is not a tail call, and cannot use Q as naked function here 10 else if n % 5 == 1 then Q(Q(n - 1)) // error: inner Q is not a tail call diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy.expect index 0571cf4009c..b456484c8de 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TailCalls.dfy.expect @@ -2,30 +2,31 @@ TailCalls.dfy(21,16): Error: this recursive call is not recognized as being tail TailCalls.dfy(38,24): Error: sorry, tail-call optimizations are not supported for mutually recursive methods TailCalls.dfy(43,24): Error: sorry, tail-call optimizations are not supported for mutually recursive methods TailCalls.dfy(171,13): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(174,6): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(178,13): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(181,6): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(174,7): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(178,14): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(181,7): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call TailCalls.dfy(188,32): Error: tail recursion can be specified only for functions that will be compiled, not for ghost functions TailCalls.dfy(195,30): Error: tail recursion can be specified only for methods that will be compiled, not for ghost methods TailCalls.dfy(229,7): Error: if-then-else branches have different accumulator needs for tail recursion TailCalls.dfy(261,2): Error: if-then-else branches have different accumulator needs for tail recursion -TailCalls.dfy(288,14): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(310,19): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(316,24): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call -TailCalls.dfy(323,33): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(288,17): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(310,22): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(316,30): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call +TailCalls.dfy(323,41): Error: to be tail recursive, every use of this function must be part of a tail call or a simple accumulating tail call TailCalls.dfy(338,22): Error: this recursive call is not recognized as being tail recursive, because it is followed by non-ghost code TailCalls.dfy(369,21): Error: this recursive call is not recognized as being tail recursive, because it is followed by non-ghost code -TailCalls.dfy(380,31): Error: a recursive call in this context is not recognized as a tail call -TailCalls.dfy(416,31): Error: a recursive call in this context is not recognized as a tail call -TailCalls.dfy(416,48): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(380,35): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(416,35): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(416,52): Error: a recursive call in this context is not recognized as a tail call TailCalls.dfy(425,10): Error: the recursive call to 'FBM2' is not tail recursive because the actual out-parameter is not the formal out-parameter -TailCalls.dfy(425,13): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(425,17): Error: a recursive call in this context is not recognized as a tail call TailCalls.dfy(437,10): Error: the recursive call to 'FBM3' is not tail recursive because the actual out-parameter is not the formal out-parameter 'r' -TailCalls.dfy(437,13): Error: a recursive call in this context is not recognized as a tail call -TailCalls.dfy(449,14): Error: a recursive call in this context is not recognized as a tail call -TailCalls.dfy(451,19): Error: a recursive call in this context is not recognized as a tail call -TailCalls.dfy(462,11): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(437,17): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(449,18): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(451,23): Error: a recursive call in this context is not recognized as a tail call +TailCalls.dfy(462,15): Error: a recursive call in this context is not recognized as a tail call TailCalls.dfy(110,14): Error: the recursive call to '_ctor' is not tail recursive, because the assignment of the LHS happens after the call TailCalls.dfy(126,19): Error: the recursive call to 'Compute' is not tail recursive because the actual type argument is not the formal type parameter 'G' TailCalls.dfy(139,17): Error: the recursive call to 'Run' is not tail recursive because the actual type argument 1 is not the formal type parameter 'G' -30 resolution/type errors detected in TailCalls.dfy +TailCalls.dfy(171,13): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +31 resolution/type errors detected in TailCalls.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.expect index f04a5ed0bcf..805b029c460 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.expect @@ -1,9 +1,9 @@ Termination.dfy(108,2): Error: cannot prove termination; try supplying a decreases clause for the loop Termination.dfy(125,2): Error: decreases expression might not decrease Termination.dfy(126,16): Error: decreases expression must be bounded below by 0 at end of loop iteration -Termination.dfy(255,34): Error: cannot prove termination; try supplying a decreases clause +Termination.dfy(255,41): Error: cannot prove termination; try supplying a decreases clause Termination.dfy(296,2): Error: decreases expression might not decrease -Termination.dfy(361,46): Error: decreases clause might not decrease +Termination.dfy(361,47): Error: decreases clause might not decrease Termination.dfy(534,2): Error: decreases expression might not decrease Termination.dfy(542,2): Error: decreases expression might not decrease Termination.dfy(549,2): Error: decreases expression might not decrease diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.refresh.expect index 68e96bebe1f..6b893c639cf 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Termination.dfy.refresh.expect @@ -1,9 +1,9 @@ Termination.dfy(108,2): Error: cannot prove termination; try supplying a decreases clause for the loop Termination.dfy(125,2): Error: decreases expression might not decrease Termination.dfy(126,16): Error: decreases expression must be bounded below by 0 at end of loop iteration -Termination.dfy(255,34): Error: cannot prove termination; try supplying a decreases clause +Termination.dfy(255,41): Error: cannot prove termination; try supplying a decreases clause Termination.dfy(296,2): Error: decreases expression might not decrease -Termination.dfy(361,46): Error: decreases clause might not decrease +Termination.dfy(361,47): Error: decreases clause might not decrease Termination.dfy(534,2): Error: decreases expression might not decrease Termination.dfy(542,2): Error: decreases expression might not decrease Termination.dfy(549,2): Error: decreases expression might not decrease diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TriggerInPredicate.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TriggerInPredicate.dfy.expect index e47d3f949d8..83ed96ed7b6 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TriggerInPredicate.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TriggerInPredicate.dfy.expect @@ -1,4 +1,4 @@ -TriggerInPredicate.dfy(9,20): Info: Some instances of this call are not inlined. -TriggerInPredicate.dfy(9,20): Info: Some instances of this call are not inlined. +TriggerInPredicate.dfy(9,21): Info: Some instances of this call are not inlined. +TriggerInPredicate.dfy(9,21): Info: Some instances of this call are not inlined. Dafny program verifier finished with 0 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Functions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Functions.dfy.expect index 3dae7e8aabe..a613f45eff0 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Functions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Functions.dfy.expect @@ -1,9 +1,9 @@ Twostate-Functions.dfy(11,27): Error: receiver could not be proved to be allocated in the state in which its fields are accessed Twostate-Functions.dfy(18,12): Error: receiver could not be proved to be allocated in the state in which its fields are accessed Twostate-Functions.dfy(23,8): Error: insufficient reads clause to read field; Consider adding 'reads u' or 'reads u`aa' in the enclosing twostate function specification for resolution -Twostate-Functions.dfy(66,17): Error: assertion might not hold +Twostate-Functions.dfy(66,29): Error: assertion might not hold Twostate-Functions.dfy(54,14): Related location: this proposition could not be proved -Twostate-Functions.dfy(68,15): Error: assertion might not hold +Twostate-Functions.dfy(68,27): Error: assertion might not hold Twostate-Functions.dfy(54,14): Related location: this proposition could not be proved Twostate-Functions.dfy(92,24): Error: argument for parameter 'u' could not be proved to be allocated in the two-state function's previous state -- if you add 'new' before the parameter declaration, like 'new u: U', arguments can refer to expressions possibly unallocated in the previous state Twostate-Functions.dfy(97,40): Error: argument at index 1 for parameter 'x' could not be proved to be allocated in the two-state function's previous state -- if you add 'new' before the parameter declaration, like 'new x: U', arguments can refer to expressions possibly unallocated in the previous state diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.expect index 2de5f62f282..dacaa7774d7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.expect @@ -725,7 +725,7 @@ Twostate-Resolution.dfy(167,7): Error: two-state function ('P') can only be call Twostate-Resolution.dfy(218,6): Error: two-state lemmas can only be used in two-state contexts Twostate-Resolution.dfy(183,21): Error: 'this' is not allowed in a 'static' context Twostate-Resolution.dfy(184,21): Error: 'this' is not allowed in a 'static' context -Twostate-Resolution.dfy(229,9): Error: a call to a twostate predicate is allowed only in specification contexts +Twostate-Resolution.dfy(229,10): Error: a call to a twostate predicate is allowed only in specification contexts Twostate-Resolution.dfy(230,30): Error: a twostate predicate is 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 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.refresh.expect index 2de5f62f282..dacaa7774d7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/Twostate-Resolution.dfy.refresh.expect @@ -725,7 +725,7 @@ Twostate-Resolution.dfy(167,7): Error: two-state function ('P') can only be call Twostate-Resolution.dfy(218,6): Error: two-state lemmas can only be used in two-state contexts Twostate-Resolution.dfy(183,21): Error: 'this' is not allowed in a 'static' context Twostate-Resolution.dfy(184,21): Error: 'this' is not allowed in a 'static' context -Twostate-Resolution.dfy(229,9): Error: a call to a twostate predicate is allowed only in specification contexts +Twostate-Resolution.dfy(229,10): Error: a call to a twostate predicate is allowed only in specification contexts Twostate-Resolution.dfy(230,30): Error: a twostate predicate is 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 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeInstantiations.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeInstantiations.dfy.expect index 3d5af051e0c..81fd13519ad 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeInstantiations.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeInstantiations.dfy.expect @@ -25,6 +25,6 @@ TypeInstantiations.dfy(109,8): Error: the type of this variable is underspecifie TypeInstantiations.dfy(127,27): Error: RHS (of type int) not assignable to LHS (of type C.Classic) TypeInstantiations.dfy(137,8): Error: the type of this variable is underspecified TypeInstantiations.dfy(137,15): Error: type of type parameter could not be determined; please specify the type explicitly -TypeInstantiations.dfy(137,23): Error: type parameter 'A' (inferred to be '?') in the function call to 'F' could not be determined +TypeInstantiations.dfy(137,24): Error: type parameter 'A' (inferred to be '?') in the function call to 'F' could not be determined TypeInstantiations.dfy(137,24): Error: the type of this expression is underspecified 29 resolution/type errors detected in TypeInstantiations.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeParameters.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeParameters.dfy.expect index 1041be01327..2c19e375193 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeParameters.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeParameters.dfy.expect @@ -1,19 +1,19 @@ TypeParameters.dfy(44,4): Error: assertion might not hold TypeParameters.dfy(66,4): Error: assertion might not hold -TypeParameters.dfy(153,11): Error: assertion might not hold +TypeParameters.dfy(153,15): Error: assertion might not hold TypeParameters.dfy(153,27): Related location: this proposition could not be proved -TypeParameters.dfy(155,11): Error: assertion might not hold +TypeParameters.dfy(155,20): Error: assertion might not hold TypeParameters.dfy(155,32): Related location: this proposition could not be proved -TypeParameters.dfy(157,11): Error: assertion might not hold +TypeParameters.dfy(157,18): Error: assertion might not hold TypeParameters.dfy(137,2): Related location: this proposition could not be proved -TypeParameters.dfy(159,11): Error: assertion might not hold -TypeParameters.dfy(144,4): Related location: this proposition could not be proved +TypeParameters.dfy(159,17): Error: assertion might not hold +TypeParameters.dfy(144,13): Related location: this proposition could not be proved TypeParameters.dfy(144,14): Related location: this proposition could not be proved -TypeParameters.dfy(161,11): Error: assertion might not hold +TypeParameters.dfy(161,17): Error: assertion might not hold TypeParameters.dfy(146,7): Related location: this proposition could not be proved -TypeParameters.dfy(175,14): Error: this invariant could not be proved to be maintained by the loop +TypeParameters.dfy(175,23): Error: this invariant could not be proved to be maintained by the loop Related message: loop invariant violation TypeParameters.dfy(175,37): Related location: this proposition could not be proved TypeParameters.dfy(376,20): Error: assertion might not hold -Dafny program verifier finished with 31 verified, 9 errors +Dafny program verifier finished with 30 verified, 9 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeTests.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeTests.dfy.expect index ecc486403b5..169f5d7882f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeTests.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/TypeTests.dfy.expect @@ -15,19 +15,19 @@ TypeTests.dfy(92,3): Error: cannot assign to a range of array elements (try the TypeTests.dfy(94,3): Error: cannot assign to a range of array elements (try the 'forall' statement) TypeTests.dfy(95,3): Error: cannot assign to a range of array elements (try the 'forall' statement) TypeTests.dfy(96,3): Error: cannot assign to a range of array elements (try the 'forall' statement) -TypeTests.dfy(9,14): Error: incorrect argument type at index 0 for function parameter 'c' (expected C, found D) -TypeTests.dfy(9,14): Error: incorrect argument type at index 1 for function parameter 'd' (expected D, found C) -TypeTests.dfy(10,14): Error: incorrect argument type at index 0 for function parameter 'c' (expected C, found int) -TypeTests.dfy(10,14): Error: incorrect argument type at index 1 for function parameter 'd' (expected D, found int) -TypeTests.dfy(16,16): Error: incorrect argument type for method in-parameter 'x' (expected int, found bool) +TypeTests.dfy(9,17): Error: incorrect argument type at index 0 for function parameter 'c' (expected C, found D) +TypeTests.dfy(9,20): Error: incorrect argument type at index 1 for function parameter 'd' (expected D, found C) +TypeTests.dfy(10,15): Error: incorrect argument type at index 0 for function parameter 'c' (expected C, found int) +TypeTests.dfy(10,18): Error: incorrect argument type at index 1 for function parameter 'd' (expected D, found int) +TypeTests.dfy(16,17): Error: incorrect argument type for method in-parameter 'x' (expected int, found bool) TypeTests.dfy(16,16): Error: incorrect return type at index 1 for method out-parameter 'c' (expected C, got int) TypeTests.dfy(17,12): Error: incorrect return type at index 1 for method out-parameter 'c' (expected C, got int) TypeTests.dfy(169,7): Error: non-ghost variable cannot be assigned a value that depends on a ghost TypeTests.dfy(179,6): Error: cannot assign to non-ghost variable in a ghost context TypeTests.dfy(180,9): Error: cannot assign to non-ghost variable in a ghost context -TypeTests.dfy(198,10): Error: incorrect argument type for datatype constructor parameter (expected int -> Dt, found int -> int) (covariant type parameter 1 would require int <: Dt) -TypeTests.dfy(204,10): Error: incorrect argument type for datatype constructor parameter (expected ? -> Dt, found Dt -> Dt) (contravariance for type parameter at index 0 expects ? <: Dt) -TypeTests.dfy(211,10): Error: incorrect argument type for function parameter 'x' (expected ?, found set) +TypeTests.dfy(198,15): Error: incorrect argument type for datatype constructor parameter (expected int -> Dt, found int -> int) (covariant type parameter 1 would require int <: Dt) +TypeTests.dfy(204,15): Error: incorrect argument type for datatype constructor parameter (expected ? -> Dt, found Dt -> Dt) (contravariance for type parameter at index 0 expects ? <: Dt) +TypeTests.dfy(211,11): Error: incorrect argument type for function parameter 'x' (expected ?, found set) TypeTests.dfy(222,9): Error: assignment to array element is not allowed in this context, because this is a ghost method TypeTests.dfy(229,20): Error: using the type being defined ('A') here would cause a logical inconsistency by defining a type whose cardinality exceeds itself (like the Continuum Transfunctioner, you might say its power would then be exceeded only by its mystery) TypeTests.dfy(233,7): Error: recursive constraint dependency involving a subset type: Cyc -> Cycle -> Cyc diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/UserSpecifiedTypeParameters.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/UserSpecifiedTypeParameters.dfy.expect index 4427715483f..768bcfb0a5f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/UserSpecifiedTypeParameters.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/UserSpecifiedTypeParameters.dfy.expect @@ -1,13 +1,13 @@ UserSpecifiedTypeParameters.dfy(26,10): Error: the type of this variable is underspecified UserSpecifiedTypeParameters.dfy(26,16): Error: type of type parameter could not be determined; please specify the type explicitly UserSpecifiedTypeParameters.dfy(26,16): Error: type of type parameter could not be determined; please specify the type explicitly -UserSpecifiedTypeParameters.dfy(26,24): Error: type parameter 'T' (inferred to be '?') in the function call to 'H' could not be determined -UserSpecifiedTypeParameters.dfy(26,24): Error: type parameter 'U' (inferred to be '?') in the function call to 'H' could not be determined +UserSpecifiedTypeParameters.dfy(26,25): Error: type parameter 'T' (inferred to be '?') in the function call to 'H' could not be determined +UserSpecifiedTypeParameters.dfy(26,25): Error: type parameter 'U' (inferred to be '?') in the function call to 'H' could not be determined UserSpecifiedTypeParameters.dfy(46,16): Error: wrong number of arguments (got 1, but function 'F' expects 2: (x: bool, y: bool)) UserSpecifiedTypeParameters.dfy(46,22): Error: Type or type parameter is not declared in this scope: b (did you forget to qualify a name or declare a module import 'opened'?) (note that names in outer modules are not visible in contained modules) UserSpecifiedTypeParameters.dfy(46,26): Error: Type or type parameter is not declared in this scope: c (did you forget to qualify a name or declare a module import 'opened'?) (note that names in outer modules are not visible in contained modules) UserSpecifiedTypeParameters.dfy(46,18): Error: variable 'a' does not take any type parameters UserSpecifiedTypeParameters.dfy(46,30): Error: non-function expression (of type int) is called with parameters -UserSpecifiedTypeParameters.dfy(77,15): Error: incorrect argument type for lemma in-parameter 'y' (expected A, found int) -UserSpecifiedTypeParameters.dfy(89,14): Error: incorrect argument type for function parameter 'y' (expected A, found int) +UserSpecifiedTypeParameters.dfy(77,16): Error: incorrect argument type for lemma in-parameter 'y' (expected A, found int) +UserSpecifiedTypeParameters.dfy(89,15): Error: incorrect argument type for function parameter 'y' (expected A, found int) 12 resolution/type errors detected in UserSpecifiedTypeParameters.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/one-message-per-failed-precondition.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/one-message-per-failed-precondition.dfy.expect index 5391422767e..fc73d4bd8be 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/one-message-per-failed-precondition.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/one-message-per-failed-precondition.dfy.expect @@ -2,9 +2,9 @@ one-message-per-failed-precondition.dfy(13,3): Error: a precondition for this ca one-message-per-failed-precondition.dfy(8,13): Related location: this is the precondition that could not be proved one-message-per-failed-precondition.dfy(13,3): Error: a precondition for this call could not be proved one-message-per-failed-precondition.dfy(9,13): Related location: this is the precondition that could not be proved -one-message-per-failed-precondition.dfy(20,33): Error: function precondition could not be proved +one-message-per-failed-precondition.dfy(20,35): Error: function precondition could not be proved one-message-per-failed-precondition.dfy(17,13): Related location: this proposition could not be proved -one-message-per-failed-precondition.dfy(20,33): Error: function precondition could not be proved +one-message-per-failed-precondition.dfy(20,35): Error: function precondition could not be proved one-message-per-failed-precondition.dfy(18,13): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 4 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/snapshots/Snapshots2.run.legacy.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/snapshots/Snapshots2.run.legacy.dfy.expect index 6ae0c1a4456..73227d69808 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/snapshots/Snapshots2.run.legacy.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny0/snapshots/Snapshots2.run.legacy.dfy.expect @@ -1,10 +1,10 @@ Processing command (at Snapshots2.v0.dfy(4,3)) assert {:id "id1"} Lit(false); >>> DoNothingToAssert -Processing command (at Snapshots2.v0.dfy(11,11)) assert {:id "id5"} Lit(true); +Processing command (at Snapshots2.v0.dfy(11,12)) assert {:id "id5"} Lit(true); >>> DoNothingToAssert Processing command (at Snapshots2.v0.dfy(11,15)) assert {:id "id4"} _module.__default.P() <==> _module.__default.Q(); >>> DoNothingToAssert -Processing command (at Snapshots2.v0.dfy(14,11)) assert {:id "id8"} Lit(true); +Processing command (at Snapshots2.v0.dfy(14,12)) assert {:id "id8"} Lit(true); >>> DoNothingToAssert Processing command (at Snapshots2.v0.dfy(14,15)) assert {:id "id7"} _module.__default.Q() <==> Lit(_module.__default.R()); >>> DoNothingToAssert @@ -19,11 +19,11 @@ Processing implementation Q (well-formedness) (at Snapshots2.v1.dfy(13,11)): Processing command (at Snapshots2.v1.dfy(4,3)) assert {:id "id14"} Lit(false); >>> DoNothingToAssert Snapshots2.v1.dfy(4,2): Error: assertion might not hold -Processing command (at Snapshots2.v1.dfy(11,11)) assert {:id "id18"} Lit(true); +Processing command (at Snapshots2.v1.dfy(11,12)) assert {:id "id18"} Lit(true); >>> DoNothingToAssert Processing command (at Snapshots2.v1.dfy(11,15)) assert {:id "id17"} _module.__default.P() <==> _module.__default.Q(); >>> DoNothingToAssert -Processing command (at Snapshots2.v1.dfy(14,11)) assert {:id "id21"} Lit(true); +Processing command (at Snapshots2.v1.dfy(14,12)) assert {:id "id21"} Lit(true); >>> DoNothingToAssert Processing command (at Snapshots2.v1.dfy(14,15)) assert {:id "id20"} _module.__default.Q() <==> Lit(_module.__default.R()); >>> DoNothingToAssert diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.expect index 81afb14df05..7d2687dfa4b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.expect @@ -1,4 +1,4 @@ Dafny program verifier finished with 272 verified, 0 errors -Total resources used is 27987600 -Max resources used by VC is 1817957 +Total resources used is 27749890 +Max resources used by VC is 2181911 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.refresh.expect index 3f5bab87c1f..c74d09b8015 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny1/SchorrWaite.dfy.refresh.expect @@ -1,4 +1,4 @@ Dafny program verifier finished with 276 verified, 0 errors -Total resources used is 27733327 -Max resources used by VC is 1227140 +Total resources used is 28898941 +Max resources used by VC is 1253781 diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny3/AbstemiousErrors.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny3/AbstemiousErrors.dfy.expect index 7591d67126c..bc6fea47a92 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny3/AbstemiousErrors.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny3/AbstemiousErrors.dfy.expect @@ -1,7 +1,7 @@ -AbstemiousErrors.dfy(39,6): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') -AbstemiousErrors.dfy(47,6): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') -AbstemiousErrors.dfy(53,2): Error: cannot prove termination; try supplying a decreases clause (note that the call is not sufficiently guarded to be used co-recursively) -AbstemiousErrors.dfy(60,6): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) -AbstemiousErrors.dfy(68,6): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') +AbstemiousErrors.dfy(39,9): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') +AbstemiousErrors.dfy(47,15): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') +AbstemiousErrors.dfy(53,21): Error: cannot prove termination; try supplying a decreases clause (note that the call is not sufficiently guarded to be used co-recursively) +AbstemiousErrors.dfy(60,12): Error: cannot prove termination; try supplying a decreases clause (note that a call can be co-recursive only if all intra-cluster calls are in non-destructive contexts) +AbstemiousErrors.dfy(68,19): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context; perhaps try declaring function 'voraciousAdd' with '{:abstemious}') Dafny program verifier finished with 0 verified, 5 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug146.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug146.dfy.expect index d22e9553311..90953eb4fc2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug146.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug146.dfy.expect @@ -1,5 +1,5 @@ Bug146.dfy(6,75): Error: insufficient reads clause to read array element; Consider adding 'reads world' in the enclosing function specification for resolution -Bug146.dfy(37,15): Error: assertion might not hold +Bug146.dfy(37,25): Error: assertion might not hold Bug146.dfy(26,4): Related location: this proposition could not be proved Dafny program verifier finished with 2 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug170.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug170.dfy.expect index 668f5801e02..9fc780dadfb 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug170.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug170.dfy.expect @@ -4,14 +4,14 @@ Bug170.dfy(18,14): Info: _k: ORDINAL Bug170.dfy(26,14): Info: _k: ORDINAL Bug170.dfy(19,14): Info: A#[_k] Bug170.dfy(18,14): Info: AA# with focal predicates A, B -Bug170.dfy(21,7): Info: B#[_k - 1] +Bug170.dfy(21,8): Info: B#[_k - 1] Bug170.dfy(22,6): Info: BB#[_k - 1] Bug170.dfy(27,14): Info: B#[_k] Bug170.dfy(26,14): Info: BB# with focal predicates B, A -Bug170.dfy(29,7): Info: A#[_k - 1] +Bug170.dfy(29,8): Info: A#[_k - 1] Bug170.dfy(30,6): Info: AA#[_k - 1] -Bug170.dfy(10,12): Info: B#[_k - 1] -Bug170.dfy(15,12): Info: A#[_k - 1] +Bug170.dfy(10,13): Info: B#[_k - 1] +Bug170.dfy(15,13): Info: A#[_k - 1] Bug170.dfy(18,14): Info: AA# decreases _k, x Bug170.dfy(26,14): Info: BB# decreases _k, x Bug170.dfy(36,21): Info: _k: ORDINAL @@ -21,13 +21,13 @@ Bug170.dfy(53,17): Info: _k: ORDINAL Bug170.dfy(47,13): Info: A#[_k] Bug170.dfy(46,17): Info: AA# with focal predicates A, B Bug170.dfy(49,4): Info: BB#[_k - 1] -Bug170.dfy(50,11): Info: B#[_k - 1] +Bug170.dfy(50,12): Info: B#[_k - 1] Bug170.dfy(54,13): Info: B#[_k] Bug170.dfy(53,17): Info: BB# with focal predicates B, A 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(57,12): Info: A#[_k - 1] +Bug170.dfy(38,5): Info: B#[_k - 1] +Bug170.dfy(43,5): Info: A#[_k - 1] Bug170.dfy(46,17): Info: AA# decreases _k, x Bug170.dfy(53,17): Info: BB# decreases _k, x Bug170.dfy(46,17): Info: AA# {:induction _k, x} @@ -38,11 +38,11 @@ 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(72,8): Info: A#[_k - 1] Bug170.dfy(73,6): Info: AA#[_k - 1] -Bug170.dfy(66,12): Info: A#[_k - 1] +Bug170.dfy(66,13): Info: A#[_k - 1] Bug170.dfy(69,14): Info: AA# decreases _k, x -Bug170.dfy(50,11): Info: Some instances of this call are not inlined. -Bug170.dfy(57,11): Info: Some instances of this call are not inlined. +Bug170.dfy(50,12): Info: Some instances of this call are not inlined. +Bug170.dfy(57,12): Info: Some instances of this call are not inlined. Dafny program verifier finished with 5 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy index 3b8e5250bea..7917e361b08 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy @@ -1,11 +1,11 @@ // RUN: %testDafnyForEachResolver "%s" -ghost function {:opaque} Reverse(id:int) : int +ghost opaque function Reverse(id: int): int -ghost function RefineToMap(ReverseKey:int->int) : bool +ghost function RefineToMap(ReverseKey: int -> int): bool -ghost function RefineToMapOfSeqNums() : bool +ghost function RefineToMapOfSeqNums(): bool { - RefineToMap(Reverse) + RefineToMap(Reverse) } diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy.expect index 823a60a105c..012f5b99379 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Bug82.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 1 verified, 0 errors +Dafny program verifier finished with 0 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/ExpandedGuardednessNeg.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/ExpandedGuardednessNeg.dfy.expect index 74351cc3738..1752c659c63 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/ExpandedGuardednessNeg.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/ExpandedGuardednessNeg.dfy.expect @@ -1,8 +1,8 @@ -ExpandedGuardednessNeg.dfy(8,17): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context) -ExpandedGuardednessNeg.dfy(8,17): Error: decreases expression must be bounded below by 0 +ExpandedGuardednessNeg.dfy(8,27): Error: cannot prove termination; try supplying a decreases clause (note that calls cannot be co-recursive in this context) +ExpandedGuardednessNeg.dfy(8,27): Error: decreases expression must be bounded below by 0 ExpandedGuardednessNeg.dfy(6,20): Related location: this proposition could not be proved -ExpandedGuardednessNeg.dfy(13,16): Error: cannot prove termination; try supplying a decreases clause -ExpandedGuardednessNeg.dfy(13,16): Error: decreases expression must be bounded below by 0 +ExpandedGuardednessNeg.dfy(13,27): Error: cannot prove termination; try supplying a decreases clause +ExpandedGuardednessNeg.dfy(13,27): Error: decreases expression must be bounded below by 0 ExpandedGuardednessNeg.dfy(11,27): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 4 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/MonadicLaws.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/MonadicLaws.dfy.expect index 0825601cd97..ee799665b59 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/MonadicLaws.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/MonadicLaws.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 9 verified, 0 errors +Dafny program verifier finished with 8 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Regression8.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Regression8.dfy.expect index 0247b19adbd..cd90a425a91 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Regression8.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/Regression8.dfy.expect @@ -1,4 +1,4 @@ -Regression8.dfy(14,16): Error: function precondition could not be proved +Regression8.dfy(14,17): Error: function precondition could not be proved Regression8.dfy(5,13): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue149.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue149.dfy.expect index f23145570c5..b16d937185a 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue149.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue149.dfy.expect @@ -1,4 +1,4 @@ git-issue149.dfy(8,28): Error: the type of this variable is underspecified -git-issue149.dfy(8,33): Error: type parameter 'T' (inferred to be '?') in the function call to 'Foo' could not be determined +git-issue149.dfy(8,36): Error: type parameter 'T' (inferred to be '?') in the function call to 'Foo' could not be determined git-issue149.dfy(8,19): Error: type of bound variable 'm' could not be determined; please specify the type explicitly 3 resolution/type errors detected in git-issue149.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue182.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue182.dfy.expect index 649b395ad03..592125f1b0b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue182.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue182.dfy.expect @@ -1,2 +1,3 @@ git-issue182.dfy(5,8): Error: Postcondition must be a boolean (got () -> bool) -1 resolution/type errors detected in git-issue182.dfy +git-issue182.dfy(5,8): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +2 resolution/type errors detected in git-issue182.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue23.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue23.dfy.expect index 522bd4a1bae..ccbb03eb50b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue23.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/dafny4/git-issue23.dfy.expect @@ -1,4 +1,4 @@ -git-issue23.dfy(14,11): Error: function precondition could not be proved -git-issue23.dfy(10,13): Related location: this proposition could not be proved +git-issue23.dfy(14,22): Error: function precondition could not be proved +git-issue23.dfy(10,22): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/induction-principle-code/AST.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/induction-principle-code/AST.dfy.expect index ba00363fc08..00a51f822da 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/induction-principle-code/AST.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/induction-principle-code/AST.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 4 verified, 0 errors +Dafny program verifier finished with 3 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy index f9e1d10dc81..5c0327cfaec 100755 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy @@ -31,11 +31,11 @@ /// anonymous functions (“lambdas”) modularly: every time a lambda is created, /// as with `(fun () -> parentheses' ())`, Dafny checks that the function can be /// called in any context. To see why, consider the function `Apply` below and -/// the following two uses of it: +/// the following two uses of it (see also parser_combinators_error.dfy): function Apply(f: () -> int): int { f() } -function F0(): int { Apply(F0) } +// function F0(): int { Apply(F0) } // cannot use F0 naked here (see parser_combinators_error.dfy) function F1(): int { Apply(() => F1()) } /// Dafny rejects `F0` because it does not allow using “naked” recursive diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy.expect index 0e95cee245b..34fc88fa5b1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators.dfy.expect @@ -1,7 +1,6 @@ -parser_combinators.dfy(38,27): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. -parser_combinators.dfy(39,33): Error: cannot prove termination; try supplying a decreases clause +parser_combinators.dfy(39,35): Error: cannot prove termination; try supplying a decreases clause -Dafny program verifier finished with 8 verified, 2 errors +Dafny program verifier finished with 8 verified, 1 error Dafny program verifier did not attempt verification "((()))": 3 nested parentheses diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy new file mode 100644 index 00000000000..faf30272702 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy @@ -0,0 +1,6 @@ +// RUN: %exits-with 2 %verify "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +function Apply(f: () -> int): int { f() } + +function F0(): int { Apply(F0) } // error: cannot use F0 naked here diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy.expect new file mode 100644 index 00000000000..e2de9f70d30 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/examples/parser_combinators_error.dfy.expect @@ -0,0 +1,2 @@ +parser_combinators_error.dfy(6,27): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +1 resolution/type errors detected in parser_combinators_error.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/exceptions/TypecheckErrors.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/exceptions/TypecheckErrors.dfy.expect index 62e9e41df03..13d5abc7d42 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/exceptions/TypecheckErrors.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/exceptions/TypecheckErrors.dfy.expect @@ -1,10 +1,10 @@ -TypecheckErrors.dfy(7,28): Error: incorrect argument type for method in-parameter 'n' (expected nat, found string) -TypecheckErrors.dfy(8,28): Error: incorrect argument type for method in-parameter 'n' (expected nat, found string) +TypecheckErrors.dfy(7,29): Error: incorrect argument type for method in-parameter 'n' (expected nat, found string) +TypecheckErrors.dfy(8,29): Error: incorrect argument type for method in-parameter 'n' (expected nat, found string) TypecheckErrors.dfy(39,10): Error: member IsFailure does not exist in BadOutcome1?, in :- statement TypecheckErrors.dfy(43,10): Error: member 'PropagateFailure' does not exist in trait 'BadOutcome2' TypecheckErrors.dfy(43,10): Error: The right-hand side of ':-', which is of type 'BadOutcome2?', must have functions 'IsFailure()', 'PropagateFailure()', and 'Extract()' TypecheckErrors.dfy(47,10): Error: number of lhs (1) must be one less than number of rhs (1) for a rhs type (BadOutcome3?) without member Extract -TypecheckErrors.dfy(51,22): Error: incorrect argument type for method in-parameter 'msg' (expected string, found int) +TypecheckErrors.dfy(51,23): Error: incorrect argument type for method in-parameter 'msg' (expected string, found int) TypecheckErrors.dfy(71,4): Error: member IsFailure does not exist in BadVoidOutcome1?, in :- statement TypecheckErrors.dfy(75,4): Error: member 'PropagateFailure' does not exist in trait 'BadVoidOutcome2' TypecheckErrors.dfy(75,4): Error: The right-hand side of ':-', which is of type 'BadVoidOutcome2?', must have functions 'IsFailure()' and 'PropagateFailure()', but not 'Extract()' diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy index 8a356da3c22..ac1919accfa 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy @@ -8,7 +8,9 @@ include "../exceptions/NatOutcomeDt.dfy" include "../exceptions/GenericOutcomeDt.dfy" method TestAssignOrHalt() { - var stmt1: nat :- expect NatSuccess(42); + var stmt1: nat :- expect NatSuccess(42) by { + assert true; + } // Regression test for when assign-or-halt was also calling PropagateFailure, which led // to the error "type variable 'U' in the function call to 'PropagateFailure' could not be determined" // (because of the lack of type constraints). diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy.expect index 572284717d0..cb29b57833f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/expectations/ExpectAndExceptions.dfy.expect @@ -1,12 +1,12 @@ Dafny program verifier finished with 2 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure("Kaboom!") +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure("Kaboom!") Dafny program verifier finished with 2 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure("Kaboom!") +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure("Kaboom!") Dafny program verifier finished with 2 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure("Kaboom!") +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure("Kaboom!") Dafny program verifier finished with 2 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure("Kaboom!") +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure("Kaboom!") diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/exports/OpaqueFunctions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/exports/OpaqueFunctions.dfy.expect index 8c7c7f11ac5..ecac718e52d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/exports/OpaqueFunctions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/exports/OpaqueFunctions.dfy.expect @@ -1,4 +1,4 @@ -OpaqueFunctions.dfy(18,4): Error: a postcondition could not be proved on this return path +OpaqueFunctions.dfy(18,5): Error: a postcondition could not be proved on this return path OpaqueFunctions.dfy(17,14): Related location: this is the postcondition that could not be proved OpaqueFunctions.dfy(58,2): Error: a postcondition could not be proved on this return path OpaqueFunctions.dfy(57,16): Related location: this is the postcondition that could not be proved diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1127.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1127.dfy.expect index 2a2e1bfda66..20cd4ba1fc1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1127.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1127.dfy.expect @@ -1,3 +1,3 @@ -git-issue-1127.dfy(15,7): Error: type parameter (T) passed to function Func must be nonempty (got PossiblyEmpty) -git-issue-1127.dfy(29,17): Error: type parameter (T) passed to function GetInhabitant must support auto-initialization (got EmptyInt) +git-issue-1127.dfy(15,26): Error: type parameter (T) passed to function Func must be nonempty (got PossiblyEmpty) +git-issue-1127.dfy(29,40): 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/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1637.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1637.dfy.expect index 60f35b398d3..ff37b311dbe 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1637.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1637.dfy.expect @@ -1,2 +1,2 @@ -git-issue-1637.dfy(19,5): Error: incorrect argument type for predicate parameter 'f' (expected Thing -> seq, found Thing -> Fii) (covariance for type parameter at index 1 expects seq :> Fii) +git-issue-1637.dfy(19,6): Error: incorrect argument type for predicate parameter 'f' (expected Thing -> seq, found Thing -> Fii) (covariance for type parameter at index 1 expects seq :> Fii) 1 resolution/type errors detected in git-issue-1637.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1700.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1700.dfy.expect index 84aa011805b..59ad783761b 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1700.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1700.dfy.expect @@ -1,2 +1,2 @@ -git-issue-1700.dfy(15,13): Error: incorrect argument type for datatype constructor parameter 'e' (expected B.E, found A.E) +git-issue-1700.dfy(15,21): Error: incorrect argument type for datatype constructor parameter 'e' (expected B.E, found A.E) 1 resolution/type errors detected in git-issue-1700.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-181.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-181.dfy.expect index 8919941cac0..eab0b7208ea 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-181.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-181.dfy.expect @@ -4,5 +4,5 @@ git-issue-181.dfy(13,10): Error: type parameter (T) passed to type ResultN must git-issue-181.dfy(15,10): Error: type parameter (T) passed to type ResultN must contain no references (got array) git-issue-181.dfy(22,13): Error: type parameter (T) passed to type D must support equality (got int -> int) git-issue-181.dfy(23,13): Error: type parameter (T) passed to type D must support equality (got E) -git-issue-181.dfy(53,11): Error: type parameter (T) passed to function gg must support equality (got T) (perhaps try declaring type parameter 'T' on line 50 as 'T(==)', which says it can only be instantiated with a type that supports equality) +git-issue-181.dfy(53,13): Error: type parameter (T) passed to function gg must support equality (got T) (perhaps try declaring type parameter 'T' on line 50 as 'T(==)', which says it can only be instantiated with a type that supports equality) 5 resolution/type errors detected in git-issue-181.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1958.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1958.dfy.expect index 7b3eb340bf6..071dcbfdc85 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1958.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-1958.dfy.expect @@ -2,17 +2,17 @@ git-issue-1958.dfy(13,16): Error: value does not satisfy the subset constraints git-issue-1958.dfy(18,16): Error: value does not satisfy the subset constraints of 'R' git-issue-1958.dfy(32,4): Error: value does not satisfy the subset constraints of 'R' git-issue-1958.dfy(36,4): Error: value does not satisfy the subset constraints of 'R' -git-issue-1958.dfy(56,16): Error: function precondition could not be proved +git-issue-1958.dfy(56,20): Error: function precondition could not be proved git-issue-1958.dfy(49,13): Related location: this proposition could not be proved -git-issue-1958.dfy(61,4): Error: function precondition could not be proved +git-issue-1958.dfy(61,8): Error: function precondition could not be proved git-issue-1958.dfy(49,13): Related location: this proposition could not be proved -git-issue-1958.dfy(65,4): Error: function precondition could not be proved +git-issue-1958.dfy(65,8): Error: function precondition could not be proved git-issue-1958.dfy(49,13): Related location: this proposition could not be proved -git-issue-1958.dfy(70,9): Error: function precondition could not be proved +git-issue-1958.dfy(70,13): Error: function precondition could not be proved git-issue-1958.dfy(49,13): Related location: this proposition could not be proved git-issue-1958.dfy(77,13): Error: cannot establish the existence of LHS values that satisfy the such-that predicate git-issue-1958.dfy(81,4): Error: cannot establish the existence of LHS values that satisfy the such-that predicate -git-issue-1958.dfy(104,16): Error: function precondition could not be proved +git-issue-1958.dfy(104,20): Error: function precondition could not be proved git-issue-1958.dfy(97,13): Related location: this proposition could not be proved git-issue-1958.dfy(167,7): Error: index out of range diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-19a.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-19a.dfy.expect index 145a8ac9d07..e9b9efd2dc2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-19a.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-19a.dfy.expect @@ -1,3 +1,3 @@ git-issue-19a.dfy(12,30): Error: a forall expression involved in a predicate definition is not allowed to depend on the set of allocated references, but values of 'x' (of type 'T') may contain references (perhaps declare its type as 'T(!new)') (see documentation for 'older' parameters) -git-issue-19a.dfy(54,11): Error: type parameter (T) passed to predicate AllP must contain no references (got C) +git-issue-19a.dfy(54,18): Error: type parameter (T) passed to predicate AllP must contain no references (got C) 2 resolution/type errors detected in git-issue-19a.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2197.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2197.dfy.expect index bfc60aace72..21d657afeb1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2197.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2197.dfy.expect @@ -3,7 +3,7 @@ git-issue-2197.dfy(11,0): Error: a postcondition could not be proved on this ret 11 | { | ^ -git-issue-2197.dfy(10,10): Related location: this is the postcondition that could not be proved +git-issue-2197.dfy(10,14): Related location: this is the postcondition that could not be proved | 10 | ensures Test(y) | ^^^^^^^ diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211.dfy.expect index 05f2c7d600e..9124309709c 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211.dfy.expect @@ -1,5 +1,5 @@ git-issue-2211.dfy(17,0): Error: a postcondition could not be proved on this return path -git-issue-2211.dfy(16,10): Related location: this is the postcondition that could not be proved +git-issue-2211.dfy(16,11): Related location: this is the postcondition that could not be proved git-issue-2211.dfy(8,2): Related location: this proposition could not be proved Dafny program verifier finished with 2 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211a.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211a.dfy.expect index 9736327b4ef..a1772e35bc1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211a.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2211a.dfy.expect @@ -1,5 +1,5 @@ git-issue-2211a.dfy(18,0): Error: a postcondition could not be proved on this return path -git-issue-2211a.dfy(17,10): Related location: this is the postcondition that could not be proved +git-issue-2211a.dfy(17,11): Related location: this is the postcondition that could not be proved git-issue-2211a.dfy(9,2): Related location: this proposition could not be proved Dafny program verifier finished with 2 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2299.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2299.dfy.expect index 2bb07b70a75..45b46e76c15 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2299.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2299.dfy.expect @@ -1,19 +1,19 @@ -git-issue-2299.dfy(37,11): Error: assertion might not hold +git-issue-2299.dfy(37,21): Error: assertion might not hold git-issue-2299.dfy(10,11): Related location: this proposition could not be proved -git-issue-2299.dfy(48,11): Error: assertion might not hold +git-issue-2299.dfy(48,21): Error: assertion might not hold git-issue-2299.dfy(16,4): Related location: this proposition could not be proved -git-issue-2299.dfy(58,11): Error: assertion might not hold +git-issue-2299.dfy(58,20): Error: assertion might not hold git-issue-2299.dfy(21,4): Related location: this proposition could not be proved -git-issue-2299.dfy(67,13): Error: assertion might not hold +git-issue-2299.dfy(67,22): Error: assertion might not hold git-issue-2299.dfy(21,4): Related location: this proposition could not be proved -git-issue-2299.dfy(81,11): Error: assertion might not hold -git-issue-2299.dfy(27,4): Related location: this proposition could not be proved +git-issue-2299.dfy(81,16): Error: assertion might not hold +git-issue-2299.dfy(27,12): Related location: this proposition could not be proved git-issue-2299.dfy(10,11): Related location: this proposition could not be proved -git-issue-2299.dfy(81,11): Error: assertion might not hold -git-issue-2299.dfy(27,18): Related location: this proposition could not be proved +git-issue-2299.dfy(81,16): Error: assertion might not hold +git-issue-2299.dfy(27,26): Related location: this proposition could not be proved git-issue-2299.dfy(16,4): Related location: this proposition could not be proved -git-issue-2299.dfy(81,11): Error: assertion might not hold -git-issue-2299.dfy(27,32): Related location: this proposition could not be proved +git-issue-2299.dfy(81,16): Error: assertion might not hold +git-issue-2299.dfy(27,39): Related location: this proposition could not be proved git-issue-2299.dfy(21,4): Related location: this proposition could not be proved Dafny program verifier finished with 7 verified, 7 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2301.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2301.dfy.expect index cd266ff622d..ea026313873 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2301.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2301.dfy.expect @@ -1,5 +1,5 @@ git-issue-2301.dfy(15,14): Error: insufficient reads clause to read state of 'unchanged' object -git-issue-2301.dfy(23,11): Error: assertion might not hold +git-issue-2301.dfy(23,29): Error: assertion might not hold git-issue-2301.dfy(10,4): Related location: this proposition could not be proved git-issue-2301.dfy(39,6): Error: insufficient reads clause to read state of 'unchanged' object git-issue-2301.dfy(40,6): Error: insufficient reads clause to read state of 'unchanged' object diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2506.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2506.dfy.expect index 36697ad7114..3c62971e838 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2506.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2506.dfy.expect @@ -1,17 +1,17 @@ git-issue-2506.dfy(6,17): Error: const definition contains a cycle: T.a -> T.b -> T.a -git-issue-2506.dfy(10,33): Error: a recursive call from a least predicate can go only to other least predicates -git-issue-2506.dfy(13,41): Error: a least predicate can be called recursively only in positive positions +git-issue-2506.dfy(10,34): Error: a recursive call from a least predicate can go only to other least predicates +git-issue-2506.dfy(13,49): Error: a least predicate can be called recursively only in positive positions git-issue-2506.dfy(15,45): Error: a least predicate is not allowed to declare any ensures clause git-issue-2506.dfy(27,17): Error: const definition contains a cycle: T.a -> T.b -> T.a -git-issue-2506.dfy(31,33): Error: a recursive call from a least predicate can go only to other least predicates -git-issue-2506.dfy(34,41): Error: a least predicate can be called recursively only in positive positions +git-issue-2506.dfy(31,34): Error: a recursive call from a least predicate can go only to other least predicates +git-issue-2506.dfy(34,49): Error: a least predicate can be called recursively only in positive positions git-issue-2506.dfy(36,45): Error: a least predicate is not allowed to declare any ensures clause git-issue-2506.dfy(48,17): Error: const definition contains a cycle: T.a -> T.b -> T.a -git-issue-2506.dfy(52,33): Error: a recursive call from a least predicate can go only to other least predicates -git-issue-2506.dfy(55,41): Error: a least predicate can be called recursively only in positive positions +git-issue-2506.dfy(52,34): Error: a recursive call from a least predicate can go only to other least predicates +git-issue-2506.dfy(55,49): Error: a least predicate can be called recursively only in positive positions git-issue-2506.dfy(57,45): Error: a least predicate is not allowed to declare any ensures clause git-issue-2506.dfy(69,17): Error: const definition contains a cycle: T.a -> T.b -> T.a -git-issue-2506.dfy(73,33): Error: a recursive call from a least predicate can go only to other least predicates -git-issue-2506.dfy(76,41): Error: a least predicate can be called recursively only in positive positions +git-issue-2506.dfy(73,34): Error: a recursive call from a least predicate can go only to other least predicates +git-issue-2506.dfy(76,49): Error: a least predicate can be called recursively only in positive positions git-issue-2506.dfy(78,45): Error: a least predicate is not allowed to declare any ensures clause 16 resolution/type errors detected in git-issue-2506.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2693.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2693.dfy.expect index b6a2407c6b7..03944411c2d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2693.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2693.dfy.expect @@ -1,7 +1,7 @@ git-issue-2693.dfy(10,10): Warning: Support for member 'PropagateFailure' in type 'EvenGood_OddBad?' (used indirectly via a :- statement) being a method is deprecated; declare it to be a function instead git-issue-2693.dfy(10,10): Warning: Support for member 'Extract' in type 'EvenGood_OddBad?' (used indirectly via a :- statement) being a method is deprecated; declare it to be a function instead git-issue-2693.dfy(10,10): Error: a postcondition could not be proved on this return path -git-issue-2693.dfy(6,37): Related location: this is the postcondition that could not be proved +git-issue-2693.dfy(6,46): Related location: this is the postcondition that could not be proved git-issue-2693.dfy(21,12): Related location: this proposition could not be proved git-issue-2693.dfy(11,4): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2829.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2829.dfy.expect index e0dacc8644a..c3f63c571f5 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2829.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-2829.dfy.expect @@ -2,6 +2,6 @@ git-issue-2829.dfy(52,38): Error: second argument to "in" must be a set, multise git-issue-2829.dfy(53,23): Error: type of + must be of a numeric type, a bitvector type, ORDINAL, char, a sequence type, or a set-like or map-like type (instead got A) git-issue-2829.dfy(53,15): Error: arguments must have comparable types (got string and A) git-issue-2829.dfy(54,16): Error: arguments must have comparable types (got seq and seq) -git-issue-2829.dfy(56,18): Error: incorrect argument type at index 2 for function parameter 'input' (expected string, found A) -git-issue-2829.dfy(56,18): Error: incorrect argument type at index 3 for function parameter 'output' (expected seq, found seq) (covariant type parameter would require string <: A) +git-issue-2829.dfy(56,31): Error: incorrect argument type at index 2 for function parameter 'input' (expected string, found A) +git-issue-2829.dfy(56,37): Error: incorrect argument type at index 3 for function parameter 'output' (expected seq, found seq) (covariant type parameter would require string <: A) 6 resolution/type errors detected in git-issue-2829.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy deleted file mode 100644 index 9ce07b0f267..00000000000 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy +++ /dev/null @@ -1,2 +0,0 @@ -// RUN: %exits-with 1 %baredafny "" 2> "%t" -// RUN: %diff "%s.expect" "%t" diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy.expect deleted file mode 100644 index 3ccac32363e..00000000000 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3549a.dfy.expect +++ /dev/null @@ -1 +0,0 @@ -Invalid filename: The value cannot be an empty string. (Parameter 'path') diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-370.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-370.dfy.expect index cac47f16163..e513f9a936d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-370.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-370.dfy.expect @@ -1,5 +1,5 @@ git-issue-370.dfy(48,0): Error: a postcondition could not be proved on this return path -git-issue-370.dfy(46,7): Related location: this is the postcondition that could not be proved -git-issue-370.dfy(22,5): Related location: this proposition could not be proved +git-issue-370.dfy(46,17): Related location: this is the postcondition that could not be proved +git-issue-370.dfy(22,6): Related location: this proposition could not be proved Dafny program verifier finished with 1 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3719.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3719.dfy.expect index 33250c5106b..bbceecbdce7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3719.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3719.dfy.expect @@ -1,4 +1,4 @@ -git-issue-3719.dfy(12,9): Error: assertion might not hold +git-issue-3719.dfy(12,18): Error: assertion might not hold git-issue-3719.dfy(7,37): Related location: this proposition could not be proved Dafny program verifier finished with 3 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy new file mode 100644 index 00000000000..be8e13ec89b --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy @@ -0,0 +1,26 @@ +// RUN: %testDafnyForEachCompiler --refresh-exit-code=0 "%s" + +module m { + datatype D = A + | B + | C { + static const Default: D := B // This one will be translated as Default_ + method Default_() { // Just to be sure there is no clash: this is translated as Default__ + print "Default_ Method\n"; + } + } + + + + method Main() { + var x := D.Default; + x.Default_(); + match x { + case A => print "A!\n"; + case B => print "B!\n"; + case C => print "C!\n"; + } + print "Hello!\n"; + } + +} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy.expect new file mode 100644 index 00000000000..9ba695c450c --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3809.dfy.expect @@ -0,0 +1,3 @@ +Default_ Method +B! +Hello! diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3855.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3855.dfy.expect index e7965e56414..2c2bc4bc249 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3855.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-3855.dfy.expect @@ -1,5 +1,5 @@ git-issue-3855.dfy(799,0): Warning: attribute :ignore is deprecated -git-issue-3855.dfy(799,11): Error: Verification of 'Memory.dynMove' timed out after seconds +git-issue-3855.dfy(799,11): Error: Verification of 'Memory.dynMove' timed out after seconds. (the limit can be increased using --verification-time-limit) git-issue-3855.dfy(942,17): Error: a precondition for this call could not be proved git-issue-3855.dfy(430,29): Related location: this is the precondition that could not be proved git-issue-3855.dfy(942,17): Error: a precondition for this call could not be proved diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.check b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.check deleted file mode 100644 index a8dfdf5ec16..00000000000 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.check +++ /dev/null @@ -1 +0,0 @@ -CHECK: Failed to compile C# source code .* \ No newline at end of file diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.expect new file mode 100644 index 00000000000..dcab703fd3b --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.cs.expect @@ -0,0 +1,3 @@ +AnyName.B +AnyName._AnyName +done diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.java.check b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.java.check deleted file mode 100644 index 6d927bd7912..00000000000 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4449.dfy.java.check +++ /dev/null @@ -1 +0,0 @@ -CHECK: error: cannot find symbol \ No newline at end of file diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-484.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-484.dfy.expect index 350b1047787..da23d432306 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-484.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-484.dfy.expect @@ -1,6 +1,6 @@ git-issue-484.dfy(10,6): Error: type of corresponding source/RHS (int) does not match type of bound variable (MyInt) git-issue-484.dfy(19,6): Error: type of corresponding source/RHS (real) does not match type of bound variable (MyInt) -git-issue-484.dfy(23,2): Error: incorrect argument type for datatype constructor parameter 'b' (expected MyInt, found int) +git-issue-484.dfy(23,6): Error: incorrect argument type for datatype constructor parameter 'b' (expected MyInt, found int) git-issue-484.dfy(34,6): Error: type of corresponding source/RHS (int) does not match type of bound variable (byte) -git-issue-484.dfy(40,2): Error: incorrect argument type for datatype constructor parameter 'b' (expected byte, found int) +git-issue-484.dfy(40,6): Error: incorrect argument type for datatype constructor parameter 'b' (expected byte, found int) 5 resolution/type errors detected in git-issue-484.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4926.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4926.dfy.expect index 62e31f8cfad..85866c843b1 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4926.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4926.dfy.expect @@ -1,39 +1,39 @@ -git-issue-4926.dfy(16,12): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(17,12): Error: type parameter (A) passed to function G must support auto-initialization (got Cell) -git-issue-4926.dfy(18,12): Error: type parameter (A) passed to function H must be nonempty (got Cell) -git-issue-4926.dfy(21,14): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(22,14): Error: type parameter (A) passed to function G must support auto-initialization (got Nonempty) -git-issue-4926.dfy(24,14): Error: type parameter (A) passed to function J must support equality (got Record) -git-issue-4926.dfy(25,20): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(32,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(33,16): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(34,12): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(35,14): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(38,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(39,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(40,12): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(41,14): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(52,38): Error: type parameter (A) passed to function J must support equality (got Record) +git-issue-4926.dfy(16,19): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(17,19): Error: type parameter (A) passed to function G must support auto-initialization (got Cell) +git-issue-4926.dfy(18,19): Error: type parameter (A) passed to function H must be nonempty (got Cell) +git-issue-4926.dfy(21,21): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(22,25): Error: type parameter (A) passed to function G must support auto-initialization (got Nonempty) +git-issue-4926.dfy(24,23): Error: type parameter (A) passed to function J must support equality (got Record) +git-issue-4926.dfy(25,27): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(32,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(33,23): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(34,19): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(35,21): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(38,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(39,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(40,19): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(41,21): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(52,47): Error: type parameter (A) passed to function J must support equality (got Record) git-issue-4926.dfy(60,42): Error: type parameter (A) passed to type Cmp must support equality (got Record) git-issue-4926.dfy(61,40): Error: type parameter (A) passed to type Cmp must support equality (got Record) -git-issue-4926.dfy(44,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(46,16): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(49,12): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(50,14): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(45,19): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(47,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(48,18): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(44,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(47,13): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(46,16): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(50,14): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(45,19): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(48,18): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(49,12): Error: type parameter (A) passed to function F must contain no references (got Cell) -git-issue-4926.dfy(56,22): Error: type parameter (A) passed to function J must support equality (got Record) -git-issue-4926.dfy(73,12): Error: type parameter (A) passed to greatest predicate Bisimilar must contain no references (got A) (perhaps try declaring type parameter 'A' on line 72 as 'A(!new)', which says it can only be instantiated with a type that contains no references) -git-issue-4926.dfy(85,12): Error: type parameter (A) passed to greatest predicate Bisimilar must contain no references (got Class) +git-issue-4926.dfy(44,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(46,23): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(49,19): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(50,21): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(45,26): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(47,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(48,25): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(44,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(47,20): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(46,23): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(50,21): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(45,26): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(48,25): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(49,19): Error: type parameter (A) passed to function F must contain no references (got Cell) +git-issue-4926.dfy(56,31): Error: type parameter (A) passed to function J must support equality (got Record) +git-issue-4926.dfy(73,24): Error: type parameter (A) passed to greatest predicate Bisimilar must contain no references (got A) (perhaps try declaring type parameter 'A' on line 72 as 'A(!new)', which says it can only be instantiated with a type that contains no references) +git-issue-4926.dfy(85,28): Error: type parameter (A) passed to greatest predicate Bisimilar must contain no references (got Class) git-issue-4926.dfy(87,31): Error: type parameter (A) passed to greatest lemma SelfSimilarCorrected must contain no references (got Class) -git-issue-4926.dfy(91,12): Error: type parameter (A) passed to prefix predicate Bisimilar# must contain no references (got Class) +git-issue-4926.dfy(91,32): Error: type parameter (A) passed to prefix predicate Bisimilar# must contain no references (got Class) git-issue-4926.dfy(93,35): Error: type parameter (A) passed to prefix lemma SelfSimilarCorrected# must contain no references (got Class) 38 resolution/type errors detected in git-issue-4926.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4939a.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4939a.dfy.expect index 5ec3e0aa53f..7526628ac4a 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4939a.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-4939a.dfy.expect @@ -3,11 +3,11 @@ git-issue-4939a.dfy(142,11): Warning: because of cyclic dependencies among const git-issue-4939a.dfy(144,11): Warning: because of cyclic dependencies among constructor argument types, no instances of datatype 'Mutual' can be constructed git-issue-4939a.dfy(145,11): Warning: because of cyclic dependencies among constructor argument types, no instances of datatype 'Nutual' can be constructed git-issue-4939a.dfy(25,32): Error: cannot prove termination; try supplying a decreases clause -git-issue-4939a.dfy(68,12): Error: cannot prove termination; try supplying a decreases clause -git-issue-4939a.dfy(68,12): Error: decreases expression must be bounded below by 0 +git-issue-4939a.dfy(68,21): Error: cannot prove termination; try supplying a decreases clause +git-issue-4939a.dfy(68,21): Error: decreases expression must be bounded below by 0 git-issue-4939a.dfy(67,23): Related location: this proposition could not be proved -git-issue-4939a.dfy(105,27): Error: cannot prove termination; try supplying a decreases clause -git-issue-4939a.dfy(105,27): Error: decreases expression must be bounded below by 0 +git-issue-4939a.dfy(105,36): Error: cannot prove termination; try supplying a decreases clause +git-issue-4939a.dfy(105,36): Error: decreases expression must be bounded below by 0 git-issue-4939a.dfy(104,23): Related location: this proposition could not be proved Dafny program verifier finished with 12 verified, 5 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-551.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-551.dfy.expect index a21f3686e77..6e9fc4bc7f0 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-551.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-551.dfy.expect @@ -1,2 +1,2 @@ -git-issue-551.dfy(27,15): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) +git-issue-551.dfy(27,26): Error: a call to a ghost predicate is allowed only in specification contexts (consider declaring the predicate without the 'ghost' keyword) 1 resolution/type errors detected in git-issue-551.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5586.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5586.dfy.expect index 4f50ec8af07..702ffec04b3 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5586.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5586.dfy.expect @@ -1,4 +1,4 @@ -git-issue-5586.dfy(14,9): Error: assertion might not hold +git-issue-5586.dfy(14,10): Error: assertion might not hold git-issue-5586.dfy(10,4): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy index 38f582328fa..b43e78bfeb9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy @@ -1,6 +1,4 @@ -// NONUNIFORM: Test still fails on CS (https://github.com/dafny-lang/dafny/issues/5746) -// RUN: %run --target java "%s" > "%t" -// RUN: %diff "%s.expect" "%t" +// RUN: %testDafnyForEachCompiler --refresh-exit-code=0 "%s" module State { @@ -17,4 +15,47 @@ module Foo { method Main() { print "Hello!\n"; } -} \ No newline at end of file +} + +module Enclosing { + + module A { + datatype A = Whatever + } + +} + +module UsingEnclosing { + + import opened Enclosing + + const bar: A.A + + method Main2() { + print "Hello!\n"; + } +} + +module A { + + trait T { + var a: X + } + + class A extends T { + var x : int + constructor() {x := 0;} + } + +} + +module UsingA { + + import opened A + + method Main3() { + var b := new A(); + + print "Hello!\n"; + } +} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy.expect index 3b538928db8..10ddd6d257e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6014.dfy.expect @@ -1,3 +1 @@ - -Dafny program verifier finished with 0 verified, 0 errors Hello! diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy new file mode 100644 index 00000000000..8a0794b9789 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy @@ -0,0 +1,22 @@ +// RUN: %verify %s &> "%t" +// RUN: %diff "%s.expect" "%t" + +trait T { + + ghost function Modifies(): set + + method Foo() + modifies Modifies() +} + +class {:compile false} C extends T { + + const Repr: set + + ghost function Modifies(): set { + Repr + } + + method Foo() + modifies Modifies() +} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy.expect new file mode 100644 index 00000000000..ebe2328e072 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6038.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 2 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy new file mode 100644 index 00000000000..3b0510a2aef --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy @@ -0,0 +1,42 @@ +// RUN: %exits-with 2 %verify "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +function F(x: int): int + decreases G(x) // error: decreases clause cannot use mutually recursive function +{ + G(x) - 1 +} + +function G(x: int): int + decreases F(x) // error: decreases clause cannot use mutually recursive function +{ + F(x) +} + +function K(x: nat): int + decreases if x == 0 then 0 else 1 + K(x - 1) // error: decreases clause is not allowed to call enclosing function +{ + if x == 0 then 200 else 1 + K(x - 1) +} + +function Id(x: int): int { + IdBuddy(x) +} + +function IdBuddy(x: int): int + decreases x, 0 +{ + if x <= 0 then x else + var id := Id; // error: cannot use Id naked here + id(x - 1) +} + +ghost function H(x: int): int { + if H != (H) then 0 else 3 // error (x2): cannot use H naked here +} + +datatype Dt = Dt { + ghost function J(x: int): int { + if (this).J == J then 0 else 3 // error (x2): cannot use J naked here + } +} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy.expect new file mode 100644 index 00000000000..c79d8eeca66 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-6043.dfy.expect @@ -0,0 +1,9 @@ +git-issue-6043.dfy(5,13): Error: the decreases clause of function 'F' is not allowed to call 'G', because they are mutually recursive +git-issue-6043.dfy(11,13): Error: the decreases clause of function 'G' is not allowed to call 'F', because they are mutually recursive +git-issue-6043.dfy(17,39): Error: a decreases clause is not allowed to call the enclosing function +git-issue-6043.dfy(30,14): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +git-issue-6043.dfy(35,5): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +git-issue-6043.dfy(35,11): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +git-issue-6043.dfy(40,14): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +git-issue-6043.dfy(40,19): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. +8 resolution/type errors detected in git-issue-6043.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-615.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-615.dfy.expect index 44592500154..8093a4505e9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-615.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-615.dfy.expect @@ -1,4 +1,4 @@ -git-issue-615.dfy(13,35): Error: insufficient reads clause to invoke function -git-issue-615.dfy(24,13): Error: insufficient reads clause to invoke function +git-issue-615.dfy(13,42): Error: insufficient reads clause to invoke function +git-issue-615.dfy(24,14): Error: insufficient reads clause to invoke function Dafny program verifier finished with 3 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-750.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-750.dfy.expect index e49654c388a..0abc7cf1da9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-750.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-750.dfy.expect @@ -1,5 +1,5 @@ git-issue-750.dfy(8,4): Error: RHS (of type array) not assignable to LHS (of type array) (nonvariance for type parameter expects int = nat) git-issue-750.dfy(9,4): Error: RHS (of type array) not assignable to LHS (of type array) (nonvariance for type parameter expects nat = int) -git-issue-750.dfy(10,4): Error: incorrect argument type at index 0 for method in-parameter 'x' (expected array, found array) (nonvariance for type parameter expects nat = int) -git-issue-750.dfy(10,4): Error: incorrect argument type at index 1 for method in-parameter 'y' (expected array, found array) (nonvariance for type parameter expects int = nat) +git-issue-750.dfy(10,5): Error: incorrect argument type at index 0 for method in-parameter 'x' (expected array, found array) (nonvariance for type parameter expects nat = int) +git-issue-750.dfy(10,8): Error: incorrect argument type at index 1 for method in-parameter 'y' (expected array, found array) (nonvariance for type parameter expects int = nat) 4 resolution/type errors detected in git-issue-750.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy index 4419ae4d101..676f897f1f6 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy @@ -2,51 +2,51 @@ // RUN: %diff "%s.expect" "%t" trait O extends object { - var rep:set - ghost function union(s:set>):set { + var rep: set + + ghost function union(s: set>): set { set o,o1 | o in s && o1 in o :: o1 } least predicate ag() reads * { - rep=={} || (forall o:O | o in rep :: o.ag()) + rep=={} || (forall o: O | o in rep :: o.ag()) } - ghost predicate ldp(n:ORDINAL) + ghost predicate ldp(n: ORDINAL) reads * { - ag#[n]() && (forall n1:ORDINAL | n1 < n:: !ag#[n1]()) + ag#[n]() && (forall n1: ORDINAL | n1 < n :: !ag#[n1]()) } - ghost function ld(n:ORDINAL):ORDINAL + ghost function ld(n: ORDINAL): ORDINAL reads * requires ag#[n]() ensures ldp(ld(n)) { - if ldp(n) then n else var n1:ORDINAL :| n1 < n && ag#[n1](); ld(n1) + if ldp(n) then n else var n1: ORDINAL :| n1 < n && ag#[n1](); ld(n1) } - ghost function level():ORDINAL + ghost function level(): ORDINAL reads fr() requires ag() ensures ldp(level()) { - var n:ORDINAL :| ag#[n](); ld(n) + var n: ORDINAL :| ag#[n](); ld(n) } least lemma l1() requires ag() - ensures forall o:O | o in rep :: o.level() < level() + ensures forall o: O | o in rep :: o.level() < level() decreases level() {} - ghost function fr():set + ghost function fr(): set requires ag() reads * - decreases level() + decreases level() // error: fr and level are mutually recursive, so fr is not allowed to use level in its decreases clause { - {this} + union(set o:O | o in rep :: l1(); o.fr()) + {this} + union(set o: O | o in rep :: l1(); o.fr()) } } - diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy.expect index af8bbdd3886..401e2e91ee9 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-847.dfy.expect @@ -1,4 +1,2 @@ -git-issue-847.dfy(40,39): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -git-issue-847.dfy(40,49): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -git-issue-847.dfy(41,14): Error: a recursive call from a greatest lemma can go only to other greatest lemmas and prefix lemmas -3 resolution/type errors detected in git-issue-847.dfy +git-issue-847.dfy(48,19): Error: the decreases clause of function 'O.fr' is not allowed to call 'level', because they are mutually recursive +1 resolution/type errors detected in git-issue-847.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-977.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-977.dfy.expect index dd5f009d9ff..b916d6d74aa 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-977.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-977.dfy.expect @@ -5,8 +5,8 @@ git-issue-977.dfy(237,36): Info: _k: ORDINAL git-issue-977.dfy(239,15): Info: Pos#[_k] git-issue-977.dfy(237,36): Info: Theorem2# with focal predicate Pos git-issue-977.dfy(241,4): Info: Theorem2#[_k - 1] -git-issue-977.dfy(229,13): Info: co-recursive call -git-issue-977.dfy(234,18): Info: Pos#[_k - 1] +git-issue-977.dfy(229,20): Info: co-recursive call +git-issue-977.dfy(234,21): Info: Pos#[_k - 1] git-issue-977.dfy(217,13): Info: Selected triggers: {AAA#[k](t)} git-issue-977.dfy(227,17): Info: decreases 1, n git-issue-977.dfy(237,36): Info: Theorem2# decreases _k, n @@ -16,8 +16,8 @@ git-issue-977.dfy(84,16): Info: tail recursive git-issue-977.dfy(95,19): Info: tail recursive git-issue-977.dfy(113,19): Info: tail recursive git-issue-977.dfy(146,16): Info: tail recursive -git-issue-977.dfy(97,21): Info: GreatestPredOrd#[_k - 1] -git-issue-977.dfy(115,21): Info: GreatestPredNat#[_k - 1] +git-issue-977.dfy(97,36): Info: GreatestPredOrd#[_k - 1] +git-issue-977.dfy(115,36): Info: GreatestPredNat#[_k - 1] git-issue-977.dfy(71,4): Info: Selected triggers: {RicochetOrd(m, num)}, {GreatestManualOrd(m, num)}, {GreatestPredOrd#[m](num)}, {m < k} git-issue-977.dfy(138,4): Info: Selected triggers: @@ -42,18 +42,18 @@ git-issue-977.dfy(77,6): Info: {:inductionTrigger RicochetNat(k, num)} git-issue-977.dfy(71,4): Info: ensures GreatestPredOrd#[m](num) git-issue-977.dfy(71,4): Info: ensures GreatestManualOrd(m, num) git-issue-977.dfy(71,4): Info: ensures RicochetOrd(m, num) -git-issue-977.dfy(110,9): Info: Some instances of this call are not inlined. -git-issue-977.dfy(143,9): Info: Some instances of this call are not inlined. -git-issue-977.dfy(162,2): Info: Some instances of this call are not inlined. -git-issue-977.dfy(39,11): Error: assertion might not hold -git-issue-977.dfy(14,20): Related location: this proposition could not be proved +git-issue-977.dfy(110,28): Info: Some instances of this call are not inlined. +git-issue-977.dfy(143,26): Info: Some instances of this call are not inlined. +git-issue-977.dfy(162,21): Info: Some instances of this call are not inlined. +git-issue-977.dfy(39,25): Error: assertion might not hold +git-issue-977.dfy(14,29): Related location: this proposition could not be proved git-issue-977.dfy(9,7): Related location: this proposition could not be proved -git-issue-977.dfy(41,11): Error: assertion might not hold -git-issue-977.dfy(22,4): Related location: this proposition could not be proved +git-issue-977.dfy(41,31): Error: assertion might not hold +git-issue-977.dfy(22,13): Related location: this proposition could not be proved git-issue-977.dfy(9,7): Related location: this proposition could not be proved -git-issue-977.dfy(43,11): Error: assertion might not hold -git-issue-977.dfy(30,20): Related location: this proposition could not be proved +git-issue-977.dfy(43,26): Error: assertion might not hold +git-issue-977.dfy(30,29): Related location: this proposition could not be proved git-issue-977.dfy(9,7): Related location: this proposition could not be proved -git-issue-977.dfy(220,11): Info: Some instances of this call are not inlined. +git-issue-977.dfy(220,18): Info: Some instances of this call are not inlined. Dafny program verifier finished with 20 verified, 3 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy index a81ed26c224..a821bee5433 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy @@ -61,3 +61,37 @@ method AllocationTest(oldcell: Cell) case true => assert old(k(y, b)) < 50; // error: argument y is not allocated in old state } } + +module TwoStateFunctions { + method Apply(ghost f: int -> int, x: int) returns (ghost y: int) + ensures y == f(x) + { + y := f(x); + } + + class Cell { + var data: int + + twostate function F(x: int): int { + old(data) + x + } + } + + method Caller(c: Cell) + requires c.data == 9 + modifies c + { + c.data := c.data + 1; + label L: + assert c.F(11) == 20; + + var y := Apply(c.F, 11); + assert y == 20; + + assert c.F@L(11) == 21; + y := Apply(u => c.F@L(u), 11); + assert y == 21; + + assert c.F(100) == 0; // error + } +} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy.expect index 1be7ec6e5d8..1a63b6a43da 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Apply.dfy.expect @@ -1,6 +1,7 @@ +Apply.dfy(95,4): Error: assertion might not hold Apply.dfy(46,23): Error: function could not be proved to be allocated in the state in which the function is invoked Apply.dfy(57,31): Error: argument could not be proved to be allocated in the state in which the function is invoked Apply.dfy(58,31): Error: argument could not be proved to be allocated in the state in which the function is invoked Apply.dfy(61,31): Error: argument could not be proved to be allocated in the state in which the function is invoked -Dafny program verifier finished with 4 verified, 4 errors +Dafny program verifier finished with 7 verified, 5 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Classes.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Classes.dfy.expect index d72be90dc15..067d7a0f32f 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Classes.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Classes.dfy.expect @@ -1,4 +1,4 @@ -Classes.dfy(33,12): Error: function precondition could not be proved +Classes.dfy(33,17): Error: function precondition could not be proved Classes.dfy(60,2): Error: assertion might not hold Dafny program verifier finished with 4 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Frame.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Frame.dfy.expect index 27022df616d..8621a4760df 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Frame.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Frame.dfy.expect @@ -3,7 +3,7 @@ Frame.dfy(37,2): Error: assertion might not hold Frame.dfy(63,4): Error: assertion might not hold Frame.dfy(66,18): Error: insufficient reads clause to read array element; Consider extracting a[0] to a local variable before the lambda expression, or adding 'reads a' in the enclosing lambda specification for resolution Frame.dfy(68,27): Error: insufficient reads clause to read array element; Consider adding 'reads a' in the enclosing lambda specification for resolution -Frame.dfy(120,17): Error: function precondition could not be proved +Frame.dfy(120,22): Error: function precondition could not be proved Frame.dfy(123,6): Error: assertion might not hold Dafny program verifier finished with 6 verified, 7 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Monads.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Monads.dfy.expect index 4bb1c2c7251..66ffe3665d5 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Monads.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Monads.dfy.expect @@ -1,2 +1,2 @@ -Dafny program verifier finished with 18 verified, 0 errors +Dafny program verifier finished with 14 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy index c08a19a9c4c..cdafe1d123d 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy @@ -1,4 +1,4 @@ -// RUN: %testDafnyForEachResolver --expect-exit-code=4 "%s" -- --allow-deprecation +// RUN: %testDafnyForEachResolver --expect-exit-code=2 "%s" module Functions { @@ -19,86 +19,52 @@ module Functions { module Requires { ghost function t(x: nat): nat - requires !t.requires(x); // error: use of naked function in its own SCC + requires !t.requires(x) // error: use of naked function in its own SCC { x } ghost function g(x: nat): nat - requires !(g).requires(x); // error: use of naked function in its own SCC + requires !(g).requires(x) // error: use of naked function in its own SCC { x } ghost function D(x: int): int // used so termination errors don't mask other errors - ghost function g2(x: int): int decreases D(x) { h(x) } // error: precondition violation + ghost function g2(x: int): int decreases D(x) { h(x) } ghost function h(x: int): int - requires !g2.requires(x); // error: use of naked function in its own SCC + requires !g2.requires(x) // error: use of naked function in its own SCC { x } } module Reads { ghost function t(x: nat): nat - reads t.reads(x); + reads t.reads(x) { x } ghost function g(x: nat): nat - reads (g).reads(x); + reads (g).reads(x) { x } ghost function g2(x: int): int { h(x) } ghost function h(x: int): int - reads g2.reads(x); + reads g2.reads(x) { x } } module ReadsGenerics { class Cl { ghost function t(a: A, b: B): (A, B) - reads t.reads(a, b); + reads t.reads(a, b) { (a, b) } ghost function g(a: A, b: B): (A, B) - reads (g).reads(a, b); + reads (g).reads(a, b) { (a, b) } ghost function g2(a: A, b: B): (A, B) { h(a, b) } ghost function h(a: A, b: B): (A, B) - reads g2.reads(a, b); + reads g2.reads(a, b) { (a, b) } } } - -module TwoStateFunctions { - method Apply(ghost f: int -> int, x: int) returns (ghost y: int) - ensures y == f(x) - { - y := f(x); - } - - class Cell { - var data: int - - twostate function F(x: int): int { - old(data) + x - } - } - - method Caller(c: Cell) - requires c.data == 9 - modifies c - { - c.data := c.data + 1; - label L: - assert c.F(11) == 20; - - var y := Apply(c.F, 11); - assert y == 20; - - assert c.F@L(11) == 21; - y := Apply(u => c.F@L(u), 11); - assert y == 21; - - assert c.F(100) == 0; // error - } -} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy.expect index e023742658d..4a32660e2e4 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/Naked.dfy.expect @@ -3,16 +3,11 @@ Naked.dfy(12,7): Error: cannot use naked function in recursive setting. Possible Naked.dfy(17,58): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(22,14): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(26,15): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. -Naked.dfy(30,50): Error: function precondition could not be proved -Naked.dfy(32,13): Related location: this proposition could not be proved Naked.dfy(32,14): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(38,10): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(42,11): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. -Naked.dfy(46,4): Error: cannot prove termination; try supplying a decreases clause Naked.dfy(49,10): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(56,12): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(60,13): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. Naked.dfy(67,12): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. -Naked.dfy(102,4): Error: assertion might not hold - -Dafny program verifier finished with 5 verified, 15 errors +12 resolution/type errors detected in Naked.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReads.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReads.dfy.expect index 4ce74cb012e..7f67349bb47 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReads.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReads.dfy.expect @@ -1,10 +1,10 @@ -ReadsReads.dfy(35,6): Error: function precondition could not be proved -ReadsReads.dfy(35,6): Error: insufficient reads clause to invoke function +ReadsReads.dfy(35,11): Error: function precondition could not be proved +ReadsReads.dfy(35,11): Error: insufficient reads clause to invoke function ReadsReads.dfy(40,4): Error: function precondition could not be proved ReadsReads.dfy(40,4): Error: insufficient reads clause to invoke function -ReadsReads.dfy(52,11): Error: function precondition could not be proved -ReadsReads.dfy(52,11): Error: insufficient reads clause to invoke function -ReadsReads.dfy(64,6): Error: insufficient reads clause to invoke function +ReadsReads.dfy(52,16): Error: function precondition could not be proved +ReadsReads.dfy(52,16): Error: insufficient reads clause to invoke function +ReadsReads.dfy(64,14): Error: insufficient reads clause to invoke function ReadsReads.dfy(93,18): Error: assertion might not hold ReadsReads.dfy(95,18): Error: assertion might not hold ReadsReads.dfy(105,18): Error: assertion might not hold diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReadsOnMethods.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReadsOnMethods.dfy.expect index 3fc0c239b47..9451b494e11 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReadsOnMethods.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ReadsReadsOnMethods.dfy.expect @@ -1,9 +1,9 @@ -ReadsReadsOnMethods.dfy(37,11): Error: function precondition could not be proved -ReadsReadsOnMethods.dfy(37,11): Error: insufficient reads clause to invoke function +ReadsReadsOnMethods.dfy(37,16): Error: function precondition could not be proved +ReadsReadsOnMethods.dfy(37,16): Error: insufficient reads clause to invoke function ReadsReadsOnMethods.dfy(43,9): Error: function precondition could not be proved ReadsReadsOnMethods.dfy(43,9): Error: insufficient reads clause to invoke function -ReadsReadsOnMethods.dfy(55,16): Error: function precondition could not be proved -ReadsReadsOnMethods.dfy(55,16): Error: insufficient reads clause to invoke function -ReadsReadsOnMethods.dfy(67,11): Error: insufficient reads clause to invoke function +ReadsReadsOnMethods.dfy(55,21): Error: function precondition could not be proved +ReadsReadsOnMethods.dfy(55,21): Error: insufficient reads clause to invoke function +ReadsReadsOnMethods.dfy(67,19): Error: insufficient reads clause to invoke function Dafny program verifier finished with 20 verified, 7 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ResolveError.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ResolveError.dfy.expect index e18c002572f..7379abb83e0 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ResolveError.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/hofs/ResolveError.dfy.expect @@ -5,9 +5,9 @@ ResolveError.dfy(32,12): Error: wrong number of arguments (got 2, but function t ResolveError.dfy(36,21): Error: wrong number of arguments (got 2, but function 'requires' expects 1: (x0: T0)) ResolveError.dfy(39,18): Error: wrong number of arguments (got 2, but function 'reads' expects 1: (x0: T0)) ResolveError.dfy(31,16): Error: arguments must have comparable types (got int and bool) -ResolveError.dfy(33,12): Error: incorrect argument type for function application parameter (expected int, found bool) -ResolveError.dfy(34,21): Error: incorrect argument type for function parameter 'x0' (expected int, found bool) -ResolveError.dfy(37,18): Error: incorrect argument type for function parameter 'x0' (expected int, found bool) +ResolveError.dfy(33,13): Error: incorrect argument type for function application parameter (expected int, found bool) +ResolveError.dfy(34,22): Error: incorrect argument type for function parameter 'x0' (expected int, found bool) +ResolveError.dfy(37,19): Error: incorrect argument type for function parameter 'x0' (expected int, found bool) ResolveError.dfy(35,25): Error: arguments must have comparable types (got bool and int) ResolveError.dfy(38,22): Error: arguments must have comparable types (got set and int) ResolveError.dfy(47,18): Error: Precondition must be boolean (got int) @@ -19,5 +19,5 @@ ResolveError.dfy(68,24): Error: unresolved identifier: _ ResolveError.dfy(86,6): Error: RHS (of type ((int, bool)) -> real) not assignable to LHS (of type (int, bool) -> real) ResolveError.dfy(101,6): Error: RHS (of type (()) -> real) not assignable to LHS (of type () -> real) ResolveError.dfy(102,6): Error: RHS (of type () -> real) not assignable to LHS (of type (()) -> real) -ResolveError.dfy(91,15): Error: incorrect argument type at index 0 for method in-parameter 'r' (expected int -> ?, found (int, bool) -> real) +ResolveError.dfy(91,16): Error: incorrect argument type at index 0 for method in-parameter 'r' (expected int -> ?, found (int, bool) -> real) 22 resolution/type errors detected in ResolveError.dfy diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/logger/ByProofRefactoring.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/logger/ByProofRefactoring.dfy.expect index 0c5d65f48ca..9bc12b98631 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/logger/ByProofRefactoring.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/logger/ByProofRefactoring.dfy.expect @@ -2,7 +2,7 @@ ByProofRefactoring.dfy(11,0): Info: Consider hiding this function, which is unus ByProofRefactoring.dfy(18,2): Info: This fact was only used to prove the precondition of the method call ByProofRefactoring.dfy(19,4). Consider moving it into a by-proof. ByProofRefactoring.dfy(31,2): Info: This fact was only used to prove the assertion ByProofRefactoring.dfy(32,3)-(32,13). Consider moving it into a by-proof. ByProofRefactoring.dfy(44,0): Info: Consider hiding this function, which is unused by the proof: P -ByProofRefactoring.dfy(43,11): Info: This requires clause was only used to prove the assertion ByProofRefactoring.dfy(45,3)-(45,13). Consider labelling it and revealing it in a by-proof. +ByProofRefactoring.dfy(43,12): Info: This requires clause was only used to prove the assertion ByProofRefactoring.dfy(45,3)-(45,13). Consider labelling it and revealing it in a by-proof. ByProofRefactoring.dfy(50,0): Info: Consider hiding this function, which is unused by the proof: P ByProofRefactoring.dfy(58,2): Info: This fact was only used to prove the assertion ByProofRefactoring.dfy(60,3)-(60,12). Consider moving it into a by-proof. diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/precondition-satisfied.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/precondition-satisfied.dfy.expect index d9523f61b87..e1677354d36 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/precondition-satisfied.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/precondition-satisfied.dfy.expect @@ -1,7 +1,7 @@ -precondition-satisfied.dfy(12,4): Error: function precondition could not be proved +precondition-satisfied.dfy(12,7): Error: function precondition could not be proved Asserted expression: b != 0 precondition-satisfied.dfy(5,15): Related location: this proposition could not be proved -precondition-satisfied.dfy(23,4): Error: divisor must be nonzero +precondition-satisfied.dfy(23,15): Error: divisor must be nonzero Asserted expression: b != 0 precondition-satisfied.dfy(16,72): Related location: this proposition could not be proved precondition-satisfied.dfy(29,4): Error: function precondition could not be proved diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/read-frame-subset.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/read-frame-subset.dfy.expect index 1c6c5d75bd8..433c7c55637 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/read-frame-subset.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/read-frame-subset.dfy.expect @@ -10,9 +10,9 @@ read-frame-subset.dfy(39,51): Error: insufficient reads clause to read array ele Asserted expression: s[0] == s[1] || s[0] in set a: array2 {:trigger a in s[2..]} | a in s[2..] read-frame-subset.dfy(54,2): Error: insufficient reads clause to invoke function Asserted expression: forall obj: object? | obj in lam.reads(s) :: obj == s[3] || obj in {s[4]} || obj in {s[5]} -read-frame-subset.dfy(72,2): Error: insufficient reads clause to invoke function +read-frame-subset.dfy(72,17): Error: insufficient reads clause to invoke function Asserted expression: (s[0] == s[3] || s[0] in {s[4]} || s[0] in {s[5]}) && (forall obj: C | obj in {s[1]} :: obj == s[3] || obj in {s[4]}) && forall obj: C | obj in {s[2]} :: obj == s[3] || obj in {s[5]} -read-frame-subset.dfy(81,33): Error: insufficient reads clause to invoke function +read-frame-subset.dfy(81,38): Error: insufficient reads clause to invoke function Asserted expression: (s[0] == s[3] || s[0] in {s[4]} || s[0] in {s[5]}) && (forall obj: C | obj in {s[1]} :: obj == s[3] || obj in {s[4]}) && forall obj: C | obj in {s[2]} :: obj == s[3] || obj in {s[5]} read-frame-subset.dfy(91,20): Error: insufficient reads clause to read state of 'unchanged' object Asserted expression: s[0] == s[3] || s[0] in {s[4]} || s[0] in {s[5]} diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-lower-bound.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-lower-bound.dfy.expect index b59657a0906..cfdac31f3f7 100755 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-lower-bound.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-lower-bound.dfy.expect @@ -1,4 +1,4 @@ -shift-lower-bound.dfy(5,6): Error: rotate amount must be non-negative +shift-lower-bound.dfy(5,16): Error: rotate amount must be non-negative Asserted expression: 0 <= -1 Dafny program verifier finished with 0 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-upper-bound.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-upper-bound.dfy.expect index fd55a173d16..6e181752b03 100755 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-upper-bound.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/proof-obligation-desc/shift-upper-bound.dfy.expect @@ -1,4 +1,4 @@ -shift-upper-bound.dfy(5,6): Error: rotate amount must not exceed the width of the result (2) +shift-upper-bound.dfy(5,16): Error: rotate amount must not exceed the width of the result (2) Asserted expression: 3 <= 2 Dafny program verifier finished with 0 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/traits/TraitOverride1.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/traits/TraitOverride1.dfy.expect index 7e26e87dc9f..6d5c968e8a8 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/traits/TraitOverride1.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/traits/TraitOverride1.dfy.expect @@ -1,6 +1,6 @@ TraitOverride1.dfy(200,9): Error: the method must provide an equal or more detailed postcondition than in its parent trait TraitOverride1.dfy(205,2): Error: a postcondition could not be proved on this return path -TraitOverride1.dfy(204,40): Related location: this is the postcondition that could not be proved +TraitOverride1.dfy(204,41): Related location: this is the postcondition that could not be proved TraitOverride1.dfy(188,32): Related location: this proposition could not be proved Dafny program verifier finished with 29 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.expect index 4f6393dcb36..95f24f8bd6e 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.expect @@ -4,25 +4,25 @@ InductionWithoutTriggers.dfy(46,24): Warning: Could not find a trigger for the i InductionWithoutTriggers.dfy(66,19): Warning: Could not find a trigger for the induction hypothesis. Without a trigger, this may cause brittle verification. Change or remove the {:induction} attribute to generate a different induction hypothesis, or add {:nowarn} to silence this warning. For more information, see the section quantifier instantiation rules in the reference manual. InductionWithoutTriggers.dfy(11,9): Error: assertion might not hold InductionWithoutTriggers.dfy(43,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(42,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(42,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(49,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(48,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(48,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(69,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(68,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(68,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(83,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(82,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(82,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(100,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(99,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(99,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(124,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(123,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(123,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(124,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(123,18): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(35,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(123,19): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(35,28): Related location: this proposition could not be proved Dafny program verifier finished with 17 verified, 8 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.refresh.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.refresh.expect index 566c53271f8..fe9d16c0bd7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.refresh.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/InductionWithoutTriggers.dfy.refresh.expect @@ -4,25 +4,25 @@ InductionWithoutTriggers.dfy(46,24): Warning: Could not find a trigger for the i InductionWithoutTriggers.dfy(66,19): Warning: Could not find a trigger for the induction hypothesis. Without a trigger, this may cause brittle verification. Change or remove the {:induction} attribute to generate a different induction hypothesis, or add {:nowarn} to silence this warning. For more information, see the section quantifier instantiation rules in the reference manual. InductionWithoutTriggers.dfy(11,9): Error: assertion might not hold InductionWithoutTriggers.dfy(43,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(42,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(42,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(49,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(48,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(48,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(69,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(68,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(68,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(83,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(82,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(82,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(100,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(99,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(99,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(124,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(123,10): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(31,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(123,11): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(31,28): Related location: this proposition could not be proved InductionWithoutTriggers.dfy(124,0): Error: a postcondition could not be proved on this return path -InductionWithoutTriggers.dfy(123,18): Related location: this is the postcondition that could not be proved -InductionWithoutTriggers.dfy(35,27): Related location: this proposition could not be proved +InductionWithoutTriggers.dfy(123,19): Related location: this is the postcondition that could not be proved +InductionWithoutTriggers.dfy(35,28): Related location: this proposition could not be proved Dafny program verifier finished with 12 verified, 8 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/induction-triggers.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/induction-triggers.dfy.expect index 4c0f5c82886..ad56c7793da 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/induction-triggers.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/induction-triggers.dfy.expect @@ -16,13 +16,13 @@ induction-triggers.dfy(39,44): Info: {:induction n} induction-triggers.dfy(42,21): Warning: Could not find a trigger for the induction hypothesis. Without a trigger, this may cause brittle verification. Change or remove the {:induction} attribute to generate a different induction hypothesis, or add {:nowarn} to silence this warning. For more information, see the section quantifier instantiation rules in the reference manual. induction-triggers.dfy(19,2): Info: ensures f(ih_n) induction-triggers.dfy(13,58): Error: a postcondition could not be proved on this return path -induction-triggers.dfy(13,53): Related location: this is the postcondition that could not be proved -induction-triggers.dfy(3,47): Related location: this proposition could not be proved +induction-triggers.dfy(13,54): Related location: this is the postcondition that could not be proved +induction-triggers.dfy(3,48): Related location: this proposition could not be proved induction-triggers.dfy(25,42): Error: a postcondition could not be proved on this return path -induction-triggers.dfy(25,33): Related location: this is the postcondition that could not be proved -induction-triggers.dfy(3,47): Related location: this proposition could not be proved +induction-triggers.dfy(25,34): Related location: this is the postcondition that could not be proved +induction-triggers.dfy(3,48): Related location: this proposition could not be proved induction-triggers.dfy(39,80): Error: a postcondition could not be proved on this return path -induction-triggers.dfy(39,71): Related location: this is the postcondition that could not be proved -induction-triggers.dfy(3,47): Related location: this proposition could not be proved +induction-triggers.dfy(39,72): Related location: this is the postcondition that could not be proved +induction-triggers.dfy(3,48): Related location: this proposition could not be proved Dafny program verifier finished with 17 verified, 3 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-recovers-expressivity.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-recovers-expressivity.dfy.expect index b06c081fc7a..033ab546826 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-recovers-expressivity.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-recovers-expressivity.dfy.expect @@ -25,6 +25,6 @@ splitting-triggers-recovers-expressivity.dfy(58,11): Info: Selected triggers: splitting-triggers-recovers-expressivity.dfy(12,63): Error: a postcondition could not be proved on this return path splitting-triggers-recovers-expressivity.dfy(12,10): Related location: this is the postcondition that could not be proved splitting-triggers-recovers-expressivity.dfy(19,15): Error: a postcondition could not be proved on this return path -splitting-triggers-recovers-expressivity.dfy(19,10): Related location: this is the postcondition that could not be proved +splitting-triggers-recovers-expressivity.dfy(19,11): Related location: this is the postcondition that could not be proved Dafny program verifier finished with 5 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-yields-better-precondition-related-errors.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-yields-better-precondition-related-errors.dfy.expect index 98bb2797b8d..af17b521378 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-yields-better-precondition-related-errors.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/splitting-triggers-yields-better-precondition-related-errors.dfy.expect @@ -2,7 +2,7 @@ splitting-triggers-yields-better-precondition-related-errors.dfy(7,11): Warning: splitting-triggers-yields-better-precondition-related-errors.dfy(15,11): Warning: Could not find a trigger for this quantifier. Without a trigger, the quantifier may cause brittle verification. To silence this warning, add an explicit trigger using the {:trigger} attribute. For more information, see the section quantifier instantiation rules in the reference manual. splitting-triggers-yields-better-precondition-related-errors.dfy(11,3): Error: a precondition for this call could not be proved splitting-triggers-yields-better-precondition-related-errors.dfy(7,11): Related location: this is the precondition that could not be proved -splitting-triggers-yields-better-precondition-related-errors.dfy(20,2): Error: function precondition could not be proved +splitting-triggers-yields-better-precondition-related-errors.dfy(20,4): Error: function precondition could not be proved splitting-triggers-yields-better-precondition-related-errors.dfy(15,11): Related location: this proposition could not be proved Dafny program verifier finished with 0 verified, 2 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/triggers-prevent-some-inlining.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/triggers-prevent-some-inlining.dfy.expect index 89c40cc572a..89d7daeaccb 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/triggers-prevent-some-inlining.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/triggers/triggers-prevent-some-inlining.dfy.expect @@ -1,7 +1,7 @@ triggers-prevent-some-inlining.dfy(17,2): Info: Selected triggers: {sum(a, b)} -triggers-prevent-some-inlining.dfy(24,10): Info: Some instances of this call are not inlined. -triggers-prevent-some-inlining.dfy(25,10): Info: Some instances of this call are not inlined. -triggers-prevent-some-inlining.dfy(24,10): Info: Some instances of this call are not inlined. -triggers-prevent-some-inlining.dfy(25,10): Info: Some instances of this call are not inlined. +triggers-prevent-some-inlining.dfy(24,20): Info: Some instances of this call are not inlined. +triggers-prevent-some-inlining.dfy(25,20): Info: Some instances of this call are not inlined. +triggers-prevent-some-inlining.dfy(24,20): Info: Some instances of this call are not inlined. +triggers-prevent-some-inlining.dfy(25,20): Info: Some instances of this call are not inlined. Dafny program verifier finished with 1 verified, 0 errors diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/unicodecharsFalse/expectations/ExpectAndExceptions.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/unicodecharsFalse/expectations/ExpectAndExceptions.dfy.expect index 18fac6636f6..4ac29e24bf2 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/unicodecharsFalse/expectations/ExpectAndExceptions.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/unicodecharsFalse/expectations/ExpectAndExceptions.dfy.expect @@ -1,15 +1,15 @@ Dafny program verifier finished with 0 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure(Kaboom!) +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure(Kaboom!) Dafny program verifier finished with 0 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure(Kaboom!) +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure(Kaboom!) Dafny program verifier finished with 0 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure(Kaboom!) +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure(Kaboom!) Dafny program verifier finished with 0 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure(Kaboom!) +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure(Kaboom!) Dafny program verifier finished with 0 verified, 0 errors -[Program halted] ExpectAndExceptions.dfy(17,22): NatOutcome.NatFailure(Kaboom!) +[Program halted] ExpectAndExceptions.dfy(19,22): NatOutcome.NatFailure(Kaboom!) diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/verification/constructorFresh.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/verification/constructorFresh.dfy.expect index 695e93af002..6bdd3dea757 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/verification/constructorFresh.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/verification/constructorFresh.dfy.expect @@ -1,4 +1,4 @@ -constructorFresh.dfy(14,12): Error: function precondition could not be proved +constructorFresh.dfy(14,15): Error: function precondition could not be proved constructorFresh.dfy(21,11): Related location: this proposition could not be proved Dafny program verifier finished with 3 verified, 1 error diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy index 6b7a819da2b..c8b94e8f4cd 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy @@ -1,4 +1,4 @@ -// RUN: %exits-with 4 %verify --show-hints "%s" > "%t" +// RUN: %exits-with 2 %verify --show-hints "%s" > "%t" // RUN: %diff "%s.expect" "%t" ghost function fact(n: int): int diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy.expect index 7517f0bf9b2..87ee58bf218 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy.expect +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/wishlist/naked-function-in-recursive-setting.dfy.expect @@ -1,5 +1,3 @@ naked-function-in-recursive-setting.dfy(4,15): Info: auto-accumulator tail recursive -naked-function-in-recursive-setting.dfy(4,15): Info: decreases n naked-function-in-recursive-setting.dfy(10,11): Error: cannot use naked function in recursive setting. Possible solution: eta expansion. - -Dafny program verifier finished with 0 verified, 1 error +1 resolution/type errors detected in naked-function-in-recursive-setting.dfy diff --git a/Source/Scripts/Program.cs b/Source/Scripts/Program.cs new file mode 100644 index 00000000000..a680ca8b4d4 --- /dev/null +++ b/Source/Scripts/Program.cs @@ -0,0 +1,13 @@ +using System.CommandLine; +using System.CommandLine.Builder; +using System.CommandLine.Parsing; + +namespace IntegrationTests; + +public class Program { + public static Task Main(string[] args) { + var root = new RootCommand("Various scripts that help develop Dafny"); + root.AddCommand(UpdateTests.GetCommand()); + return root.InvokeAsync(args); + } +} \ No newline at end of file diff --git a/Source/Scripts/README.md b/Source/Scripts/README.md new file mode 100644 index 00000000000..7aad6575c3a --- /dev/null +++ b/Source/Scripts/README.md @@ -0,0 +1,2 @@ +Contains various scripts for developing Dafny. New scripts can be added by adding System.CommandLine commands. +You can invoke these scripts using `dotnet run --project Source/Scripts ` \ No newline at end of file diff --git a/Source/Scripts/Scripts.csproj b/Source/Scripts/Scripts.csproj new file mode 100644 index 00000000000..bc3f09d58c3 --- /dev/null +++ b/Source/Scripts/Scripts.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/Source/Scripts/UpdateTests.cs b/Source/Scripts/UpdateTests.cs new file mode 100644 index 00000000000..70d0c11c81e --- /dev/null +++ b/Source/Scripts/UpdateTests.cs @@ -0,0 +1,76 @@ +using System.CommandLine; +using System.Diagnostics; +using System.IO.Compression; +using System.Text.RegularExpressions; + +namespace IntegrationTests; + +public class UpdateTests { + + public static Command GetCommand() { + var result = new Command("update-expect-files", "Use the 'log archive' file downloaded from CI to update the integration tests"); + var fileArgument = new Argument(); + result.AddArgument(fileArgument); + result.SetHandler(file => Handle(file.Name), fileArgument); + return result; + } + + public static async Task Handle(string file) { + Environment.SetEnvironmentVariable("DAFNY_INTEGRATION_TESTS_UPDATE_EXPECT_FILE", "true"); + + await using var zipFile = new FileStream(file, FileMode.Open); + using var archive = new ZipArchive(zipFile, ZipArchiveMode.Read); + var integrationFiles = archive.Entries.Where(entry => { + var fileName = entry.Name; + var regex = new Regex(@"\d+_integration-tests"); + var match = regex.Match(fileName); + return match.Success; + }); + var failedTestNames = integrationFiles.SelectMany(entry => { + var content = new StreamReader(entry.Open()).ReadToEnd(); + var regex = new Regex(@"Failed (.*) \["); + var matches = regex.Matches(content); + return matches.Select(m => m.Groups[1].Value); + }).ToList(); + + string? repoRoot = Directory.GetCurrentDirectory(); + while (repoRoot != null) { + var currentFiles = Directory.GetDirectories(repoRoot); + if (currentFiles.Any(f => Path.GetFileName(f) == ".git")) { + break; + } + + repoRoot = Path.GetDirectoryName(repoRoot)!; + } + + Console.WriteLine($"Tests to update:\n{string.Join("\n", failedTestNames)}\n"); + + var needsBuilds = true; + for (var index = 0; index < failedTestNames.Count; index++) { + var failedTestName = failedTestNames[index]; + Console.WriteLine($"Updating test {index + 1}/{failedTestNames.Count} '{failedTestName}'"); + var integrationTestsDir = $"{repoRoot}/Source/IntegrationTests"; + var arguments = new List { "test", integrationTestsDir, $"--filter=DisplayName~{failedTestName}" }; + if (!needsBuilds) { + arguments.Add("--no-build"); + } + needsBuilds = false; + var process = Process.Start( + new ProcessStartInfo("dotnet", arguments) { + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = repoRoot, + })!; + var outputTask = process.StandardOutput.ReadToEndAsync(); + var errorTask = process.StandardError.ReadToEndAsync(); + await process.WaitForExitAsync(); + var output = await outputTask; + var error = await errorTask; + var exitCode = process.ExitCode; + if (exitCode != 0) { + await Console.Error.WriteLineAsync($"Non-zero exit code. Output:\n{output}\nError:{error}"); + throw new Exception("Non-zero exit code"); + } + } + } +} \ No newline at end of file diff --git a/customBoogie.patch b/customBoogie.patch index 9887a911223..d1ce3d699e2 100644 --- a/customBoogie.patch +++ b/customBoogie.patch @@ -4,7 +4,7 @@ index 426b132e2..18db4aebb 100644 +++ b/Source/Dafny.sln @@ -43,6 +43,32 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoExtern.Test", "AutoExte EndProject - Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DafnyCore.Test", "DafnyCore.Test\DafnyCore.Test.csproj", "{33C29F26-A27B-474D-B436-83EA615B09FC}" + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Scripts", "Scripts\Scripts.csproj", "{3FAB051A-1745-497B-B4C0-D49194BB5D32}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boogie", "Boogie", "{60332269-9C5D-465E-8582-01F9B738BD90}" +EndProject diff --git a/docs/DafnyRef/Statements.8b.expect b/docs/DafnyRef/Statements.8b.expect index 7e599dfb192..0732822b503 100644 --- a/docs/DafnyRef/Statements.8b.expect +++ b/docs/DafnyRef/Statements.8b.expect @@ -1,4 +1,4 @@ -text.dfy(6,12): Error: function precondition could not be proved +text.dfy(6,13): Error: function precondition could not be proved text.dfy(3,30): Related location: this proposition could not be proved Dafny program verifier finished with 8 verified, 1 error diff --git a/docs/DafnyRef/Topics.3.expect b/docs/DafnyRef/Topics.3.expect index a5f9b7e52ef..66c482d6870 100644 --- a/docs/DafnyRef/Topics.3.expect +++ b/docs/DafnyRef/Topics.3.expect @@ -1,3 +1,3 @@ text.dfy(6,10): Error: the type of this variable is underspecified -text.dfy(6,15): Error: type parameter 'T' (inferred to be '?') in the function call to 'EmptySet' could not be determined +text.dfy(6,23): Error: type parameter 'T' (inferred to be '?') in the function call to 'EmptySet' could not be determined 2 resolution/type errors detected in text.dfy diff --git a/docs/DafnyRef/Types.20.expect b/docs/DafnyRef/Types.20.expect index b80b729c5fc..df1d037df0b 100644 --- a/docs/DafnyRef/Types.20.expect +++ b/docs/DafnyRef/Types.20.expect @@ -1,5 +1,5 @@ text.dfy(26,0): Error: a postcondition could not be proved on this return path -text.dfy(25,10): Related location: this is the postcondition that could not be proved +text.dfy(25,15): Related location: this is the postcondition that could not be proved text.dfy(10,9): Related location: this proposition could not be proved Dafny program verifier finished with 1 verified, 1 error diff --git a/docs/DafnyRef/UserGuide.md b/docs/DafnyRef/UserGuide.md index 578b63c6924..8fd4ce1c5dc 100644 --- a/docs/DafnyRef/UserGuide.md +++ b/docs/DafnyRef/UserGuide.md @@ -2769,7 +2769,7 @@ The following options are also commonly used: but a large positive number reports more errors per run * `--verification-time-limit:` (was `-timeLimit:`) - limits - the number of seconds spent trying to verify each procedure. + the number of seconds spent trying to verify each assertion batch. ### 13.9.11. Controlling test generation {#sec-controlling-test-gen} diff --git a/docs/HowToFAQ/Errors-Resolver2.md b/docs/HowToFAQ/Errors-Resolver2.md index 8fd0c832ac0..ae804063a4c 100644 --- a/docs/HowToFAQ/Errors-Resolver2.md +++ b/docs/HowToFAQ/Errors-Resolver2.md @@ -168,7 +168,7 @@ and optimizing tail-recursion opportunities in mutually recursive functions. ```dafny function {:tailrecursion} f(n: nat): nat { - if n == 0 then n else var ff := f; ff(n-1) + if n == 0 then n else var r := f(n-1); r } ``` diff --git a/docs/dev/news/6025.fix b/docs/dev/news/6025.fix new file mode 100644 index 00000000000..f861d68ac82 --- /dev/null +++ b/docs/dev/news/6025.fix @@ -0,0 +1 @@ +The code action for assertion no longer suggests asserting the same assertion. \ No newline at end of file diff --git a/docs/dev/news/6050.fix b/docs/dev/news/6050.fix new file mode 100644 index 00000000000..c9e1028c8d6 --- /dev/null +++ b/docs/dev/news/6050.fix @@ -0,0 +1 @@ +Fix a bug that caused a crash when translating by blocks \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 1799d660c3d..5ed73cbf3f0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -31,6 +31,7 @@

Quick Links

  • Installation (or a VSCode plugin for Dafny)
  • +
  • Zulip channel to ask questions about Dafny
  • Dafny Reference Manual and User Guide
  • Dafny Resources for Users
  • Dafny GitHub project (for developers of the Dafny tools themselves)
  • diff --git a/docs/news/fix.6006 b/docs/news/6006.fix similarity index 100% rename from docs/news/fix.6006 rename to docs/news/6006.fix diff --git a/docs/news/6028.feat b/docs/news/6028.feat new file mode 100644 index 00000000000..2bfb7957467 --- /dev/null +++ b/docs/news/6028.feat @@ -0,0 +1 @@ +Change the default value for --verification-time-limit to 30 seconds instead of 0 (no limit) \ No newline at end of file diff --git a/docs/news/fix.3809 b/docs/news/fix.3809 new file mode 100644 index 00000000000..177fb99de1b --- /dev/null +++ b/docs/news/fix.3809 @@ -0,0 +1 @@ +Fix C#, Java and Go generated code when a datatype contains a method named 'Default' diff --git a/docs/news/fix.5746 b/docs/news/fix.5746 new file mode 100644 index 00000000000..19e1b00b370 --- /dev/null +++ b/docs/news/fix.5746 @@ -0,0 +1 @@ +Fix C# generated code when a module contains a type with the same name diff --git a/docs/news/fix.6014 b/docs/news/fix.6014 new file mode 100644 index 00000000000..614d71f3329 --- /dev/null +++ b/docs/news/fix.6014 @@ -0,0 +1 @@ +Fix Java generated code when a module contains a type with the same name diff --git a/script.sh b/script.sh new file mode 100755 index 00000000000..523d8653e16 --- /dev/null +++ b/script.sh @@ -0,0 +1 @@ +dotnet run --project Source/Scripts/Scripts.csproj -- "$@" \ No newline at end of file