From eb2d95b9e6a3904bc38385e482ddb6dca7b3f5ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Mayer?= Date: Wed, 26 Jun 2024 03:34:13 -0500 Subject: [PATCH] Fix: Compiled disjunctive nested pattern matching no longer crashing (#5574) This PR fixes #5572 I added the corresponding test. By submitting this pull request, I confirm that my contribution is made under the terms of the [MIT license](https://github.com/dafny-lang/dafny/blob/master/LICENSE.txt). --------- Co-authored-by: Remy Willems --- ...afnyToRustCompilerCoverage_RASTCoverage.cs | 212 +- .../Conditional/Patterns/IdPattern.cs | 6 +- .../SinglePassCodeGenerator.Statement.cs | 12 +- .../GeneratedFromDafny/DAST_Format.cs | 10 +- Source/DafnyCore/GeneratedFromDafny/DCOMP.cs | 4544 ++++++++--------- Source/DafnyCore/GeneratedFromDafny/RAST.cs | 678 ++- .../LitTest/git-issues/git-issue-5572.dfy | 14 + .../git-issues/git-issue-5572.dfy.expect | 1 + docs/dev/news/5572.fix | 1 + 9 files changed, 2714 insertions(+), 2764 deletions(-) create mode 100644 Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy create mode 100644 Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy.expect create mode 100644 docs/dev/news/5572.fix diff --git a/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs b/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs index 0354b407e0f..2a7e625adff 100644 --- a/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs +++ b/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs @@ -24,120 +24,120 @@ public static RAST._IExpr DafnyIntLiteral(Dafny.ISequence s) { } public static void TestOptimizeToString() { - RAST._IExpr _1016_x; - _1016_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); - RAST._IExpr _1017_y; - _1017_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), RAST.Expr.create_Call(RAST.Expr.create_Select(_1016_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements()), DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1016_x, DAST.Format.UnaryOpFormat.create_NoFormat()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), RAST.Expr.create_Call(RAST.Expr.create_Select(_1016_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements(_1017_y)), DAST.Format.UnaryOpFormat.create_NoFormat())); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1016_x, _1017_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _1016_x, _1017_y, DAST.Format.BinaryOpFormat.create_NoFormat()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1016_x, _1017_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _1016_x, _1017_y, DAST.Format.BinaryOpFormat.create_NoFormat()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1016_x, _1017_y, DAST.Format.BinaryOpFormat.create_ReverseFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1017_y, _1016_x, DAST.Format.BinaryOpFormat.create_NoFormat()))); + RAST._IExpr _984_x; + _984_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); + RAST._IExpr _985_y; + _985_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), RAST.Expr.create_Call(RAST.Expr.create_Select(_984_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements()), DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _984_x, DAST.Format.UnaryOpFormat.create_NoFormat()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), RAST.Expr.create_Call(RAST.Expr.create_Select(_984_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements(_985_y)), DAST.Format.UnaryOpFormat.create_NoFormat())); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _984_x, _985_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _984_x, _985_y, DAST.Format.BinaryOpFormat.create_NoFormat()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _984_x, _985_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _984_x, _985_y, DAST.Format.BinaryOpFormat.create_NoFormat()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _984_x, _985_y, DAST.Format.BinaryOpFormat.create_ReverseFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _985_y, _984_x, DAST.Format.BinaryOpFormat.create_NoFormat()))); DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_I128(), DafnyToRustCompilerCoverage.RASTCoverage.__default.DafnyIntLiteral(Dafny.Sequence.UnicodeFromString("1")))).Optimize(), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("1")))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_I128(), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("z"), _1017_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))).Optimize(), RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_Some(_1017_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("w"), _1017_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(_1016_x); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(_1016_x, _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Match(_1016_x, Dafny.Sequence.FromElements()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_StructBuild(_1016_x, Dafny.Sequence.FromElements()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Tuple(Dafny.Sequence.FromElements()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1016_x, DAST.Format.UnaryOpFormat.create_NoFormat()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _1016_x, _1016_x, DAST.Format.BinaryOpFormat.create_NoFormat()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_TypeAscription(_1016_x, RAST.Type.create_I128()), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("1")), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("2"), true, false), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("3"), false, true), _1016_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("z"), _1017_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))).Optimize(), RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_Some(_1017_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); - Dafny.ISequence _1018_coverageExpression; - _1018_coverageExpression = Dafny.Sequence.FromElements(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("abc")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Match(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))))), RAST.Expr.create_StmtExpr(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("panic!()")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("a"))), RAST.Expr.create_Block(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("abc"))), RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("dummy")), Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))))), RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("dummy")), Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))), RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo2"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))))), RAST.Expr.create_Tuple(Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("-"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), DAST.Format.UnaryOpFormat.create_NoFormat()), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")), DAST.Format.BinaryOpFormat.create_NoFormat()), RAST.Expr.create_TypeAscription(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Type.create_I128()), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("322")), RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("abc"), true, false), RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("abc"), false, true), RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_IfExpr(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_For(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Break(Std.Wrappers.Option>.create_None()), RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("l"))), RAST.Expr.create_Continue(Std.Wrappers.Option>.create_None()), RAST.Expr.create_Continue(Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("l"))), RAST.Expr.create_Return(Std.Wrappers.Option.create_None()), RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.Expr.create_Call(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements()), RAST.Expr.create_Call(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")))), RAST.Expr.create_CallType(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.Type.create_I128(), RAST.Type.create_U32())), RAST.Expr.create_Select(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.UnicodeFromString("abc")), RAST.Expr.create_MemberSelect(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.UnicodeFromString("abc"))); - BigInteger _hi4 = new BigInteger((_1018_coverageExpression).Count); - for (BigInteger _1019_i = BigInteger.Zero; _1019_i < _hi4; _1019_i++) { - RAST._IExpr _1020_c; - _1020_c = (_1018_coverageExpression).Select(_1019_i); - RAST._IPrintingInfo _1021___v0; - _1021___v0 = (_1020_c).printingInfo; - RAST._IExpr _1022___v1; - _1022___v1 = (_1020_c).Optimize(); - Dafny.IMap> _1023___v2; - _1023___v2 = Dafny.Map>.FromElements(new Dafny.Pair>(_1020_c, (_1020_c)._ToString(Dafny.Sequence.UnicodeFromString("")))); - RAST._IExpr _1024___v3; - _1024___v3 = (RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), _1020_c)).Optimize(); - RAST._IExpr _1025___v4; - _1025___v4 = (RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("abc"), _1020_c), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString(""))))).Optimize(); - RAST._IExpr _1026___v5; - _1026___v5 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1020_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); - RAST._IExpr _1027___v6; - _1027___v6 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1020_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); - RAST._IExpr _1028___v7; - _1028___v7 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), _1020_c)).Optimize(); - RAST._IExpr _1029___v8; - _1029___v8 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(_1020_c, Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1030___v9; - _1030___v9 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(_1020_c, Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1031___v10; - _1031___v10 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(_1020_c, Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1032___v11; - _1032___v11 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("")), Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements(_1020_c)))).Optimize(); - Std.Wrappers._IOption> _1033___v12; - _1033___v12 = (_1020_c).RightMostIdentifier(); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_I128(), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("z"), _985_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))).Optimize(), RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_Some(_985_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("w"), _985_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(_984_x); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(_984_x, _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Match(_984_x, Dafny.Sequence.FromElements()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_StructBuild(_984_x, Dafny.Sequence.FromElements()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Tuple(Dafny.Sequence.FromElements()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _984_x, DAST.Format.UnaryOpFormat.create_NoFormat()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _984_x, _984_x, DAST.Format.BinaryOpFormat.create_NoFormat()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_TypeAscription(_984_x, RAST.Type.create_I128()), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("1")), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("2"), true, false), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("3"), false, true), _984_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("z"), _985_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))).Optimize(), RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("z"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_Some(_985_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); + Dafny.ISequence _986_coverageExpression; + _986_coverageExpression = Dafny.Sequence.FromElements(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("abc")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Match(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))))), RAST.Expr.create_StmtExpr(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("panic!()")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("a"))), RAST.Expr.create_Block(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("abc"))), RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("dummy")), Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))))), RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("dummy")), Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))), RAST.AssignIdentifier.create(Dafny.Sequence.UnicodeFromString("foo2"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("bar"))))), RAST.Expr.create_Tuple(Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("-"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), DAST.Format.UnaryOpFormat.create_NoFormat()), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")), DAST.Format.BinaryOpFormat.create_NoFormat()), RAST.Expr.create_TypeAscription(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Type.create_I128()), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("322")), RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("abc"), true, false), RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("abc"), false, true), RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_IfExpr(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_For(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("abc"), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x"))), RAST.Expr.create_Break(Std.Wrappers.Option>.create_None()), RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("l"))), RAST.Expr.create_Continue(Std.Wrappers.Option>.create_None()), RAST.Expr.create_Continue(Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("l"))), RAST.Expr.create_Return(Std.Wrappers.Option.create_None()), RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")))), RAST.Expr.create_Call(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements()), RAST.Expr.create_Call(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")))), RAST.Expr.create_CallType(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.FromElements(RAST.Type.create_I128(), RAST.Type.create_U32())), RAST.Expr.create_Select(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.UnicodeFromString("abc")), RAST.Expr.create_MemberSelect(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")), Dafny.Sequence.UnicodeFromString("abc"))); + BigInteger _hi4 = new BigInteger((_986_coverageExpression).Count); + for (BigInteger _987_i = BigInteger.Zero; _987_i < _hi4; _987_i++) { + RAST._IExpr _988_c; + _988_c = (_986_coverageExpression).Select(_987_i); + RAST._IPrintingInfo _989___v0; + _989___v0 = (_988_c).printingInfo; + RAST._IExpr _990___v1; + _990___v1 = (_988_c).Optimize(); + Dafny.IMap> _991___v2; + _991___v2 = Dafny.Map>.FromElements(new Dafny.Pair>(_988_c, (_988_c)._ToString(Dafny.Sequence.UnicodeFromString("")))); + RAST._IExpr _992___v3; + _992___v3 = (RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), _988_c)).Optimize(); + RAST._IExpr _993___v4; + _993___v4 = (RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("abc"), Std.Wrappers.Option.create_Some(RAST.Type.create_I128()), Std.Wrappers.Option.create_None()), RAST.Expr.create_StmtExpr(RAST.__default.AssignVar(Dafny.Sequence.UnicodeFromString("abc"), _988_c), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString(""))))).Optimize(); + RAST._IExpr _994___v5; + _994___v5 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _988_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); + RAST._IExpr _995___v6; + _995___v6 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _988_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); + RAST._IExpr _996___v7; + _996___v7 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), _988_c)).Optimize(); + RAST._IExpr _997___v8; + _997___v8 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(_988_c, Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _998___v9; + _998___v9 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(_988_c, Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _999___v10; + _999___v10 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(_988_c, Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _1000___v11; + _1000___v11 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("")), Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements(_988_c)))).Optimize(); + Std.Wrappers._IOption> _1001___v12; + _1001___v12 = (_988_c).RightMostIdentifier(); } } public static void TestPrintingInfo() { - RAST._IExpr _1034_x; - _1034_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); - RAST._IExpr _1035_y; - _1035_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); - DAST.Format._IBinaryOpFormat _1036_bnf; - _1036_bnf = DAST.Format.BinaryOpFormat.create_NoFormat(); + RAST._IExpr _1002_x; + _1002_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); + RAST._IExpr _1003_y; + _1003_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); + DAST.Format._IBinaryOpFormat _1004_bnf; + _1004_bnf = DAST.Format.BinaryOpFormat.create_NoFormat(); DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(((RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("x"))).printingInfo).is_UnknownPrecedence); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((_1034_x).printingInfo, RAST.PrintingInfo.create_Precedence(BigInteger.One))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((_1002_x).printingInfo, RAST.PrintingInfo.create_Precedence(BigInteger.One))); DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("3"))).printingInfo, RAST.PrintingInfo.create_Precedence(BigInteger.One))); DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("abc"), true, false)).printingInfo, RAST.PrintingInfo.create_Precedence(BigInteger.One))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("?"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_SuffixPrecedence(new BigInteger(5)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("-"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("*"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&mut"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!!"), _1034_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_UnknownPrecedence())); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Select(_1034_x, Dafny.Sequence.UnicodeFromString("name"))).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_MemberSelect(_1034_x, Dafny.Sequence.UnicodeFromString("name"))).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Call(_1034_x, Dafny.Sequence.FromElements())).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_TypeAscription(_1034_x, RAST.Type.create_I128())).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(10), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("*"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("/"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("%"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(30), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("-"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(30), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<<"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(40), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">>"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(40), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(50), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("^"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(60), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("|"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(70), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(90), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("||"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(100), RAST.Associativity.create_LeftToRight()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(".."), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("..="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RequiresParentheses()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("-="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("*="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("/="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("%="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("|="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("^="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<<="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">>="), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("?!?"), _1034_x, _1035_y, _1036_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(BigInteger.Zero, RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("?"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_SuffixPrecedence(new BigInteger(5)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("-"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("*"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&mut"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_Precedence(new BigInteger(6)))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!!"), _1002_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_UnknownPrecedence())); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Select(_1002_x, Dafny.Sequence.UnicodeFromString("name"))).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_MemberSelect(_1002_x, Dafny.Sequence.UnicodeFromString("name"))).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Call(_1002_x, Dafny.Sequence.FromElements())).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_TypeAscription(_1002_x, RAST.Type.create_I128())).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(10), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("*"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("/"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("%"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(30), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("-"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(30), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<<"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(40), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">>"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(40), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(50), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("^"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(60), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("|"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(70), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(90), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("||"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(100), RAST.Associativity.create_LeftToRight()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(".."), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("..="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RequiresParentheses()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("+="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("-="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("*="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("/="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("%="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("|="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("^="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<<="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">>="), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("?!?"), _1002_x, _1003_y, _1004_bnf)).printingInfo, RAST.PrintingInfo.create_PrecedenceAssociativity(BigInteger.Zero, RAST.Associativity.create_RequiresParentheses()))); DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Break(Std.Wrappers.Option>.create_None())).printingInfo, RAST.PrintingInfo.create_UnknownPrecedence())); } public static void TestExpr() diff --git a/Source/DafnyCore/AST/Expressions/Conditional/Patterns/IdPattern.cs b/Source/DafnyCore/AST/Expressions/Conditional/Patterns/IdPattern.cs index 48b376f7a5b..283a20da925 100644 --- a/Source/DafnyCore/AST/Expressions/Conditional/Patterns/IdPattern.cs +++ b/Source/DafnyCore/AST/Expressions/Conditional/Patterns/IdPattern.cs @@ -22,10 +22,12 @@ public class IdPattern : ExtendedPattern, IHasReferences { public DatatypeCtor Ctor; public bool IsWildcardPattern => - Arguments == null && Id.StartsWith("_"); + Arguments == null && Id.StartsWith(WildcardString); public bool IsWildcardExact => - Arguments == null && Id == "_"; + Arguments == null && Id == WildcardString; + + public const string WildcardString = "_"; public void MakeAConstructor() { this.Arguments = new List(); diff --git a/Source/DafnyCore/Backends/SinglePassCodeGenerator/SinglePassCodeGenerator.Statement.cs b/Source/DafnyCore/Backends/SinglePassCodeGenerator/SinglePassCodeGenerator.Statement.cs index d6f5f384f6a..d4feaecdeac 100644 --- a/Source/DafnyCore/Backends/SinglePassCodeGenerator/SinglePassCodeGenerator.Statement.cs +++ b/Source/DafnyCore/Backends/SinglePassCodeGenerator/SinglePassCodeGenerator.Statement.cs @@ -594,6 +594,10 @@ private ConcreteSyntaxTree EmitNestedMatchCaseConditions(string sourceName, writer = thenWriter; } else if (pattern is IdPattern idPattern) { if (idPattern.BoundVar != null) { + if (idPattern.BoundVar.Tok.val.StartsWith(IdPattern.WildcardString)) { + return writer; + } + var boundVar = idPattern.BoundVar; var valueWriter = DeclareLocalVar(IdName(boundVar), boundVar.Type, idPattern.Tok, writer); valueWriter.Write(sourceName); @@ -651,9 +655,11 @@ private ConcreteSyntaxTree EmitNestedMatchStmtCaseConstructor(string sourceName, var childPattern = idPattern.Arguments[index]; if (childPattern is IdPattern { BoundVar: not null } childIdPattern) { var boundVar = childIdPattern.BoundVar; - newSourceName = IdName(boundVar); - var valueWriter = DeclareLocalVar(newSourceName, boundVar.Type, idPattern.Tok, result); - valueWriter.Append(destructor); + if (!childIdPattern.BoundVar.Name.StartsWith(IdPattern.WildcardString)) { + newSourceName = IdName(boundVar); + var valueWriter = DeclareLocalVar(newSourceName, boundVar.Type, idPattern.Tok, result); + valueWriter.Append(destructor); + } } else { newSourceName = ProtectedFreshId(arg.CompileName); var valueWriter = DeclareLocalVar(newSourceName, type, idPattern.Tok, result); diff --git a/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs b/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs index eaff31e9cda..9dcb31e5331 100644 --- a/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs +++ b/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs @@ -17,12 +17,12 @@ public static BigInteger SeqToHeight<__T>(Dafny.ISequence<__T> s, Func<__T, BigI if ((new BigInteger((s).Count)).Sign == 0) { return BigInteger.Zero; } else { - BigInteger _763_i = Dafny.Helpers.Id>(f)((s).Select(BigInteger.Zero)); - BigInteger _764_j = DAST.Format.__default.SeqToHeight<__T>((s).Drop(BigInteger.One), f); - if ((_763_i) < (_764_j)) { - return _764_j; + BigInteger _759_i = Dafny.Helpers.Id>(f)((s).Select(BigInteger.Zero)); + BigInteger _760_j = DAST.Format.__default.SeqToHeight<__T>((s).Drop(BigInteger.One), f); + if ((_759_i) < (_760_j)) { + return _760_j; } else { - return _763_i; + return _759_i; } } } diff --git a/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs b/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs index 0a8fcffa67a..7594e701098 100644 --- a/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs +++ b/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs @@ -42,34 +42,34 @@ public static bool has__special(Dafny.ISequence i) { } } public static Dafny.ISequence idiomatic__rust(Dafny.ISequence i) { - Dafny.ISequence _1037___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _1005___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((i).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_1037___accumulator, Dafny.Sequence.UnicodeFromString("")); + return Dafny.Sequence.Concat(_1005___accumulator, Dafny.Sequence.UnicodeFromString("")); } else if (((i).Select(BigInteger.Zero)) == (new Dafny.Rune('_'))) { - _1037___accumulator = Dafny.Sequence.Concat(_1037___accumulator, Dafny.Sequence.UnicodeFromString("_")); + _1005___accumulator = Dafny.Sequence.Concat(_1005___accumulator, Dafny.Sequence.UnicodeFromString("_")); Dafny.ISequence _in123 = (i).Drop(new BigInteger(2)); i = _in123; goto TAIL_CALL_START; } else { - _1037___accumulator = Dafny.Sequence.Concat(_1037___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); + _1005___accumulator = Dafny.Sequence.Concat(_1005___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); Dafny.ISequence _in124 = (i).Drop(BigInteger.One); i = _in124; goto TAIL_CALL_START; } } public static Dafny.ISequence replaceDots(Dafny.ISequence i) { - Dafny.ISequence _1038___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _1006___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((i).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_1038___accumulator, Dafny.Sequence.UnicodeFromString("")); + return Dafny.Sequence.Concat(_1006___accumulator, Dafny.Sequence.UnicodeFromString("")); } else if (((i).Select(BigInteger.Zero)) == (new Dafny.Rune('.'))) { - _1038___accumulator = Dafny.Sequence.Concat(_1038___accumulator, Dafny.Sequence.UnicodeFromString("_d")); + _1006___accumulator = Dafny.Sequence.Concat(_1006___accumulator, Dafny.Sequence.UnicodeFromString("_d")); Dafny.ISequence _in125 = (i).Drop(BigInteger.One); i = _in125; goto TAIL_CALL_START; } else { - _1038___accumulator = Dafny.Sequence.Concat(_1038___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); + _1006___accumulator = Dafny.Sequence.Concat(_1006___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); Dafny.ISequence _in126 = (i).Drop(BigInteger.One); i = _in126; goto TAIL_CALL_START; @@ -102,8 +102,8 @@ public static bool is__idiomatic__rust__id(Dafny.ISequence i) { } else if (DCOMP.__default.is__dafny__generated__id(i)) { return i; } else { - Dafny.ISequence _1039_r = DCOMP.__default.replaceDots(i); - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _1039_r); + Dafny.ISequence _1007_r = DCOMP.__default.replaceDots(i); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _1007_r); } } public static Dafny.ISet> reserved__rust { get { @@ -372,8 +372,8 @@ public DCOMP._IEnvironment AddAssigned(Dafny.ISequence name, RAST._I return DCOMP.Environment.create(Dafny.Sequence>.Concat((this).dtor_names, Dafny.Sequence>.FromElements(name)), Dafny.Map, RAST._IType>.Update((this).dtor_types, name, tpe)); } public DCOMP._IEnvironment RemoveAssigned(Dafny.ISequence name) { - BigInteger _1040_indexInEnv = Std.Collections.Seq.__default.IndexOf>((this).dtor_names, name); - return DCOMP.Environment.create(Dafny.Sequence>.Concat(((this).dtor_names).Subsequence(BigInteger.Zero, _1040_indexInEnv), ((this).dtor_names).Drop((_1040_indexInEnv) + (BigInteger.One))), Dafny.Map, RAST._IType>.Subtract((this).dtor_types, Dafny.Set>.FromElements(name))); + BigInteger _1008_indexInEnv = Std.Collections.Seq.__default.IndexOf>((this).dtor_names, name); + return DCOMP.Environment.create(Dafny.Sequence>.Concat(((this).dtor_names).Subsequence(BigInteger.Zero, _1008_indexInEnv), ((this).dtor_names).Drop((_1008_indexInEnv) + (BigInteger.One))), Dafny.Map, RAST._IType>.Subtract((this).dtor_types, Dafny.Set>.FromElements(name))); } } @@ -391,16 +391,16 @@ public void __ctor(bool unicodeChars) public RAST._IMod GenModule(DAST._IModule mod, Dafny.ISequence> containingPath) { RAST._IMod s = RAST.Mod.Default(); - Dafny.ISequence _1041_modName; - _1041_modName = DCOMP.__default.escapeName((mod).dtor_name); + Dafny.ISequence _1009_modName; + _1009_modName = DCOMP.__default.escapeName((mod).dtor_name); if (((mod).dtor_body).is_None) { - s = RAST.Mod.create_ExternMod(_1041_modName); + s = RAST.Mod.create_ExternMod(_1009_modName); } else { - Dafny.ISequence _1042_body; + Dafny.ISequence _1010_body; Dafny.ISequence _out15; _out15 = (this).GenModuleBody(((mod).dtor_body).dtor_value, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((mod).dtor_name))); - _1042_body = _out15; - s = RAST.Mod.create_Mod(_1041_modName, _1042_body); + _1010_body = _out15; + s = RAST.Mod.create_Mod(_1009_modName, _1010_body); } return s; } @@ -409,58 +409,58 @@ public RAST._IMod GenModule(DAST._IModule mod, Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.FromElements(); BigInteger _hi5 = new BigInteger((body).Count); - for (BigInteger _1043_i = BigInteger.Zero; _1043_i < _hi5; _1043_i++) { - Dafny.ISequence _1044_generated = Dafny.Sequence.Empty; - DAST._IModuleItem _source44 = (body).Select(_1043_i); + for (BigInteger _1011_i = BigInteger.Zero; _1011_i < _hi5; _1011_i++) { + Dafny.ISequence _1012_generated = Dafny.Sequence.Empty; + DAST._IModuleItem _source44 = (body).Select(_1011_i); bool unmatched44 = true; if (unmatched44) { if (_source44.is_Module) { - DAST._IModule _1045_m = _source44.dtor_Module_a0; + DAST._IModule _1013_m = _source44.dtor_Module_a0; unmatched44 = false; - RAST._IMod _1046_mm; + RAST._IMod _1014_mm; RAST._IMod _out16; - _out16 = (this).GenModule(_1045_m, containingPath); - _1046_mm = _out16; - _1044_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_ModDecl(_1046_mm)); + _out16 = (this).GenModule(_1013_m, containingPath); + _1014_mm = _out16; + _1012_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_ModDecl(_1014_mm)); } } if (unmatched44) { if (_source44.is_Class) { - DAST._IClass _1047_c = _source44.dtor_Class_a0; + DAST._IClass _1015_c = _source44.dtor_Class_a0; unmatched44 = false; Dafny.ISequence _out17; - _out17 = (this).GenClass(_1047_c, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((_1047_c).dtor_name))); - _1044_generated = _out17; + _out17 = (this).GenClass(_1015_c, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((_1015_c).dtor_name))); + _1012_generated = _out17; } } if (unmatched44) { if (_source44.is_Trait) { - DAST._ITrait _1048_t = _source44.dtor_Trait_a0; + DAST._ITrait _1016_t = _source44.dtor_Trait_a0; unmatched44 = false; - Dafny.ISequence _1049_tt; + Dafny.ISequence _1017_tt; Dafny.ISequence _out18; - _out18 = (this).GenTrait(_1048_t, containingPath); - _1049_tt = _out18; - _1044_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_RawDecl(_1049_tt)); + _out18 = (this).GenTrait(_1016_t, containingPath); + _1017_tt = _out18; + _1012_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_RawDecl(_1017_tt)); } } if (unmatched44) { if (_source44.is_Newtype) { - DAST._INewtype _1050_n = _source44.dtor_Newtype_a0; + DAST._INewtype _1018_n = _source44.dtor_Newtype_a0; unmatched44 = false; Dafny.ISequence _out19; - _out19 = (this).GenNewtype(_1050_n); - _1044_generated = _out19; + _out19 = (this).GenNewtype(_1018_n); + _1012_generated = _out19; } } if (unmatched44) { - DAST._IDatatype _1051_d = _source44.dtor_Datatype_a0; + DAST._IDatatype _1019_d = _source44.dtor_Datatype_a0; unmatched44 = false; Dafny.ISequence _out20; - _out20 = (this).GenDatatype(_1051_d); - _1044_generated = _out20; + _out20 = (this).GenDatatype(_1019_d); + _1012_generated = _out20; } - s = Dafny.Sequence.Concat(s, _1044_generated); + s = Dafny.Sequence.Concat(s, _1012_generated); } return s; } @@ -469,12 +469,12 @@ public void GenTypeParam(DAST._ITypeArgDecl tp, out DAST._IType typeArg, out RAS typeArg = DAST.Type.Default(); typeParam = RAST.TypeParamDecl.Default(); typeArg = DAST.Type.create_TypeArg((tp).dtor_name); - Dafny.ISequence _1052_genTpConstraint; - _1052_genTpConstraint = ((((tp).dtor_bounds).Contains(DAST.TypeArgBound.create_SupportsEquality())) ? (Dafny.Sequence.FromElements(RAST.__default.DafnyTypeEq)) : (Dafny.Sequence.FromElements(RAST.__default.DafnyType))); + Dafny.ISequence _1020_genTpConstraint; + _1020_genTpConstraint = ((((tp).dtor_bounds).Contains(DAST.TypeArgBound.create_SupportsEquality())) ? (Dafny.Sequence.FromElements(RAST.__default.DafnyTypeEq)) : (Dafny.Sequence.FromElements(RAST.__default.DafnyType))); if (((tp).dtor_bounds).Contains(DAST.TypeArgBound.create_SupportsDefault())) { - _1052_genTpConstraint = Dafny.Sequence.Concat(_1052_genTpConstraint, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))); + _1020_genTpConstraint = Dafny.Sequence.Concat(_1020_genTpConstraint, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))); } - typeParam = RAST.TypeParamDecl.create(DCOMP.__default.escapeName(((tp).dtor_name)), _1052_genTpConstraint); + typeParam = RAST.TypeParamDecl.create(DCOMP.__default.escapeName(((tp).dtor_name)), _1020_genTpConstraint); } public void GenTypeParameters(Dafny.ISequence @params, out Dafny.ISet typeParamsSet, out Dafny.ISequence typeParams, out Dafny.ISequence constrainedTypeParams, out Dafny.ISequence whereConstraints) { @@ -488,559 +488,556 @@ public void GenTypeParameters(Dafny.ISequence @params, out D whereConstraints = Dafny.Sequence.UnicodeFromString(""); if ((new BigInteger((@params).Count)).Sign == 1) { BigInteger _hi6 = new BigInteger((@params).Count); - for (BigInteger _1053_tpI = BigInteger.Zero; _1053_tpI < _hi6; _1053_tpI++) { - DAST._ITypeArgDecl _1054_tp; - _1054_tp = (@params).Select(_1053_tpI); - DAST._IType _1055_typeArg; - RAST._ITypeParamDecl _1056_typeParam; + for (BigInteger _1021_tpI = BigInteger.Zero; _1021_tpI < _hi6; _1021_tpI++) { + DAST._ITypeArgDecl _1022_tp; + _1022_tp = (@params).Select(_1021_tpI); + DAST._IType _1023_typeArg; + RAST._ITypeParamDecl _1024_typeParam; DAST._IType _out21; RAST._ITypeParamDecl _out22; - (this).GenTypeParam(_1054_tp, out _out21, out _out22); - _1055_typeArg = _out21; - _1056_typeParam = _out22; - RAST._IType _1057_rType; + (this).GenTypeParam(_1022_tp, out _out21, out _out22); + _1023_typeArg = _out21; + _1024_typeParam = _out22; + RAST._IType _1025_rType; RAST._IType _out23; - _out23 = (this).GenType(_1055_typeArg, false, false); - _1057_rType = _out23; - typeParamsSet = Dafny.Set.Union(typeParamsSet, Dafny.Set.FromElements(_1055_typeArg)); - typeParams = Dafny.Sequence.Concat(typeParams, Dafny.Sequence.FromElements(_1057_rType)); - constrainedTypeParams = Dafny.Sequence.Concat(constrainedTypeParams, Dafny.Sequence.FromElements(_1056_typeParam)); + _out23 = (this).GenType(_1023_typeArg, false, false); + _1025_rType = _out23; + typeParamsSet = Dafny.Set.Union(typeParamsSet, Dafny.Set.FromElements(_1023_typeArg)); + typeParams = Dafny.Sequence.Concat(typeParams, Dafny.Sequence.FromElements(_1025_rType)); + constrainedTypeParams = Dafny.Sequence.Concat(constrainedTypeParams, Dafny.Sequence.FromElements(_1024_typeParam)); } } } public Dafny.ISequence GenClass(DAST._IClass c, Dafny.ISequence> path) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISet _1058_typeParamsSet; - Dafny.ISequence _1059_rTypeParams; - Dafny.ISequence _1060_rTypeParamsDecls; - Dafny.ISequence _1061_whereConstraints; + Dafny.ISet _1026_typeParamsSet; + Dafny.ISequence _1027_rTypeParams; + Dafny.ISequence _1028_rTypeParamsDecls; + Dafny.ISequence _1029_whereConstraints; Dafny.ISet _out24; Dafny.ISequence _out25; Dafny.ISequence _out26; Dafny.ISequence _out27; (this).GenTypeParameters((c).dtor_typeParams, out _out24, out _out25, out _out26, out _out27); - _1058_typeParamsSet = _out24; - _1059_rTypeParams = _out25; - _1060_rTypeParamsDecls = _out26; - _1061_whereConstraints = _out27; - Dafny.ISequence _1062_constrainedTypeParams; - _1062_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1060_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); - Dafny.ISequence _1063_fields; - _1063_fields = Dafny.Sequence.FromElements(); - Dafny.ISequence _1064_fieldInits; - _1064_fieldInits = Dafny.Sequence.FromElements(); + _1026_typeParamsSet = _out24; + _1027_rTypeParams = _out25; + _1028_rTypeParamsDecls = _out26; + _1029_whereConstraints = _out27; + Dafny.ISequence _1030_constrainedTypeParams; + _1030_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1028_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); + Dafny.ISequence _1031_fields; + _1031_fields = Dafny.Sequence.FromElements(); + Dafny.ISequence _1032_fieldInits; + _1032_fieldInits = Dafny.Sequence.FromElements(); BigInteger _hi7 = new BigInteger(((c).dtor_fields).Count); - for (BigInteger _1065_fieldI = BigInteger.Zero; _1065_fieldI < _hi7; _1065_fieldI++) { - DAST._IField _1066_field; - _1066_field = ((c).dtor_fields).Select(_1065_fieldI); - RAST._IType _1067_fieldType; + for (BigInteger _1033_fieldI = BigInteger.Zero; _1033_fieldI < _hi7; _1033_fieldI++) { + DAST._IField _1034_field; + _1034_field = ((c).dtor_fields).Select(_1033_fieldI); + RAST._IType _1035_fieldType; RAST._IType _out28; - _out28 = (this).GenType(((_1066_field).dtor_formal).dtor_typ, false, false); - _1067_fieldType = _out28; - Dafny.ISequence _1068_fieldRustName; - _1068_fieldRustName = DCOMP.__default.escapeName(((_1066_field).dtor_formal).dtor_name); - _1063_fields = Dafny.Sequence.Concat(_1063_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PUB(), RAST.Formal.create(_1068_fieldRustName, _1067_fieldType)))); - Std.Wrappers._IOption _source45 = (_1066_field).dtor_defaultValue; + _out28 = (this).GenType(((_1034_field).dtor_formal).dtor_typ, false, false); + _1035_fieldType = _out28; + Dafny.ISequence _1036_fieldRustName; + _1036_fieldRustName = DCOMP.__default.escapeName(((_1034_field).dtor_formal).dtor_name); + _1031_fields = Dafny.Sequence.Concat(_1031_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PUB(), RAST.Formal.create(_1036_fieldRustName, _1035_fieldType)))); + Std.Wrappers._IOption _source45 = (_1034_field).dtor_defaultValue; bool unmatched45 = true; if (unmatched45) { if (_source45.is_Some) { - DAST._IExpression _1069_e = _source45.dtor_value; + DAST._IExpression _1037_e = _source45.dtor_value; unmatched45 = false; { - RAST._IExpr _1070_expr; - DCOMP._IOwnership _1071___v42; - Dafny.ISet> _1072___v43; + RAST._IExpr _1038_expr; + DCOMP._IOwnership _1039___v42; + Dafny.ISet> _1040___v43; RAST._IExpr _out29; DCOMP._IOwnership _out30; Dafny.ISet> _out31; - (this).GenExpr(_1069_e, Std.Wrappers.Option>.create_None(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out29, out _out30, out _out31); - _1070_expr = _out29; - _1071___v42 = _out30; - _1072___v43 = _out31; - _1064_fieldInits = Dafny.Sequence.Concat(_1064_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_1066_field).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::cell::RefCell::new("), (_1070_expr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))))); + (this).GenExpr(_1037_e, Std.Wrappers.Option>.create_None(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out29, out _out30, out _out31); + _1038_expr = _out29; + _1039___v42 = _out30; + _1040___v43 = _out31; + _1032_fieldInits = Dafny.Sequence.Concat(_1032_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_1034_field).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::cell::RefCell::new("), (_1038_expr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))))); } } } if (unmatched45) { unmatched45 = false; { - RAST._IExpr _1073_default; - _1073_default = RAST.__default.std__Default__default; - _1064_fieldInits = Dafny.Sequence.Concat(_1064_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1068_fieldRustName, _1073_default))); + RAST._IExpr _1041_default; + _1041_default = RAST.__default.std__Default__default; + _1032_fieldInits = Dafny.Sequence.Concat(_1032_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1036_fieldRustName, _1041_default))); } } } BigInteger _hi8 = new BigInteger(((c).dtor_typeParams).Count); - for (BigInteger _1074_typeParamI = BigInteger.Zero; _1074_typeParamI < _hi8; _1074_typeParamI++) { - DAST._IType _1075_typeArg; - RAST._ITypeParamDecl _1076_typeParam; + for (BigInteger _1042_typeParamI = BigInteger.Zero; _1042_typeParamI < _hi8; _1042_typeParamI++) { + DAST._IType _1043_typeArg; + RAST._ITypeParamDecl _1044_typeParam; DAST._IType _out32; RAST._ITypeParamDecl _out33; - (this).GenTypeParam(((c).dtor_typeParams).Select(_1074_typeParamI), out _out32, out _out33); - _1075_typeArg = _out32; - _1076_typeParam = _out33; - RAST._IType _1077_rTypeArg; + (this).GenTypeParam(((c).dtor_typeParams).Select(_1042_typeParamI), out _out32, out _out33); + _1043_typeArg = _out32; + _1044_typeParam = _out33; + RAST._IType _1045_rTypeArg; RAST._IType _out34; - _out34 = (this).GenType(_1075_typeArg, false, false); - _1077_rTypeArg = _out34; - _1063_fields = Dafny.Sequence.Concat(_1063_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_1074_typeParamI)), RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_1077_rTypeArg)))))); - _1064_fieldInits = Dafny.Sequence.Concat(_1064_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_1074_typeParamI)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::marker::PhantomData"))))); - } - Dafny.ISequence _1078_datatypeName; - _1078_datatypeName = DCOMP.__default.escapeName((c).dtor_name); - RAST._IStruct _1079_struct; - _1079_struct = RAST.Struct.create(Dafny.Sequence>.FromElements(), _1078_datatypeName, _1060_rTypeParamsDecls, RAST.Fields.create_NamedFields(_1063_fields)); - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(_1079_struct)); - Dafny.ISequence _1080_implBodyRaw; - Dafny.IMap>,Dafny.ISequence> _1081_traitBodies; + _out34 = (this).GenType(_1043_typeArg, false, false); + _1045_rTypeArg = _out34; + _1031_fields = Dafny.Sequence.Concat(_1031_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_1042_typeParamI)), RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_1045_rTypeArg)))))); + _1032_fieldInits = Dafny.Sequence.Concat(_1032_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_1042_typeParamI)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::marker::PhantomData"))))); + } + Dafny.ISequence _1046_datatypeName; + _1046_datatypeName = DCOMP.__default.escapeName((c).dtor_name); + RAST._IStruct _1047_struct; + _1047_struct = RAST.Struct.create(Dafny.Sequence>.FromElements(), _1046_datatypeName, _1028_rTypeParamsDecls, RAST.Fields.create_NamedFields(_1031_fields)); + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(_1047_struct)); + Dafny.ISequence _1048_implBodyRaw; + Dafny.IMap>,Dafny.ISequence> _1049_traitBodies; Dafny.ISequence _out35; Dafny.IMap>,Dafny.ISequence> _out36; - (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Datatype(DAST.DatatypeType.create(path, (c).dtor_attributes))), _1058_typeParamsSet, out _out35, out _out36); - _1080_implBodyRaw = _out35; - _1081_traitBodies = _out36; - Dafny.ISequence _1082_implBody; - _1082_implBody = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("new"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(_1078_datatypeName), _1064_fieldInits))))), _1080_implBodyRaw); - RAST._IImpl _1083_i; - _1083_i = RAST.Impl.create_Impl(_1060_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1078_datatypeName), _1059_rTypeParams), _1061_whereConstraints, _1082_implBody); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1083_i))); + (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Datatype(DAST.DatatypeType.create(path, (c).dtor_attributes))), _1026_typeParamsSet, out _out35, out _out36); + _1048_implBodyRaw = _out35; + _1049_traitBodies = _out36; + Dafny.ISequence _1050_implBody; + _1050_implBody = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("new"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(RAST.Expr.create_Identifier(_1046_datatypeName), _1032_fieldInits))))), _1048_implBodyRaw); + RAST._IImpl _1051_i; + _1051_i = RAST.Impl.create_Impl(_1028_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1046_datatypeName), _1027_rTypeParams), _1029_whereConstraints, _1050_implBody); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1051_i))); if ((new BigInteger(((c).dtor_superClasses).Count)).Sign == 1) { - BigInteger _1084_i; - _1084_i = BigInteger.Zero; - while ((_1084_i) < (new BigInteger(((c).dtor_superClasses).Count))) { - DAST._IType _1085_superClass; - _1085_superClass = ((c).dtor_superClasses).Select(_1084_i); - DAST._IType _source46 = _1085_superClass; + BigInteger _1052_i; + _1052_i = BigInteger.Zero; + while ((_1052_i) < (new BigInteger(((c).dtor_superClasses).Count))) { + DAST._IType _1053_superClass; + _1053_superClass = ((c).dtor_superClasses).Select(_1052_i); + DAST._IType _source46 = _1053_superClass; bool unmatched46 = true; if (unmatched46) { if (_source46.is_Path) { - Dafny.ISequence> _1086_traitPath = _source46.dtor_Path_a0; - Dafny.ISequence _1087_typeArgs = _source46.dtor_typeArgs; + Dafny.ISequence> _1054_traitPath = _source46.dtor_Path_a0; + Dafny.ISequence _1055_typeArgs = _source46.dtor_typeArgs; DAST._IResolvedType resolved0 = _source46.dtor_resolved; if (resolved0.is_Trait) { - Dafny.ISequence> _1088___v44 = resolved0.dtor_path; - Dafny.ISequence _1089___v45 = resolved0.dtor_attributes; unmatched46 = false; { - RAST._IType _1090_pathStr; + RAST._IType _1056_pathStr; RAST._IType _out37; - _out37 = DCOMP.COMP.GenPath(_1086_traitPath); - _1090_pathStr = _out37; - Dafny.ISequence _1091_typeArgs; + _out37 = DCOMP.COMP.GenPath(_1054_traitPath); + _1056_pathStr = _out37; + Dafny.ISequence _1057_typeArgs; Dafny.ISequence _out38; - _out38 = (this).GenTypeArgs(_1087_typeArgs, false, false); - _1091_typeArgs = _out38; - Dafny.ISequence _1092_body; - _1092_body = Dafny.Sequence.FromElements(); - if ((_1081_traitBodies).Contains(_1086_traitPath)) { - _1092_body = Dafny.Map>, Dafny.ISequence>.Select(_1081_traitBodies,_1086_traitPath); + _out38 = (this).GenTypeArgs(_1055_typeArgs, false, false); + _1057_typeArgs = _out38; + Dafny.ISequence _1058_body; + _1058_body = Dafny.Sequence.FromElements(); + if ((_1049_traitBodies).Contains(_1054_traitPath)) { + _1058_body = Dafny.Map>, Dafny.ISequence>.Select(_1049_traitBodies,_1054_traitPath); } - RAST._IType _1093_genSelfPath; + RAST._IType _1059_genSelfPath; RAST._IType _out39; _out39 = DCOMP.COMP.GenPath(path); - _1093_genSelfPath = _out39; - RAST._IModDecl _1094_x; - _1094_x = RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1060_rTypeParamsDecls, RAST.Type.create_TypeApp(_1090_pathStr, _1091_typeArgs), RAST.__default.Rc(RAST.Type.create_TypeApp(_1093_genSelfPath, _1059_rTypeParams)), _1061_whereConstraints, _1092_body)); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1094_x)); + _1059_genSelfPath = _out39; + RAST._IModDecl _1060_x; + _1060_x = RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1028_rTypeParamsDecls, RAST.Type.create_TypeApp(_1056_pathStr, _1057_typeArgs), RAST.__default.Rc(RAST.Type.create_TypeApp(_1059_genSelfPath, _1027_rTypeParams)), _1029_whereConstraints, _1058_body)); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1060_x)); } } } } if (unmatched46) { - DAST._IType _1095___v46 = _source46; unmatched46 = false; } - _1084_i = (_1084_i) + (BigInteger.One); - } - } - RAST._IImpl _1096_d; - _1096_d = RAST.Impl.create_ImplFor(_1060_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1078_datatypeName), _1059_rTypeParams), _1061_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(_1078_datatypeName, Dafny.Sequence.UnicodeFromString("::new()")))))))); - Dafny.ISequence _1097_defaultImpl; - _1097_defaultImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1096_d)); - RAST._IImpl _1098_p; - _1098_p = RAST.Impl.create_ImplFor(_1060_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1078_datatypeName), _1059_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("&mut ::std::fmt::Formatter"))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), DCOMP.__default.escapeName(((c).dtor_enclosingModule))), Dafny.Sequence.UnicodeFromString(".")), DCOMP.__default.escapeName((c).dtor_name)), Dafny.Sequence.UnicodeFromString("\")")))))))); - Dafny.ISequence _1099_printImpl; - _1099_printImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1098_p)); - RAST._IImpl _1100_pp; - _1100_pp = RAST.Impl.create_ImplFor(_1060_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::cmp::PartialEq")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1078_datatypeName), _1059_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("eq"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("other"), RAST.__default.SelfBorrowed)), Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::ptr::eq(self, other)"))))))); - Dafny.ISequence _1101_ptrPartialEqImpl; - _1101_ptrPartialEqImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1100_pp)); - s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(s, _1097_defaultImpl), _1099_printImpl), _1101_ptrPartialEqImpl); + _1052_i = (_1052_i) + (BigInteger.One); + } + } + RAST._IImpl _1061_d; + _1061_d = RAST.Impl.create_ImplFor(_1028_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1046_datatypeName), _1027_rTypeParams), _1029_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(_1046_datatypeName, Dafny.Sequence.UnicodeFromString("::new()")))))))); + Dafny.ISequence _1062_defaultImpl; + _1062_defaultImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1061_d)); + RAST._IImpl _1063_p; + _1063_p = RAST.Impl.create_ImplFor(_1028_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1046_datatypeName), _1027_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("&mut ::std::fmt::Formatter"))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), DCOMP.__default.escapeName(((c).dtor_enclosingModule))), Dafny.Sequence.UnicodeFromString(".")), DCOMP.__default.escapeName((c).dtor_name)), Dafny.Sequence.UnicodeFromString("\")")))))))); + Dafny.ISequence _1064_printImpl; + _1064_printImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1063_p)); + RAST._IImpl _1065_pp; + _1065_pp = RAST.Impl.create_ImplFor(_1028_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::cmp::PartialEq")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1046_datatypeName), _1027_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("eq"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("other"), RAST.__default.SelfBorrowed)), Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::ptr::eq(self, other)"))))))); + Dafny.ISequence _1066_ptrPartialEqImpl; + _1066_ptrPartialEqImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1065_pp)); + s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(s, _1062_defaultImpl), _1064_printImpl), _1066_ptrPartialEqImpl); return s; } public Dafny.ISequence GenTrait(DAST._ITrait t, Dafny.ISequence> containingPath) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISet _1102_typeParamsSet; - _1102_typeParamsSet = Dafny.Set.FromElements(); - Dafny.ISequence _1103_typeParamDecls; - _1103_typeParamDecls = Dafny.Sequence.FromElements(); - Dafny.ISequence _1104_typeParams; - _1104_typeParams = Dafny.Sequence.FromElements(); - BigInteger _1105_tpI; - _1105_tpI = BigInteger.Zero; + Dafny.ISet _1067_typeParamsSet; + _1067_typeParamsSet = Dafny.Set.FromElements(); + Dafny.ISequence _1068_typeParamDecls; + _1068_typeParamDecls = Dafny.Sequence.FromElements(); + Dafny.ISequence _1069_typeParams; + _1069_typeParams = Dafny.Sequence.FromElements(); + BigInteger _1070_tpI; + _1070_tpI = BigInteger.Zero; if ((new BigInteger(((t).dtor_typeParams).Count)).Sign == 1) { - while ((_1105_tpI) < (new BigInteger(((t).dtor_typeParams).Count))) { - DAST._ITypeArgDecl _1106_tp; - _1106_tp = ((t).dtor_typeParams).Select(_1105_tpI); - DAST._IType _1107_typeArg; - RAST._ITypeParamDecl _1108_typeParamDecl; + while ((_1070_tpI) < (new BigInteger(((t).dtor_typeParams).Count))) { + DAST._ITypeArgDecl _1071_tp; + _1071_tp = ((t).dtor_typeParams).Select(_1070_tpI); + DAST._IType _1072_typeArg; + RAST._ITypeParamDecl _1073_typeParamDecl; DAST._IType _out40; RAST._ITypeParamDecl _out41; - (this).GenTypeParam(_1106_tp, out _out40, out _out41); - _1107_typeArg = _out40; - _1108_typeParamDecl = _out41; - _1102_typeParamsSet = Dafny.Set.Union(_1102_typeParamsSet, Dafny.Set.FromElements(_1107_typeArg)); - _1103_typeParamDecls = Dafny.Sequence.Concat(_1103_typeParamDecls, Dafny.Sequence.FromElements(_1108_typeParamDecl)); - RAST._IType _1109_typeParam; + (this).GenTypeParam(_1071_tp, out _out40, out _out41); + _1072_typeArg = _out40; + _1073_typeParamDecl = _out41; + _1067_typeParamsSet = Dafny.Set.Union(_1067_typeParamsSet, Dafny.Set.FromElements(_1072_typeArg)); + _1068_typeParamDecls = Dafny.Sequence.Concat(_1068_typeParamDecls, Dafny.Sequence.FromElements(_1073_typeParamDecl)); + RAST._IType _1074_typeParam; RAST._IType _out42; - _out42 = (this).GenType(_1107_typeArg, false, false); - _1109_typeParam = _out42; - _1104_typeParams = Dafny.Sequence.Concat(_1104_typeParams, Dafny.Sequence.FromElements(_1109_typeParam)); - _1105_tpI = (_1105_tpI) + (BigInteger.One); + _out42 = (this).GenType(_1072_typeArg, false, false); + _1074_typeParam = _out42; + _1069_typeParams = Dafny.Sequence.Concat(_1069_typeParams, Dafny.Sequence.FromElements(_1074_typeParam)); + _1070_tpI = (_1070_tpI) + (BigInteger.One); } } - Dafny.ISequence> _1110_fullPath; - _1110_fullPath = Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((t).dtor_name)); - Dafny.ISequence _1111_implBody; - Dafny.IMap>,Dafny.ISequence> _1112___v47; + Dafny.ISequence> _1075_fullPath; + _1075_fullPath = Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((t).dtor_name)); + Dafny.ISequence _1076_implBody; + Dafny.IMap>,Dafny.ISequence> _1077___v47; Dafny.ISequence _out43; Dafny.IMap>,Dafny.ISequence> _out44; - (this).GenClassImplBody((t).dtor_body, true, DAST.Type.create_Path(_1110_fullPath, Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Trait(_1110_fullPath, (t).dtor_attributes)), _1102_typeParamsSet, out _out43, out _out44); - _1111_implBody = _out43; - _1112___v47 = _out44; - s = (RAST.ModDecl.create_TraitDecl(RAST.Trait.create(_1103_typeParamDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(DCOMP.__default.escapeName((t).dtor_name)), _1104_typeParams), Dafny.Sequence.UnicodeFromString(""), _1111_implBody)))._ToString(DCOMP.__default.IND); + (this).GenClassImplBody((t).dtor_body, true, DAST.Type.create_Path(_1075_fullPath, Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Trait(_1075_fullPath, (t).dtor_attributes)), _1067_typeParamsSet, out _out43, out _out44); + _1076_implBody = _out43; + _1077___v47 = _out44; + s = (RAST.ModDecl.create_TraitDecl(RAST.Trait.create(_1068_typeParamDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(DCOMP.__default.escapeName((t).dtor_name)), _1069_typeParams), Dafny.Sequence.UnicodeFromString(""), _1076_implBody)))._ToString(DCOMP.__default.IND); return s; } public Dafny.ISequence GenNewtype(DAST._INewtype c) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISet _1113_typeParamsSet; - Dafny.ISequence _1114_rTypeParams; - Dafny.ISequence _1115_rTypeParamsDecls; - Dafny.ISequence _1116_whereConstraints; + Dafny.ISet _1078_typeParamsSet; + Dafny.ISequence _1079_rTypeParams; + Dafny.ISequence _1080_rTypeParamsDecls; + Dafny.ISequence _1081_whereConstraints; Dafny.ISet _out45; Dafny.ISequence _out46; Dafny.ISequence _out47; Dafny.ISequence _out48; (this).GenTypeParameters((c).dtor_typeParams, out _out45, out _out46, out _out47, out _out48); - _1113_typeParamsSet = _out45; - _1114_rTypeParams = _out46; - _1115_rTypeParamsDecls = _out47; - _1116_whereConstraints = _out48; - Dafny.ISequence _1117_constrainedTypeParams; - _1117_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1115_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); - RAST._IType _1118_underlyingType = RAST.Type.Default(); + _1078_typeParamsSet = _out45; + _1079_rTypeParams = _out46; + _1080_rTypeParamsDecls = _out47; + _1081_whereConstraints = _out48; + Dafny.ISequence _1082_constrainedTypeParams; + _1082_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1080_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); + RAST._IType _1083_underlyingType = RAST.Type.Default(); Std.Wrappers._IOption _source47 = DCOMP.COMP.NewtypeToRustType((c).dtor_base, (c).dtor_range); bool unmatched47 = true; if (unmatched47) { if (_source47.is_Some) { - RAST._IType _1119_v = _source47.dtor_value; + RAST._IType _1084_v = _source47.dtor_value; unmatched47 = false; - _1118_underlyingType = _1119_v; + _1083_underlyingType = _1084_v; } } if (unmatched47) { unmatched47 = false; RAST._IType _out49; _out49 = (this).GenType((c).dtor_base, false, false); - _1118_underlyingType = _out49; - } - DAST._IType _1120_resultingType; - _1120_resultingType = DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Newtype((c).dtor_base, (c).dtor_range, false, (c).dtor_attributes)); - Dafny.ISequence _1121_datatypeName; - _1121_datatypeName = DCOMP.__default.escapeName((c).dtor_name); - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(RAST.Struct.create(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(Clone, PartialEq)]"), Dafny.Sequence.UnicodeFromString("#[repr(transparent)]")), _1121_datatypeName, _1115_rTypeParamsDecls, RAST.Fields.create_NamelessFields(Dafny.Sequence.FromElements(RAST.NamelessField.create(RAST.Visibility.create_PUB(), _1118_underlyingType)))))); - RAST._IExpr _1122_fnBody; - _1122_fnBody = RAST.Expr.create_Identifier(_1121_datatypeName); + _1083_underlyingType = _out49; + } + DAST._IType _1085_resultingType; + _1085_resultingType = DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Newtype((c).dtor_base, (c).dtor_range, false, (c).dtor_attributes)); + Dafny.ISequence _1086_datatypeName; + _1086_datatypeName = DCOMP.__default.escapeName((c).dtor_name); + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(RAST.Struct.create(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(Clone, PartialEq)]"), Dafny.Sequence.UnicodeFromString("#[repr(transparent)]")), _1086_datatypeName, _1080_rTypeParamsDecls, RAST.Fields.create_NamelessFields(Dafny.Sequence.FromElements(RAST.NamelessField.create(RAST.Visibility.create_PUB(), _1083_underlyingType)))))); + RAST._IExpr _1087_fnBody; + _1087_fnBody = RAST.Expr.create_Identifier(_1086_datatypeName); Std.Wrappers._IOption _source48 = (c).dtor_witnessExpr; bool unmatched48 = true; if (unmatched48) { if (_source48.is_Some) { - DAST._IExpression _1123_e = _source48.dtor_value; + DAST._IExpression _1088_e = _source48.dtor_value; unmatched48 = false; { - DAST._IExpression _1124_e; - _1124_e = ((object.Equals((c).dtor_base, _1120_resultingType)) ? (_1123_e) : (DAST.Expression.create_Convert(_1123_e, (c).dtor_base, _1120_resultingType))); - RAST._IExpr _1125_eStr; - DCOMP._IOwnership _1126___v48; - Dafny.ISet> _1127___v49; + DAST._IExpression _1089_e; + _1089_e = ((object.Equals((c).dtor_base, _1085_resultingType)) ? (_1088_e) : (DAST.Expression.create_Convert(_1088_e, (c).dtor_base, _1085_resultingType))); + RAST._IExpr _1090_eStr; + DCOMP._IOwnership _1091___v48; + Dafny.ISet> _1092___v49; RAST._IExpr _out50; DCOMP._IOwnership _out51; Dafny.ISet> _out52; - (this).GenExpr(_1124_e, Std.Wrappers.Option>.create_None(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out50, out _out51, out _out52); - _1125_eStr = _out50; - _1126___v48 = _out51; - _1127___v49 = _out52; - _1122_fnBody = (_1122_fnBody).Apply1(_1125_eStr); + (this).GenExpr(_1089_e, Std.Wrappers.Option>.create_None(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out50, out _out51, out _out52); + _1090_eStr = _out50; + _1091___v48 = _out51; + _1092___v49 = _out52; + _1087_fnBody = (_1087_fnBody).Apply1(_1090_eStr); } } } if (unmatched48) { unmatched48 = false; { - _1122_fnBody = (_1122_fnBody).Apply1(RAST.__default.std__Default__default); + _1087_fnBody = (_1087_fnBody).Apply1(RAST.__default.std__Default__default); } } - RAST._IImplMember _1128_body; - _1128_body = RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1122_fnBody))); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1115_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1121_datatypeName), _1114_rTypeParams), _1116_whereConstraints, Dafny.Sequence.FromElements(_1128_body))))); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1115_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1121_datatypeName), _1114_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("&mut ::std::fmt::Formatter"))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print(&self.0, _formatter, in_seq)")))))))))); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1115_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::ops::Deref")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1121_datatypeName), _1114_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_RawImplMember(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("type Target = "), (_1118_underlyingType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";"))), RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("deref"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some((RAST.__default.SelfBorrowed).MSel(Dafny.Sequence.UnicodeFromString("Target"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("&self.0")))))))))); + RAST._IImplMember _1093_body; + _1093_body = RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1087_fnBody))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1080_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1086_datatypeName), _1079_rTypeParams), _1081_whereConstraints, Dafny.Sequence.FromElements(_1093_body))))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1080_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1086_datatypeName), _1079_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("&mut ::std::fmt::Formatter"))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print(&self.0, _formatter, in_seq)")))))))))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1080_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::ops::Deref")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1086_datatypeName), _1079_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_RawImplMember(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("type Target = "), (_1083_underlyingType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";"))), RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("deref"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some((RAST.__default.SelfBorrowed).MSel(Dafny.Sequence.UnicodeFromString("Target"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("&self.0")))))))))); return s; } public Dafny.ISequence GenDatatype(DAST._IDatatype c) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISet _1129_typeParamsSet; - Dafny.ISequence _1130_rTypeParams; - Dafny.ISequence _1131_rTypeParamsDecls; - Dafny.ISequence _1132_whereConstraints; + Dafny.ISet _1094_typeParamsSet; + Dafny.ISequence _1095_rTypeParams; + Dafny.ISequence _1096_rTypeParamsDecls; + Dafny.ISequence _1097_whereConstraints; Dafny.ISet _out53; Dafny.ISequence _out54; Dafny.ISequence _out55; Dafny.ISequence _out56; (this).GenTypeParameters((c).dtor_typeParams, out _out53, out _out54, out _out55, out _out56); - _1129_typeParamsSet = _out53; - _1130_rTypeParams = _out54; - _1131_rTypeParamsDecls = _out55; - _1132_whereConstraints = _out56; - Dafny.ISequence _1133_datatypeName; - _1133_datatypeName = DCOMP.__default.escapeName((c).dtor_name); - Dafny.ISequence _1134_ctors; - _1134_ctors = Dafny.Sequence.FromElements(); + _1094_typeParamsSet = _out53; + _1095_rTypeParams = _out54; + _1096_rTypeParamsDecls = _out55; + _1097_whereConstraints = _out56; + Dafny.ISequence _1098_datatypeName; + _1098_datatypeName = DCOMP.__default.escapeName((c).dtor_name); + Dafny.ISequence _1099_ctors; + _1099_ctors = Dafny.Sequence.FromElements(); BigInteger _hi9 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1135_i = BigInteger.Zero; _1135_i < _hi9; _1135_i++) { - DAST._IDatatypeCtor _1136_ctor; - _1136_ctor = ((c).dtor_ctors).Select(_1135_i); - Dafny.ISequence _1137_ctorArgs; - _1137_ctorArgs = Dafny.Sequence.FromElements(); - bool _1138_isNumeric; - _1138_isNumeric = false; - BigInteger _hi10 = new BigInteger(((_1136_ctor).dtor_args).Count); - for (BigInteger _1139_j = BigInteger.Zero; _1139_j < _hi10; _1139_j++) { - DAST._IDatatypeDtor _1140_dtor; - _1140_dtor = ((_1136_ctor).dtor_args).Select(_1139_j); - RAST._IType _1141_formalType; + for (BigInteger _1100_i = BigInteger.Zero; _1100_i < _hi9; _1100_i++) { + DAST._IDatatypeCtor _1101_ctor; + _1101_ctor = ((c).dtor_ctors).Select(_1100_i); + Dafny.ISequence _1102_ctorArgs; + _1102_ctorArgs = Dafny.Sequence.FromElements(); + bool _1103_isNumeric; + _1103_isNumeric = false; + BigInteger _hi10 = new BigInteger(((_1101_ctor).dtor_args).Count); + for (BigInteger _1104_j = BigInteger.Zero; _1104_j < _hi10; _1104_j++) { + DAST._IDatatypeDtor _1105_dtor; + _1105_dtor = ((_1101_ctor).dtor_args).Select(_1104_j); + RAST._IType _1106_formalType; RAST._IType _out57; - _out57 = (this).GenType(((_1140_dtor).dtor_formal).dtor_typ, false, false); - _1141_formalType = _out57; - Dafny.ISequence _1142_formalName; - _1142_formalName = DCOMP.__default.escapeName(((_1140_dtor).dtor_formal).dtor_name); - if (((_1139_j).Sign == 0) && ((Dafny.Sequence.UnicodeFromString("0")).Equals(_1142_formalName))) { - _1138_isNumeric = true; + _out57 = (this).GenType(((_1105_dtor).dtor_formal).dtor_typ, false, false); + _1106_formalType = _out57; + Dafny.ISequence _1107_formalName; + _1107_formalName = DCOMP.__default.escapeName(((_1105_dtor).dtor_formal).dtor_name); + if (((_1104_j).Sign == 0) && ((Dafny.Sequence.UnicodeFromString("0")).Equals(_1107_formalName))) { + _1103_isNumeric = true; } - if ((((_1139_j).Sign != 0) && (_1138_isNumeric)) && (!(Std.Strings.__default.OfNat(_1139_j)).Equals(_1142_formalName))) { - (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Formal extern names were supposed to be numeric but got "), _1142_formalName), Dafny.Sequence.UnicodeFromString(" instead of ")), Std.Strings.__default.OfNat(_1139_j))); - _1138_isNumeric = false; + if ((((_1104_j).Sign != 0) && (_1103_isNumeric)) && (!(Std.Strings.__default.OfNat(_1104_j)).Equals(_1107_formalName))) { + (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Formal extern names were supposed to be numeric but got "), _1107_formalName), Dafny.Sequence.UnicodeFromString(" instead of ")), Std.Strings.__default.OfNat(_1104_j))); + _1103_isNumeric = false; } if ((c).dtor_isCo) { - _1137_ctorArgs = Dafny.Sequence.Concat(_1137_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1142_formalName, RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("LazyFieldWrapper")), Dafny.Sequence.FromElements(_1141_formalType)))))); + _1102_ctorArgs = Dafny.Sequence.Concat(_1102_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1107_formalName, RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("LazyFieldWrapper")), Dafny.Sequence.FromElements(_1106_formalType)))))); } else { - _1137_ctorArgs = Dafny.Sequence.Concat(_1137_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1142_formalName, _1141_formalType)))); + _1102_ctorArgs = Dafny.Sequence.Concat(_1102_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1107_formalName, _1106_formalType)))); } } - RAST._IFields _1143_namedFields; - _1143_namedFields = RAST.Fields.create_NamedFields(_1137_ctorArgs); - if (_1138_isNumeric) { - _1143_namedFields = (_1143_namedFields).ToNamelessFields(); + RAST._IFields _1108_namedFields; + _1108_namedFields = RAST.Fields.create_NamedFields(_1102_ctorArgs); + if (_1103_isNumeric) { + _1108_namedFields = (_1108_namedFields).ToNamelessFields(); } - _1134_ctors = Dafny.Sequence.Concat(_1134_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(DCOMP.__default.escapeName((_1136_ctor).dtor_name), _1143_namedFields))); + _1099_ctors = Dafny.Sequence.Concat(_1099_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(DCOMP.__default.escapeName((_1101_ctor).dtor_name), _1108_namedFields))); } - Dafny.ISequence> _1144_selfPath; - _1144_selfPath = Dafny.Sequence>.FromElements((c).dtor_name); - Dafny.ISequence _1145_implBodyRaw; - Dafny.IMap>,Dafny.ISequence> _1146_traitBodies; + Dafny.ISequence> _1109_selfPath; + _1109_selfPath = Dafny.Sequence>.FromElements((c).dtor_name); + Dafny.ISequence _1110_implBodyRaw; + Dafny.IMap>,Dafny.ISequence> _1111_traitBodies; Dafny.ISequence _out58; Dafny.IMap>,Dafny.ISequence> _out59; - (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Datatype(DAST.DatatypeType.create(_1144_selfPath, (c).dtor_attributes))), _1129_typeParamsSet, out _out58, out _out59); - _1145_implBodyRaw = _out58; - _1146_traitBodies = _out59; - Dafny.ISequence _1147_implBody; - _1147_implBody = _1145_implBodyRaw; - Dafny.ISet> _1148_emittedFields; - _1148_emittedFields = Dafny.Set>.FromElements(); + (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_Path(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedType.create_Datatype(DAST.DatatypeType.create(_1109_selfPath, (c).dtor_attributes))), _1094_typeParamsSet, out _out58, out _out59); + _1110_implBodyRaw = _out58; + _1111_traitBodies = _out59; + Dafny.ISequence _1112_implBody; + _1112_implBody = _1110_implBodyRaw; + Dafny.ISet> _1113_emittedFields; + _1113_emittedFields = Dafny.Set>.FromElements(); BigInteger _hi11 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1149_i = BigInteger.Zero; _1149_i < _hi11; _1149_i++) { - DAST._IDatatypeCtor _1150_ctor; - _1150_ctor = ((c).dtor_ctors).Select(_1149_i); - BigInteger _hi12 = new BigInteger(((_1150_ctor).dtor_args).Count); - for (BigInteger _1151_j = BigInteger.Zero; _1151_j < _hi12; _1151_j++) { - DAST._IDatatypeDtor _1152_dtor; - _1152_dtor = ((_1150_ctor).dtor_args).Select(_1151_j); - Dafny.ISequence _1153_callName; - _1153_callName = Std.Wrappers.Option>.GetOr((_1152_dtor).dtor_callName, DCOMP.__default.escapeName(((_1152_dtor).dtor_formal).dtor_name)); - if (!((_1148_emittedFields).Contains(_1153_callName))) { - _1148_emittedFields = Dafny.Set>.Union(_1148_emittedFields, Dafny.Set>.FromElements(_1153_callName)); - RAST._IType _1154_formalType; + for (BigInteger _1114_i = BigInteger.Zero; _1114_i < _hi11; _1114_i++) { + DAST._IDatatypeCtor _1115_ctor; + _1115_ctor = ((c).dtor_ctors).Select(_1114_i); + BigInteger _hi12 = new BigInteger(((_1115_ctor).dtor_args).Count); + for (BigInteger _1116_j = BigInteger.Zero; _1116_j < _hi12; _1116_j++) { + DAST._IDatatypeDtor _1117_dtor; + _1117_dtor = ((_1115_ctor).dtor_args).Select(_1116_j); + Dafny.ISequence _1118_callName; + _1118_callName = Std.Wrappers.Option>.GetOr((_1117_dtor).dtor_callName, DCOMP.__default.escapeName(((_1117_dtor).dtor_formal).dtor_name)); + if (!((_1113_emittedFields).Contains(_1118_callName))) { + _1113_emittedFields = Dafny.Set>.Union(_1113_emittedFields, Dafny.Set>.FromElements(_1118_callName)); + RAST._IType _1119_formalType; RAST._IType _out60; - _out60 = (this).GenType(((_1152_dtor).dtor_formal).dtor_typ, false, false); - _1154_formalType = _out60; - Dafny.ISequence _1155_cases; - _1155_cases = Dafny.Sequence.FromElements(); + _out60 = (this).GenType(((_1117_dtor).dtor_formal).dtor_typ, false, false); + _1119_formalType = _out60; + Dafny.ISequence _1120_cases; + _1120_cases = Dafny.Sequence.FromElements(); BigInteger _hi13 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1156_k = BigInteger.Zero; _1156_k < _hi13; _1156_k++) { - DAST._IDatatypeCtor _1157_ctor2; - _1157_ctor2 = ((c).dtor_ctors).Select(_1156_k); - Dafny.ISequence _1158_pattern; - _1158_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1133_datatypeName, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName((_1157_ctor2).dtor_name)); - Dafny.ISequence _1159_rhs = Dafny.Sequence.Empty; - Std.Wrappers._IOption> _1160_hasMatchingField; - _1160_hasMatchingField = Std.Wrappers.Option>.create_None(); - Dafny.ISequence _1161_patternInner; - _1161_patternInner = Dafny.Sequence.UnicodeFromString(""); - bool _1162_isNumeric; - _1162_isNumeric = false; - BigInteger _hi14 = new BigInteger(((_1157_ctor2).dtor_args).Count); - for (BigInteger _1163_l = BigInteger.Zero; _1163_l < _hi14; _1163_l++) { - DAST._IDatatypeDtor _1164_dtor2; - _1164_dtor2 = ((_1157_ctor2).dtor_args).Select(_1163_l); - Dafny.ISequence _1165_patternName; - _1165_patternName = DCOMP.__default.escapeName(((_1164_dtor2).dtor_formal).dtor_name); - if (((_1163_l).Sign == 0) && ((_1165_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - _1162_isNumeric = true; + for (BigInteger _1121_k = BigInteger.Zero; _1121_k < _hi13; _1121_k++) { + DAST._IDatatypeCtor _1122_ctor2; + _1122_ctor2 = ((c).dtor_ctors).Select(_1121_k); + Dafny.ISequence _1123_pattern; + _1123_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1098_datatypeName, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName((_1122_ctor2).dtor_name)); + Dafny.ISequence _1124_rhs = Dafny.Sequence.Empty; + Std.Wrappers._IOption> _1125_hasMatchingField; + _1125_hasMatchingField = Std.Wrappers.Option>.create_None(); + Dafny.ISequence _1126_patternInner; + _1126_patternInner = Dafny.Sequence.UnicodeFromString(""); + bool _1127_isNumeric; + _1127_isNumeric = false; + BigInteger _hi14 = new BigInteger(((_1122_ctor2).dtor_args).Count); + for (BigInteger _1128_l = BigInteger.Zero; _1128_l < _hi14; _1128_l++) { + DAST._IDatatypeDtor _1129_dtor2; + _1129_dtor2 = ((_1122_ctor2).dtor_args).Select(_1128_l); + Dafny.ISequence _1130_patternName; + _1130_patternName = DCOMP.__default.escapeName(((_1129_dtor2).dtor_formal).dtor_name); + if (((_1128_l).Sign == 0) && ((_1130_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + _1127_isNumeric = true; } - if (_1162_isNumeric) { - _1165_patternName = Std.Wrappers.Option>.GetOr((_1164_dtor2).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1163_l))); + if (_1127_isNumeric) { + _1130_patternName = Std.Wrappers.Option>.GetOr((_1129_dtor2).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1128_l))); } - if (object.Equals(((_1152_dtor).dtor_formal).dtor_name, ((_1164_dtor2).dtor_formal).dtor_name)) { - _1160_hasMatchingField = Std.Wrappers.Option>.create_Some(_1165_patternName); + if (object.Equals(((_1117_dtor).dtor_formal).dtor_name, ((_1129_dtor2).dtor_formal).dtor_name)) { + _1125_hasMatchingField = Std.Wrappers.Option>.create_Some(_1130_patternName); } - _1161_patternInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1161_patternInner, _1165_patternName), Dafny.Sequence.UnicodeFromString(", ")); + _1126_patternInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1126_patternInner, _1130_patternName), Dafny.Sequence.UnicodeFromString(", ")); } - if (_1162_isNumeric) { - _1158_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1158_pattern, Dafny.Sequence.UnicodeFromString("(")), _1161_patternInner), Dafny.Sequence.UnicodeFromString(")")); + if (_1127_isNumeric) { + _1123_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1123_pattern, Dafny.Sequence.UnicodeFromString("(")), _1126_patternInner), Dafny.Sequence.UnicodeFromString(")")); } else { - _1158_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1158_pattern, Dafny.Sequence.UnicodeFromString("{")), _1161_patternInner), Dafny.Sequence.UnicodeFromString("}")); + _1123_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1123_pattern, Dafny.Sequence.UnicodeFromString("{")), _1126_patternInner), Dafny.Sequence.UnicodeFromString("}")); } - if ((_1160_hasMatchingField).is_Some) { + if ((_1125_hasMatchingField).is_Some) { if ((c).dtor_isCo) { - _1159_rhs = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&"), (_1160_hasMatchingField).dtor_value), Dafny.Sequence.UnicodeFromString(".0)")); + _1124_rhs = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&"), (_1125_hasMatchingField).dtor_value), Dafny.Sequence.UnicodeFromString(".0)")); } else { - _1159_rhs = Dafny.Sequence.Concat((_1160_hasMatchingField).dtor_value, Dafny.Sequence.UnicodeFromString("")); + _1124_rhs = Dafny.Sequence.Concat((_1125_hasMatchingField).dtor_value, Dafny.Sequence.UnicodeFromString("")); } } else { - _1159_rhs = Dafny.Sequence.UnicodeFromString("panic!(\"field does not exist on this variant\")"); + _1124_rhs = Dafny.Sequence.UnicodeFromString("panic!(\"field does not exist on this variant\")"); } - RAST._IMatchCase _1166_ctorMatch; - _1166_ctorMatch = RAST.MatchCase.create(_1158_pattern, RAST.Expr.create_RawExpr(_1159_rhs)); - _1155_cases = Dafny.Sequence.Concat(_1155_cases, Dafny.Sequence.FromElements(_1166_ctorMatch)); + RAST._IMatchCase _1131_ctorMatch; + _1131_ctorMatch = RAST.MatchCase.create(_1123_pattern, RAST.Expr.create_RawExpr(_1124_rhs)); + _1120_cases = Dafny.Sequence.Concat(_1120_cases, Dafny.Sequence.FromElements(_1131_ctorMatch)); } if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - _1155_cases = Dafny.Sequence.Concat(_1155_cases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1133_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("panic!()"))))); + _1120_cases = Dafny.Sequence.Concat(_1120_cases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1098_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("panic!()"))))); } - RAST._IExpr _1167_methodBody; - _1167_methodBody = RAST.Expr.create_Match(RAST.__default.self, _1155_cases); - _1147_implBody = Dafny.Sequence.Concat(_1147_implBody, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(_1153_callName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_Borrowed(_1154_formalType)), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1167_methodBody))))); + RAST._IExpr _1132_methodBody; + _1132_methodBody = RAST.Expr.create_Match(RAST.__default.self, _1120_cases); + _1112_implBody = Dafny.Sequence.Concat(_1112_implBody, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(_1118_callName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_Borrowed(_1119_formalType)), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1132_methodBody))))); } } } if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - Dafny.ISequence _1168_types; - _1168_types = Dafny.Sequence.FromElements(); + Dafny.ISequence _1133_types; + _1133_types = Dafny.Sequence.FromElements(); BigInteger _hi15 = new BigInteger(((c).dtor_typeParams).Count); - for (BigInteger _1169_typeI = BigInteger.Zero; _1169_typeI < _hi15; _1169_typeI++) { - DAST._IType _1170_typeArg; - RAST._ITypeParamDecl _1171_rTypeParamDecl; + for (BigInteger _1134_typeI = BigInteger.Zero; _1134_typeI < _hi15; _1134_typeI++) { + DAST._IType _1135_typeArg; + RAST._ITypeParamDecl _1136_rTypeParamDecl; DAST._IType _out61; RAST._ITypeParamDecl _out62; - (this).GenTypeParam(((c).dtor_typeParams).Select(_1169_typeI), out _out61, out _out62); - _1170_typeArg = _out61; - _1171_rTypeParamDecl = _out62; - RAST._IType _1172_rTypeArg; + (this).GenTypeParam(((c).dtor_typeParams).Select(_1134_typeI), out _out61, out _out62); + _1135_typeArg = _out61; + _1136_rTypeParamDecl = _out62; + RAST._IType _1137_rTypeArg; RAST._IType _out63; - _out63 = (this).GenType(_1170_typeArg, false, false); - _1172_rTypeArg = _out63; - _1168_types = Dafny.Sequence.Concat(_1168_types, Dafny.Sequence.FromElements(RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_1172_rTypeArg)))); - } - _1134_ctors = Dafny.Sequence.Concat(_1134_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(Dafny.Sequence.UnicodeFromString("_PhantomVariant"), RAST.Fields.create_NamelessFields(Std.Collections.Seq.__default.Map(((System.Func)((_1173_tpe) => { - return RAST.NamelessField.create(RAST.Visibility.create_PRIV(), _1173_tpe); -})), _1168_types))))); - } - Dafny.ISequence _1174_enumBody; - _1174_enumBody = Dafny.Sequence.FromElements(RAST.ModDecl.create_EnumDecl(RAST.Enum.create(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(PartialEq, Clone)]")), _1133_datatypeName, _1131_rTypeParamsDecls, _1134_ctors)), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_1131_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1133_datatypeName), _1130_rTypeParams), _1132_whereConstraints, _1147_implBody))); - Dafny.ISequence _1175_printImplBodyCases; - _1175_printImplBodyCases = Dafny.Sequence.FromElements(); + _out63 = (this).GenType(_1135_typeArg, false, false); + _1137_rTypeArg = _out63; + _1133_types = Dafny.Sequence.Concat(_1133_types, Dafny.Sequence.FromElements(RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_1137_rTypeArg)))); + } + _1099_ctors = Dafny.Sequence.Concat(_1099_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(Dafny.Sequence.UnicodeFromString("_PhantomVariant"), RAST.Fields.create_NamelessFields(Std.Collections.Seq.__default.Map(((System.Func)((_1138_tpe) => { + return RAST.NamelessField.create(RAST.Visibility.create_PRIV(), _1138_tpe); +})), _1133_types))))); + } + Dafny.ISequence _1139_enumBody; + _1139_enumBody = Dafny.Sequence.FromElements(RAST.ModDecl.create_EnumDecl(RAST.Enum.create(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(PartialEq, Clone)]")), _1098_datatypeName, _1096_rTypeParamsDecls, _1099_ctors)), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_1096_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1098_datatypeName), _1095_rTypeParams), _1097_whereConstraints, _1112_implBody))); + Dafny.ISequence _1140_printImplBodyCases; + _1140_printImplBodyCases = Dafny.Sequence.FromElements(); BigInteger _hi16 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1176_i = BigInteger.Zero; _1176_i < _hi16; _1176_i++) { - DAST._IDatatypeCtor _1177_ctor; - _1177_ctor = ((c).dtor_ctors).Select(_1176_i); - Dafny.ISequence _1178_ctorMatch; - _1178_ctorMatch = DCOMP.__default.escapeName((_1177_ctor).dtor_name); - Dafny.ISequence _1179_modulePrefix; - _1179_modulePrefix = ((((((c).dtor_enclosingModule))).Equals(Dafny.Sequence.UnicodeFromString("_module"))) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat((((c).dtor_enclosingModule)), Dafny.Sequence.UnicodeFromString(".")))); - Dafny.ISequence _1180_ctorName; - _1180_ctorName = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1179_modulePrefix, ((c).dtor_name)), Dafny.Sequence.UnicodeFromString(".")), ((_1177_ctor).dtor_name)); - if (((new BigInteger((_1180_ctorName).Count)) >= (new BigInteger(13))) && (((_1180_ctorName).Subsequence(BigInteger.Zero, new BigInteger(13))).Equals(Dafny.Sequence.UnicodeFromString("_System.Tuple")))) { - _1180_ctorName = Dafny.Sequence.UnicodeFromString(""); - } - RAST._IExpr _1181_printRhs; - _1181_printRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), _1180_ctorName), (((_1177_ctor).dtor_hasAnyArgs) ? (Dafny.Sequence.UnicodeFromString("(\")?")) : (Dafny.Sequence.UnicodeFromString("\")?"))))); - bool _1182_isNumeric; - _1182_isNumeric = false; - Dafny.ISequence _1183_ctorMatchInner; - _1183_ctorMatchInner = Dafny.Sequence.UnicodeFromString(""); - BigInteger _hi17 = new BigInteger(((_1177_ctor).dtor_args).Count); - for (BigInteger _1184_j = BigInteger.Zero; _1184_j < _hi17; _1184_j++) { - DAST._IDatatypeDtor _1185_dtor; - _1185_dtor = ((_1177_ctor).dtor_args).Select(_1184_j); - Dafny.ISequence _1186_patternName; - _1186_patternName = DCOMP.__default.escapeName(((_1185_dtor).dtor_formal).dtor_name); - if (((_1184_j).Sign == 0) && ((_1186_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - _1182_isNumeric = true; - } - if (_1182_isNumeric) { - _1186_patternName = Std.Wrappers.Option>.GetOr((_1185_dtor).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1184_j))); - } - _1183_ctorMatchInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1183_ctorMatchInner, _1186_patternName), Dafny.Sequence.UnicodeFromString(", ")); - if ((_1184_j).Sign == 1) { - _1181_printRhs = (_1181_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \", \")?"))); - } - _1181_printRhs = (_1181_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print("), _1186_patternName), Dafny.Sequence.UnicodeFromString(", _formatter, false)?")))); - } - if (_1182_isNumeric) { - _1178_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1178_ctorMatch, Dafny.Sequence.UnicodeFromString("(")), _1183_ctorMatchInner), Dafny.Sequence.UnicodeFromString(")")); + for (BigInteger _1141_i = BigInteger.Zero; _1141_i < _hi16; _1141_i++) { + DAST._IDatatypeCtor _1142_ctor; + _1142_ctor = ((c).dtor_ctors).Select(_1141_i); + Dafny.ISequence _1143_ctorMatch; + _1143_ctorMatch = DCOMP.__default.escapeName((_1142_ctor).dtor_name); + Dafny.ISequence _1144_modulePrefix; + _1144_modulePrefix = ((((((c).dtor_enclosingModule))).Equals(Dafny.Sequence.UnicodeFromString("_module"))) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat((((c).dtor_enclosingModule)), Dafny.Sequence.UnicodeFromString(".")))); + Dafny.ISequence _1145_ctorName; + _1145_ctorName = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1144_modulePrefix, ((c).dtor_name)), Dafny.Sequence.UnicodeFromString(".")), ((_1142_ctor).dtor_name)); + if (((new BigInteger((_1145_ctorName).Count)) >= (new BigInteger(13))) && (((_1145_ctorName).Subsequence(BigInteger.Zero, new BigInteger(13))).Equals(Dafny.Sequence.UnicodeFromString("_System.Tuple")))) { + _1145_ctorName = Dafny.Sequence.UnicodeFromString(""); + } + RAST._IExpr _1146_printRhs; + _1146_printRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), _1145_ctorName), (((_1142_ctor).dtor_hasAnyArgs) ? (Dafny.Sequence.UnicodeFromString("(\")?")) : (Dafny.Sequence.UnicodeFromString("\")?"))))); + bool _1147_isNumeric; + _1147_isNumeric = false; + Dafny.ISequence _1148_ctorMatchInner; + _1148_ctorMatchInner = Dafny.Sequence.UnicodeFromString(""); + BigInteger _hi17 = new BigInteger(((_1142_ctor).dtor_args).Count); + for (BigInteger _1149_j = BigInteger.Zero; _1149_j < _hi17; _1149_j++) { + DAST._IDatatypeDtor _1150_dtor; + _1150_dtor = ((_1142_ctor).dtor_args).Select(_1149_j); + Dafny.ISequence _1151_patternName; + _1151_patternName = DCOMP.__default.escapeName(((_1150_dtor).dtor_formal).dtor_name); + if (((_1149_j).Sign == 0) && ((_1151_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + _1147_isNumeric = true; + } + if (_1147_isNumeric) { + _1151_patternName = Std.Wrappers.Option>.GetOr((_1150_dtor).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1149_j))); + } + _1148_ctorMatchInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1148_ctorMatchInner, _1151_patternName), Dafny.Sequence.UnicodeFromString(", ")); + if ((_1149_j).Sign == 1) { + _1146_printRhs = (_1146_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \", \")?"))); + } + _1146_printRhs = (_1146_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print("), _1151_patternName), Dafny.Sequence.UnicodeFromString(", _formatter, false)?")))); + } + if (_1147_isNumeric) { + _1143_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1143_ctorMatch, Dafny.Sequence.UnicodeFromString("(")), _1148_ctorMatchInner), Dafny.Sequence.UnicodeFromString(")")); } else { - _1178_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1178_ctorMatch, Dafny.Sequence.UnicodeFromString("{")), _1183_ctorMatchInner), Dafny.Sequence.UnicodeFromString("}")); + _1143_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1143_ctorMatch, Dafny.Sequence.UnicodeFromString("{")), _1148_ctorMatchInner), Dafny.Sequence.UnicodeFromString("}")); } - if ((_1177_ctor).dtor_hasAnyArgs) { - _1181_printRhs = (_1181_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \")\")?"))); + if ((_1142_ctor).dtor_hasAnyArgs) { + _1146_printRhs = (_1146_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \")\")?"))); } - _1181_printRhs = (_1181_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("Ok(())"))); - _1175_printImplBodyCases = Dafny.Sequence.Concat(_1175_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1133_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _1178_ctorMatch), RAST.Expr.create_Block(_1181_printRhs)))); + _1146_printRhs = (_1146_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("Ok(())"))); + _1140_printImplBodyCases = Dafny.Sequence.Concat(_1140_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1098_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _1143_ctorMatch), RAST.Expr.create_Block(_1146_printRhs)))); } if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - _1175_printImplBodyCases = Dafny.Sequence.Concat(_1175_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1133_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("{panic!()}"))))); - } - Dafny.ISequence _1187_defaultConstrainedTypeParams; - _1187_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1131_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); - RAST._IExpr _1188_printImplBody; - _1188_printImplBody = RAST.Expr.create_Match(RAST.__default.self, _1175_printImplBodyCases); - Dafny.ISequence _1189_printImpl; - _1189_printImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1131_rTypeParamsDecls, ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Debug")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1133_datatypeName), _1130_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("f"), RAST.Type.create_BorrowedMut(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Formatter"))))), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("DafnyPrint"))).MSel(Dafny.Sequence.UnicodeFromString("fmt_print"))).Apply(Dafny.Sequence.FromElements(RAST.__default.self, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("f")), RAST.Expr.create_LiteralBool(true))))))))), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1131_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1133_datatypeName), _1130_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.Type.create_BorrowedMut(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Formatter")))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1188_printImplBody))))))); - Dafny.ISequence _1190_defaultImpl; - _1190_defaultImpl = Dafny.Sequence.FromElements(); - Dafny.ISequence _1191_asRefImpl; - _1191_asRefImpl = Dafny.Sequence.FromElements(); + _1140_printImplBodyCases = Dafny.Sequence.Concat(_1140_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1098_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("{panic!()}"))))); + } + Dafny.ISequence _1152_defaultConstrainedTypeParams; + _1152_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1096_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); + RAST._IExpr _1153_printImplBody; + _1153_printImplBody = RAST.Expr.create_Match(RAST.__default.self, _1140_printImplBodyCases); + Dafny.ISequence _1154_printImpl; + _1154_printImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1096_rTypeParamsDecls, ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Debug")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1098_datatypeName), _1095_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("f"), RAST.Type.create_BorrowedMut(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Formatter"))))), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("DafnyPrint"))).MSel(Dafny.Sequence.UnicodeFromString("fmt_print"))).Apply(Dafny.Sequence.FromElements(RAST.__default.self, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("f")), RAST.Expr.create_LiteralBool(true))))))))), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1096_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1098_datatypeName), _1095_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("fmt_print"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_formatter"), RAST.Type.create_BorrowedMut(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Formatter")))), RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_in_seq"), RAST.Type.create_Bool())), Std.Wrappers.Option.create_Some(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("std::fmt::Result"))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1153_printImplBody))))))); + Dafny.ISequence _1155_defaultImpl; + _1155_defaultImpl = Dafny.Sequence.FromElements(); + Dafny.ISequence _1156_asRefImpl; + _1156_asRefImpl = Dafny.Sequence.FromElements(); if ((new BigInteger(((c).dtor_ctors).Count)).Sign == 1) { - RAST._IExpr _1192_structName; - _1192_structName = (RAST.Expr.create_Identifier(_1133_datatypeName)).MSel(DCOMP.__default.escapeName((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_name)); - Dafny.ISequence _1193_structAssignments; - _1193_structAssignments = Dafny.Sequence.FromElements(); + RAST._IExpr _1157_structName; + _1157_structName = (RAST.Expr.create_Identifier(_1098_datatypeName)).MSel(DCOMP.__default.escapeName((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_name)); + Dafny.ISequence _1158_structAssignments; + _1158_structAssignments = Dafny.Sequence.FromElements(); BigInteger _hi18 = new BigInteger(((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Count); - for (BigInteger _1194_i = BigInteger.Zero; _1194_i < _hi18; _1194_i++) { - DAST._IDatatypeDtor _1195_dtor; - _1195_dtor = ((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Select(_1194_i); - _1193_structAssignments = Dafny.Sequence.Concat(_1193_structAssignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_1195_dtor).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::default::Default::default()"))))); - } - Dafny.ISequence _1196_defaultConstrainedTypeParams; - _1196_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1131_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); - RAST._IType _1197_fullType; - _1197_fullType = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1133_datatypeName), _1130_rTypeParams); - _1190_defaultImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1196_defaultConstrainedTypeParams, RAST.__default.DefaultTrait, _1197_fullType, Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(_1197_fullType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(_1192_structName, _1193_structAssignments)))))))); - _1191_asRefImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1131_rTypeParamsDecls, (((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("convert"))).MSel(Dafny.Sequence.UnicodeFromString("AsRef"))).Apply1(_1197_fullType), RAST.Type.create_Borrowed(_1197_fullType), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("as_ref"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.__default.self))))))); - } - s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1174_enumBody, _1189_printImpl), _1190_defaultImpl), _1191_asRefImpl); + for (BigInteger _1159_i = BigInteger.Zero; _1159_i < _hi18; _1159_i++) { + DAST._IDatatypeDtor _1160_dtor; + _1160_dtor = ((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Select(_1159_i); + _1158_structAssignments = Dafny.Sequence.Concat(_1158_structAssignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_1160_dtor).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::default::Default::default()"))))); + } + Dafny.ISequence _1161_defaultConstrainedTypeParams; + _1161_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1096_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); + RAST._IType _1162_fullType; + _1162_fullType = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1098_datatypeName), _1095_rTypeParams); + _1155_defaultImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1161_defaultConstrainedTypeParams, RAST.__default.DefaultTrait, _1162_fullType, Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("default"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(_1162_fullType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(_1157_structName, _1158_structAssignments)))))))); + _1156_asRefImpl = Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1096_rTypeParamsDecls, (((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("convert"))).MSel(Dafny.Sequence.UnicodeFromString("AsRef"))).Apply1(_1162_fullType), RAST.Type.create_Borrowed(_1162_fullType), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("as_ref"), Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_SelfOwned()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.__default.self))))))); + } + s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1139_enumBody, _1154_printImpl), _1155_defaultImpl), _1156_asRefImpl); return s; } public static RAST._IType GenPath(Dafny.ISequence> p) @@ -1052,8 +1049,8 @@ public static RAST._IType GenPath(Dafny.ISequence> p } else { r = ((((((p).Select(BigInteger.Zero)))).Equals(Dafny.Sequence.UnicodeFromString("std"))) ? (RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString(""))) : (RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("super")))); BigInteger _hi19 = new BigInteger((p).Count); - for (BigInteger _1198_i = BigInteger.Zero; _1198_i < _hi19; _1198_i++) { - r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1198_i)))); + for (BigInteger _1163_i = BigInteger.Zero; _1163_i < _hi19; _1163_i++) { + r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1163_i)))); } } return r; @@ -1067,8 +1064,8 @@ public static RAST._IExpr GenPathExpr(Dafny.ISequence.UnicodeFromString("std"))) ? (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString(""))) : (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("super")))); BigInteger _hi20 = new BigInteger((p).Count); - for (BigInteger _1199_i = BigInteger.Zero; _1199_i < _hi20; _1199_i++) { - r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1199_i)))); + for (BigInteger _1164_i = BigInteger.Zero; _1164_i < _hi20; _1164_i++) { + r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1164_i)))); } } return r; @@ -1078,15 +1075,15 @@ public static RAST._IExpr GenPathExpr(Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.FromElements(); if ((new BigInteger((args).Count)).Sign == 1) { - BigInteger _1200_i; - _1200_i = BigInteger.Zero; - while ((_1200_i) < (new BigInteger((args).Count))) { - RAST._IType _1201_genTp; + BigInteger _1165_i; + _1165_i = BigInteger.Zero; + while ((_1165_i) < (new BigInteger((args).Count))) { + RAST._IType _1166_genTp; RAST._IType _out64; - _out64 = (this).GenType((args).Select(_1200_i), inBinding, inFn); - _1201_genTp = _out64; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1201_genTp)); - _1200_i = (_1200_i) + (BigInteger.One); + _out64 = (this).GenType((args).Select(_1165_i), inBinding, inFn); + _1166_genTp = _out64; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1166_genTp)); + _1165_i = (_1165_i) + (BigInteger.One); } } return s; @@ -1101,30 +1098,29 @@ public RAST._IType GenType(DAST._IType c, bool inBinding, bool inFn) bool unmatched49 = true; if (unmatched49) { if (_source49.is_Path) { - Dafny.ISequence> _1202_p = _source49.dtor_Path_a0; - Dafny.ISequence _1203_args = _source49.dtor_typeArgs; - DAST._IResolvedType _1204_resolved = _source49.dtor_resolved; + Dafny.ISequence> _1167_p = _source49.dtor_Path_a0; + Dafny.ISequence _1168_args = _source49.dtor_typeArgs; + DAST._IResolvedType _1169_resolved = _source49.dtor_resolved; unmatched49 = false; { - RAST._IType _1205_t; + RAST._IType _1170_t; RAST._IType _out65; - _out65 = DCOMP.COMP.GenPath(_1202_p); - _1205_t = _out65; - Dafny.ISequence _1206_typeArgs; + _out65 = DCOMP.COMP.GenPath(_1167_p); + _1170_t = _out65; + Dafny.ISequence _1171_typeArgs; Dafny.ISequence _out66; - _out66 = (this).GenTypeArgs(_1203_args, inBinding, inFn); - _1206_typeArgs = _out66; - s = RAST.Type.create_TypeApp(_1205_t, _1206_typeArgs); - DAST._IResolvedType _source50 = _1204_resolved; + _out66 = (this).GenTypeArgs(_1168_args, inBinding, inFn); + _1171_typeArgs = _out66; + s = RAST.Type.create_TypeApp(_1170_t, _1171_typeArgs); + DAST._IResolvedType _source50 = _1169_resolved; bool unmatched50 = true; if (unmatched50) { if (_source50.is_Datatype) { DAST._IDatatypeType datatypeType0 = _source50.dtor_datatypeType; - Dafny.ISequence> _1207___v50 = datatypeType0.dtor_path; - Dafny.ISequence _1208_attributes = datatypeType0.dtor_attributes; + Dafny.ISequence _1172_attributes = datatypeType0.dtor_attributes; unmatched50 = false; { - if ((this).IsRcWrapped(_1208_attributes)) { + if ((this).IsRcWrapped(_1172_attributes)) { s = RAST.__default.Rc(s); } } @@ -1132,11 +1128,9 @@ public RAST._IType GenType(DAST._IType c, bool inBinding, bool inFn) } if (unmatched50) { if (_source50.is_Trait) { - Dafny.ISequence> _1209___v51 = _source50.dtor_path; - Dafny.ISequence _1210___v52 = _source50.dtor_attributes; unmatched50 = false; { - if ((_1202_p).Equals(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("_System"), Dafny.Sequence.UnicodeFromString("object")))) { + if ((_1167_p).Equals(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("_System"), Dafny.Sequence.UnicodeFromString("object")))) { s = RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::rc::Rc")); } else { if (inBinding) { @@ -1149,20 +1143,20 @@ public RAST._IType GenType(DAST._IType c, bool inBinding, bool inFn) } } if (unmatched50) { - DAST._IType _1211_t = _source50.dtor_baseType; - DAST._INewtypeRange _1212_range = _source50.dtor_range; - bool _1213_erased = _source50.dtor_erase; - Dafny.ISequence _1214_attributes = _source50.dtor_attributes; + DAST._IType _1173_t = _source50.dtor_baseType; + DAST._INewtypeRange _1174_range = _source50.dtor_range; + bool _1175_erased = _source50.dtor_erase; + Dafny.ISequence _1176_attributes = _source50.dtor_attributes; unmatched50 = false; { - if (_1213_erased) { - Std.Wrappers._IOption _source51 = DCOMP.COMP.NewtypeToRustType(_1211_t, _1212_range); + if (_1175_erased) { + Std.Wrappers._IOption _source51 = DCOMP.COMP.NewtypeToRustType(_1173_t, _1174_range); bool unmatched51 = true; if (unmatched51) { if (_source51.is_Some) { - RAST._IType _1215_v = _source51.dtor_value; + RAST._IType _1177_v = _source51.dtor_value; unmatched51 = false; - s = _1215_v; + s = _1177_v; } } if (unmatched51) { @@ -1176,186 +1170,186 @@ public RAST._IType GenType(DAST._IType c, bool inBinding, bool inFn) } if (unmatched49) { if (_source49.is_Nullable) { - DAST._IType _1216_inner = _source49.dtor_Nullable_a0; + DAST._IType _1178_inner = _source49.dtor_Nullable_a0; unmatched49 = false; { - RAST._IType _1217_innerExpr; + RAST._IType _1179_innerExpr; RAST._IType _out67; - _out67 = (this).GenType(_1216_inner, inBinding, inFn); - _1217_innerExpr = _out67; - s = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("::std::option::Option")), Dafny.Sequence.FromElements(_1217_innerExpr)); + _out67 = (this).GenType(_1178_inner, inBinding, inFn); + _1179_innerExpr = _out67; + s = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("::std::option::Option")), Dafny.Sequence.FromElements(_1179_innerExpr)); } } } if (unmatched49) { if (_source49.is_Tuple) { - Dafny.ISequence _1218_types = _source49.dtor_Tuple_a0; + Dafny.ISequence _1180_types = _source49.dtor_Tuple_a0; unmatched49 = false; { - Dafny.ISequence _1219_args; - _1219_args = Dafny.Sequence.FromElements(); - BigInteger _1220_i; - _1220_i = BigInteger.Zero; - while ((_1220_i) < (new BigInteger((_1218_types).Count))) { - RAST._IType _1221_generated; + Dafny.ISequence _1181_args; + _1181_args = Dafny.Sequence.FromElements(); + BigInteger _1182_i; + _1182_i = BigInteger.Zero; + while ((_1182_i) < (new BigInteger((_1180_types).Count))) { + RAST._IType _1183_generated; RAST._IType _out68; - _out68 = (this).GenType((_1218_types).Select(_1220_i), inBinding, inFn); - _1221_generated = _out68; - _1219_args = Dafny.Sequence.Concat(_1219_args, Dafny.Sequence.FromElements(_1221_generated)); - _1220_i = (_1220_i) + (BigInteger.One); + _out68 = (this).GenType((_1180_types).Select(_1182_i), inBinding, inFn); + _1183_generated = _out68; + _1181_args = Dafny.Sequence.Concat(_1181_args, Dafny.Sequence.FromElements(_1183_generated)); + _1182_i = (_1182_i) + (BigInteger.One); } - s = (((new BigInteger((_1218_types).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) ? (RAST.Type.create_TupleType(_1219_args)) : (RAST.__default.SystemTupleType(_1219_args))); + s = (((new BigInteger((_1180_types).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) ? (RAST.Type.create_TupleType(_1181_args)) : (RAST.__default.SystemTupleType(_1181_args))); } } } if (unmatched49) { if (_source49.is_Array) { - DAST._IType _1222_element = _source49.dtor_element; - BigInteger _1223_dims = _source49.dtor_dims; + DAST._IType _1184_element = _source49.dtor_element; + BigInteger _1185_dims = _source49.dtor_dims; unmatched49 = false; { - RAST._IType _1224_elem; + RAST._IType _1186_elem; RAST._IType _out69; - _out69 = (this).GenType(_1222_element, inBinding, inFn); - _1224_elem = _out69; - s = _1224_elem; - BigInteger _1225_i; - _1225_i = BigInteger.Zero; - while ((_1225_i) < (_1223_dims)) { + _out69 = (this).GenType(_1184_element, inBinding, inFn); + _1186_elem = _out69; + s = _1186_elem; + BigInteger _1187_i; + _1187_i = BigInteger.Zero; + while ((_1187_i) < (_1185_dims)) { s = RAST.__default.Rc(RAST.__default.RefCell(RAST.__default.Vec(s))); - _1225_i = (_1225_i) + (BigInteger.One); + _1187_i = (_1187_i) + (BigInteger.One); } } } } if (unmatched49) { if (_source49.is_Seq) { - DAST._IType _1226_element = _source49.dtor_element; + DAST._IType _1188_element = _source49.dtor_element; unmatched49 = false; { - RAST._IType _1227_elem; + RAST._IType _1189_elem; RAST._IType _out70; - _out70 = (this).GenType(_1226_element, inBinding, inFn); - _1227_elem = _out70; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence")), Dafny.Sequence.FromElements(_1227_elem)); + _out70 = (this).GenType(_1188_element, inBinding, inFn); + _1189_elem = _out70; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence")), Dafny.Sequence.FromElements(_1189_elem)); } } } if (unmatched49) { if (_source49.is_Set) { - DAST._IType _1228_element = _source49.dtor_element; + DAST._IType _1190_element = _source49.dtor_element; unmatched49 = false; { - RAST._IType _1229_elem; + RAST._IType _1191_elem; RAST._IType _out71; - _out71 = (this).GenType(_1228_element, inBinding, inFn); - _1229_elem = _out71; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Set")), Dafny.Sequence.FromElements(_1229_elem)); + _out71 = (this).GenType(_1190_element, inBinding, inFn); + _1191_elem = _out71; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Set")), Dafny.Sequence.FromElements(_1191_elem)); } } } if (unmatched49) { if (_source49.is_Multiset) { - DAST._IType _1230_element = _source49.dtor_element; + DAST._IType _1192_element = _source49.dtor_element; unmatched49 = false; { - RAST._IType _1231_elem; + RAST._IType _1193_elem; RAST._IType _out72; - _out72 = (this).GenType(_1230_element, inBinding, inFn); - _1231_elem = _out72; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Multiset")), Dafny.Sequence.FromElements(_1231_elem)); + _out72 = (this).GenType(_1192_element, inBinding, inFn); + _1193_elem = _out72; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Multiset")), Dafny.Sequence.FromElements(_1193_elem)); } } } if (unmatched49) { if (_source49.is_Map) { - DAST._IType _1232_key = _source49.dtor_key; - DAST._IType _1233_value = _source49.dtor_value; + DAST._IType _1194_key = _source49.dtor_key; + DAST._IType _1195_value = _source49.dtor_value; unmatched49 = false; { - RAST._IType _1234_keyType; + RAST._IType _1196_keyType; RAST._IType _out73; - _out73 = (this).GenType(_1232_key, inBinding, inFn); - _1234_keyType = _out73; - RAST._IType _1235_valueType; + _out73 = (this).GenType(_1194_key, inBinding, inFn); + _1196_keyType = _out73; + RAST._IType _1197_valueType; RAST._IType _out74; - _out74 = (this).GenType(_1233_value, inBinding, inFn); - _1235_valueType = _out74; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Map")), Dafny.Sequence.FromElements(_1234_keyType, _1235_valueType)); + _out74 = (this).GenType(_1195_value, inBinding, inFn); + _1197_valueType = _out74; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Map")), Dafny.Sequence.FromElements(_1196_keyType, _1197_valueType)); } } } if (unmatched49) { if (_source49.is_MapBuilder) { - DAST._IType _1236_key = _source49.dtor_key; - DAST._IType _1237_value = _source49.dtor_value; + DAST._IType _1198_key = _source49.dtor_key; + DAST._IType _1199_value = _source49.dtor_value; unmatched49 = false; { - RAST._IType _1238_keyType; + RAST._IType _1200_keyType; RAST._IType _out75; - _out75 = (this).GenType(_1236_key, inBinding, inFn); - _1238_keyType = _out75; - RAST._IType _1239_valueType; + _out75 = (this).GenType(_1198_key, inBinding, inFn); + _1200_keyType = _out75; + RAST._IType _1201_valueType; RAST._IType _out76; - _out76 = (this).GenType(_1237_value, inBinding, inFn); - _1239_valueType = _out76; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder")), Dafny.Sequence.FromElements(_1238_keyType, _1239_valueType)); + _out76 = (this).GenType(_1199_value, inBinding, inFn); + _1201_valueType = _out76; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder")), Dafny.Sequence.FromElements(_1200_keyType, _1201_valueType)); } } } if (unmatched49) { if (_source49.is_SetBuilder) { - DAST._IType _1240_elem = _source49.dtor_element; + DAST._IType _1202_elem = _source49.dtor_element; unmatched49 = false; { - RAST._IType _1241_elemType; + RAST._IType _1203_elemType; RAST._IType _out77; - _out77 = (this).GenType(_1240_elem, inBinding, inFn); - _1241_elemType = _out77; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder")), Dafny.Sequence.FromElements(_1241_elemType)); + _out77 = (this).GenType(_1202_elem, inBinding, inFn); + _1203_elemType = _out77; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder")), Dafny.Sequence.FromElements(_1203_elemType)); } } } if (unmatched49) { if (_source49.is_Arrow) { - Dafny.ISequence _1242_args = _source49.dtor_args; - DAST._IType _1243_result = _source49.dtor_result; + Dafny.ISequence _1204_args = _source49.dtor_args; + DAST._IType _1205_result = _source49.dtor_result; unmatched49 = false; { - Dafny.ISequence _1244_argTypes; - _1244_argTypes = Dafny.Sequence.FromElements(); - BigInteger _1245_i; - _1245_i = BigInteger.Zero; - while ((_1245_i) < (new BigInteger((_1242_args).Count))) { - RAST._IType _1246_generated; + Dafny.ISequence _1206_argTypes; + _1206_argTypes = Dafny.Sequence.FromElements(); + BigInteger _1207_i; + _1207_i = BigInteger.Zero; + while ((_1207_i) < (new BigInteger((_1204_args).Count))) { + RAST._IType _1208_generated; RAST._IType _out78; - _out78 = (this).GenType((_1242_args).Select(_1245_i), inBinding, true); - _1246_generated = _out78; - _1244_argTypes = Dafny.Sequence.Concat(_1244_argTypes, Dafny.Sequence.FromElements(RAST.Type.create_Borrowed(_1246_generated))); - _1245_i = (_1245_i) + (BigInteger.One); + _out78 = (this).GenType((_1204_args).Select(_1207_i), inBinding, true); + _1208_generated = _out78; + _1206_argTypes = Dafny.Sequence.Concat(_1206_argTypes, Dafny.Sequence.FromElements(RAST.Type.create_Borrowed(_1208_generated))); + _1207_i = (_1207_i) + (BigInteger.One); } - RAST._IType _1247_resultType; + RAST._IType _1209_resultType; RAST._IType _out79; - _out79 = (this).GenType(_1243_result, inBinding, (inFn) || (inBinding)); - _1247_resultType = _out79; - s = RAST.__default.Rc(RAST.Type.create_DynType(RAST.Type.create_FnType(_1244_argTypes, _1247_resultType))); + _out79 = (this).GenType(_1205_result, inBinding, (inFn) || (inBinding)); + _1209_resultType = _out79; + s = RAST.__default.Rc(RAST.Type.create_DynType(RAST.Type.create_FnType(_1206_argTypes, _1209_resultType))); } } } if (unmatched49) { if (_source49.is_TypeArg) { Dafny.ISequence _h100 = _source49.dtor_TypeArg_a0; - Dafny.ISequence _1248_name = _h100; + Dafny.ISequence _1210_name = _h100; unmatched49 = false; - s = RAST.Type.create_TIdentifier(DCOMP.__default.escapeName(_1248_name)); + s = RAST.Type.create_TIdentifier(DCOMP.__default.escapeName(_1210_name)); } } if (unmatched49) { if (_source49.is_Primitive) { - DAST._IPrimitive _1249_p = _source49.dtor_Primitive_a0; + DAST._IPrimitive _1211_p = _source49.dtor_Primitive_a0; unmatched49 = false; { - DAST._IPrimitive _source52 = _1249_p; + DAST._IPrimitive _source52 = _1211_p; bool unmatched52 = true; if (unmatched52) { if (_source52.is_Int) { @@ -1389,9 +1383,9 @@ public RAST._IType GenType(DAST._IType c, bool inBinding, bool inFn) } } if (unmatched49) { - Dafny.ISequence _1250_v = _source49.dtor_Passthrough_a0; + Dafny.ISequence _1212_v = _source49.dtor_Passthrough_a0; unmatched49 = false; - s = RAST.__default.RawType(_1250_v); + s = RAST.__default.RawType(_1212_v); } return s; } @@ -1402,42 +1396,42 @@ public void GenClassImplBody(Dafny.ISequence body, bool forTrait, s = Dafny.Sequence.FromElements(); traitBodies = Dafny.Map>, Dafny.ISequence>.FromElements(); BigInteger _hi21 = new BigInteger((body).Count); - for (BigInteger _1251_i = BigInteger.Zero; _1251_i < _hi21; _1251_i++) { - DAST._IMethod _source53 = (body).Select(_1251_i); + for (BigInteger _1213_i = BigInteger.Zero; _1213_i < _hi21; _1213_i++) { + DAST._IMethod _source53 = (body).Select(_1213_i); bool unmatched53 = true; if (unmatched53) { - DAST._IMethod _1252_m = _source53; + DAST._IMethod _1214_m = _source53; unmatched53 = false; { - Std.Wrappers._IOption>> _source54 = (_1252_m).dtor_overridingPath; + Std.Wrappers._IOption>> _source54 = (_1214_m).dtor_overridingPath; bool unmatched54 = true; if (unmatched54) { if (_source54.is_Some) { - Dafny.ISequence> _1253_p = _source54.dtor_value; + Dafny.ISequence> _1215_p = _source54.dtor_value; unmatched54 = false; { - Dafny.ISequence _1254_existing; - _1254_existing = Dafny.Sequence.FromElements(); - if ((traitBodies).Contains(_1253_p)) { - _1254_existing = Dafny.Map>, Dafny.ISequence>.Select(traitBodies,_1253_p); + Dafny.ISequence _1216_existing; + _1216_existing = Dafny.Sequence.FromElements(); + if ((traitBodies).Contains(_1215_p)) { + _1216_existing = Dafny.Map>, Dafny.ISequence>.Select(traitBodies,_1215_p); } - RAST._IImplMember _1255_genMethod; + RAST._IImplMember _1217_genMethod; RAST._IImplMember _out80; - _out80 = (this).GenMethod(_1252_m, true, enclosingType, enclosingTypeParams); - _1255_genMethod = _out80; - _1254_existing = Dafny.Sequence.Concat(_1254_existing, Dafny.Sequence.FromElements(_1255_genMethod)); - traitBodies = Dafny.Map>, Dafny.ISequence>.Merge(traitBodies, Dafny.Map>, Dafny.ISequence>.FromElements(new Dafny.Pair>, Dafny.ISequence>(_1253_p, _1254_existing))); + _out80 = (this).GenMethod(_1214_m, true, enclosingType, enclosingTypeParams); + _1217_genMethod = _out80; + _1216_existing = Dafny.Sequence.Concat(_1216_existing, Dafny.Sequence.FromElements(_1217_genMethod)); + traitBodies = Dafny.Map>, Dafny.ISequence>.Merge(traitBodies, Dafny.Map>, Dafny.ISequence>.FromElements(new Dafny.Pair>, Dafny.ISequence>(_1215_p, _1216_existing))); } } } if (unmatched54) { unmatched54 = false; { - RAST._IImplMember _1256_generated; + RAST._IImplMember _1218_generated; RAST._IImplMember _out81; - _out81 = (this).GenMethod(_1252_m, forTrait, enclosingType, enclosingTypeParams); - _1256_generated = _out81; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1256_generated)); + _out81 = (this).GenMethod(_1214_m, forTrait, enclosingType, enclosingTypeParams); + _1218_generated = _out81; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1218_generated)); } } } @@ -1449,155 +1443,155 @@ public void GenClassImplBody(Dafny.ISequence body, bool forTrait, Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.FromElements(); BigInteger _hi22 = new BigInteger((@params).Count); - for (BigInteger _1257_i = BigInteger.Zero; _1257_i < _hi22; _1257_i++) { - DAST._IFormal _1258_param; - _1258_param = (@params).Select(_1257_i); - RAST._IType _1259_paramType; + for (BigInteger _1219_i = BigInteger.Zero; _1219_i < _hi22; _1219_i++) { + DAST._IFormal _1220_param; + _1220_param = (@params).Select(_1219_i); + RAST._IType _1221_paramType; RAST._IType _out82; - _out82 = (this).GenType((_1258_param).dtor_typ, false, false); - _1259_paramType = _out82; - if ((!((_1259_paramType).CanReadWithoutClone())) && (!((_1258_param).dtor_attributes).Contains(DCOMP.__default.AttributeOwned))) { - _1259_paramType = RAST.Type.create_Borrowed(_1259_paramType); + _out82 = (this).GenType((_1220_param).dtor_typ, false, false); + _1221_paramType = _out82; + if ((!((_1221_paramType).CanReadWithoutClone())) && (!((_1220_param).dtor_attributes).Contains(DCOMP.__default.AttributeOwned))) { + _1221_paramType = RAST.Type.create_Borrowed(_1221_paramType); } - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.Formal.create(DCOMP.__default.escapeName((_1258_param).dtor_name), _1259_paramType))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.Formal.create(DCOMP.__default.escapeName((_1220_param).dtor_name), _1221_paramType))); } return s; } public RAST._IImplMember GenMethod(DAST._IMethod m, bool forTrait, DAST._IType enclosingType, Dafny.ISet enclosingTypeParams) { RAST._IImplMember s = RAST.ImplMember.Default(); - Dafny.ISequence _1260_params; + Dafny.ISequence _1222_params; Dafny.ISequence _out83; _out83 = (this).GenParams((m).dtor_params); - _1260_params = _out83; - Dafny.ISequence> _1261_paramNames; - _1261_paramNames = Dafny.Sequence>.FromElements(); - Dafny.IMap,RAST._IType> _1262_paramTypes; - _1262_paramTypes = Dafny.Map, RAST._IType>.FromElements(); + _1222_params = _out83; + Dafny.ISequence> _1223_paramNames; + _1223_paramNames = Dafny.Sequence>.FromElements(); + Dafny.IMap,RAST._IType> _1224_paramTypes; + _1224_paramTypes = Dafny.Map, RAST._IType>.FromElements(); BigInteger _hi23 = new BigInteger(((m).dtor_params).Count); - for (BigInteger _1263_paramI = BigInteger.Zero; _1263_paramI < _hi23; _1263_paramI++) { - DAST._IFormal _1264_dafny__formal; - _1264_dafny__formal = ((m).dtor_params).Select(_1263_paramI); - RAST._IFormal _1265_formal; - _1265_formal = (_1260_params).Select(_1263_paramI); - Dafny.ISequence _1266_name; - _1266_name = (_1265_formal).dtor_name; - _1261_paramNames = Dafny.Sequence>.Concat(_1261_paramNames, Dafny.Sequence>.FromElements(_1266_name)); - _1262_paramTypes = Dafny.Map, RAST._IType>.Update(_1262_paramTypes, _1266_name, (_1265_formal).dtor_tpe); - } - Dafny.ISequence _1267_fnName; - _1267_fnName = DCOMP.__default.escapeName((m).dtor_name); - Std.Wrappers._IOption> _1268_selfIdentifier; - _1268_selfIdentifier = Std.Wrappers.Option>.create_None(); + for (BigInteger _1225_paramI = BigInteger.Zero; _1225_paramI < _hi23; _1225_paramI++) { + DAST._IFormal _1226_dafny__formal; + _1226_dafny__formal = ((m).dtor_params).Select(_1225_paramI); + RAST._IFormal _1227_formal; + _1227_formal = (_1222_params).Select(_1225_paramI); + Dafny.ISequence _1228_name; + _1228_name = (_1227_formal).dtor_name; + _1223_paramNames = Dafny.Sequence>.Concat(_1223_paramNames, Dafny.Sequence>.FromElements(_1228_name)); + _1224_paramTypes = Dafny.Map, RAST._IType>.Update(_1224_paramTypes, _1228_name, (_1227_formal).dtor_tpe); + } + Dafny.ISequence _1229_fnName; + _1229_fnName = DCOMP.__default.escapeName((m).dtor_name); + Std.Wrappers._IOption> _1230_selfIdentifier; + _1230_selfIdentifier = Std.Wrappers.Option>.create_None(); if (!((m).dtor_isStatic)) { - Dafny.ISequence _1269_selfId; - _1269_selfId = Dafny.Sequence.UnicodeFromString("self"); - if ((_1267_fnName).Equals(Dafny.Sequence.UnicodeFromString("_ctor"))) { - _1269_selfId = Dafny.Sequence.UnicodeFromString("this"); + Dafny.ISequence _1231_selfId; + _1231_selfId = Dafny.Sequence.UnicodeFromString("self"); + if ((_1229_fnName).Equals(Dafny.Sequence.UnicodeFromString("_ctor"))) { + _1231_selfId = Dafny.Sequence.UnicodeFromString("this"); } if (forTrait) { - RAST._IFormal _1270_selfFormal; - _1270_selfFormal = RAST.Formal.selfBorrowedMut; - _1260_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_1270_selfFormal), _1260_params); + RAST._IFormal _1232_selfFormal; + _1232_selfFormal = RAST.Formal.selfBorrowedMut; + _1222_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_1232_selfFormal), _1222_params); } else { - RAST._IType _1271_tpe; + RAST._IType _1233_tpe; RAST._IType _out84; _out84 = (this).GenType(enclosingType, false, false); - _1271_tpe = _out84; - if (!((_1271_tpe).CanReadWithoutClone())) { - _1271_tpe = RAST.Type.create_Borrowed(_1271_tpe); + _1233_tpe = _out84; + if (!((_1233_tpe).CanReadWithoutClone())) { + _1233_tpe = RAST.Type.create_Borrowed(_1233_tpe); } - _1260_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.Formal.create(_1269_selfId, _1271_tpe)), _1260_params); + _1222_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.Formal.create(_1231_selfId, _1233_tpe)), _1222_params); } - _1268_selfIdentifier = Std.Wrappers.Option>.create_Some(_1269_selfId); + _1230_selfIdentifier = Std.Wrappers.Option>.create_Some(_1231_selfId); } - Dafny.ISequence _1272_retTypeArgs; - _1272_retTypeArgs = Dafny.Sequence.FromElements(); - BigInteger _1273_typeI; - _1273_typeI = BigInteger.Zero; - while ((_1273_typeI) < (new BigInteger(((m).dtor_outTypes).Count))) { - RAST._IType _1274_typeExpr; + Dafny.ISequence _1234_retTypeArgs; + _1234_retTypeArgs = Dafny.Sequence.FromElements(); + BigInteger _1235_typeI; + _1235_typeI = BigInteger.Zero; + while ((_1235_typeI) < (new BigInteger(((m).dtor_outTypes).Count))) { + RAST._IType _1236_typeExpr; RAST._IType _out85; - _out85 = (this).GenType(((m).dtor_outTypes).Select(_1273_typeI), false, false); - _1274_typeExpr = _out85; - _1272_retTypeArgs = Dafny.Sequence.Concat(_1272_retTypeArgs, Dafny.Sequence.FromElements(_1274_typeExpr)); - _1273_typeI = (_1273_typeI) + (BigInteger.One); - } - RAST._IVisibility _1275_visibility; - _1275_visibility = RAST.Visibility.create_PUB(); - Dafny.ISequence _1276_typeParamsFiltered; - _1276_typeParamsFiltered = Dafny.Sequence.FromElements(); + _out85 = (this).GenType(((m).dtor_outTypes).Select(_1235_typeI), false, false); + _1236_typeExpr = _out85; + _1234_retTypeArgs = Dafny.Sequence.Concat(_1234_retTypeArgs, Dafny.Sequence.FromElements(_1236_typeExpr)); + _1235_typeI = (_1235_typeI) + (BigInteger.One); + } + RAST._IVisibility _1237_visibility; + _1237_visibility = RAST.Visibility.create_PUB(); + Dafny.ISequence _1238_typeParamsFiltered; + _1238_typeParamsFiltered = Dafny.Sequence.FromElements(); BigInteger _hi24 = new BigInteger(((m).dtor_typeParams).Count); - for (BigInteger _1277_typeParamI = BigInteger.Zero; _1277_typeParamI < _hi24; _1277_typeParamI++) { - DAST._ITypeArgDecl _1278_typeParam; - _1278_typeParam = ((m).dtor_typeParams).Select(_1277_typeParamI); - if (!((enclosingTypeParams).Contains(DAST.Type.create_TypeArg((_1278_typeParam).dtor_name)))) { - _1276_typeParamsFiltered = Dafny.Sequence.Concat(_1276_typeParamsFiltered, Dafny.Sequence.FromElements(_1278_typeParam)); - } - } - Dafny.ISequence _1279_typeParams; - _1279_typeParams = Dafny.Sequence.FromElements(); - if ((new BigInteger((_1276_typeParamsFiltered).Count)).Sign == 1) { - BigInteger _hi25 = new BigInteger((_1276_typeParamsFiltered).Count); - for (BigInteger _1280_i = BigInteger.Zero; _1280_i < _hi25; _1280_i++) { - DAST._IType _1281_typeArg; - RAST._ITypeParamDecl _1282_rTypeParamDecl; + for (BigInteger _1239_typeParamI = BigInteger.Zero; _1239_typeParamI < _hi24; _1239_typeParamI++) { + DAST._ITypeArgDecl _1240_typeParam; + _1240_typeParam = ((m).dtor_typeParams).Select(_1239_typeParamI); + if (!((enclosingTypeParams).Contains(DAST.Type.create_TypeArg((_1240_typeParam).dtor_name)))) { + _1238_typeParamsFiltered = Dafny.Sequence.Concat(_1238_typeParamsFiltered, Dafny.Sequence.FromElements(_1240_typeParam)); + } + } + Dafny.ISequence _1241_typeParams; + _1241_typeParams = Dafny.Sequence.FromElements(); + if ((new BigInteger((_1238_typeParamsFiltered).Count)).Sign == 1) { + BigInteger _hi25 = new BigInteger((_1238_typeParamsFiltered).Count); + for (BigInteger _1242_i = BigInteger.Zero; _1242_i < _hi25; _1242_i++) { + DAST._IType _1243_typeArg; + RAST._ITypeParamDecl _1244_rTypeParamDecl; DAST._IType _out86; RAST._ITypeParamDecl _out87; - (this).GenTypeParam((_1276_typeParamsFiltered).Select(_1280_i), out _out86, out _out87); - _1281_typeArg = _out86; - _1282_rTypeParamDecl = _out87; - var _pat_let_tv101 = _1282_rTypeParamDecl; - _1282_rTypeParamDecl = Dafny.Helpers.Let(_1282_rTypeParamDecl, _pat_let6_0 => Dafny.Helpers.Let(_pat_let6_0, _1283_dt__update__tmp_h0 => Dafny.Helpers.Let, RAST._ITypeParamDecl>(Dafny.Sequence.Concat((_pat_let_tv101).dtor_constraints, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))), _pat_let7_0 => Dafny.Helpers.Let, RAST._ITypeParamDecl>(_pat_let7_0, _1284_dt__update_hconstraints_h0 => RAST.TypeParamDecl.create((_1283_dt__update__tmp_h0).dtor_content, _1284_dt__update_hconstraints_h0))))); - _1279_typeParams = Dafny.Sequence.Concat(_1279_typeParams, Dafny.Sequence.FromElements(_1282_rTypeParamDecl)); - } - } - Std.Wrappers._IOption _1285_fBody = Std.Wrappers.Option.Default(); - DCOMP._IEnvironment _1286_env = DCOMP.Environment.Default(); - RAST._IExpr _1287_preBody; - _1287_preBody = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + (this).GenTypeParam((_1238_typeParamsFiltered).Select(_1242_i), out _out86, out _out87); + _1243_typeArg = _out86; + _1244_rTypeParamDecl = _out87; + var _pat_let_tv101 = _1244_rTypeParamDecl; + _1244_rTypeParamDecl = Dafny.Helpers.Let(_1244_rTypeParamDecl, _pat_let6_0 => Dafny.Helpers.Let(_pat_let6_0, _1245_dt__update__tmp_h0 => Dafny.Helpers.Let, RAST._ITypeParamDecl>(Dafny.Sequence.Concat((_pat_let_tv101).dtor_constraints, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))), _pat_let7_0 => Dafny.Helpers.Let, RAST._ITypeParamDecl>(_pat_let7_0, _1246_dt__update_hconstraints_h0 => RAST.TypeParamDecl.create((_1245_dt__update__tmp_h0).dtor_content, _1246_dt__update_hconstraints_h0))))); + _1241_typeParams = Dafny.Sequence.Concat(_1241_typeParams, Dafny.Sequence.FromElements(_1244_rTypeParamDecl)); + } + } + Std.Wrappers._IOption _1247_fBody = Std.Wrappers.Option.Default(); + DCOMP._IEnvironment _1248_env = DCOMP.Environment.Default(); + RAST._IExpr _1249_preBody; + _1249_preBody = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); if ((m).dtor_hasBody) { - RAST._IExpr _1288_earlyReturn; - _1288_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_None()); + RAST._IExpr _1250_earlyReturn; + _1250_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_None()); Std.Wrappers._IOption>> _source55 = (m).dtor_outVars; bool unmatched55 = true; if (unmatched55) { if (_source55.is_Some) { - Dafny.ISequence> _1289_outVars = _source55.dtor_value; + Dafny.ISequence> _1251_outVars = _source55.dtor_value; unmatched55 = false; { - Dafny.ISequence _1290_tupleArgs; - _1290_tupleArgs = Dafny.Sequence.FromElements(); - BigInteger _hi26 = new BigInteger((_1289_outVars).Count); - for (BigInteger _1291_outI = BigInteger.Zero; _1291_outI < _hi26; _1291_outI++) { - Dafny.ISequence _1292_outVar; - _1292_outVar = (_1289_outVars).Select(_1291_outI); - RAST._IType _1293_outType; + Dafny.ISequence _1252_tupleArgs; + _1252_tupleArgs = Dafny.Sequence.FromElements(); + BigInteger _hi26 = new BigInteger((_1251_outVars).Count); + for (BigInteger _1253_outI = BigInteger.Zero; _1253_outI < _hi26; _1253_outI++) { + Dafny.ISequence _1254_outVar; + _1254_outVar = (_1251_outVars).Select(_1253_outI); + RAST._IType _1255_outType; RAST._IType _out88; - _out88 = (this).GenType(((m).dtor_outTypes).Select(_1291_outI), false, false); - _1293_outType = _out88; - Dafny.ISequence _1294_outName; - _1294_outName = DCOMP.__default.escapeName((_1292_outVar)); - _1261_paramNames = Dafny.Sequence>.Concat(_1261_paramNames, Dafny.Sequence>.FromElements(_1294_outName)); - RAST._IType _1295_outMaybeType; - _1295_outMaybeType = (((_1293_outType).CanReadWithoutClone()) ? (_1293_outType) : (RAST.Type.create_Borrowed(_1293_outType))); - _1262_paramTypes = Dafny.Map, RAST._IType>.Update(_1262_paramTypes, _1294_outName, _1295_outMaybeType); - RAST._IExpr _1296_outVarReturn; - DCOMP._IOwnership _1297___v53; - Dafny.ISet> _1298___v54; + _out88 = (this).GenType(((m).dtor_outTypes).Select(_1253_outI), false, false); + _1255_outType = _out88; + Dafny.ISequence _1256_outName; + _1256_outName = DCOMP.__default.escapeName((_1254_outVar)); + _1223_paramNames = Dafny.Sequence>.Concat(_1223_paramNames, Dafny.Sequence>.FromElements(_1256_outName)); + RAST._IType _1257_outMaybeType; + _1257_outMaybeType = (((_1255_outType).CanReadWithoutClone()) ? (_1255_outType) : (RAST.Type.create_Borrowed(_1255_outType))); + _1224_paramTypes = Dafny.Map, RAST._IType>.Update(_1224_paramTypes, _1256_outName, _1257_outMaybeType); + RAST._IExpr _1258_outVarReturn; + DCOMP._IOwnership _1259___v53; + Dafny.ISet> _1260___v54; RAST._IExpr _out89; DCOMP._IOwnership _out90; Dafny.ISet> _out91; - (this).GenExpr(DAST.Expression.create_Ident((_1292_outVar)), Std.Wrappers.Option>.create_None(), DCOMP.Environment.create(Dafny.Sequence>.FromElements(_1294_outName), Dafny.Map, RAST._IType>.FromElements(new Dafny.Pair, RAST._IType>(_1294_outName, _1295_outMaybeType))), DCOMP.Ownership.create_OwnershipOwned(), out _out89, out _out90, out _out91); - _1296_outVarReturn = _out89; - _1297___v53 = _out90; - _1298___v54 = _out91; - _1290_tupleArgs = Dafny.Sequence.Concat(_1290_tupleArgs, Dafny.Sequence.FromElements(_1296_outVarReturn)); + (this).GenExpr(DAST.Expression.create_Ident((_1254_outVar)), Std.Wrappers.Option>.create_None(), DCOMP.Environment.create(Dafny.Sequence>.FromElements(_1256_outName), Dafny.Map, RAST._IType>.FromElements(new Dafny.Pair, RAST._IType>(_1256_outName, _1257_outMaybeType))), DCOMP.Ownership.create_OwnershipOwned(), out _out89, out _out90, out _out91); + _1258_outVarReturn = _out89; + _1259___v53 = _out90; + _1260___v54 = _out91; + _1252_tupleArgs = Dafny.Sequence.Concat(_1252_tupleArgs, Dafny.Sequence.FromElements(_1258_outVarReturn)); } - if ((new BigInteger((_1290_tupleArgs).Count)) == (BigInteger.One)) { - _1288_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some((_1290_tupleArgs).Select(BigInteger.Zero))); + if ((new BigInteger((_1252_tupleArgs).Count)) == (BigInteger.One)) { + _1250_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some((_1252_tupleArgs).Select(BigInteger.Zero))); } else { - _1288_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Tuple(_1290_tupleArgs))); + _1250_earlyReturn = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Tuple(_1252_tupleArgs))); } } } @@ -1605,23 +1599,23 @@ public RAST._IImplMember GenMethod(DAST._IMethod m, bool forTrait, DAST._IType e if (unmatched55) { unmatched55 = false; } - _1286_env = DCOMP.Environment.create(_1261_paramNames, _1262_paramTypes); - RAST._IExpr _1299_body; - Dafny.ISet> _1300___v55; - DCOMP._IEnvironment _1301___v56; + _1248_env = DCOMP.Environment.create(_1223_paramNames, _1224_paramTypes); + RAST._IExpr _1261_body; + Dafny.ISet> _1262___v55; + DCOMP._IEnvironment _1263___v56; RAST._IExpr _out92; Dafny.ISet> _out93; DCOMP._IEnvironment _out94; - (this).GenStmts((m).dtor_body, _1268_selfIdentifier, _1286_env, true, _1288_earlyReturn, out _out92, out _out93, out _out94); - _1299_body = _out92; - _1300___v55 = _out93; - _1301___v56 = _out94; - _1285_fBody = Std.Wrappers.Option.create_Some((_1287_preBody).Then(_1299_body)); + (this).GenStmts((m).dtor_body, _1230_selfIdentifier, _1248_env, true, _1250_earlyReturn, out _out92, out _out93, out _out94); + _1261_body = _out92; + _1262___v55 = _out93; + _1263___v56 = _out94; + _1247_fBody = Std.Wrappers.Option.create_Some((_1249_preBody).Then(_1261_body)); } else { - _1286_env = DCOMP.Environment.create(_1261_paramNames, _1262_paramTypes); - _1285_fBody = Std.Wrappers.Option.create_None(); + _1248_env = DCOMP.Environment.create(_1223_paramNames, _1224_paramTypes); + _1247_fBody = Std.Wrappers.Option.create_None(); } - s = RAST.ImplMember.create_FnDecl(_1275_visibility, RAST.Fn.create(_1267_fnName, _1279_typeParams, _1260_params, Std.Wrappers.Option.create_Some((((new BigInteger((_1272_retTypeArgs).Count)) == (BigInteger.One)) ? ((_1272_retTypeArgs).Select(BigInteger.Zero)) : (RAST.Type.create_TupleType(_1272_retTypeArgs)))), Dafny.Sequence.UnicodeFromString(""), _1285_fBody)); + s = RAST.ImplMember.create_FnDecl(_1237_visibility, RAST.Fn.create(_1229_fnName, _1241_typeParams, _1222_params, Std.Wrappers.Option.create_Some((((new BigInteger((_1234_retTypeArgs).Count)) == (BigInteger.One)) ? ((_1234_retTypeArgs).Select(BigInteger.Zero)) : (RAST.Type.create_TupleType(_1234_retTypeArgs)))), Dafny.Sequence.UnicodeFromString(""), _1247_fBody)); return s; } public void GenStmts(Dafny.ISequence stmts, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, bool isLast, RAST._IExpr earlyReturn, out RAST._IExpr generated, out Dafny.ISet> readIdents, out DCOMP._IEnvironment newEnv) @@ -1630,46 +1624,43 @@ public void GenStmts(Dafny.ISequence stmts, Std.Wrappers._IOpt readIdents = Dafny.Set>.Empty; newEnv = DCOMP.Environment.Default(); generated = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - Dafny.ISet> _1302_declarations; - _1302_declarations = Dafny.Set>.FromElements(); + Dafny.ISet> _1264_declarations; + _1264_declarations = Dafny.Set>.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1303_i; - _1303_i = BigInteger.Zero; + BigInteger _1265_i; + _1265_i = BigInteger.Zero; newEnv = env; - while ((_1303_i) < (new BigInteger((stmts).Count))) { - DAST._IStatement _1304_stmt; - _1304_stmt = (stmts).Select(_1303_i); - RAST._IExpr _1305_stmtExpr; - Dafny.ISet> _1306_recIdents; - DCOMP._IEnvironment _1307_newEnv2; + while ((_1265_i) < (new BigInteger((stmts).Count))) { + DAST._IStatement _1266_stmt; + _1266_stmt = (stmts).Select(_1265_i); + RAST._IExpr _1267_stmtExpr; + Dafny.ISet> _1268_recIdents; + DCOMP._IEnvironment _1269_newEnv2; RAST._IExpr _out95; Dafny.ISet> _out96; DCOMP._IEnvironment _out97; - (this).GenStmt(_1304_stmt, selfIdent, newEnv, (isLast) && ((_1303_i) == ((new BigInteger((stmts).Count)) - (BigInteger.One))), earlyReturn, out _out95, out _out96, out _out97); - _1305_stmtExpr = _out95; - _1306_recIdents = _out96; - _1307_newEnv2 = _out97; - newEnv = _1307_newEnv2; - DAST._IStatement _source56 = _1304_stmt; + (this).GenStmt(_1266_stmt, selfIdent, newEnv, (isLast) && ((_1265_i) == ((new BigInteger((stmts).Count)) - (BigInteger.One))), earlyReturn, out _out95, out _out96, out _out97); + _1267_stmtExpr = _out95; + _1268_recIdents = _out96; + _1269_newEnv2 = _out97; + newEnv = _1269_newEnv2; + DAST._IStatement _source56 = _1266_stmt; bool unmatched56 = true; if (unmatched56) { if (_source56.is_DeclareVar) { - Dafny.ISequence _1308_name = _source56.dtor_name; - DAST._IType _1309___v57 = _source56.dtor_typ; - Std.Wrappers._IOption _1310___v58 = _source56.dtor_maybeValue; + Dafny.ISequence _1270_name = _source56.dtor_name; unmatched56 = false; { - _1302_declarations = Dafny.Set>.Union(_1302_declarations, Dafny.Set>.FromElements(DCOMP.__default.escapeName(_1308_name))); + _1264_declarations = Dafny.Set>.Union(_1264_declarations, Dafny.Set>.FromElements(DCOMP.__default.escapeName(_1270_name))); } } } if (unmatched56) { - DAST._IStatement _1311___v59 = _source56; unmatched56 = false; } - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_1306_recIdents, _1302_declarations)); - generated = (generated).Then(_1305_stmtExpr); - _1303_i = (_1303_i) + (BigInteger.One); + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_1268_recIdents, _1264_declarations)); + generated = (generated).Then(_1267_stmtExpr); + _1265_i = (_1265_i) + (BigInteger.One); } } public void GenAssignLhs(DAST._IAssignLhs lhs, RAST._IExpr rhs, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, out RAST._IExpr generated, out bool needsIIFE, out Dafny.ISet> readIdents, out DCOMP._IEnvironment newEnv) @@ -1684,87 +1675,87 @@ public void GenAssignLhs(DAST._IAssignLhs lhs, RAST._IExpr rhs, Std.Wrappers._IO if (unmatched57) { if (_source57.is_Ident) { Dafny.ISequence ident0 = _source57.dtor_ident; - Dafny.ISequence _1312_id = ident0; + Dafny.ISequence _1271_id = ident0; unmatched57 = false; { - Dafny.ISequence _1313_idRust; - _1313_idRust = DCOMP.__default.escapeName(_1312_id); - if (((env).IsBorrowed(_1313_idRust)) || ((env).IsBorrowedMut(_1313_idRust))) { - generated = RAST.__default.AssignVar(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*"), _1313_idRust), rhs); + Dafny.ISequence _1272_idRust; + _1272_idRust = DCOMP.__default.escapeName(_1271_id); + if (((env).IsBorrowed(_1272_idRust)) || ((env).IsBorrowedMut(_1272_idRust))) { + generated = RAST.__default.AssignVar(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*"), _1272_idRust), rhs); } else { - generated = RAST.__default.AssignVar(_1313_idRust, rhs); + generated = RAST.__default.AssignVar(_1272_idRust, rhs); } - readIdents = Dafny.Set>.FromElements(_1313_idRust); + readIdents = Dafny.Set>.FromElements(_1272_idRust); needsIIFE = false; } } } if (unmatched57) { if (_source57.is_Select) { - DAST._IExpression _1314_on = _source57.dtor_expr; - Dafny.ISequence _1315_field = _source57.dtor_field; + DAST._IExpression _1273_on = _source57.dtor_expr; + Dafny.ISequence _1274_field = _source57.dtor_field; unmatched57 = false; { - Dafny.ISequence _1316_fieldName; - _1316_fieldName = DCOMP.__default.escapeName(_1315_field); - RAST._IExpr _1317_onExpr; - DCOMP._IOwnership _1318_onOwned; - Dafny.ISet> _1319_recIdents; + Dafny.ISequence _1275_fieldName; + _1275_fieldName = DCOMP.__default.escapeName(_1274_field); + RAST._IExpr _1276_onExpr; + DCOMP._IOwnership _1277_onOwned; + Dafny.ISet> _1278_recIdents; RAST._IExpr _out98; DCOMP._IOwnership _out99; Dafny.ISet> _out100; - (this).GenExpr(_1314_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowedMut(), out _out98, out _out99, out _out100); - _1317_onExpr = _out98; - _1318_onOwned = _out99; - _1319_recIdents = _out100; - generated = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*("), (_1317_onExpr)._ToString(RAST.__default.IND)), Dafny.Sequence.UnicodeFromString(".")), _1316_fieldName), Dafny.Sequence.UnicodeFromString(".borrow_mut()) = ")), (rhs)._ToString(RAST.__default.IND)), Dafny.Sequence.UnicodeFromString(";"))); - readIdents = _1319_recIdents; + (this).GenExpr(_1273_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowedMut(), out _out98, out _out99, out _out100); + _1276_onExpr = _out98; + _1277_onOwned = _out99; + _1278_recIdents = _out100; + generated = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*("), (_1276_onExpr)._ToString(RAST.__default.IND)), Dafny.Sequence.UnicodeFromString(".")), _1275_fieldName), Dafny.Sequence.UnicodeFromString(".borrow_mut()) = ")), (rhs)._ToString(RAST.__default.IND)), Dafny.Sequence.UnicodeFromString(";"))); + readIdents = _1278_recIdents; needsIIFE = true; } } } if (unmatched57) { - DAST._IExpression _1320_on = _source57.dtor_expr; - Dafny.ISequence _1321_indices = _source57.dtor_indices; + DAST._IExpression _1279_on = _source57.dtor_expr; + Dafny.ISequence _1280_indices = _source57.dtor_indices; unmatched57 = false; { - RAST._IExpr _1322_onExpr; - DCOMP._IOwnership _1323_onOwned; - Dafny.ISet> _1324_recIdents; + RAST._IExpr _1281_onExpr; + DCOMP._IOwnership _1282_onOwned; + Dafny.ISet> _1283_recIdents; RAST._IExpr _out101; DCOMP._IOwnership _out102; Dafny.ISet> _out103; - (this).GenExpr(_1320_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out101, out _out102, out _out103); - _1322_onExpr = _out101; - _1323_onOwned = _out102; - _1324_recIdents = _out103; - readIdents = _1324_recIdents; - Dafny.ISequence _1325_r; - _1325_r = Dafny.Sequence.UnicodeFromString("{\n"); - BigInteger _1326_i; - _1326_i = BigInteger.Zero; - while ((_1326_i) < (new BigInteger((_1321_indices).Count))) { - RAST._IExpr _1327_idx; - DCOMP._IOwnership _1328___v60; - Dafny.ISet> _1329_recIdentsIdx; + (this).GenExpr(_1279_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out101, out _out102, out _out103); + _1281_onExpr = _out101; + _1282_onOwned = _out102; + _1283_recIdents = _out103; + readIdents = _1283_recIdents; + Dafny.ISequence _1284_r; + _1284_r = Dafny.Sequence.UnicodeFromString("{\n"); + BigInteger _1285_i; + _1285_i = BigInteger.Zero; + while ((_1285_i) < (new BigInteger((_1280_indices).Count))) { + RAST._IExpr _1286_idx; + DCOMP._IOwnership _1287___v60; + Dafny.ISet> _1288_recIdentsIdx; RAST._IExpr _out104; DCOMP._IOwnership _out105; Dafny.ISet> _out106; - (this).GenExpr((_1321_indices).Select(_1326_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out104, out _out105, out _out106); - _1327_idx = _out104; - _1328___v60 = _out105; - _1329_recIdentsIdx = _out106; - _1325_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1325_r, Dafny.Sequence.UnicodeFromString("let __idx")), Std.Strings.__default.OfNat(_1326_i)), Dafny.Sequence.UnicodeFromString(" = ::from(")), (_1327_idx)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap();\n")); - readIdents = Dafny.Set>.Union(readIdents, _1329_recIdentsIdx); - _1326_i = (_1326_i) + (BigInteger.One); - } - _1325_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1325_r, (_1322_onExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(".borrow_mut()")); - _1326_i = BigInteger.Zero; - while ((_1326_i) < (new BigInteger((_1321_indices).Count))) { - _1325_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1325_r, Dafny.Sequence.UnicodeFromString("[__idx")), Std.Strings.__default.OfNat(_1326_i)), Dafny.Sequence.UnicodeFromString("]")); - _1326_i = (_1326_i) + (BigInteger.One); - } - generated = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1325_r, Dafny.Sequence.UnicodeFromString(" = ")), (rhs)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n}"))); + (this).GenExpr((_1280_indices).Select(_1285_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out104, out _out105, out _out106); + _1286_idx = _out104; + _1287___v60 = _out105; + _1288_recIdentsIdx = _out106; + _1284_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_r, Dafny.Sequence.UnicodeFromString("let __idx")), Std.Strings.__default.OfNat(_1285_i)), Dafny.Sequence.UnicodeFromString(" = ::from(")), (_1286_idx)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap();\n")); + readIdents = Dafny.Set>.Union(readIdents, _1288_recIdentsIdx); + _1285_i = (_1285_i) + (BigInteger.One); + } + _1284_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_r, (_1281_onExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(".borrow_mut()")); + _1285_i = BigInteger.Zero; + while ((_1285_i) < (new BigInteger((_1280_indices).Count))) { + _1284_r = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_r, Dafny.Sequence.UnicodeFromString("[__idx")), Std.Strings.__default.OfNat(_1285_i)), Dafny.Sequence.UnicodeFromString("]")); + _1285_i = (_1285_i) + (BigInteger.One); + } + generated = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_r, Dafny.Sequence.UnicodeFromString(" = ")), (rhs)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n}"))); needsIIFE = true; } } @@ -1778,48 +1769,48 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption _1330_name = _source58.dtor_name; - DAST._IType _1331_typ = _source58.dtor_typ; + Dafny.ISequence _1289_name = _source58.dtor_name; + DAST._IType _1290_typ = _source58.dtor_typ; Std.Wrappers._IOption maybeValue0 = _source58.dtor_maybeValue; if (maybeValue0.is_Some) { - DAST._IExpression _1332_expression = maybeValue0.dtor_value; + DAST._IExpression _1291_expression = maybeValue0.dtor_value; unmatched58 = false; { - RAST._IType _1333_tpe; + RAST._IType _1292_tpe; RAST._IType _out107; - _out107 = (this).GenType(_1331_typ, true, false); - _1333_tpe = _out107; - RAST._IExpr _1334_expr; - DCOMP._IOwnership _1335_exprOwnership; - Dafny.ISet> _1336_recIdents; + _out107 = (this).GenType(_1290_typ, true, false); + _1292_tpe = _out107; + RAST._IExpr _1293_expr; + DCOMP._IOwnership _1294_exprOwnership; + Dafny.ISet> _1295_recIdents; RAST._IExpr _out108; DCOMP._IOwnership _out109; Dafny.ISet> _out110; - (this).GenExpr(_1332_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out108, out _out109, out _out110); - _1334_expr = _out108; - _1335_exprOwnership = _out109; - _1336_recIdents = _out110; - readIdents = _1336_recIdents; - generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), DCOMP.__default.escapeName(_1330_name), Std.Wrappers.Option.create_Some(_1333_tpe), Std.Wrappers.Option.create_Some(_1334_expr)); - newEnv = (env).AddAssigned(DCOMP.__default.escapeName(_1330_name), _1333_tpe); + (this).GenExpr(_1291_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out108, out _out109, out _out110); + _1293_expr = _out108; + _1294_exprOwnership = _out109; + _1295_recIdents = _out110; + readIdents = _1295_recIdents; + generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), DCOMP.__default.escapeName(_1289_name), Std.Wrappers.Option.create_Some(_1292_tpe), Std.Wrappers.Option.create_Some(_1293_expr)); + newEnv = (env).AddAssigned(DCOMP.__default.escapeName(_1289_name), _1292_tpe); } } } } if (unmatched58) { if (_source58.is_DeclareVar) { - Dafny.ISequence _1337_name = _source58.dtor_name; - DAST._IType _1338_typ = _source58.dtor_typ; + Dafny.ISequence _1296_name = _source58.dtor_name; + DAST._IType _1297_typ = _source58.dtor_typ; Std.Wrappers._IOption maybeValue1 = _source58.dtor_maybeValue; if (maybeValue1.is_None) { unmatched58 = false; { - DAST._IStatement _1339_newStmt; - _1339_newStmt = DAST.Statement.create_DeclareVar(_1337_name, _1338_typ, Std.Wrappers.Option.create_Some(DAST.Expression.create_InitializationValue(_1338_typ))); + DAST._IStatement _1298_newStmt; + _1298_newStmt = DAST.Statement.create_DeclareVar(_1296_name, _1297_typ, Std.Wrappers.Option.create_Some(DAST.Expression.create_InitializationValue(_1297_typ))); RAST._IExpr _out111; Dafny.ISet> _out112; DCOMP._IEnvironment _out113; - (this).GenStmt(_1339_newStmt, selfIdent, env, isLast, earlyReturn, out _out111, out _out112, out _out113); + (this).GenStmt(_1298_newStmt, selfIdent, env, isLast, earlyReturn, out _out111, out _out112, out _out113); generated = _out111; readIdents = _out112; newEnv = _out113; @@ -1829,204 +1820,204 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption> _1344_exprIdents; + RAST._IExpr _1301_exprGen; + DCOMP._IOwnership _1302___v61; + Dafny.ISet> _1303_exprIdents; RAST._IExpr _out114; DCOMP._IOwnership _out115; Dafny.ISet> _out116; - (this).GenExpr(_1341_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out114, out _out115, out _out116); - _1342_exprGen = _out114; - _1343___v61 = _out115; - _1344_exprIdents = _out116; - if ((_1340_lhs).is_Ident) { - Dafny.ISequence _1345_rustId; - _1345_rustId = DCOMP.__default.escapeName(((_1340_lhs).dtor_ident)); - Std.Wrappers._IOption _1346_tpe; - _1346_tpe = (env).GetType(_1345_rustId); + (this).GenExpr(_1300_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out114, out _out115, out _out116); + _1301_exprGen = _out114; + _1302___v61 = _out115; + _1303_exprIdents = _out116; + if ((_1299_lhs).is_Ident) { + Dafny.ISequence _1304_rustId; + _1304_rustId = DCOMP.__default.escapeName(((_1299_lhs).dtor_ident)); + Std.Wrappers._IOption _1305_tpe; + _1305_tpe = (env).GetType(_1304_rustId); } - RAST._IExpr _1347_lhsGen; - bool _1348_needsIIFE; - Dafny.ISet> _1349_recIdents; - DCOMP._IEnvironment _1350_resEnv; + RAST._IExpr _1306_lhsGen; + bool _1307_needsIIFE; + Dafny.ISet> _1308_recIdents; + DCOMP._IEnvironment _1309_resEnv; RAST._IExpr _out117; bool _out118; Dafny.ISet> _out119; DCOMP._IEnvironment _out120; - (this).GenAssignLhs(_1340_lhs, _1342_exprGen, selfIdent, env, out _out117, out _out118, out _out119, out _out120); - _1347_lhsGen = _out117; - _1348_needsIIFE = _out118; - _1349_recIdents = _out119; - _1350_resEnv = _out120; - generated = _1347_lhsGen; - newEnv = _1350_resEnv; - if (_1348_needsIIFE) { + (this).GenAssignLhs(_1299_lhs, _1301_exprGen, selfIdent, env, out _out117, out _out118, out _out119, out _out120); + _1306_lhsGen = _out117; + _1307_needsIIFE = _out118; + _1308_recIdents = _out119; + _1309_resEnv = _out120; + generated = _1306_lhsGen; + newEnv = _1309_resEnv; + if (_1307_needsIIFE) { generated = RAST.Expr.create_Block(generated); } - readIdents = Dafny.Set>.Union(_1349_recIdents, _1344_exprIdents); + readIdents = Dafny.Set>.Union(_1308_recIdents, _1303_exprIdents); } } } if (unmatched58) { if (_source58.is_If) { - DAST._IExpression _1351_cond = _source58.dtor_cond; - Dafny.ISequence _1352_thnDafny = _source58.dtor_thn; - Dafny.ISequence _1353_elsDafny = _source58.dtor_els; + DAST._IExpression _1310_cond = _source58.dtor_cond; + Dafny.ISequence _1311_thnDafny = _source58.dtor_thn; + Dafny.ISequence _1312_elsDafny = _source58.dtor_els; unmatched58 = false; { - RAST._IExpr _1354_cond; - DCOMP._IOwnership _1355___v62; - Dafny.ISet> _1356_recIdents; + RAST._IExpr _1313_cond; + DCOMP._IOwnership _1314___v62; + Dafny.ISet> _1315_recIdents; RAST._IExpr _out121; DCOMP._IOwnership _out122; Dafny.ISet> _out123; - (this).GenExpr(_1351_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out121, out _out122, out _out123); - _1354_cond = _out121; - _1355___v62 = _out122; - _1356_recIdents = _out123; - Dafny.ISequence _1357_condString; - _1357_condString = (_1354_cond)._ToString(DCOMP.__default.IND); - readIdents = _1356_recIdents; - RAST._IExpr _1358_thn; - Dafny.ISet> _1359_thnIdents; - DCOMP._IEnvironment _1360_thnEnv; + (this).GenExpr(_1310_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out121, out _out122, out _out123); + _1313_cond = _out121; + _1314___v62 = _out122; + _1315_recIdents = _out123; + Dafny.ISequence _1316_condString; + _1316_condString = (_1313_cond)._ToString(DCOMP.__default.IND); + readIdents = _1315_recIdents; + RAST._IExpr _1317_thn; + Dafny.ISet> _1318_thnIdents; + DCOMP._IEnvironment _1319_thnEnv; RAST._IExpr _out124; Dafny.ISet> _out125; DCOMP._IEnvironment _out126; - (this).GenStmts(_1352_thnDafny, selfIdent, env, isLast, earlyReturn, out _out124, out _out125, out _out126); - _1358_thn = _out124; - _1359_thnIdents = _out125; - _1360_thnEnv = _out126; - readIdents = Dafny.Set>.Union(readIdents, _1359_thnIdents); - RAST._IExpr _1361_els; - Dafny.ISet> _1362_elsIdents; - DCOMP._IEnvironment _1363_elsEnv; + (this).GenStmts(_1311_thnDafny, selfIdent, env, isLast, earlyReturn, out _out124, out _out125, out _out126); + _1317_thn = _out124; + _1318_thnIdents = _out125; + _1319_thnEnv = _out126; + readIdents = Dafny.Set>.Union(readIdents, _1318_thnIdents); + RAST._IExpr _1320_els; + Dafny.ISet> _1321_elsIdents; + DCOMP._IEnvironment _1322_elsEnv; RAST._IExpr _out127; Dafny.ISet> _out128; DCOMP._IEnvironment _out129; - (this).GenStmts(_1353_elsDafny, selfIdent, env, isLast, earlyReturn, out _out127, out _out128, out _out129); - _1361_els = _out127; - _1362_elsIdents = _out128; - _1363_elsEnv = _out129; - readIdents = Dafny.Set>.Union(readIdents, _1362_elsIdents); + (this).GenStmts(_1312_elsDafny, selfIdent, env, isLast, earlyReturn, out _out127, out _out128, out _out129); + _1320_els = _out127; + _1321_elsIdents = _out128; + _1322_elsEnv = _out129; + readIdents = Dafny.Set>.Union(readIdents, _1321_elsIdents); newEnv = env; - generated = RAST.Expr.create_IfExpr(_1354_cond, _1358_thn, _1361_els); + generated = RAST.Expr.create_IfExpr(_1313_cond, _1317_thn, _1320_els); } } } if (unmatched58) { if (_source58.is_Labeled) { - Dafny.ISequence _1364_lbl = _source58.dtor_lbl; - Dafny.ISequence _1365_body = _source58.dtor_body; + Dafny.ISequence _1323_lbl = _source58.dtor_lbl; + Dafny.ISequence _1324_body = _source58.dtor_body; unmatched58 = false; { - RAST._IExpr _1366_body; - Dafny.ISet> _1367_bodyIdents; - DCOMP._IEnvironment _1368_env2; + RAST._IExpr _1325_body; + Dafny.ISet> _1326_bodyIdents; + DCOMP._IEnvironment _1327_env2; RAST._IExpr _out130; Dafny.ISet> _out131; DCOMP._IEnvironment _out132; - (this).GenStmts(_1365_body, selfIdent, env, isLast, earlyReturn, out _out130, out _out131, out _out132); - _1366_body = _out130; - _1367_bodyIdents = _out131; - _1368_env2 = _out132; - readIdents = _1367_bodyIdents; - generated = RAST.Expr.create_Labelled(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1364_lbl), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), RAST.Expr.create_StmtExpr(_1366_body, RAST.Expr.create_Break(Std.Wrappers.Option>.create_None())))); + (this).GenStmts(_1324_body, selfIdent, env, isLast, earlyReturn, out _out130, out _out131, out _out132); + _1325_body = _out130; + _1326_bodyIdents = _out131; + _1327_env2 = _out132; + readIdents = _1326_bodyIdents; + generated = RAST.Expr.create_Labelled(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1323_lbl), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), RAST.Expr.create_StmtExpr(_1325_body, RAST.Expr.create_Break(Std.Wrappers.Option>.create_None())))); newEnv = env; } } } if (unmatched58) { if (_source58.is_While) { - DAST._IExpression _1369_cond = _source58.dtor_cond; - Dafny.ISequence _1370_body = _source58.dtor_body; + DAST._IExpression _1328_cond = _source58.dtor_cond; + Dafny.ISequence _1329_body = _source58.dtor_body; unmatched58 = false; { - RAST._IExpr _1371_cond; - DCOMP._IOwnership _1372___v63; - Dafny.ISet> _1373_recIdents; + RAST._IExpr _1330_cond; + DCOMP._IOwnership _1331___v63; + Dafny.ISet> _1332_recIdents; RAST._IExpr _out133; DCOMP._IOwnership _out134; Dafny.ISet> _out135; - (this).GenExpr(_1369_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out133, out _out134, out _out135); - _1371_cond = _out133; - _1372___v63 = _out134; - _1373_recIdents = _out135; - readIdents = _1373_recIdents; - RAST._IExpr _1374_bodyExpr; - Dafny.ISet> _1375_bodyIdents; - DCOMP._IEnvironment _1376_bodyEnv; + (this).GenExpr(_1328_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out133, out _out134, out _out135); + _1330_cond = _out133; + _1331___v63 = _out134; + _1332_recIdents = _out135; + readIdents = _1332_recIdents; + RAST._IExpr _1333_bodyExpr; + Dafny.ISet> _1334_bodyIdents; + DCOMP._IEnvironment _1335_bodyEnv; RAST._IExpr _out136; Dafny.ISet> _out137; DCOMP._IEnvironment _out138; - (this).GenStmts(_1370_body, selfIdent, env, false, earlyReturn, out _out136, out _out137, out _out138); - _1374_bodyExpr = _out136; - _1375_bodyIdents = _out137; - _1376_bodyEnv = _out138; + (this).GenStmts(_1329_body, selfIdent, env, false, earlyReturn, out _out136, out _out137, out _out138); + _1333_bodyExpr = _out136; + _1334_bodyIdents = _out137; + _1335_bodyEnv = _out138; newEnv = env; - readIdents = Dafny.Set>.Union(readIdents, _1375_bodyIdents); - generated = RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(_1371_cond), _1374_bodyExpr); + readIdents = Dafny.Set>.Union(readIdents, _1334_bodyIdents); + generated = RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(_1330_cond), _1333_bodyExpr); } } } if (unmatched58) { if (_source58.is_Foreach) { - Dafny.ISequence _1377_boundName = _source58.dtor_boundName; - DAST._IType _1378_boundType = _source58.dtor_boundType; - DAST._IExpression _1379_over = _source58.dtor_over; - Dafny.ISequence _1380_body = _source58.dtor_body; + Dafny.ISequence _1336_boundName = _source58.dtor_boundName; + DAST._IType _1337_boundType = _source58.dtor_boundType; + DAST._IExpression _1338_over = _source58.dtor_over; + Dafny.ISequence _1339_body = _source58.dtor_body; unmatched58 = false; { - RAST._IExpr _1381_over; - DCOMP._IOwnership _1382___v64; - Dafny.ISet> _1383_recIdents; + RAST._IExpr _1340_over; + DCOMP._IOwnership _1341___v64; + Dafny.ISet> _1342_recIdents; RAST._IExpr _out139; DCOMP._IOwnership _out140; Dafny.ISet> _out141; - (this).GenExpr(_1379_over, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out139, out _out140, out _out141); - _1381_over = _out139; - _1382___v64 = _out140; - _1383_recIdents = _out141; - RAST._IType _1384_boundTpe; + (this).GenExpr(_1338_over, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out139, out _out140, out _out141); + _1340_over = _out139; + _1341___v64 = _out140; + _1342_recIdents = _out141; + RAST._IType _1343_boundTpe; RAST._IType _out142; - _out142 = (this).GenType(_1378_boundType, false, false); - _1384_boundTpe = _out142; - readIdents = _1383_recIdents; - Dafny.ISequence _1385_boundRName; - _1385_boundRName = DCOMP.__default.escapeName(_1377_boundName); - RAST._IExpr _1386_bodyExpr; - Dafny.ISet> _1387_bodyIdents; - DCOMP._IEnvironment _1388_bodyEnv; + _out142 = (this).GenType(_1337_boundType, false, false); + _1343_boundTpe = _out142; + readIdents = _1342_recIdents; + Dafny.ISequence _1344_boundRName; + _1344_boundRName = DCOMP.__default.escapeName(_1336_boundName); + RAST._IExpr _1345_bodyExpr; + Dafny.ISet> _1346_bodyIdents; + DCOMP._IEnvironment _1347_bodyEnv; RAST._IExpr _out143; Dafny.ISet> _out144; DCOMP._IEnvironment _out145; - (this).GenStmts(_1380_body, selfIdent, (env).AddAssigned(_1385_boundRName, _1384_boundTpe), false, earlyReturn, out _out143, out _out144, out _out145); - _1386_bodyExpr = _out143; - _1387_bodyIdents = _out144; - _1388_bodyEnv = _out145; - readIdents = Dafny.Set>.Difference(Dafny.Set>.Union(readIdents, _1387_bodyIdents), Dafny.Set>.FromElements(_1385_boundRName)); + (this).GenStmts(_1339_body, selfIdent, (env).AddAssigned(_1344_boundRName, _1343_boundTpe), false, earlyReturn, out _out143, out _out144, out _out145); + _1345_bodyExpr = _out143; + _1346_bodyIdents = _out144; + _1347_bodyEnv = _out145; + readIdents = Dafny.Set>.Difference(Dafny.Set>.Union(readIdents, _1346_bodyIdents), Dafny.Set>.FromElements(_1344_boundRName)); newEnv = env; - generated = RAST.Expr.create_For(_1385_boundRName, _1381_over, _1386_bodyExpr); + generated = RAST.Expr.create_For(_1344_boundRName, _1340_over, _1345_bodyExpr); } } } if (unmatched58) { if (_source58.is_Break) { - Std.Wrappers._IOption> _1389_toLabel = _source58.dtor_toLabel; + Std.Wrappers._IOption> _1348_toLabel = _source58.dtor_toLabel; unmatched58 = false; { - Std.Wrappers._IOption> _source59 = _1389_toLabel; + Std.Wrappers._IOption> _source59 = _1348_toLabel; bool unmatched59 = true; if (unmatched59) { if (_source59.is_Some) { - Dafny.ISequence _1390_lbl = _source59.dtor_value; + Dafny.ISequence _1349_lbl = _source59.dtor_value; unmatched59 = false; { - generated = RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1390_lbl))); + generated = RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1349_lbl))); } } } @@ -2043,7 +2034,7 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption _1391_body = _source58.dtor_body; + Dafny.ISequence _1350_body = _source58.dtor_body; unmatched58 = false; { generated = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); @@ -2052,38 +2043,38 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption _1393_param; - _1393_param = ((env).dtor_names).Select(_1392_paramI); - RAST._IExpr _1394_paramInit; - DCOMP._IOwnership _1395___v65; - Dafny.ISet> _1396___v66; + for (BigInteger _1351_paramI = BigInteger.Zero; _1351_paramI < _hi27; _1351_paramI++) { + Dafny.ISequence _1352_param; + _1352_param = ((env).dtor_names).Select(_1351_paramI); + RAST._IExpr _1353_paramInit; + DCOMP._IOwnership _1354___v65; + Dafny.ISet> _1355___v66; RAST._IExpr _out146; DCOMP._IOwnership _out147; Dafny.ISet> _out148; - (this).GenIdent(_1393_param, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out146, out _out147, out _out148); - _1394_paramInit = _out146; - _1395___v65 = _out147; - _1396___v66 = _out148; - generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1393_param, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_1394_paramInit))); - if (((env).dtor_types).Contains(_1393_param)) { - RAST._IType _1397_declaredType; - _1397_declaredType = (Dafny.Map, RAST._IType>.Select((env).dtor_types,_1393_param)).ToOwned(); - newEnv = (newEnv).AddAssigned(_1393_param, _1397_declaredType); + (this).GenIdent(_1352_param, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out146, out _out147, out _out148); + _1353_paramInit = _out146; + _1354___v65 = _out147; + _1355___v66 = _out148; + generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1352_param, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_1353_paramInit))); + if (((env).dtor_types).Contains(_1352_param)) { + RAST._IType _1356_declaredType; + _1356_declaredType = (Dafny.Map, RAST._IType>.Select((env).dtor_types,_1352_param)).ToOwned(); + newEnv = (newEnv).AddAssigned(_1352_param, _1356_declaredType); } } - RAST._IExpr _1398_bodyExpr; - Dafny.ISet> _1399_bodyIdents; - DCOMP._IEnvironment _1400_bodyEnv; + RAST._IExpr _1357_bodyExpr; + Dafny.ISet> _1358_bodyIdents; + DCOMP._IEnvironment _1359_bodyEnv; RAST._IExpr _out149; Dafny.ISet> _out150; DCOMP._IEnvironment _out151; - (this).GenStmts(_1391_body, ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) ? (Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("_this"))) : (Std.Wrappers.Option>.create_None())), newEnv, false, earlyReturn, out _out149, out _out150, out _out151); - _1398_bodyExpr = _out149; - _1399_bodyIdents = _out150; - _1400_bodyEnv = _out151; - readIdents = _1399_bodyIdents; - generated = (generated).Then(RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("TAIL_CALL_START"), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), _1398_bodyExpr))); + (this).GenStmts(_1350_body, ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) ? (Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("_this"))) : (Std.Wrappers.Option>.create_None())), newEnv, false, earlyReturn, out _out149, out _out150, out _out151); + _1357_bodyExpr = _out149; + _1358_bodyIdents = _out150; + _1359_bodyEnv = _out151; + readIdents = _1358_bodyIdents; + generated = (generated).Then(RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("TAIL_CALL_START"), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), _1357_bodyExpr))); } } } @@ -2099,78 +2090,76 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption _1403_typeArgs = _source58.dtor_typeArgs; - Dafny.ISequence _1404_args = _source58.dtor_args; - Std.Wrappers._IOption>> _1405_maybeOutVars = _source58.dtor_outs; + DAST._IExpression _1360_on = _source58.dtor_on; + DAST._ICallName _1361_name = _source58.dtor_callName; + Dafny.ISequence _1362_typeArgs = _source58.dtor_typeArgs; + Dafny.ISequence _1363_args = _source58.dtor_args; + Std.Wrappers._IOption>> _1364_maybeOutVars = _source58.dtor_outs; unmatched58 = false; { readIdents = Dafny.Set>.FromElements(); - RAST._IExpr _1406_onExpr; - DCOMP._IOwnership _1407___v67; - Dafny.ISet> _1408_enclosingIdents; + RAST._IExpr _1365_onExpr; + DCOMP._IOwnership _1366___v67; + Dafny.ISet> _1367_enclosingIdents; RAST._IExpr _out152; DCOMP._IOwnership _out153; Dafny.ISet> _out154; - (this).GenExpr(_1401_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out152, out _out153, out _out154); - _1406_onExpr = _out152; - _1407___v67 = _out153; - _1408_enclosingIdents = _out154; - Dafny.ISequence _1409_typeArgsR; - _1409_typeArgsR = Dafny.Sequence.FromElements(); - if ((new BigInteger((_1403_typeArgs).Count)) >= (BigInteger.One)) { - BigInteger _1410_typeI; - _1410_typeI = BigInteger.Zero; - while ((_1410_typeI) < (new BigInteger((_1403_typeArgs).Count))) { - RAST._IType _1411_tpe; + (this).GenExpr(_1360_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out152, out _out153, out _out154); + _1365_onExpr = _out152; + _1366___v67 = _out153; + _1367_enclosingIdents = _out154; + Dafny.ISequence _1368_typeArgsR; + _1368_typeArgsR = Dafny.Sequence.FromElements(); + if ((new BigInteger((_1362_typeArgs).Count)) >= (BigInteger.One)) { + BigInteger _1369_typeI; + _1369_typeI = BigInteger.Zero; + while ((_1369_typeI) < (new BigInteger((_1362_typeArgs).Count))) { + RAST._IType _1370_tpe; RAST._IType _out155; - _out155 = (this).GenType((_1403_typeArgs).Select(_1410_typeI), false, false); - _1411_tpe = _out155; - _1409_typeArgsR = Dafny.Sequence.Concat(_1409_typeArgsR, Dafny.Sequence.FromElements(_1411_tpe)); - _1410_typeI = (_1410_typeI) + (BigInteger.One); + _out155 = (this).GenType((_1362_typeArgs).Select(_1369_typeI), false, false); + _1370_tpe = _out155; + _1368_typeArgsR = Dafny.Sequence.Concat(_1368_typeArgsR, Dafny.Sequence.FromElements(_1370_tpe)); + _1369_typeI = (_1369_typeI) + (BigInteger.One); } } - Dafny.ISequence _1412_argExprs; - _1412_argExprs = Dafny.Sequence.FromElements(); - BigInteger _hi28 = new BigInteger((_1404_args).Count); - for (BigInteger _1413_i = BigInteger.Zero; _1413_i < _hi28; _1413_i++) { - DCOMP._IOwnership _1414_argOwnership; - _1414_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); - if (((_1402_name).is_CallName) && ((_1413_i) < (new BigInteger((((_1402_name).dtor_signature)).Count)))) { - RAST._IType _1415_tpe; + Dafny.ISequence _1371_argExprs; + _1371_argExprs = Dafny.Sequence.FromElements(); + BigInteger _hi28 = new BigInteger((_1363_args).Count); + for (BigInteger _1372_i = BigInteger.Zero; _1372_i < _hi28; _1372_i++) { + DCOMP._IOwnership _1373_argOwnership; + _1373_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); + if (((_1361_name).is_CallName) && ((_1372_i) < (new BigInteger((((_1361_name).dtor_signature)).Count)))) { + RAST._IType _1374_tpe; RAST._IType _out156; - _out156 = (this).GenType(((((_1402_name).dtor_signature)).Select(_1413_i)).dtor_typ, false, false); - _1415_tpe = _out156; - if ((_1415_tpe).CanReadWithoutClone()) { - _1414_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); + _out156 = (this).GenType(((((_1361_name).dtor_signature)).Select(_1372_i)).dtor_typ, false, false); + _1374_tpe = _out156; + if ((_1374_tpe).CanReadWithoutClone()) { + _1373_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); } } - RAST._IExpr _1416_argExpr; - DCOMP._IOwnership _1417_ownership; - Dafny.ISet> _1418_argIdents; + RAST._IExpr _1375_argExpr; + DCOMP._IOwnership _1376_ownership; + Dafny.ISet> _1377_argIdents; RAST._IExpr _out157; DCOMP._IOwnership _out158; Dafny.ISet> _out159; - (this).GenExpr((_1404_args).Select(_1413_i), selfIdent, env, _1414_argOwnership, out _out157, out _out158, out _out159); - _1416_argExpr = _out157; - _1417_ownership = _out158; - _1418_argIdents = _out159; - _1412_argExprs = Dafny.Sequence.Concat(_1412_argExprs, Dafny.Sequence.FromElements(_1416_argExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1418_argIdents); + (this).GenExpr((_1363_args).Select(_1372_i), selfIdent, env, _1373_argOwnership, out _out157, out _out158, out _out159); + _1375_argExpr = _out157; + _1376_ownership = _out158; + _1377_argIdents = _out159; + _1371_argExprs = Dafny.Sequence.Concat(_1371_argExprs, Dafny.Sequence.FromElements(_1375_argExpr)); + readIdents = Dafny.Set>.Union(readIdents, _1377_argIdents); } - readIdents = Dafny.Set>.Union(readIdents, _1408_enclosingIdents); - Dafny.ISequence _1419_renderedName; - _1419_renderedName = ((System.Func>)(() => { - DAST._ICallName _source60 = _1402_name; + readIdents = Dafny.Set>.Union(readIdents, _1367_enclosingIdents); + Dafny.ISequence _1378_renderedName; + _1378_renderedName = ((System.Func>)(() => { + DAST._ICallName _source60 = _1361_name; bool unmatched60 = true; if (unmatched60) { if (_source60.is_CallName) { - Dafny.ISequence _1420_name = _source60.dtor_name; - Std.Wrappers._IOption _1421___v68 = _source60.dtor_onType; - Dafny.ISequence _1422___v69 = _source60.dtor_signature; + Dafny.ISequence _1379_name = _source60.dtor_name; unmatched60 = false; - return DCOMP.__default.escapeName(_1420_name); + return DCOMP.__default.escapeName(_1379_name); } } if (unmatched60) { @@ -2197,49 +2186,47 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption> _1423___v70 = _source61.dtor_Companion_a0; unmatched61 = false; { - _1406_onExpr = (_1406_onExpr).MSel(_1419_renderedName); + _1365_onExpr = (_1365_onExpr).MSel(_1378_renderedName); } } } if (unmatched61) { - DAST._IExpression _1424___v71 = _source61; unmatched61 = false; { - _1406_onExpr = (_1406_onExpr).Sel(_1419_renderedName); + _1365_onExpr = (_1365_onExpr).Sel(_1378_renderedName); } } - generated = _1406_onExpr; - if ((new BigInteger((_1409_typeArgsR).Count)).Sign == 1) { - generated = (generated).ApplyType(_1409_typeArgsR); + generated = _1365_onExpr; + if ((new BigInteger((_1368_typeArgsR).Count)).Sign == 1) { + generated = (generated).ApplyType(_1368_typeArgsR); } - generated = (generated).Apply(_1412_argExprs); - if (((_1405_maybeOutVars).is_Some) && ((new BigInteger(((_1405_maybeOutVars).dtor_value).Count)) == (BigInteger.One))) { - Dafny.ISequence _1425_outVar; - _1425_outVar = DCOMP.__default.escapeName((((_1405_maybeOutVars).dtor_value).Select(BigInteger.Zero))); - generated = RAST.__default.AssignVar(_1425_outVar, generated); - } else if (((_1405_maybeOutVars).is_None) || ((new BigInteger(((_1405_maybeOutVars).dtor_value).Count)).Sign == 0)) { + generated = (generated).Apply(_1371_argExprs); + if (((_1364_maybeOutVars).is_Some) && ((new BigInteger(((_1364_maybeOutVars).dtor_value).Count)) == (BigInteger.One))) { + Dafny.ISequence _1380_outVar; + _1380_outVar = DCOMP.__default.escapeName((((_1364_maybeOutVars).dtor_value).Select(BigInteger.Zero))); + generated = RAST.__default.AssignVar(_1380_outVar, generated); + } else if (((_1364_maybeOutVars).is_None) || ((new BigInteger(((_1364_maybeOutVars).dtor_value).Count)).Sign == 0)) { } else { - Dafny.ISequence _1426_tmpVar; - _1426_tmpVar = Dafny.Sequence.UnicodeFromString("_x"); - RAST._IExpr _1427_tmpId; - _1427_tmpId = RAST.Expr.create_Identifier(_1426_tmpVar); - generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _1426_tmpVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(generated)); - Dafny.ISequence> _1428_outVars; - _1428_outVars = (_1405_maybeOutVars).dtor_value; - BigInteger _hi29 = new BigInteger((_1428_outVars).Count); - for (BigInteger _1429_outI = BigInteger.Zero; _1429_outI < _hi29; _1429_outI++) { - Dafny.ISequence _1430_outVar; - _1430_outVar = DCOMP.__default.escapeName(((_1428_outVars).Select(_1429_outI))); - RAST._IExpr _1431_rhs; - _1431_rhs = (_1427_tmpId).Sel(Std.Strings.__default.OfNat(_1429_outI)); - generated = (generated).Then(RAST.__default.AssignVar(_1430_outVar, _1431_rhs)); + Dafny.ISequence _1381_tmpVar; + _1381_tmpVar = Dafny.Sequence.UnicodeFromString("_x"); + RAST._IExpr _1382_tmpId; + _1382_tmpId = RAST.Expr.create_Identifier(_1381_tmpVar); + generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _1381_tmpVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(generated)); + Dafny.ISequence> _1383_outVars; + _1383_outVars = (_1364_maybeOutVars).dtor_value; + BigInteger _hi29 = new BigInteger((_1383_outVars).Count); + for (BigInteger _1384_outI = BigInteger.Zero; _1384_outI < _hi29; _1384_outI++) { + Dafny.ISequence _1385_outVar; + _1385_outVar = DCOMP.__default.escapeName(((_1383_outVars).Select(_1384_outI))); + RAST._IExpr _1386_rhs; + _1386_rhs = (_1382_tmpId).Sel(Std.Strings.__default.OfNat(_1384_outI)); + generated = (generated).Then(RAST.__default.AssignVar(_1385_outVar, _1386_rhs)); } } newEnv = env; @@ -2248,24 +2235,24 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption> _1435_recIdents; + RAST._IExpr _1388_expr; + DCOMP._IOwnership _1389___v72; + Dafny.ISet> _1390_recIdents; RAST._IExpr _out160; DCOMP._IOwnership _out161; Dafny.ISet> _out162; - (this).GenExpr(_1432_exprDafny, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out160, out _out161, out _out162); - _1433_expr = _out160; - _1434___v72 = _out161; - _1435_recIdents = _out162; - readIdents = _1435_recIdents; + (this).GenExpr(_1387_exprDafny, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out160, out _out161, out _out162); + _1388_expr = _out160; + _1389___v72 = _out161; + _1390_recIdents = _out162; + readIdents = _1390_recIdents; if (isLast) { - generated = _1433_expr; + generated = _1388_expr; } else { - generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(_1433_expr)); + generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(_1388_expr)); } newEnv = env; } @@ -2292,21 +2279,21 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption> _1439_recIdents; + RAST._IExpr _1392_printedExpr; + DCOMP._IOwnership _1393_recOwnership; + Dafny.ISet> _1394_recIdents; RAST._IExpr _out163; DCOMP._IOwnership _out164; Dafny.ISet> _out165; - (this).GenExpr(_1436_e, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out163, out _out164, out _out165); - _1437_printedExpr = _out163; - _1438_recOwnership = _out164; - _1439_recIdents = _out165; - generated = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("print!"))).Apply(Dafny.Sequence.FromElements(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("{}"), false, false), ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("DafnyPrintWrapper"))).Apply1(_1437_printedExpr))); - readIdents = _1439_recIdents; + (this).GenExpr(_1391_e, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out163, out _out164, out _out165); + _1392_printedExpr = _out163; + _1393_recOwnership = _out164; + _1394_recIdents = _out165; + generated = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("print!"))).Apply(Dafny.Sequence.FromElements(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("{}"), false, false), ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("DafnyPrintWrapper"))).Apply1(_1392_printedExpr))); + readIdents = _1394_recIdents; newEnv = env; } } @@ -2382,7 +2369,6 @@ public void GenStmt(DAST._IStatement stmt, Std.Wrappers._IOption.create_None(); } @@ -2463,12 +2449,12 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption>.FromElements(); @@ -2481,11 +2467,11 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption _1442_i = _h141.dtor_IntLiteral_a0; - DAST._IType _1443_t = _h141.dtor_IntLiteral_a1; + Dafny.ISequence _1396_i = _h141.dtor_IntLiteral_a0; + DAST._IType _1397_t = _h141.dtor_IntLiteral_a1; unmatched63 = false; { - DAST._IType _source64 = _1443_t; + DAST._IType _source64 = _1397_t; bool unmatched64 = true; if (unmatched64) { if (_source64.is_Primitive) { @@ -2493,24 +2479,24 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralInt(_1442_i)); + if ((new BigInteger((_1396_i).Count)) <= (new BigInteger(4))) { + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralInt(_1396_i)); } else { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralString(_1442_i, true, false)); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralString(_1396_i, true, false)); } } } } } if (unmatched64) { - DAST._IType _1444_o = _source64; + DAST._IType _1398_o = _source64; unmatched64 = false; { - RAST._IType _1445_genType; + RAST._IType _1399_genType; RAST._IType _out172; - _out172 = (this).GenType(_1444_o, false, false); - _1445_genType = _out172; - r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(_1442_i), _1445_genType); + _out172 = (this).GenType(_1398_o, false, false); + _1399_genType = _out172; + r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(_1396_i), _1399_genType); } } RAST._IExpr _out173; @@ -2528,12 +2514,12 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption _1446_n = _h142.dtor_DecLiteral_a0; - Dafny.ISequence _1447_d = _h142.dtor_DecLiteral_a1; - DAST._IType _1448_t = _h142.dtor_DecLiteral_a2; + Dafny.ISequence _1400_n = _h142.dtor_DecLiteral_a0; + Dafny.ISequence _1401_d = _h142.dtor_DecLiteral_a1; + DAST._IType _1402_t = _h142.dtor_DecLiteral_a2; unmatched63 = false; { - DAST._IType _source65 = _1448_t; + DAST._IType _source65 = _1402_t; bool unmatched65 = true; if (unmatched65) { if (_source65.is_Primitive) { @@ -2541,20 +2527,20 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::new(::dafny_runtime::BigInt::parse_bytes(b\""), _1446_n), Dafny.Sequence.UnicodeFromString("\", 10).unwrap(), ::dafny_runtime::BigInt::parse_bytes(b\"")), _1447_d), Dafny.Sequence.UnicodeFromString("\", 10).unwrap())")))); + r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::new(::dafny_runtime::BigInt::parse_bytes(b\""), _1400_n), Dafny.Sequence.UnicodeFromString("\", 10).unwrap(), ::dafny_runtime::BigInt::parse_bytes(b\"")), _1401_d), Dafny.Sequence.UnicodeFromString("\", 10).unwrap())")))); } } } } if (unmatched65) { - DAST._IType _1449_o = _source65; + DAST._IType _1403_o = _source65; unmatched65 = false; { - RAST._IType _1450_genType; + RAST._IType _1404_genType; RAST._IType _out175; - _out175 = (this).GenType(_1449_o, false, false); - _1450_genType = _out175; - r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), _1446_n), Dafny.Sequence.UnicodeFromString(".0 / ")), _1447_d), Dafny.Sequence.UnicodeFromString(".0")), Dafny.Sequence.UnicodeFromString(")"))), _1450_genType); + _out175 = (this).GenType(_1403_o, false, false); + _1404_genType = _out175; + r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), _1400_n), Dafny.Sequence.UnicodeFromString(".0 / ")), _1401_d), Dafny.Sequence.UnicodeFromString(".0")), Dafny.Sequence.UnicodeFromString(")"))), _1404_genType); } } RAST._IExpr _out176; @@ -2572,14 +2558,14 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption _1451_l = _h143.dtor_StringLiteral_a0; - bool _1452_verbatim = _h143.dtor_verbatim; + Dafny.ISequence _1405_l = _h143.dtor_StringLiteral_a0; + bool _1406_verbatim = _h143.dtor_verbatim; unmatched63 = false; { - if (_1452_verbatim) { + if (_1406_verbatim) { (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("Verbatim strings prefixed by @ not supported yet.")); } - r = ((RAST.__default.dafny__runtime).MSel((this).string__of)).Apply1(RAST.Expr.create_LiteralString(_1451_l, false, _1452_verbatim)); + r = ((RAST.__default.dafny__runtime).MSel((this).string__of)).Apply1(RAST.Expr.create_LiteralString(_1405_l, false, _1406_verbatim)); RAST._IExpr _out178; DCOMP._IOwnership _out179; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out178, out _out179); @@ -2595,10 +2581,10 @@ public void GenExprLiteral(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("None")), _1456_tpeGen); + _out184 = (this).GenType(_1409_tpe, false, false); + _1410_tpeGen = _out184; + r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("None")), _1410_tpeGen); RAST._IExpr _out185; DCOMP._IOwnership _out186; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out185, out _out186); @@ -2663,13 +2649,13 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption>.Empty; DAST._IExpression _let_tmp_rhs52 = e; - DAST._IBinOp _1457_op = _let_tmp_rhs52.dtor_op; - DAST._IExpression _1458_lExpr = _let_tmp_rhs52.dtor_left; - DAST._IExpression _1459_rExpr = _let_tmp_rhs52.dtor_right; - DAST.Format._IBinaryOpFormat _1460_format = _let_tmp_rhs52.dtor_format2; - bool _1461_becomesLeftCallsRight; - _1461_becomesLeftCallsRight = ((System.Func)(() => { - DAST._IBinOp _source66 = _1457_op; + DAST._IBinOp _1411_op = _let_tmp_rhs52.dtor_op; + DAST._IExpression _1412_lExpr = _let_tmp_rhs52.dtor_left; + DAST._IExpression _1413_rExpr = _let_tmp_rhs52.dtor_right; + DAST.Format._IBinaryOpFormat _1414_format = _let_tmp_rhs52.dtor_format2; + bool _1415_becomesLeftCallsRight; + _1415_becomesLeftCallsRight = ((System.Func)(() => { + DAST._IBinOp _source66 = _1411_op; bool unmatched66 = true; if (unmatched66) { bool disjunctiveMatch11 = false; @@ -2712,15 +2698,14 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption)(() => { - DAST._IBinOp _source67 = _1457_op; + bool _1416_becomesRightCallsLeft; + _1416_becomesRightCallsLeft = ((System.Func)(() => { + DAST._IBinOp _source67 = _1411_op; bool unmatched67 = true; if (unmatched67) { if (_source67.is_In) { @@ -2729,15 +2714,14 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption)(() => { - DAST._IBinOp _source68 = _1457_op; + bool _1417_becomesCallLeftRight; + _1417_becomesCallLeftRight = ((System.Func)(() => { + DAST._IBinOp _source68 = _1411_op; bool unmatched68 = true; if (unmatched68) { if (_source68.is_Eq) { @@ -2818,63 +2802,62 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption> _1471_recIdentsL; + DCOMP._IOwnership _1418_expectedLeftOwnership; + _1418_expectedLeftOwnership = ((_1415_becomesLeftCallsRight) ? (DCOMP.Ownership.create_OwnershipAutoBorrowed()) : ((((_1416_becomesRightCallsLeft) || (_1417_becomesCallLeftRight)) ? (DCOMP.Ownership.create_OwnershipBorrowed()) : (DCOMP.Ownership.create_OwnershipOwned())))); + DCOMP._IOwnership _1419_expectedRightOwnership; + _1419_expectedRightOwnership = (((_1415_becomesLeftCallsRight) || (_1417_becomesCallLeftRight)) ? (DCOMP.Ownership.create_OwnershipBorrowed()) : (((_1416_becomesRightCallsLeft) ? (DCOMP.Ownership.create_OwnershipAutoBorrowed()) : (DCOMP.Ownership.create_OwnershipOwned())))); + RAST._IExpr _1420_left; + DCOMP._IOwnership _1421___v77; + Dafny.ISet> _1422_recIdentsL; RAST._IExpr _out187; DCOMP._IOwnership _out188; Dafny.ISet> _out189; - (this).GenExpr(_1458_lExpr, selfIdent, env, _1467_expectedLeftOwnership, out _out187, out _out188, out _out189); - _1469_left = _out187; - _1470___v77 = _out188; - _1471_recIdentsL = _out189; - RAST._IExpr _1472_right; - DCOMP._IOwnership _1473___v78; - Dafny.ISet> _1474_recIdentsR; + (this).GenExpr(_1412_lExpr, selfIdent, env, _1418_expectedLeftOwnership, out _out187, out _out188, out _out189); + _1420_left = _out187; + _1421___v77 = _out188; + _1422_recIdentsL = _out189; + RAST._IExpr _1423_right; + DCOMP._IOwnership _1424___v78; + Dafny.ISet> _1425_recIdentsR; RAST._IExpr _out190; DCOMP._IOwnership _out191; Dafny.ISet> _out192; - (this).GenExpr(_1459_rExpr, selfIdent, env, _1468_expectedRightOwnership, out _out190, out _out191, out _out192); - _1472_right = _out190; - _1473___v78 = _out191; - _1474_recIdentsR = _out192; - DAST._IBinOp _source69 = _1457_op; + (this).GenExpr(_1413_rExpr, selfIdent, env, _1419_expectedRightOwnership, out _out190, out _out191, out _out192); + _1423_right = _out190; + _1424___v78 = _out191; + _1425_recIdentsR = _out192; + DAST._IBinOp _source69 = _1411_op; bool unmatched69 = true; if (unmatched69) { if (_source69.is_In) { unmatched69 = false; { - r = ((_1472_right).Sel(Dafny.Sequence.UnicodeFromString("contains"))).Apply1(_1469_left); + r = ((_1423_right).Sel(Dafny.Sequence.UnicodeFromString("contains"))).Apply1(_1420_left); } } } if (unmatched69) { if (_source69.is_SeqProperPrefix) { unmatched69 = false; - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1420_left, _1423_right, _1414_format); } } if (unmatched69) { if (_source69.is_SeqPrefix) { unmatched69 = false; - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1420_left, _1423_right, _1414_format); } } if (unmatched69) { if (_source69.is_SetMerge) { unmatched69 = false; { - r = ((_1469_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1423_right); } } } @@ -2882,7 +2865,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("subtract"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1423_right); } } } @@ -2890,7 +2873,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("intersect"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_1423_right); } } } @@ -2898,7 +2881,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("<="), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1420_left, _1423_right, _1414_format); } } } @@ -2906,7 +2889,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("<"), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1420_left, _1423_right, _1414_format); } } } @@ -2914,7 +2897,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("disjoint"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_1423_right); } } } @@ -2922,7 +2905,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("merge"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1423_right); } } } @@ -2930,7 +2913,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("subtract"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1423_right); } } } @@ -2938,7 +2921,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("merge"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1423_right); } } } @@ -2946,7 +2929,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("subtract"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1423_right); } } } @@ -2954,7 +2937,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("intersect"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_1423_right); } } } @@ -2962,7 +2945,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("<="), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1420_left, _1423_right, _1414_format); } } } @@ -2970,7 +2953,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("<"), _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1420_left, _1423_right, _1414_format); } } } @@ -2978,7 +2961,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("disjoint"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_1423_right); } } } @@ -2986,33 +2969,32 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("concat"))).Apply1(_1472_right); + r = ((_1420_left).Sel(Dafny.Sequence.UnicodeFromString("concat"))).Apply1(_1423_right); } } } if (unmatched69) { - DAST._IBinOp _1475___v79 = _source69; unmatched69 = false; { - if ((DCOMP.COMP.OpTable).Contains(_1457_op)) { - r = RAST.Expr.create_BinaryOp(Dafny.Map>.Select(DCOMP.COMP.OpTable,_1457_op), _1469_left, _1472_right, _1460_format); + if ((DCOMP.COMP.OpTable).Contains(_1411_op)) { + r = RAST.Expr.create_BinaryOp(Dafny.Map>.Select(DCOMP.COMP.OpTable,_1411_op), _1420_left, _1423_right, _1414_format); } else { - DAST._IBinOp _source70 = _1457_op; + DAST._IBinOp _source70 = _1411_op; bool unmatched70 = true; if (unmatched70) { if (_source70.is_Eq) { - bool _1476_referential = _source70.dtor_referential; - bool _1477_nullable = _source70.dtor_nullable; + bool _1426_referential = _source70.dtor_referential; + bool _1427_nullable = _source70.dtor_nullable; unmatched70 = false; { - if (_1476_referential) { - if (_1477_nullable) { - r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::nullable_referential_equality"))).Apply(Dafny.Sequence.FromElements(_1469_left, _1472_right)); + if (_1426_referential) { + if (_1427_nullable) { + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::nullable_referential_equality"))).Apply(Dafny.Sequence.FromElements(_1420_left, _1423_right)); } else { - r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::ptr_eq"))).Apply(Dafny.Sequence.FromElements(_1469_left, _1472_right)); + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::ptr_eq"))).Apply(Dafny.Sequence.FromElements(_1420_left, _1423_right)); } } else { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1469_left, _1472_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1420_left, _1423_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -3021,7 +3003,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("::dafny_runtime::euclidian_division"))).Apply(Dafny.Sequence.FromElements(_1469_left, _1472_right)); + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_division"))).Apply(Dafny.Sequence.FromElements(_1420_left, _1423_right)); } } } @@ -3029,15 +3011,15 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("::dafny_runtime::euclidian_modulo"))).Apply(Dafny.Sequence.FromElements(_1469_left, _1472_right)); + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_modulo"))).Apply(Dafny.Sequence.FromElements(_1420_left, _1423_right)); } } } if (unmatched70) { - Dafny.ISequence _1478_op = _source70.dtor_Passthrough_a0; + Dafny.ISequence _1428_op = _source70.dtor_Passthrough_a0; unmatched70 = false; { - r = RAST.Expr.create_BinaryOp(_1478_op, _1469_left, _1472_right, _1460_format); + r = RAST.Expr.create_BinaryOp(_1428_op, _1420_left, _1423_right, _1414_format); } } } @@ -3048,7 +3030,7 @@ public void GenExprBinary(DAST._IExpression e, Std.Wrappers._IOption>.Union(_1471_recIdentsL, _1474_recIdentsR); + readIdents = Dafny.Set>.Union(_1422_recIdentsL, _1425_recIdentsR); return ; } public void GenExprConvertFromNullable(DAST._IExpression e, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) @@ -3057,30 +3039,30 @@ public void GenExprConvertFromNullable(DAST._IExpression e, Std.Wrappers._IOptio resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; DAST._IExpression _let_tmp_rhs53 = e; - DAST._IExpression _1479_expr = _let_tmp_rhs53.dtor_value; - DAST._IType _1480_fromTpe = _let_tmp_rhs53.dtor_from; - DAST._IType _1481_toTpe = _let_tmp_rhs53.dtor_typ; - RAST._IExpr _1482_recursiveGen; - DCOMP._IOwnership _1483_recOwned; - Dafny.ISet> _1484_recIdents; + DAST._IExpression _1429_expr = _let_tmp_rhs53.dtor_value; + DAST._IType _1430_fromTpe = _let_tmp_rhs53.dtor_from; + DAST._IType _1431_toTpe = _let_tmp_rhs53.dtor_typ; + RAST._IExpr _1432_recursiveGen; + DCOMP._IOwnership _1433_recOwned; + Dafny.ISet> _1434_recIdents; RAST._IExpr _out195; DCOMP._IOwnership _out196; Dafny.ISet> _out197; - (this).GenExpr(_1479_expr, selfIdent, env, expectedOwnership, out _out195, out _out196, out _out197); - _1482_recursiveGen = _out195; - _1483_recOwned = _out196; - _1484_recIdents = _out197; - r = _1482_recursiveGen; - if (object.Equals(_1483_recOwned, DCOMP.Ownership.create_OwnershipOwned())) { + (this).GenExpr(_1429_expr, selfIdent, env, expectedOwnership, out _out195, out _out196, out _out197); + _1432_recursiveGen = _out195; + _1433_recOwned = _out196; + _1434_recIdents = _out197; + r = _1432_recursiveGen; + if (object.Equals(_1433_recOwned, DCOMP.Ownership.create_OwnershipOwned())) { r = ((r).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements()); } r = ((r).Sel(Dafny.Sequence.UnicodeFromString("unwrap"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out198; DCOMP._IOwnership _out199; - DCOMP.COMP.FromOwnership(r, _1483_recOwned, expectedOwnership, out _out198, out _out199); + DCOMP.COMP.FromOwnership(r, _1433_recOwned, expectedOwnership, out _out198, out _out199); r = _out198; resultingOwnership = _out199; - readIdents = _1484_recIdents; + readIdents = _1434_recIdents; } public void GenExprConvertToNullable(DAST._IExpression e, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) { @@ -3088,30 +3070,30 @@ public void GenExprConvertToNullable(DAST._IExpression e, Std.Wrappers._IOption< resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; DAST._IExpression _let_tmp_rhs54 = e; - DAST._IExpression _1485_expr = _let_tmp_rhs54.dtor_value; - DAST._IType _1486_fromTpe = _let_tmp_rhs54.dtor_from; - DAST._IType _1487_toTpe = _let_tmp_rhs54.dtor_typ; - RAST._IExpr _1488_recursiveGen; - DCOMP._IOwnership _1489_recOwned; - Dafny.ISet> _1490_recIdents; + DAST._IExpression _1435_expr = _let_tmp_rhs54.dtor_value; + DAST._IType _1436_fromTpe = _let_tmp_rhs54.dtor_from; + DAST._IType _1437_toTpe = _let_tmp_rhs54.dtor_typ; + RAST._IExpr _1438_recursiveGen; + DCOMP._IOwnership _1439_recOwned; + Dafny.ISet> _1440_recIdents; RAST._IExpr _out200; DCOMP._IOwnership _out201; Dafny.ISet> _out202; - (this).GenExpr(_1485_expr, selfIdent, env, expectedOwnership, out _out200, out _out201, out _out202); - _1488_recursiveGen = _out200; - _1489_recOwned = _out201; - _1490_recIdents = _out202; - r = _1488_recursiveGen; - if (object.Equals(_1489_recOwned, DCOMP.Ownership.create_OwnershipOwned())) { + (this).GenExpr(_1435_expr, selfIdent, env, expectedOwnership, out _out200, out _out201, out _out202); + _1438_recursiveGen = _out200; + _1439_recOwned = _out201; + _1440_recIdents = _out202; + r = _1438_recursiveGen; + if (object.Equals(_1439_recOwned, DCOMP.Ownership.create_OwnershipOwned())) { r = ((r).Sel(Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements()); } r = ((((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("option"))).MSel(Dafny.Sequence.UnicodeFromString("Option"))).MSel(Dafny.Sequence.UnicodeFromString("Some"))).Apply(Dafny.Sequence.FromElements(r)); RAST._IExpr _out203; DCOMP._IOwnership _out204; - DCOMP.COMP.FromOwnership(r, _1489_recOwned, expectedOwnership, out _out203, out _out204); + DCOMP.COMP.FromOwnership(r, _1439_recOwned, expectedOwnership, out _out203, out _out204); r = _out203; resultingOwnership = _out204; - readIdents = _1490_recIdents; + readIdents = _1440_recIdents; } public void GenExprConvertToNewtype(DAST._IExpression e, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) { @@ -3119,38 +3101,38 @@ public void GenExprConvertToNewtype(DAST._IExpression e, Std.Wrappers._IOption>.Empty; DAST._IExpression _let_tmp_rhs55 = e; - DAST._IExpression _1491_expr = _let_tmp_rhs55.dtor_value; - DAST._IType _1492_fromTpe = _let_tmp_rhs55.dtor_from; - DAST._IType _1493_toTpe = _let_tmp_rhs55.dtor_typ; - DAST._IType _let_tmp_rhs56 = _1493_toTpe; - Dafny.ISequence> _1494___v80 = _let_tmp_rhs56.dtor_Path_a0; - Dafny.ISequence _1495___v81 = _let_tmp_rhs56.dtor_typeArgs; + DAST._IExpression _1441_expr = _let_tmp_rhs55.dtor_value; + DAST._IType _1442_fromTpe = _let_tmp_rhs55.dtor_from; + DAST._IType _1443_toTpe = _let_tmp_rhs55.dtor_typ; + DAST._IType _let_tmp_rhs56 = _1443_toTpe; + Dafny.ISequence> _1444___v80 = _let_tmp_rhs56.dtor_Path_a0; + Dafny.ISequence _1445___v81 = _let_tmp_rhs56.dtor_typeArgs; DAST._IResolvedType _let_tmp_rhs57 = _let_tmp_rhs56.dtor_resolved; - DAST._IType _1496_b = _let_tmp_rhs57.dtor_baseType; - DAST._INewtypeRange _1497_range = _let_tmp_rhs57.dtor_range; - bool _1498_erase = _let_tmp_rhs57.dtor_erase; - Dafny.ISequence _1499_attributes = _let_tmp_rhs57.dtor_attributes; - Std.Wrappers._IOption _1500_nativeToType; - _1500_nativeToType = DCOMP.COMP.NewtypeToRustType(_1496_b, _1497_range); - if (object.Equals(_1492_fromTpe, _1496_b)) { - RAST._IExpr _1501_recursiveGen; - DCOMP._IOwnership _1502_recOwned; - Dafny.ISet> _1503_recIdents; + DAST._IType _1446_b = _let_tmp_rhs57.dtor_baseType; + DAST._INewtypeRange _1447_range = _let_tmp_rhs57.dtor_range; + bool _1448_erase = _let_tmp_rhs57.dtor_erase; + Dafny.ISequence _1449_attributes = _let_tmp_rhs57.dtor_attributes; + Std.Wrappers._IOption _1450_nativeToType; + _1450_nativeToType = DCOMP.COMP.NewtypeToRustType(_1446_b, _1447_range); + if (object.Equals(_1442_fromTpe, _1446_b)) { + RAST._IExpr _1451_recursiveGen; + DCOMP._IOwnership _1452_recOwned; + Dafny.ISet> _1453_recIdents; RAST._IExpr _out205; DCOMP._IOwnership _out206; Dafny.ISet> _out207; - (this).GenExpr(_1491_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out205, out _out206, out _out207); - _1501_recursiveGen = _out205; - _1502_recOwned = _out206; - _1503_recIdents = _out207; - readIdents = _1503_recIdents; - Std.Wrappers._IOption _source71 = _1500_nativeToType; + (this).GenExpr(_1441_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out205, out _out206, out _out207); + _1451_recursiveGen = _out205; + _1452_recOwned = _out206; + _1453_recIdents = _out207; + readIdents = _1453_recIdents; + Std.Wrappers._IOption _source71 = _1450_nativeToType; bool unmatched71 = true; if (unmatched71) { if (_source71.is_Some) { - RAST._IType _1504_v = _source71.dtor_value; + RAST._IType _1454_v = _source71.dtor_value; unmatched71 = false; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("truncate!"))).Apply(Dafny.Sequence.FromElements(_1501_recursiveGen, RAST.Expr.create_ExprFromType(_1504_v))); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("truncate!"))).Apply(Dafny.Sequence.FromElements(_1451_recursiveGen, RAST.Expr.create_ExprFromType(_1454_v))); RAST._IExpr _out208; DCOMP._IOwnership _out209; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out208, out _out209); @@ -3160,18 +3142,18 @@ public void GenExprConvertToNewtype(DAST._IExpression e, Std.Wrappers._IOption.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1505_rhsType)._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("(")), (_1501_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + _out210 = (this).GenType(_1443_toTpe, true, false); + _1455_rhsType = _out210; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1455_rhsType)._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("(")), (_1451_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); } RAST._IExpr _out211; DCOMP._IOwnership _out212; - DCOMP.COMP.FromOwnership(r, _1502_recOwned, expectedOwnership, out _out211, out _out212); + DCOMP.COMP.FromOwnership(r, _1452_recOwned, expectedOwnership, out _out211, out _out212); r = _out211; resultingOwnership = _out212; } @@ -3179,7 +3161,7 @@ public void GenExprConvertToNewtype(DAST._IExpression e, Std.Wrappers._IOption> _out215; - (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1491_expr, _1492_fromTpe, _1496_b), _1496_b, _1493_toTpe), selfIdent, env, expectedOwnership, out _out213, out _out214, out _out215); + (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1441_expr, _1442_fromTpe, _1446_b), _1446_b, _1443_toTpe), selfIdent, env, expectedOwnership, out _out213, out _out214, out _out215); r = _out213; resultingOwnership = _out214; readIdents = _out215; @@ -3191,42 +3173,42 @@ public void GenExprConvertFromNewtype(DAST._IExpression e, Std.Wrappers._IOption resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; DAST._IExpression _let_tmp_rhs58 = e; - DAST._IExpression _1506_expr = _let_tmp_rhs58.dtor_value; - DAST._IType _1507_fromTpe = _let_tmp_rhs58.dtor_from; - DAST._IType _1508_toTpe = _let_tmp_rhs58.dtor_typ; - DAST._IType _let_tmp_rhs59 = _1507_fromTpe; - Dafny.ISequence> _1509___v82 = _let_tmp_rhs59.dtor_Path_a0; - Dafny.ISequence _1510___v83 = _let_tmp_rhs59.dtor_typeArgs; + DAST._IExpression _1456_expr = _let_tmp_rhs58.dtor_value; + DAST._IType _1457_fromTpe = _let_tmp_rhs58.dtor_from; + DAST._IType _1458_toTpe = _let_tmp_rhs58.dtor_typ; + DAST._IType _let_tmp_rhs59 = _1457_fromTpe; + Dafny.ISequence> _1459___v82 = _let_tmp_rhs59.dtor_Path_a0; + Dafny.ISequence _1460___v83 = _let_tmp_rhs59.dtor_typeArgs; DAST._IResolvedType _let_tmp_rhs60 = _let_tmp_rhs59.dtor_resolved; - DAST._IType _1511_b = _let_tmp_rhs60.dtor_baseType; - DAST._INewtypeRange _1512_range = _let_tmp_rhs60.dtor_range; - bool _1513_erase = _let_tmp_rhs60.dtor_erase; - Dafny.ISequence _1514_attributes = _let_tmp_rhs60.dtor_attributes; - Std.Wrappers._IOption _1515_nativeFromType; - _1515_nativeFromType = DCOMP.COMP.NewtypeToRustType(_1511_b, _1512_range); - if (object.Equals(_1511_b, _1508_toTpe)) { - RAST._IExpr _1516_recursiveGen; - DCOMP._IOwnership _1517_recOwned; - Dafny.ISet> _1518_recIdents; + DAST._IType _1461_b = _let_tmp_rhs60.dtor_baseType; + DAST._INewtypeRange _1462_range = _let_tmp_rhs60.dtor_range; + bool _1463_erase = _let_tmp_rhs60.dtor_erase; + Dafny.ISequence _1464_attributes = _let_tmp_rhs60.dtor_attributes; + Std.Wrappers._IOption _1465_nativeFromType; + _1465_nativeFromType = DCOMP.COMP.NewtypeToRustType(_1461_b, _1462_range); + if (object.Equals(_1461_b, _1458_toTpe)) { + RAST._IExpr _1466_recursiveGen; + DCOMP._IOwnership _1467_recOwned; + Dafny.ISet> _1468_recIdents; RAST._IExpr _out216; DCOMP._IOwnership _out217; Dafny.ISet> _out218; - (this).GenExpr(_1506_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out216, out _out217, out _out218); - _1516_recursiveGen = _out216; - _1517_recOwned = _out217; - _1518_recIdents = _out218; - readIdents = _1518_recIdents; - Std.Wrappers._IOption _source72 = _1515_nativeFromType; + (this).GenExpr(_1456_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out216, out _out217, out _out218); + _1466_recursiveGen = _out216; + _1467_recOwned = _out217; + _1468_recIdents = _out218; + readIdents = _1468_recIdents; + Std.Wrappers._IOption _source72 = _1465_nativeFromType; bool unmatched72 = true; if (unmatched72) { if (_source72.is_Some) { - RAST._IType _1519_v = _source72.dtor_value; + RAST._IType _1469_v = _source72.dtor_value; unmatched72 = false; - RAST._IType _1520_toTpeRust; + RAST._IType _1470_toTpeRust; RAST._IType _out219; - _out219 = (this).GenType(_1508_toTpe, false, false); - _1520_toTpeRust = _out219; - r = (((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("Into"))).ApplyType(Dafny.Sequence.FromElements(_1520_toTpeRust))).MSel(Dafny.Sequence.UnicodeFromString("into"))).Apply(Dafny.Sequence.FromElements(_1516_recursiveGen)); + _out219 = (this).GenType(_1458_toTpe, false, false); + _1470_toTpeRust = _out219; + r = (((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("Into"))).ApplyType(Dafny.Sequence.FromElements(_1470_toTpeRust))).MSel(Dafny.Sequence.UnicodeFromString("into"))).Apply(Dafny.Sequence.FromElements(_1466_recursiveGen)); RAST._IExpr _out220; DCOMP._IOwnership _out221; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out220, out _out221); @@ -3236,43 +3218,43 @@ public void GenExprConvertFromNewtype(DAST._IExpression e, Std.Wrappers._IOption } if (unmatched72) { unmatched72 = false; - if (_1513_erase) { - r = _1516_recursiveGen; + if (_1463_erase) { + r = _1466_recursiveGen; } else { - r = (_1516_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")); + r = (_1466_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")); } RAST._IExpr _out222; DCOMP._IOwnership _out223; - DCOMP.COMP.FromOwnership(r, _1517_recOwned, expectedOwnership, out _out222, out _out223); + DCOMP.COMP.FromOwnership(r, _1467_recOwned, expectedOwnership, out _out222, out _out223); r = _out222; resultingOwnership = _out223; } } else { - if ((_1515_nativeFromType).is_Some) { - if (object.Equals(_1508_toTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { - RAST._IExpr _1521_recursiveGen; - DCOMP._IOwnership _1522_recOwned; - Dafny.ISet> _1523_recIdents; + if ((_1465_nativeFromType).is_Some) { + if (object.Equals(_1458_toTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { + RAST._IExpr _1471_recursiveGen; + DCOMP._IOwnership _1472_recOwned; + Dafny.ISet> _1473_recIdents; RAST._IExpr _out224; DCOMP._IOwnership _out225; Dafny.ISet> _out226; - (this).GenExpr(_1506_expr, selfIdent, env, expectedOwnership, out _out224, out _out225, out _out226); - _1521_recursiveGen = _out224; - _1522_recOwned = _out225; - _1523_recIdents = _out226; + (this).GenExpr(_1456_expr, selfIdent, env, expectedOwnership, out _out224, out _out225, out _out226); + _1471_recursiveGen = _out224; + _1472_recOwned = _out225; + _1473_recIdents = _out226; RAST._IExpr _out227; DCOMP._IOwnership _out228; - DCOMP.COMP.FromOwnership(((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(RAST.Expr.create_TypeAscription(_1521_recursiveGen, (this).DafnyCharUnderlying)), _1522_recOwned, expectedOwnership, out _out227, out _out228); + DCOMP.COMP.FromOwnership(((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(RAST.Expr.create_TypeAscription(_1471_recursiveGen, (this).DafnyCharUnderlying)), _1472_recOwned, expectedOwnership, out _out227, out _out228); r = _out227; resultingOwnership = _out228; - readIdents = _1523_recIdents; + readIdents = _1473_recIdents; return ; } } RAST._IExpr _out229; DCOMP._IOwnership _out230; Dafny.ISet> _out231; - (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1506_expr, _1507_fromTpe, _1511_b), _1511_b, _1508_toTpe), selfIdent, env, expectedOwnership, out _out229, out _out230, out _out231); + (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1456_expr, _1457_fromTpe, _1461_b), _1461_b, _1458_toTpe), selfIdent, env, expectedOwnership, out _out229, out _out230, out _out231); r = _out229; resultingOwnership = _out230; readIdents = _out231; @@ -3284,37 +3266,37 @@ public void GenExprConvertNotImplemented(DAST._IExpression e, Std.Wrappers._IOpt resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; DAST._IExpression _let_tmp_rhs61 = e; - DAST._IExpression _1524_expr = _let_tmp_rhs61.dtor_value; - DAST._IType _1525_fromTpe = _let_tmp_rhs61.dtor_from; - DAST._IType _1526_toTpe = _let_tmp_rhs61.dtor_typ; - RAST._IType _1527_fromTpeGen; + DAST._IExpression _1474_expr = _let_tmp_rhs61.dtor_value; + DAST._IType _1475_fromTpe = _let_tmp_rhs61.dtor_from; + DAST._IType _1476_toTpe = _let_tmp_rhs61.dtor_typ; + RAST._IType _1477_fromTpeGen; RAST._IType _out232; - _out232 = (this).GenType(_1525_fromTpe, true, false); - _1527_fromTpeGen = _out232; - RAST._IType _1528_toTpeGen; + _out232 = (this).GenType(_1475_fromTpe, true, false); + _1477_fromTpeGen = _out232; + RAST._IType _1478_toTpeGen; RAST._IType _out233; - _out233 = (this).GenType(_1526_toTpe, true, false); - _1528_toTpeGen = _out233; - RAST._IExpr _1529_recursiveGen; - DCOMP._IOwnership _1530_recOwned; - Dafny.ISet> _1531_recIdents; + _out233 = (this).GenType(_1476_toTpe, true, false); + _1478_toTpeGen = _out233; + RAST._IExpr _1479_recursiveGen; + DCOMP._IOwnership _1480_recOwned; + Dafny.ISet> _1481_recIdents; RAST._IExpr _out234; DCOMP._IOwnership _out235; Dafny.ISet> _out236; - (this).GenExpr(_1524_expr, selfIdent, env, expectedOwnership, out _out234, out _out235, out _out236); - _1529_recursiveGen = _out234; - _1530_recOwned = _out235; - _1531_recIdents = _out236; - Dafny.ISequence _1532_msg; - _1532_msg = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("/* Coercion from "), (_1527_fromTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" to ")), (_1528_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" not yet implemented */")); - (this).error = Std.Wrappers.Option>.create_Some(_1532_msg); - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat((_1529_recursiveGen)._ToString(DCOMP.__default.IND), _1532_msg)); + (this).GenExpr(_1474_expr, selfIdent, env, expectedOwnership, out _out234, out _out235, out _out236); + _1479_recursiveGen = _out234; + _1480_recOwned = _out235; + _1481_recIdents = _out236; + Dafny.ISequence _1482_msg; + _1482_msg = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("/* Coercion from "), (_1477_fromTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" to ")), (_1478_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" not yet implemented */")); + (this).error = Std.Wrappers.Option>.create_Some(_1482_msg); + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat((_1479_recursiveGen)._ToString(DCOMP.__default.IND), _1482_msg)); RAST._IExpr _out237; DCOMP._IOwnership _out238; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out237, out _out238); r = _out237; resultingOwnership = _out238; - readIdents = _1531_recIdents; + readIdents = _1481_recIdents; } public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) { @@ -3322,35 +3304,33 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption>.Empty; DAST._IExpression _let_tmp_rhs62 = e; - DAST._IExpression _1533_expr = _let_tmp_rhs62.dtor_value; - DAST._IType _1534_fromTpe = _let_tmp_rhs62.dtor_from; - DAST._IType _1535_toTpe = _let_tmp_rhs62.dtor_typ; - if (object.Equals(_1534_fromTpe, _1535_toTpe)) { - RAST._IExpr _1536_recursiveGen; - DCOMP._IOwnership _1537_recOwned; - Dafny.ISet> _1538_recIdents; + DAST._IExpression _1483_expr = _let_tmp_rhs62.dtor_value; + DAST._IType _1484_fromTpe = _let_tmp_rhs62.dtor_from; + DAST._IType _1485_toTpe = _let_tmp_rhs62.dtor_typ; + if (object.Equals(_1484_fromTpe, _1485_toTpe)) { + RAST._IExpr _1486_recursiveGen; + DCOMP._IOwnership _1487_recOwned; + Dafny.ISet> _1488_recIdents; RAST._IExpr _out239; DCOMP._IOwnership _out240; Dafny.ISet> _out241; - (this).GenExpr(_1533_expr, selfIdent, env, expectedOwnership, out _out239, out _out240, out _out241); - _1536_recursiveGen = _out239; - _1537_recOwned = _out240; - _1538_recIdents = _out241; - r = _1536_recursiveGen; + (this).GenExpr(_1483_expr, selfIdent, env, expectedOwnership, out _out239, out _out240, out _out241); + _1486_recursiveGen = _out239; + _1487_recOwned = _out240; + _1488_recIdents = _out241; + r = _1486_recursiveGen; RAST._IExpr _out242; DCOMP._IOwnership _out243; - DCOMP.COMP.FromOwnership(r, _1537_recOwned, expectedOwnership, out _out242, out _out243); + DCOMP.COMP.FromOwnership(r, _1487_recOwned, expectedOwnership, out _out242, out _out243); r = _out242; resultingOwnership = _out243; - readIdents = _1538_recIdents; + readIdents = _1488_recIdents; } else { - _System._ITuple2 _source73 = _System.Tuple2.create(_1534_fromTpe, _1535_toTpe); + _System._ITuple2 _source73 = _System.Tuple2.create(_1484_fromTpe, _1485_toTpe); bool unmatched73 = true; if (unmatched73) { DAST._IType _01 = _source73.dtor__0; if (_01.is_Nullable) { - DAST._IType _1539___v84 = _01.dtor_Nullable_a0; - DAST._IType _1540___v85 = _source73.dtor__1; unmatched73 = false; { RAST._IExpr _out244; @@ -3364,10 +3344,8 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1544___v89 = _12.dtor_Path_a0; - Dafny.ISequence _1545___v90 = _12.dtor_typeArgs; DAST._IResolvedType resolved1 = _12.dtor_resolved; if (resolved1.is_Newtype) { - DAST._IType _1546_b = resolved1.dtor_baseType; - DAST._INewtypeRange _1547_range = resolved1.dtor_range; - bool _1548_erase = resolved1.dtor_erase; - Dafny.ISequence _1549_attributes = resolved1.dtor_attributes; + DAST._IType _1489_b = resolved1.dtor_baseType; + DAST._INewtypeRange _1490_range = resolved1.dtor_range; + bool _1491_erase = resolved1.dtor_erase; + Dafny.ISequence _1492_attributes = resolved1.dtor_attributes; unmatched73 = false; { RAST._IExpr _out250; @@ -3408,15 +3383,12 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1550___v91 = _02.dtor_Path_a0; - Dafny.ISequence _1551___v92 = _02.dtor_typeArgs; DAST._IResolvedType resolved2 = _02.dtor_resolved; if (resolved2.is_Newtype) { - DAST._IType _1552_b = resolved2.dtor_baseType; - DAST._INewtypeRange _1553_range = resolved2.dtor_range; - bool _1554_erase = resolved2.dtor_erase; - Dafny.ISequence _1555_attributes = resolved2.dtor_attributes; - DAST._IType _1556___v93 = _source73.dtor__1; + DAST._IType _1493_b = resolved2.dtor_baseType; + DAST._INewtypeRange _1494_range = resolved2.dtor_range; + bool _1495_erase = resolved2.dtor_erase; + Dafny.ISequence _1496_attributes = resolved2.dtor_attributes; unmatched73 = false; { RAST._IExpr _out253; @@ -3441,23 +3413,23 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1559_recIdents; + RAST._IExpr _1497_recursiveGen; + DCOMP._IOwnership _1498___v94; + Dafny.ISet> _1499_recIdents; RAST._IExpr _out256; DCOMP._IOwnership _out257; Dafny.ISet> _out258; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out256, out _out257, out _out258); - _1557_recursiveGen = _out256; - _1558___v94 = _out257; - _1559_recIdents = _out258; - r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::from_integer("), (_1557_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out256, out _out257, out _out258); + _1497_recursiveGen = _out256; + _1498___v94 = _out257; + _1499_recIdents = _out258; + r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::from_integer("), (_1497_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))); RAST._IExpr _out259; DCOMP._IOwnership _out260; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out259, out _out260); r = _out259; resultingOwnership = _out260; - readIdents = _1559_recIdents; + readIdents = _1499_recIdents; } } } @@ -3475,23 +3447,23 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1562_recIdents; + RAST._IExpr _1500_recursiveGen; + DCOMP._IOwnership _1501___v95; + Dafny.ISet> _1502_recIdents; RAST._IExpr _out261; DCOMP._IOwnership _out262; Dafny.ISet> _out263; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out261, out _out262, out _out263); - _1560_recursiveGen = _out261; - _1561___v95 = _out262; - _1562_recIdents = _out263; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::dafny_rational_to_int("), (_1560_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out261, out _out262, out _out263); + _1500_recursiveGen = _out261; + _1501___v95 = _out262; + _1502_recIdents = _out263; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::dafny_rational_to_int("), (_1500_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); RAST._IExpr _out264; DCOMP._IOwnership _out265; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out264, out _out265); r = _out264; resultingOwnership = _out265; - readIdents = _1562_recIdents; + readIdents = _1502_recIdents; } } } @@ -3505,30 +3477,29 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption _1563___v96 = _15.dtor_Passthrough_a0; unmatched73 = false; { - RAST._IType _1564_rhsType; + RAST._IType _1503_rhsType; RAST._IType _out266; - _out266 = (this).GenType(_1535_toTpe, true, false); - _1564_rhsType = _out266; - RAST._IExpr _1565_recursiveGen; - DCOMP._IOwnership _1566___v97; - Dafny.ISet> _1567_recIdents; + _out266 = (this).GenType(_1485_toTpe, true, false); + _1503_rhsType = _out266; + RAST._IExpr _1504_recursiveGen; + DCOMP._IOwnership _1505___v97; + Dafny.ISet> _1506_recIdents; RAST._IExpr _out267; DCOMP._IOwnership _out268; Dafny.ISet> _out269; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out267, out _out268, out _out269); - _1565_recursiveGen = _out267; - _1566___v97 = _out268; - _1567_recIdents = _out269; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1564_rhsType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_1565_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()"))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out267, out _out268, out _out269); + _1504_recursiveGen = _out267; + _1505___v97 = _out268; + _1506_recIdents = _out269; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1503_rhsType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_1504_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()"))); RAST._IExpr _out270; DCOMP._IOwnership _out271; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out270, out _out271); r = _out270; resultingOwnership = _out271; - readIdents = _1567_recIdents; + readIdents = _1506_recIdents; } } } @@ -3537,34 +3508,33 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption _1568___v98 = _06.dtor_Passthrough_a0; DAST._IType _16 = _source73.dtor__1; if (_16.is_Primitive) { DAST._IPrimitive _h87 = _16.dtor_Primitive_a0; if (_h87.is_Int) { unmatched73 = false; { - RAST._IType _1569_rhsType; + RAST._IType _1507_rhsType; RAST._IType _out272; - _out272 = (this).GenType(_1534_fromTpe, true, false); - _1569_rhsType = _out272; - RAST._IExpr _1570_recursiveGen; - DCOMP._IOwnership _1571___v99; - Dafny.ISet> _1572_recIdents; + _out272 = (this).GenType(_1484_fromTpe, true, false); + _1507_rhsType = _out272; + RAST._IExpr _1508_recursiveGen; + DCOMP._IOwnership _1509___v99; + Dafny.ISet> _1510_recIdents; RAST._IExpr _out273; DCOMP._IOwnership _out274; Dafny.ISet> _out275; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out273, out _out274, out _out275); - _1570_recursiveGen = _out273; - _1571___v99 = _out274; - _1572_recIdents = _out275; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyInt{data: ::dafny_runtime::BigInt::from("), (_1570_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")}"))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out273, out _out274, out _out275); + _1508_recursiveGen = _out273; + _1509___v99 = _out274; + _1510_recIdents = _out275; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyInt{data: ::dafny_runtime::BigInt::from("), (_1508_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")}"))); RAST._IExpr _out276; DCOMP._IOwnership _out277; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out276, out _out277); r = _out276; resultingOwnership = _out277; - readIdents = _1572_recIdents; + readIdents = _1510_recIdents; } } } @@ -3581,27 +3551,27 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1576_recIdents; + _out278 = (this).GenType(_1485_toTpe, true, false); + _1511_rhsType = _out278; + RAST._IExpr _1512_recursiveGen; + DCOMP._IOwnership _1513___v100; + Dafny.ISet> _1514_recIdents; RAST._IExpr _out279; DCOMP._IOwnership _out280; Dafny.ISet> _out281; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out279, out _out280, out _out281); - _1574_recursiveGen = _out279; - _1575___v100 = _out280; - _1576_recIdents = _out281; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("char::from_u32(::from("), (_1574_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()).unwrap()"))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out279, out _out280, out _out281); + _1512_recursiveGen = _out279; + _1513___v100 = _out280; + _1514_recIdents = _out281; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("char::from_u32(::from("), (_1512_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()).unwrap()"))); RAST._IExpr _out282; DCOMP._IOwnership _out283; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out282, out _out283); r = _out282; resultingOwnership = _out283; - readIdents = _1576_recIdents; + readIdents = _1514_recIdents; } } } @@ -3619,27 +3589,27 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption> _1580_recIdents; + _out284 = (this).GenType(_1484_fromTpe, true, false); + _1515_rhsType = _out284; + RAST._IExpr _1516_recursiveGen; + DCOMP._IOwnership _1517___v101; + Dafny.ISet> _1518_recIdents; RAST._IExpr _out285; DCOMP._IOwnership _out286; Dafny.ISet> _out287; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out285, out _out286, out _out287); - _1578_recursiveGen = _out285; - _1579___v101 = _out286; - _1580_recIdents = _out287; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1((_1578_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0"))); + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out285, out _out286, out _out287); + _1516_recursiveGen = _out285; + _1517___v101 = _out286; + _1518_recIdents = _out287; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1((_1516_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0"))); RAST._IExpr _out288; DCOMP._IOwnership _out289; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out288, out _out289); r = _out288; resultingOwnership = _out289; - readIdents = _1580_recIdents; + readIdents = _1518_recIdents; } } } @@ -3649,39 +3619,36 @@ public void GenExprConvert(DAST._IExpression e, Std.Wrappers._IOption _1581___v102 = _09.dtor_Passthrough_a0; DAST._IType _19 = _source73.dtor__1; if (_19.is_Passthrough) { - Dafny.ISequence _1582___v103 = _19.dtor_Passthrough_a0; unmatched73 = false; { - RAST._IExpr _1583_recursiveGen; - DCOMP._IOwnership _1584___v104; - Dafny.ISet> _1585_recIdents; + RAST._IExpr _1519_recursiveGen; + DCOMP._IOwnership _1520___v104; + Dafny.ISet> _1521_recIdents; RAST._IExpr _out290; DCOMP._IOwnership _out291; Dafny.ISet> _out292; - (this).GenExpr(_1533_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out290, out _out291, out _out292); - _1583_recursiveGen = _out290; - _1584___v104 = _out291; - _1585_recIdents = _out292; - RAST._IType _1586_toTpeGen; + (this).GenExpr(_1483_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out290, out _out291, out _out292); + _1519_recursiveGen = _out290; + _1520___v104 = _out291; + _1521_recIdents = _out292; + RAST._IType _1522_toTpeGen; RAST._IType _out293; - _out293 = (this).GenType(_1535_toTpe, true, false); - _1586_toTpeGen = _out293; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(("), (_1583_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(") as ")), (_1586_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + _out293 = (this).GenType(_1485_toTpe, true, false); + _1522_toTpeGen = _out293; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(("), (_1519_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(") as ")), (_1522_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); RAST._IExpr _out294; DCOMP._IOwnership _out295; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out294, out _out295); r = _out294; resultingOwnership = _out295; - readIdents = _1585_recIdents; + readIdents = _1521_recIdents; } } } } if (unmatched73) { - _System._ITuple2 _1587___v105 = _source73; unmatched73 = false; { RAST._IExpr _out296; @@ -3702,29 +3669,29 @@ public void GenIdent(Dafny.ISequence rName, Std.Wrappers._IOption>.Empty; r = RAST.Expr.create_Identifier(rName); - Std.Wrappers._IOption _1588_tpe; - _1588_tpe = (env).GetType(rName); - bool _1589_currentlyBorrowed; - _1589_currentlyBorrowed = (env).IsBorrowed(rName); - bool _1590_noNeedOfClone; - _1590_noNeedOfClone = (env).CanReadWithoutClone(rName); + Std.Wrappers._IOption _1523_tpe; + _1523_tpe = (env).GetType(rName); + bool _1524_currentlyBorrowed; + _1524_currentlyBorrowed = (env).IsBorrowed(rName); + bool _1525_noNeedOfClone; + _1525_noNeedOfClone = (env).CanReadWithoutClone(rName); if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipAutoBorrowed())) { resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipBorrowedMut())) { r = RAST.__default.BorrowMut(r); resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowedMut(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwned())) { - if (!(_1590_noNeedOfClone)) { + if (!(_1525_noNeedOfClone)) { r = RAST.__default.Clone(r); } resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwnedBox())) { - if (!(_1590_noNeedOfClone)) { + if (!(_1525_noNeedOfClone)) { r = RAST.__default.Clone(r); } r = RAST.__default.BoxNew(r); resultingOwnership = DCOMP.Ownership.create_OwnershipOwnedBox(); - } else if (_1589_currentlyBorrowed) { + } else if (_1524_currentlyBorrowed) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else { r = RAST.__default.Borrow(r); @@ -3742,7 +3709,6 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1592_name = _source74.dtor_Ident_a0; + Dafny.ISequence _1526_name = _source74.dtor_Ident_a0; unmatched74 = false; { RAST._IExpr _out302; DCOMP._IOwnership _out303; Dafny.ISet> _out304; - (this).GenIdent(DCOMP.__default.escapeName(_1592_name), selfIdent, env, expectedOwnership, out _out302, out _out303, out _out304); + (this).GenIdent(DCOMP.__default.escapeName(_1526_name), selfIdent, env, expectedOwnership, out _out302, out _out303, out _out304); r = _out302; resultingOwnership = _out303; readIdents = _out304; @@ -3770,11 +3736,11 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1593_path = _source74.dtor_Companion_a0; + Dafny.ISequence> _1527_path = _source74.dtor_Companion_a0; unmatched74 = false; { RAST._IExpr _out305; - _out305 = DCOMP.COMP.GenPathExpr(_1593_path); + _out305 = DCOMP.COMP.GenPathExpr(_1527_path); r = _out305; if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipBorrowed())) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); @@ -3794,14 +3760,14 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1595_typExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as std::default::Default>::default()"))); + _out308 = (this).GenType(_1528_typ, false, false); + _1529_typExpr = _out308; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1529_typExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as std::default::Default>::default()"))); RAST._IExpr _out309; DCOMP._IOwnership _out310; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out309, out _out310); @@ -3814,28 +3780,28 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1596_values = _source74.dtor_Tuple_a0; + Dafny.ISequence _1530_values = _source74.dtor_Tuple_a0; unmatched74 = false; { - Dafny.ISequence _1597_exprs; - _1597_exprs = Dafny.Sequence.FromElements(); + Dafny.ISequence _1531_exprs; + _1531_exprs = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _hi30 = new BigInteger((_1596_values).Count); - for (BigInteger _1598_i = BigInteger.Zero; _1598_i < _hi30; _1598_i++) { - RAST._IExpr _1599_recursiveGen; - DCOMP._IOwnership _1600___v107; - Dafny.ISet> _1601_recIdents; + BigInteger _hi30 = new BigInteger((_1530_values).Count); + for (BigInteger _1532_i = BigInteger.Zero; _1532_i < _hi30; _1532_i++) { + RAST._IExpr _1533_recursiveGen; + DCOMP._IOwnership _1534___v107; + Dafny.ISet> _1535_recIdents; RAST._IExpr _out311; DCOMP._IOwnership _out312; Dafny.ISet> _out313; - (this).GenExpr((_1596_values).Select(_1598_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out311, out _out312, out _out313); - _1599_recursiveGen = _out311; - _1600___v107 = _out312; - _1601_recIdents = _out313; - _1597_exprs = Dafny.Sequence.Concat(_1597_exprs, Dafny.Sequence.FromElements(_1599_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1601_recIdents); + (this).GenExpr((_1530_values).Select(_1532_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out311, out _out312, out _out313); + _1533_recursiveGen = _out311; + _1534___v107 = _out312; + _1535_recIdents = _out313; + _1531_exprs = Dafny.Sequence.Concat(_1531_exprs, Dafny.Sequence.FromElements(_1533_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _1535_recIdents); } - r = (((new BigInteger((_1596_values).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) ? (RAST.Expr.create_Tuple(_1597_exprs)) : (RAST.__default.SystemTuple(_1597_exprs))); + r = (((new BigInteger((_1530_values).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) ? (RAST.Expr.create_Tuple(_1531_exprs)) : (RAST.__default.SystemTuple(_1531_exprs))); RAST._IExpr _out314; DCOMP._IOwnership _out315; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out314, out _out315); @@ -3847,47 +3813,47 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1602_path = _source74.dtor_path; - Dafny.ISequence _1603_typeArgs = _source74.dtor_typeArgs; - Dafny.ISequence _1604_args = _source74.dtor_args; + Dafny.ISequence> _1536_path = _source74.dtor_path; + Dafny.ISequence _1537_typeArgs = _source74.dtor_typeArgs; + Dafny.ISequence _1538_args = _source74.dtor_args; unmatched74 = false; { RAST._IExpr _out316; - _out316 = DCOMP.COMP.GenPathExpr(_1602_path); + _out316 = DCOMP.COMP.GenPathExpr(_1536_path); r = _out316; - if ((new BigInteger((_1603_typeArgs).Count)).Sign == 1) { - Dafny.ISequence _1605_typeExprs; - _1605_typeExprs = Dafny.Sequence.FromElements(); - BigInteger _hi31 = new BigInteger((_1603_typeArgs).Count); - for (BigInteger _1606_i = BigInteger.Zero; _1606_i < _hi31; _1606_i++) { - RAST._IType _1607_typeExpr; + if ((new BigInteger((_1537_typeArgs).Count)).Sign == 1) { + Dafny.ISequence _1539_typeExprs; + _1539_typeExprs = Dafny.Sequence.FromElements(); + BigInteger _hi31 = new BigInteger((_1537_typeArgs).Count); + for (BigInteger _1540_i = BigInteger.Zero; _1540_i < _hi31; _1540_i++) { + RAST._IType _1541_typeExpr; RAST._IType _out317; - _out317 = (this).GenType((_1603_typeArgs).Select(_1606_i), false, false); - _1607_typeExpr = _out317; - _1605_typeExprs = Dafny.Sequence.Concat(_1605_typeExprs, Dafny.Sequence.FromElements(_1607_typeExpr)); + _out317 = (this).GenType((_1537_typeArgs).Select(_1540_i), false, false); + _1541_typeExpr = _out317; + _1539_typeExprs = Dafny.Sequence.Concat(_1539_typeExprs, Dafny.Sequence.FromElements(_1541_typeExpr)); } - r = (r).ApplyType(_1605_typeExprs); + r = (r).ApplyType(_1539_typeExprs); } r = (r).MSel(Dafny.Sequence.UnicodeFromString("new")); readIdents = Dafny.Set>.FromElements(); - Dafny.ISequence _1608_arguments; - _1608_arguments = Dafny.Sequence.FromElements(); - BigInteger _hi32 = new BigInteger((_1604_args).Count); - for (BigInteger _1609_i = BigInteger.Zero; _1609_i < _hi32; _1609_i++) { - RAST._IExpr _1610_recursiveGen; - DCOMP._IOwnership _1611___v108; - Dafny.ISet> _1612_recIdents; + Dafny.ISequence _1542_arguments; + _1542_arguments = Dafny.Sequence.FromElements(); + BigInteger _hi32 = new BigInteger((_1538_args).Count); + for (BigInteger _1543_i = BigInteger.Zero; _1543_i < _hi32; _1543_i++) { + RAST._IExpr _1544_recursiveGen; + DCOMP._IOwnership _1545___v108; + Dafny.ISet> _1546_recIdents; RAST._IExpr _out318; DCOMP._IOwnership _out319; Dafny.ISet> _out320; - (this).GenExpr((_1604_args).Select(_1609_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out318, out _out319, out _out320); - _1610_recursiveGen = _out318; - _1611___v108 = _out319; - _1612_recIdents = _out320; - _1608_arguments = Dafny.Sequence.Concat(_1608_arguments, Dafny.Sequence.FromElements(_1610_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1612_recIdents); + (this).GenExpr((_1538_args).Select(_1543_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out318, out _out319, out _out320); + _1544_recursiveGen = _out318; + _1545___v108 = _out319; + _1546_recIdents = _out320; + _1542_arguments = Dafny.Sequence.Concat(_1542_arguments, Dafny.Sequence.FromElements(_1544_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _1546_recIdents); } - r = (r).Apply(_1608_arguments); + r = (r).Apply(_1542_arguments); RAST._IExpr _out321; DCOMP._IOwnership _out322; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out321, out _out322); @@ -3899,35 +3865,35 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1613_dims = _source74.dtor_dims; - DAST._IType _1614_typ = _source74.dtor_typ; + Dafny.ISequence _1547_dims = _source74.dtor_dims; + DAST._IType _1548_typ = _source74.dtor_typ; unmatched74 = false; { - BigInteger _1615_i; - _1615_i = (new BigInteger((_1613_dims).Count)) - (BigInteger.One); - RAST._IType _1616_genTyp; + BigInteger _1549_i; + _1549_i = (new BigInteger((_1547_dims).Count)) - (BigInteger.One); + RAST._IType _1550_genTyp; RAST._IType _out323; - _out323 = (this).GenType(_1614_typ, false, false); - _1616_genTyp = _out323; - Dafny.ISequence _1617_s; - _1617_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1616_genTyp)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::std::default::Default>::default()")); + _out323 = (this).GenType(_1548_typ, false, false); + _1550_genTyp = _out323; + Dafny.ISequence _1551_s; + _1551_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1550_genTyp)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::std::default::Default>::default()")); readIdents = Dafny.Set>.FromElements(); - while ((_1615_i).Sign != -1) { - RAST._IExpr _1618_recursiveGen; - DCOMP._IOwnership _1619___v109; - Dafny.ISet> _1620_recIdents; + while ((_1549_i).Sign != -1) { + RAST._IExpr _1552_recursiveGen; + DCOMP._IOwnership _1553___v109; + Dafny.ISet> _1554_recIdents; RAST._IExpr _out324; DCOMP._IOwnership _out325; Dafny.ISet> _out326; - (this).GenExpr((_1613_dims).Select(_1615_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out324, out _out325, out _out326); - _1618_recursiveGen = _out324; - _1619___v109 = _out325; - _1620_recIdents = _out326; - _1617_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new(::std::cell::RefCell::new(vec!["), _1617_s), Dafny.Sequence.UnicodeFromString("; ::from(")), (_1618_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()]))")); - readIdents = Dafny.Set>.Union(readIdents, _1620_recIdents); - _1615_i = (_1615_i) - (BigInteger.One); + (this).GenExpr((_1547_dims).Select(_1549_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out324, out _out325, out _out326); + _1552_recursiveGen = _out324; + _1553___v109 = _out325; + _1554_recIdents = _out326; + _1551_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new(::std::cell::RefCell::new(vec!["), _1551_s), Dafny.Sequence.UnicodeFromString("; ::from(")), (_1552_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()]))")); + readIdents = Dafny.Set>.Union(readIdents, _1554_recIdents); + _1549_i = (_1549_i) - (BigInteger.One); } - r = RAST.Expr.create_RawExpr(_1617_s); + r = RAST.Expr.create_RawExpr(_1551_s); RAST._IExpr _out327; DCOMP._IOwnership _out328; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out327, out _out328); @@ -3939,85 +3905,85 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1622_typeArgs = _source74.dtor_typeArgs; - Dafny.ISequence _1623_variant = _source74.dtor_variant; - bool _1624_isCo = _source74.dtor_isCo; - Dafny.ISequence<_System._ITuple2, DAST._IExpression>> _1625_values = _source74.dtor_contents; + DAST._IDatatypeType _1555_datatypeType = _source74.dtor_datatypeType; + Dafny.ISequence _1556_typeArgs = _source74.dtor_typeArgs; + Dafny.ISequence _1557_variant = _source74.dtor_variant; + bool _1558_isCo = _source74.dtor_isCo; + Dafny.ISequence<_System._ITuple2, DAST._IExpression>> _1559_values = _source74.dtor_contents; unmatched74 = false; { RAST._IExpr _out329; - _out329 = DCOMP.COMP.GenPathExpr((_1621_datatypeType).dtor_path); + _out329 = DCOMP.COMP.GenPathExpr((_1555_datatypeType).dtor_path); r = _out329; - Dafny.ISequence _1626_genTypeArgs; - _1626_genTypeArgs = Dafny.Sequence.FromElements(); - BigInteger _hi33 = new BigInteger((_1622_typeArgs).Count); - for (BigInteger _1627_i = BigInteger.Zero; _1627_i < _hi33; _1627_i++) { - RAST._IType _1628_typeExpr; + Dafny.ISequence _1560_genTypeArgs; + _1560_genTypeArgs = Dafny.Sequence.FromElements(); + BigInteger _hi33 = new BigInteger((_1556_typeArgs).Count); + for (BigInteger _1561_i = BigInteger.Zero; _1561_i < _hi33; _1561_i++) { + RAST._IType _1562_typeExpr; RAST._IType _out330; - _out330 = (this).GenType((_1622_typeArgs).Select(_1627_i), false, false); - _1628_typeExpr = _out330; - _1626_genTypeArgs = Dafny.Sequence.Concat(_1626_genTypeArgs, Dafny.Sequence.FromElements(_1628_typeExpr)); + _out330 = (this).GenType((_1556_typeArgs).Select(_1561_i), false, false); + _1562_typeExpr = _out330; + _1560_genTypeArgs = Dafny.Sequence.Concat(_1560_genTypeArgs, Dafny.Sequence.FromElements(_1562_typeExpr)); } - if ((new BigInteger((_1622_typeArgs).Count)).Sign == 1) { - r = (r).ApplyType(_1626_genTypeArgs); + if ((new BigInteger((_1556_typeArgs).Count)).Sign == 1) { + r = (r).ApplyType(_1560_genTypeArgs); } - r = (r).MSel(DCOMP.__default.escapeName(_1623_variant)); + r = (r).MSel(DCOMP.__default.escapeName(_1557_variant)); readIdents = Dafny.Set>.FromElements(); - Dafny.ISequence _1629_assignments; - _1629_assignments = Dafny.Sequence.FromElements(); - BigInteger _hi34 = new BigInteger((_1625_values).Count); - for (BigInteger _1630_i = BigInteger.Zero; _1630_i < _hi34; _1630_i++) { - _System._ITuple2, DAST._IExpression> _let_tmp_rhs63 = (_1625_values).Select(_1630_i); - Dafny.ISequence _1631_name = _let_tmp_rhs63.dtor__0; - DAST._IExpression _1632_value = _let_tmp_rhs63.dtor__1; - if (_1624_isCo) { - RAST._IExpr _1633_recursiveGen; - DCOMP._IOwnership _1634___v110; - Dafny.ISet> _1635_recIdents; + Dafny.ISequence _1563_assignments; + _1563_assignments = Dafny.Sequence.FromElements(); + BigInteger _hi34 = new BigInteger((_1559_values).Count); + for (BigInteger _1564_i = BigInteger.Zero; _1564_i < _hi34; _1564_i++) { + _System._ITuple2, DAST._IExpression> _let_tmp_rhs63 = (_1559_values).Select(_1564_i); + Dafny.ISequence _1565_name = _let_tmp_rhs63.dtor__0; + DAST._IExpression _1566_value = _let_tmp_rhs63.dtor__1; + if (_1558_isCo) { + RAST._IExpr _1567_recursiveGen; + DCOMP._IOwnership _1568___v110; + Dafny.ISet> _1569_recIdents; RAST._IExpr _out331; DCOMP._IOwnership _out332; Dafny.ISet> _out333; - (this).GenExpr(_1632_value, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out331, out _out332, out _out333); - _1633_recursiveGen = _out331; - _1634___v110 = _out332; - _1635_recIdents = _out333; - readIdents = Dafny.Set>.Union(readIdents, _1635_recIdents); - Dafny.ISequence _1636_allReadCloned; - _1636_allReadCloned = Dafny.Sequence.UnicodeFromString(""); - while (!(_1635_recIdents).Equals(Dafny.Set>.FromElements())) { - Dafny.ISequence _1637_next; - foreach (Dafny.ISequence _assign_such_that_2 in (_1635_recIdents).Elements) { - _1637_next = (Dafny.ISequence)_assign_such_that_2; - if ((_1635_recIdents).Contains(_1637_next)) { + (this).GenExpr(_1566_value, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out331, out _out332, out _out333); + _1567_recursiveGen = _out331; + _1568___v110 = _out332; + _1569_recIdents = _out333; + readIdents = Dafny.Set>.Union(readIdents, _1569_recIdents); + Dafny.ISequence _1570_allReadCloned; + _1570_allReadCloned = Dafny.Sequence.UnicodeFromString(""); + while (!(_1569_recIdents).Equals(Dafny.Set>.FromElements())) { + Dafny.ISequence _1571_next; + foreach (Dafny.ISequence _assign_such_that_2 in (_1569_recIdents).Elements) { + _1571_next = (Dafny.ISequence)_assign_such_that_2; + if ((_1569_recIdents).Contains(_1571_next)) { goto after__ASSIGN_SUCH_THAT_2; } } throw new System.Exception("assign-such-that search produced no value (line 3271)"); after__ASSIGN_SUCH_THAT_2: ; - _1636_allReadCloned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1636_allReadCloned, Dafny.Sequence.UnicodeFromString("let ")), _1637_next), Dafny.Sequence.UnicodeFromString(" = ")), _1637_next), Dafny.Sequence.UnicodeFromString(".clone();\n")); - _1635_recIdents = Dafny.Set>.Difference(_1635_recIdents, Dafny.Set>.FromElements(_1637_next)); + _1570_allReadCloned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1570_allReadCloned, Dafny.Sequence.UnicodeFromString("let ")), _1571_next), Dafny.Sequence.UnicodeFromString(" = ")), _1571_next), Dafny.Sequence.UnicodeFromString(".clone();\n")); + _1569_recIdents = Dafny.Set>.Difference(_1569_recIdents, Dafny.Set>.FromElements(_1571_next)); } - Dafny.ISequence _1638_wasAssigned; - _1638_wasAssigned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::LazyFieldWrapper(::dafny_runtime::Lazy::new(::std::boxed::Box::new({\n"), _1636_allReadCloned), Dafny.Sequence.UnicodeFromString("move || (")), (_1633_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")})))")); - _1629_assignments = Dafny.Sequence.Concat(_1629_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1631_name, RAST.Expr.create_RawExpr(_1638_wasAssigned)))); + Dafny.ISequence _1572_wasAssigned; + _1572_wasAssigned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::LazyFieldWrapper(::dafny_runtime::Lazy::new(::std::boxed::Box::new({\n"), _1570_allReadCloned), Dafny.Sequence.UnicodeFromString("move || (")), (_1567_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")})))")); + _1563_assignments = Dafny.Sequence.Concat(_1563_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1565_name, RAST.Expr.create_RawExpr(_1572_wasAssigned)))); } else { - RAST._IExpr _1639_recursiveGen; - DCOMP._IOwnership _1640___v111; - Dafny.ISet> _1641_recIdents; + RAST._IExpr _1573_recursiveGen; + DCOMP._IOwnership _1574___v111; + Dafny.ISet> _1575_recIdents; RAST._IExpr _out334; DCOMP._IOwnership _out335; Dafny.ISet> _out336; - (this).GenExpr(_1632_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out334, out _out335, out _out336); - _1639_recursiveGen = _out334; - _1640___v111 = _out335; - _1641_recIdents = _out336; - _1629_assignments = Dafny.Sequence.Concat(_1629_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1631_name, _1639_recursiveGen))); - readIdents = Dafny.Set>.Union(readIdents, _1641_recIdents); + (this).GenExpr(_1566_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out334, out _out335, out _out336); + _1573_recursiveGen = _out334; + _1574___v111 = _out335; + _1575_recIdents = _out336; + _1563_assignments = Dafny.Sequence.Concat(_1563_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1565_name, _1573_recursiveGen))); + readIdents = Dafny.Set>.Union(readIdents, _1575_recIdents); } } - r = RAST.Expr.create_StructBuild(r, _1629_assignments); - if ((this).IsRcWrapped((_1621_datatypeType).dtor_attributes)) { + r = RAST.Expr.create_StructBuild(r, _1563_assignments); + if ((this).IsRcWrapped((_1555_datatypeType).dtor_attributes)) { r = RAST.__default.RcNew(r); } RAST._IExpr _out337; @@ -4031,9 +3997,6 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1649_recIdents; + RAST._IExpr _1578_recursiveGen; + DCOMP._IOwnership _1579___v115; + Dafny.ISet> _1580_recIdents; RAST._IExpr _out342; DCOMP._IOwnership _out343; Dafny.ISet> _out344; - (this).GenExpr(_1646_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out342, out _out343, out _out344); - _1647_recursiveGen = _out342; - _1648___v115 = _out343; - _1649_recIdents = _out344; - RAST._IExpr _1650_lengthGen; - DCOMP._IOwnership _1651___v116; - Dafny.ISet> _1652_lengthIdents; + (this).GenExpr(_1577_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out342, out _out343, out _out344); + _1578_recursiveGen = _out342; + _1579___v115 = _out343; + _1580_recIdents = _out344; + RAST._IExpr _1581_lengthGen; + DCOMP._IOwnership _1582___v116; + Dafny.ISet> _1583_lengthIdents; RAST._IExpr _out345; DCOMP._IOwnership _out346; Dafny.ISet> _out347; - (this).GenExpr(_1645_length, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out345, out _out346, out _out347); - _1650_lengthGen = _out345; - _1651___v116 = _out346; - _1652_lengthIdents = _out347; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\nlet _initializer = "), (_1647_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n::dafny_runtime::integer_range(::dafny_runtime::Zero::zero(), ")), (_1650_lengthGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").map(|i| _initializer(&i)).collect::<::dafny_runtime::Sequence<_>>()\n}"))); - readIdents = Dafny.Set>.Union(_1649_recIdents, _1652_lengthIdents); + (this).GenExpr(_1576_length, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out345, out _out346, out _out347); + _1581_lengthGen = _out345; + _1582___v116 = _out346; + _1583_lengthIdents = _out347; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\nlet _initializer = "), (_1578_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n::dafny_runtime::integer_range(::dafny_runtime::Zero::zero(), ")), (_1581_lengthGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").map(|i| _initializer(&i)).collect::<::dafny_runtime::Sequence<_>>()\n}"))); + readIdents = Dafny.Set>.Union(_1580_recIdents, _1583_lengthIdents); RAST._IExpr _out348; DCOMP._IOwnership _out349; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out348, out _out349); @@ -4085,37 +4048,37 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1653_exprs = _source74.dtor_elements; - DAST._IType _1654_typ = _source74.dtor_typ; + Dafny.ISequence _1584_exprs = _source74.dtor_elements; + DAST._IType _1585_typ = _source74.dtor_typ; unmatched74 = false; { readIdents = Dafny.Set>.FromElements(); - RAST._IType _1655_genTpe; + RAST._IType _1586_genTpe; RAST._IType _out350; - _out350 = (this).GenType(_1654_typ, false, false); - _1655_genTpe = _out350; - BigInteger _1656_i; - _1656_i = BigInteger.Zero; - Dafny.ISequence _1657_args; - _1657_args = Dafny.Sequence.FromElements(); - while ((_1656_i) < (new BigInteger((_1653_exprs).Count))) { - RAST._IExpr _1658_recursiveGen; - DCOMP._IOwnership _1659___v117; - Dafny.ISet> _1660_recIdents; + _out350 = (this).GenType(_1585_typ, false, false); + _1586_genTpe = _out350; + BigInteger _1587_i; + _1587_i = BigInteger.Zero; + Dafny.ISequence _1588_args; + _1588_args = Dafny.Sequence.FromElements(); + while ((_1587_i) < (new BigInteger((_1584_exprs).Count))) { + RAST._IExpr _1589_recursiveGen; + DCOMP._IOwnership _1590___v117; + Dafny.ISet> _1591_recIdents; RAST._IExpr _out351; DCOMP._IOwnership _out352; Dafny.ISet> _out353; - (this).GenExpr((_1653_exprs).Select(_1656_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out351, out _out352, out _out353); - _1658_recursiveGen = _out351; - _1659___v117 = _out352; - _1660_recIdents = _out353; - readIdents = Dafny.Set>.Union(readIdents, _1660_recIdents); - _1657_args = Dafny.Sequence.Concat(_1657_args, Dafny.Sequence.FromElements(_1658_recursiveGen)); - _1656_i = (_1656_i) + (BigInteger.One); + (this).GenExpr((_1584_exprs).Select(_1587_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out351, out _out352, out _out353); + _1589_recursiveGen = _out351; + _1590___v117 = _out352; + _1591_recIdents = _out353; + readIdents = Dafny.Set>.Union(readIdents, _1591_recIdents); + _1588_args = Dafny.Sequence.Concat(_1588_args, Dafny.Sequence.FromElements(_1589_recursiveGen)); + _1587_i = (_1587_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("seq!"))).Apply(_1657_args); - if ((new BigInteger((_1657_args).Count)).Sign == 0) { - r = RAST.Expr.create_TypeAscription(r, ((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence"))).Apply1(_1655_genTpe)); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("seq!"))).Apply(_1588_args); + if ((new BigInteger((_1588_args).Count)).Sign == 0) { + r = RAST.Expr.create_TypeAscription(r, ((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence"))).Apply1(_1586_genTpe)); } RAST._IExpr _out354; DCOMP._IOwnership _out355; @@ -4128,30 +4091,30 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1661_exprs = _source74.dtor_elements; + Dafny.ISequence _1592_exprs = _source74.dtor_elements; unmatched74 = false; { - Dafny.ISequence _1662_generatedValues; - _1662_generatedValues = Dafny.Sequence.FromElements(); + Dafny.ISequence _1593_generatedValues; + _1593_generatedValues = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1663_i; - _1663_i = BigInteger.Zero; - while ((_1663_i) < (new BigInteger((_1661_exprs).Count))) { - RAST._IExpr _1664_recursiveGen; - DCOMP._IOwnership _1665___v118; - Dafny.ISet> _1666_recIdents; + BigInteger _1594_i; + _1594_i = BigInteger.Zero; + while ((_1594_i) < (new BigInteger((_1592_exprs).Count))) { + RAST._IExpr _1595_recursiveGen; + DCOMP._IOwnership _1596___v118; + Dafny.ISet> _1597_recIdents; RAST._IExpr _out356; DCOMP._IOwnership _out357; Dafny.ISet> _out358; - (this).GenExpr((_1661_exprs).Select(_1663_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out356, out _out357, out _out358); - _1664_recursiveGen = _out356; - _1665___v118 = _out357; - _1666_recIdents = _out358; - _1662_generatedValues = Dafny.Sequence.Concat(_1662_generatedValues, Dafny.Sequence.FromElements(_1664_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1666_recIdents); - _1663_i = (_1663_i) + (BigInteger.One); + (this).GenExpr((_1592_exprs).Select(_1594_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out356, out _out357, out _out358); + _1595_recursiveGen = _out356; + _1596___v118 = _out357; + _1597_recIdents = _out358; + _1593_generatedValues = Dafny.Sequence.Concat(_1593_generatedValues, Dafny.Sequence.FromElements(_1595_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _1597_recIdents); + _1594_i = (_1594_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("set!"))).Apply(_1662_generatedValues); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("set!"))).Apply(_1593_generatedValues); RAST._IExpr _out359; DCOMP._IOwnership _out360; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out359, out _out360); @@ -4163,30 +4126,30 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1667_exprs = _source74.dtor_elements; + Dafny.ISequence _1598_exprs = _source74.dtor_elements; unmatched74 = false; { - Dafny.ISequence _1668_generatedValues; - _1668_generatedValues = Dafny.Sequence.FromElements(); + Dafny.ISequence _1599_generatedValues; + _1599_generatedValues = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1669_i; - _1669_i = BigInteger.Zero; - while ((_1669_i) < (new BigInteger((_1667_exprs).Count))) { - RAST._IExpr _1670_recursiveGen; - DCOMP._IOwnership _1671___v119; - Dafny.ISet> _1672_recIdents; + BigInteger _1600_i; + _1600_i = BigInteger.Zero; + while ((_1600_i) < (new BigInteger((_1598_exprs).Count))) { + RAST._IExpr _1601_recursiveGen; + DCOMP._IOwnership _1602___v119; + Dafny.ISet> _1603_recIdents; RAST._IExpr _out361; DCOMP._IOwnership _out362; Dafny.ISet> _out363; - (this).GenExpr((_1667_exprs).Select(_1669_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out361, out _out362, out _out363); - _1670_recursiveGen = _out361; - _1671___v119 = _out362; - _1672_recIdents = _out363; - _1668_generatedValues = Dafny.Sequence.Concat(_1668_generatedValues, Dafny.Sequence.FromElements(_1670_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1672_recIdents); - _1669_i = (_1669_i) + (BigInteger.One); + (this).GenExpr((_1598_exprs).Select(_1600_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out361, out _out362, out _out363); + _1601_recursiveGen = _out361; + _1602___v119 = _out362; + _1603_recIdents = _out363; + _1599_generatedValues = Dafny.Sequence.Concat(_1599_generatedValues, Dafny.Sequence.FromElements(_1601_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _1603_recIdents); + _1600_i = (_1600_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("multiset!"))).Apply(_1668_generatedValues); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("multiset!"))).Apply(_1599_generatedValues); RAST._IExpr _out364; DCOMP._IOwnership _out365; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out364, out _out365); @@ -4198,21 +4161,21 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1676_recIdents; + RAST._IExpr _1605_recursiveGen; + DCOMP._IOwnership _1606___v120; + Dafny.ISet> _1607_recIdents; RAST._IExpr _out366; DCOMP._IOwnership _out367; Dafny.ISet> _out368; - (this).GenExpr(_1673_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out366, out _out367, out _out368); - _1674_recursiveGen = _out366; - _1675___v120 = _out367; - _1676_recIdents = _out368; - r = ((_1674_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("as_dafny_multiset"))).Apply(Dafny.Sequence.FromElements()); - readIdents = _1676_recIdents; + (this).GenExpr(_1604_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out366, out _out367, out _out368); + _1605_recursiveGen = _out366; + _1606___v120 = _out367; + _1607_recIdents = _out368; + r = ((_1605_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("as_dafny_multiset"))).Apply(Dafny.Sequence.FromElements()); + readIdents = _1607_recIdents; RAST._IExpr _out369; DCOMP._IOwnership _out370; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out369, out _out370); @@ -4224,51 +4187,51 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1677_mapElems = _source74.dtor_mapElems; + Dafny.ISequence<_System._ITuple2> _1608_mapElems = _source74.dtor_mapElems; unmatched74 = false; { - Dafny.ISequence<_System._ITuple2> _1678_generatedValues; - _1678_generatedValues = Dafny.Sequence<_System._ITuple2>.FromElements(); + Dafny.ISequence<_System._ITuple2> _1609_generatedValues; + _1609_generatedValues = Dafny.Sequence<_System._ITuple2>.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1679_i; - _1679_i = BigInteger.Zero; - while ((_1679_i) < (new BigInteger((_1677_mapElems).Count))) { - RAST._IExpr _1680_recursiveGenKey; - DCOMP._IOwnership _1681___v121; - Dafny.ISet> _1682_recIdentsKey; + BigInteger _1610_i; + _1610_i = BigInteger.Zero; + while ((_1610_i) < (new BigInteger((_1608_mapElems).Count))) { + RAST._IExpr _1611_recursiveGenKey; + DCOMP._IOwnership _1612___v121; + Dafny.ISet> _1613_recIdentsKey; RAST._IExpr _out371; DCOMP._IOwnership _out372; Dafny.ISet> _out373; - (this).GenExpr(((_1677_mapElems).Select(_1679_i)).dtor__0, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out371, out _out372, out _out373); - _1680_recursiveGenKey = _out371; - _1681___v121 = _out372; - _1682_recIdentsKey = _out373; - RAST._IExpr _1683_recursiveGenValue; - DCOMP._IOwnership _1684___v122; - Dafny.ISet> _1685_recIdentsValue; + (this).GenExpr(((_1608_mapElems).Select(_1610_i)).dtor__0, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out371, out _out372, out _out373); + _1611_recursiveGenKey = _out371; + _1612___v121 = _out372; + _1613_recIdentsKey = _out373; + RAST._IExpr _1614_recursiveGenValue; + DCOMP._IOwnership _1615___v122; + Dafny.ISet> _1616_recIdentsValue; RAST._IExpr _out374; DCOMP._IOwnership _out375; Dafny.ISet> _out376; - (this).GenExpr(((_1677_mapElems).Select(_1679_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out374, out _out375, out _out376); - _1683_recursiveGenValue = _out374; - _1684___v122 = _out375; - _1685_recIdentsValue = _out376; - _1678_generatedValues = Dafny.Sequence<_System._ITuple2>.Concat(_1678_generatedValues, Dafny.Sequence<_System._ITuple2>.FromElements(_System.Tuple2.create(_1680_recursiveGenKey, _1683_recursiveGenValue))); - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(readIdents, _1682_recIdentsKey), _1685_recIdentsValue); - _1679_i = (_1679_i) + (BigInteger.One); + (this).GenExpr(((_1608_mapElems).Select(_1610_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out374, out _out375, out _out376); + _1614_recursiveGenValue = _out374; + _1615___v122 = _out375; + _1616_recIdentsValue = _out376; + _1609_generatedValues = Dafny.Sequence<_System._ITuple2>.Concat(_1609_generatedValues, Dafny.Sequence<_System._ITuple2>.FromElements(_System.Tuple2.create(_1611_recursiveGenKey, _1614_recursiveGenValue))); + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(readIdents, _1613_recIdentsKey), _1616_recIdentsValue); + _1610_i = (_1610_i) + (BigInteger.One); } - _1679_i = BigInteger.Zero; - Dafny.ISequence _1686_arguments; - _1686_arguments = Dafny.Sequence.FromElements(); - while ((_1679_i) < (new BigInteger((_1678_generatedValues).Count))) { - RAST._IExpr _1687_genKey; - _1687_genKey = ((_1678_generatedValues).Select(_1679_i)).dtor__0; - RAST._IExpr _1688_genValue; - _1688_genValue = ((_1678_generatedValues).Select(_1679_i)).dtor__1; - _1686_arguments = Dafny.Sequence.Concat(_1686_arguments, Dafny.Sequence.FromElements(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=>"), _1687_genKey, _1688_genValue, DAST.Format.BinaryOpFormat.create_NoFormat()))); - _1679_i = (_1679_i) + (BigInteger.One); + _1610_i = BigInteger.Zero; + Dafny.ISequence _1617_arguments; + _1617_arguments = Dafny.Sequence.FromElements(); + while ((_1610_i) < (new BigInteger((_1609_generatedValues).Count))) { + RAST._IExpr _1618_genKey; + _1618_genKey = ((_1609_generatedValues).Select(_1610_i)).dtor__0; + RAST._IExpr _1619_genValue; + _1619_genValue = ((_1609_generatedValues).Select(_1610_i)).dtor__1; + _1617_arguments = Dafny.Sequence.Concat(_1617_arguments, Dafny.Sequence.FromElements(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=>"), _1618_genKey, _1619_genValue, DAST.Format.BinaryOpFormat.create_NoFormat()))); + _1610_i = (_1610_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("map!"))).Apply(_1686_arguments); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("map!"))).Apply(_1617_arguments); RAST._IExpr _out377; DCOMP._IOwnership _out378; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out377, out _out378); @@ -4280,96 +4243,96 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1694_exprIdents; + RAST._IExpr _1623_exprR; + DCOMP._IOwnership _1624___v123; + Dafny.ISet> _1625_exprIdents; RAST._IExpr _out379; DCOMP._IOwnership _out380; Dafny.ISet> _out381; - (this).GenExpr(_1689_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out379, out _out380, out _out381); - _1692_exprR = _out379; - _1693___v123 = _out380; - _1694_exprIdents = _out381; - RAST._IExpr _1695_indexR; - DCOMP._IOwnership _1696_indexOwnership; - Dafny.ISet> _1697_indexIdents; + (this).GenExpr(_1620_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out379, out _out380, out _out381); + _1623_exprR = _out379; + _1624___v123 = _out380; + _1625_exprIdents = _out381; + RAST._IExpr _1626_indexR; + DCOMP._IOwnership _1627_indexOwnership; + Dafny.ISet> _1628_indexIdents; RAST._IExpr _out382; DCOMP._IOwnership _out383; Dafny.ISet> _out384; - (this).GenExpr(_1690_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out382, out _out383, out _out384); - _1695_indexR = _out382; - _1696_indexOwnership = _out383; - _1697_indexIdents = _out384; - RAST._IExpr _1698_valueR; - DCOMP._IOwnership _1699_valueOwnership; - Dafny.ISet> _1700_valueIdents; + (this).GenExpr(_1621_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out382, out _out383, out _out384); + _1626_indexR = _out382; + _1627_indexOwnership = _out383; + _1628_indexIdents = _out384; + RAST._IExpr _1629_valueR; + DCOMP._IOwnership _1630_valueOwnership; + Dafny.ISet> _1631_valueIdents; RAST._IExpr _out385; DCOMP._IOwnership _out386; Dafny.ISet> _out387; - (this).GenExpr(_1691_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out385, out _out386, out _out387); - _1698_valueR = _out385; - _1699_valueOwnership = _out386; - _1700_valueIdents = _out387; - r = ((_1692_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1695_indexR, _1698_valueR)); + (this).GenExpr(_1622_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out385, out _out386, out _out387); + _1629_valueR = _out385; + _1630_valueOwnership = _out386; + _1631_valueIdents = _out387; + r = ((_1623_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1626_indexR, _1629_valueR)); RAST._IExpr _out388; DCOMP._IOwnership _out389; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out388, out _out389); r = _out388; resultingOwnership = _out389; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1694_exprIdents, _1697_indexIdents), _1700_valueIdents); + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1625_exprIdents, _1628_indexIdents), _1631_valueIdents); return ; } } } if (unmatched74) { if (_source74.is_MapUpdate) { - DAST._IExpression _1701_expr = _source74.dtor_expr; - DAST._IExpression _1702_index = _source74.dtor_indexExpr; - DAST._IExpression _1703_value = _source74.dtor_value; + DAST._IExpression _1632_expr = _source74.dtor_expr; + DAST._IExpression _1633_index = _source74.dtor_indexExpr; + DAST._IExpression _1634_value = _source74.dtor_value; unmatched74 = false; { - RAST._IExpr _1704_exprR; - DCOMP._IOwnership _1705___v124; - Dafny.ISet> _1706_exprIdents; + RAST._IExpr _1635_exprR; + DCOMP._IOwnership _1636___v124; + Dafny.ISet> _1637_exprIdents; RAST._IExpr _out390; DCOMP._IOwnership _out391; Dafny.ISet> _out392; - (this).GenExpr(_1701_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out390, out _out391, out _out392); - _1704_exprR = _out390; - _1705___v124 = _out391; - _1706_exprIdents = _out392; - RAST._IExpr _1707_indexR; - DCOMP._IOwnership _1708_indexOwnership; - Dafny.ISet> _1709_indexIdents; + (this).GenExpr(_1632_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out390, out _out391, out _out392); + _1635_exprR = _out390; + _1636___v124 = _out391; + _1637_exprIdents = _out392; + RAST._IExpr _1638_indexR; + DCOMP._IOwnership _1639_indexOwnership; + Dafny.ISet> _1640_indexIdents; RAST._IExpr _out393; DCOMP._IOwnership _out394; Dafny.ISet> _out395; - (this).GenExpr(_1702_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out393, out _out394, out _out395); - _1707_indexR = _out393; - _1708_indexOwnership = _out394; - _1709_indexIdents = _out395; - RAST._IExpr _1710_valueR; - DCOMP._IOwnership _1711_valueOwnership; - Dafny.ISet> _1712_valueIdents; + (this).GenExpr(_1633_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out393, out _out394, out _out395); + _1638_indexR = _out393; + _1639_indexOwnership = _out394; + _1640_indexIdents = _out395; + RAST._IExpr _1641_valueR; + DCOMP._IOwnership _1642_valueOwnership; + Dafny.ISet> _1643_valueIdents; RAST._IExpr _out396; DCOMP._IOwnership _out397; Dafny.ISet> _out398; - (this).GenExpr(_1703_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out396, out _out397, out _out398); - _1710_valueR = _out396; - _1711_valueOwnership = _out397; - _1712_valueIdents = _out398; - r = ((_1704_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1707_indexR, _1710_valueR)); + (this).GenExpr(_1634_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out396, out _out397, out _out398); + _1641_valueR = _out396; + _1642_valueOwnership = _out397; + _1643_valueIdents = _out398; + r = ((_1635_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1638_indexR, _1641_valueR)); RAST._IExpr _out399; DCOMP._IOwnership _out400; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out399, out _out400); r = _out399; resultingOwnership = _out400; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1706_exprIdents, _1709_indexIdents), _1712_valueIdents); + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1637_exprIdents, _1640_indexIdents), _1643_valueIdents); return ; } } @@ -4382,10 +4345,10 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1713_id = _source75.dtor_value; + Dafny.ISequence _1644_id = _source75.dtor_value; unmatched75 = false; { - r = RAST.Expr.create_Identifier(_1713_id); + r = RAST.Expr.create_Identifier(_1644_id); if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwned())) { r = RAST.__default.Clone(r); resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); @@ -4393,17 +4356,17 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption.UnicodeFromString("self"))) { + if (!(_1644_id).Equals(Dafny.Sequence.UnicodeFromString("self"))) { r = RAST.__default.Borrow(r); } resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else { - if (!(_1713_id).Equals(Dafny.Sequence.UnicodeFromString("self"))) { + if (!(_1644_id).Equals(Dafny.Sequence.UnicodeFromString("self"))) { r = RAST.__default.BorrowMut(r); } resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowedMut(); } - readIdents = Dafny.Set>.FromElements(_1713_id); + readIdents = Dafny.Set>.FromElements(_1644_id); } } } @@ -4425,64 +4388,64 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1719_recIdentsCond; + RAST._IExpr _1648_cond; + DCOMP._IOwnership _1649___v125; + Dafny.ISet> _1650_recIdentsCond; RAST._IExpr _out403; DCOMP._IOwnership _out404; Dafny.ISet> _out405; - (this).GenExpr(_1714_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out403, out _out404, out _out405); - _1717_cond = _out403; - _1718___v125 = _out404; - _1719_recIdentsCond = _out405; - Dafny.ISequence _1720_condString; - _1720_condString = (_1717_cond)._ToString(DCOMP.__default.IND); - RAST._IExpr _1721___v126; - DCOMP._IOwnership _1722_tHasToBeOwned; - Dafny.ISet> _1723___v127; + (this).GenExpr(_1645_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out403, out _out404, out _out405); + _1648_cond = _out403; + _1649___v125 = _out404; + _1650_recIdentsCond = _out405; + Dafny.ISequence _1651_condString; + _1651_condString = (_1648_cond)._ToString(DCOMP.__default.IND); + RAST._IExpr _1652___v126; + DCOMP._IOwnership _1653_tHasToBeOwned; + Dafny.ISet> _1654___v127; RAST._IExpr _out406; DCOMP._IOwnership _out407; Dafny.ISet> _out408; - (this).GenExpr(_1715_t, selfIdent, env, expectedOwnership, out _out406, out _out407, out _out408); - _1721___v126 = _out406; - _1722_tHasToBeOwned = _out407; - _1723___v127 = _out408; - RAST._IExpr _1724_fExpr; - DCOMP._IOwnership _1725_fOwned; - Dafny.ISet> _1726_recIdentsF; + (this).GenExpr(_1646_t, selfIdent, env, expectedOwnership, out _out406, out _out407, out _out408); + _1652___v126 = _out406; + _1653_tHasToBeOwned = _out407; + _1654___v127 = _out408; + RAST._IExpr _1655_fExpr; + DCOMP._IOwnership _1656_fOwned; + Dafny.ISet> _1657_recIdentsF; RAST._IExpr _out409; DCOMP._IOwnership _out410; Dafny.ISet> _out411; - (this).GenExpr(_1716_f, selfIdent, env, _1722_tHasToBeOwned, out _out409, out _out410, out _out411); - _1724_fExpr = _out409; - _1725_fOwned = _out410; - _1726_recIdentsF = _out411; - Dafny.ISequence _1727_fString; - _1727_fString = (_1724_fExpr)._ToString(DCOMP.__default.IND); - RAST._IExpr _1728_tExpr; - DCOMP._IOwnership _1729___v128; - Dafny.ISet> _1730_recIdentsT; + (this).GenExpr(_1647_f, selfIdent, env, _1653_tHasToBeOwned, out _out409, out _out410, out _out411); + _1655_fExpr = _out409; + _1656_fOwned = _out410; + _1657_recIdentsF = _out411; + Dafny.ISequence _1658_fString; + _1658_fString = (_1655_fExpr)._ToString(DCOMP.__default.IND); + RAST._IExpr _1659_tExpr; + DCOMP._IOwnership _1660___v128; + Dafny.ISet> _1661_recIdentsT; RAST._IExpr _out412; DCOMP._IOwnership _out413; Dafny.ISet> _out414; - (this).GenExpr(_1715_t, selfIdent, env, _1725_fOwned, out _out412, out _out413, out _out414); - _1728_tExpr = _out412; - _1729___v128 = _out413; - _1730_recIdentsT = _out414; - Dafny.ISequence _1731_tString; - _1731_tString = (_1728_tExpr)._ToString(DCOMP.__default.IND); - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(if "), _1720_condString), Dafny.Sequence.UnicodeFromString(" {\n")), _1731_tString), Dafny.Sequence.UnicodeFromString("\n} else {\n")), _1727_fString), Dafny.Sequence.UnicodeFromString("\n})"))); + (this).GenExpr(_1646_t, selfIdent, env, _1656_fOwned, out _out412, out _out413, out _out414); + _1659_tExpr = _out412; + _1660___v128 = _out413; + _1661_recIdentsT = _out414; + Dafny.ISequence _1662_tString; + _1662_tString = (_1659_tExpr)._ToString(DCOMP.__default.IND); + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(if "), _1651_condString), Dafny.Sequence.UnicodeFromString(" {\n")), _1662_tString), Dafny.Sequence.UnicodeFromString("\n} else {\n")), _1658_fString), Dafny.Sequence.UnicodeFromString("\n})"))); RAST._IExpr _out415; DCOMP._IOwnership _out416; - DCOMP.COMP.FromOwnership(r, _1725_fOwned, expectedOwnership, out _out415, out _out416); + DCOMP.COMP.FromOwnership(r, _1656_fOwned, expectedOwnership, out _out415, out _out416); r = _out415; resultingOwnership = _out416; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1719_recIdentsCond, _1730_recIdentsT), _1726_recIdentsF); + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1650_recIdentsCond, _1661_recIdentsT), _1657_recIdentsF); return ; } } @@ -4491,27 +4454,27 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1736_recIdents; + RAST._IExpr _1665_recursiveGen; + DCOMP._IOwnership _1666___v129; + Dafny.ISet> _1667_recIdents; RAST._IExpr _out417; DCOMP._IOwnership _out418; Dafny.ISet> _out419; - (this).GenExpr(_1732_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out417, out _out418, out _out419); - _1734_recursiveGen = _out417; - _1735___v129 = _out418; - _1736_recIdents = _out419; - r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1734_recursiveGen, _1733_format); + (this).GenExpr(_1663_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out417, out _out418, out _out419); + _1665_recursiveGen = _out417; + _1666___v129 = _out418; + _1667_recIdents = _out419; + r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1665_recursiveGen, _1664_format); RAST._IExpr _out420; DCOMP._IOwnership _out421; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out420, out _out421); r = _out420; resultingOwnership = _out421; - readIdents = _1736_recIdents; + readIdents = _1667_recIdents; return ; } } @@ -4521,27 +4484,27 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1741_recIdents; + RAST._IExpr _1670_recursiveGen; + DCOMP._IOwnership _1671___v130; + Dafny.ISet> _1672_recIdents; RAST._IExpr _out422; DCOMP._IOwnership _out423; Dafny.ISet> _out424; - (this).GenExpr(_1737_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out422, out _out423, out _out424); - _1739_recursiveGen = _out422; - _1740___v130 = _out423; - _1741_recIdents = _out424; - r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("~"), _1739_recursiveGen, _1738_format); + (this).GenExpr(_1668_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out422, out _out423, out _out424); + _1670_recursiveGen = _out422; + _1671___v130 = _out423; + _1672_recIdents = _out424; + r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("~"), _1670_recursiveGen, _1669_format); RAST._IExpr _out425; DCOMP._IOwnership _out426; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out425, out _out426); r = _out425; resultingOwnership = _out426; - readIdents = _1741_recIdents; + readIdents = _1672_recIdents; return ; } } @@ -4551,27 +4514,27 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1746_recIdents; + RAST._IExpr _1675_recursiveGen; + DCOMP._IOwnership _1676_recOwned; + Dafny.ISet> _1677_recIdents; RAST._IExpr _out427; DCOMP._IOwnership _out428; Dafny.ISet> _out429; - (this).GenExpr(_1742_e, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out427, out _out428, out _out429); - _1744_recursiveGen = _out427; - _1745_recOwned = _out428; - _1746_recIdents = _out429; - r = ((_1744_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("cardinality"))).Apply(Dafny.Sequence.FromElements()); + (this).GenExpr(_1673_e, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out427, out _out428, out _out429); + _1675_recursiveGen = _out427; + _1676_recOwned = _out428; + _1677_recIdents = _out429; + r = ((_1675_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("cardinality"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out430; DCOMP._IOwnership _out431; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out430, out _out431); r = _out430; resultingOwnership = _out431; - readIdents = _1746_recIdents; + readIdents = _1677_recIdents; return ; } } @@ -4579,10 +4542,6 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1755_recIdents; + RAST._IExpr _1680_recursiveGen; + DCOMP._IOwnership _1681___v135; + Dafny.ISet> _1682_recIdents; RAST._IExpr _out435; DCOMP._IOwnership _out436; Dafny.ISet> _out437; - (this).GenExpr(_1751_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out435, out _out436, out _out437); - _1753_recursiveGen = _out435; - _1754___v135 = _out436; - _1755_recIdents = _out437; - if ((_1752_dim).Sign == 0) { - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigInt::from(("), (_1753_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").borrow().len())"))); + (this).GenExpr(_1678_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out435, out _out436, out _out437); + _1680_recursiveGen = _out435; + _1681___v135 = _out436; + _1682_recIdents = _out437; + if ((_1679_dim).Sign == 0) { + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigInt::from(("), (_1680_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").borrow().len())"))); } else { - Dafny.ISequence _1756_s; - _1756_s = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigInt::from(m.borrow().len())")))._ToString(DCOMP.__default.IND); - BigInteger _1757_i; - _1757_i = BigInteger.One; - while ((_1757_i) < (_1752_dim)) { - _1756_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("m.borrow().get(0).map(|m| "), _1756_s), Dafny.Sequence.UnicodeFromString(").unwrap_or(::dafny_runtime::BigInt::from(0))")); - _1757_i = (_1757_i) + (BigInteger.One); + Dafny.ISequence _1683_s; + _1683_s = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigInt::from(m.borrow().len())")))._ToString(DCOMP.__default.IND); + BigInteger _1684_i; + _1684_i = BigInteger.One; + while ((_1684_i) < (_1679_dim)) { + _1683_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("m.borrow().get(0).map(|m| "), _1683_s), Dafny.Sequence.UnicodeFromString(").unwrap_or(::dafny_runtime::BigInt::from(0))")); + _1684_i = (_1684_i) + (BigInteger.One); } - r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), (_1753_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")), Dafny.Sequence.UnicodeFromString(".borrow().get(0).map(|m| ")), _1756_s), Dafny.Sequence.UnicodeFromString(").unwrap_or(::dafny_runtime::BigInt::from(0))")))); + r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), (_1680_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")), Dafny.Sequence.UnicodeFromString(".borrow().get(0).map(|m| ")), _1683_s), Dafny.Sequence.UnicodeFromString(").unwrap_or(::dafny_runtime::BigInt::from(0))")))); } RAST._IExpr _out438; DCOMP._IOwnership _out439; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out438, out _out439); r = _out438; resultingOwnership = _out439; - readIdents = _1755_recIdents; + readIdents = _1682_recIdents; return ; } } } if (unmatched74) { if (_source74.is_MapKeys) { - DAST._IExpression _1758_expr = _source74.dtor_expr; + DAST._IExpression _1685_expr = _source74.dtor_expr; unmatched74 = false; { - RAST._IExpr _1759_recursiveGen; - DCOMP._IOwnership _1760___v136; - Dafny.ISet> _1761_recIdents; + RAST._IExpr _1686_recursiveGen; + DCOMP._IOwnership _1687___v136; + Dafny.ISet> _1688_recIdents; RAST._IExpr _out440; DCOMP._IOwnership _out441; Dafny.ISet> _out442; - (this).GenExpr(_1758_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out440, out _out441, out _out442); - _1759_recursiveGen = _out440; - _1760___v136 = _out441; - _1761_recIdents = _out442; - readIdents = _1761_recIdents; - r = ((_1759_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements()); + (this).GenExpr(_1685_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out440, out _out441, out _out442); + _1686_recursiveGen = _out440; + _1687___v136 = _out441; + _1688_recIdents = _out442; + readIdents = _1688_recIdents; + r = ((_1686_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out443; DCOMP._IOwnership _out444; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out443, out _out444); @@ -4660,21 +4619,21 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1765_recIdents; + RAST._IExpr _1690_recursiveGen; + DCOMP._IOwnership _1691___v137; + Dafny.ISet> _1692_recIdents; RAST._IExpr _out445; DCOMP._IOwnership _out446; Dafny.ISet> _out447; - (this).GenExpr(_1762_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out445, out _out446, out _out447); - _1763_recursiveGen = _out445; - _1764___v137 = _out446; - _1765_recIdents = _out447; - readIdents = _1765_recIdents; - r = ((_1763_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("values"))).Apply(Dafny.Sequence.FromElements()); + (this).GenExpr(_1689_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out445, out _out446, out _out447); + _1690_recursiveGen = _out445; + _1691___v137 = _out446; + _1692_recIdents = _out447; + readIdents = _1692_recIdents; + r = ((_1690_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("values"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out448; DCOMP._IOwnership _out449; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out448, out _out449); @@ -4686,67 +4645,67 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1767_field = _source74.dtor_field; - bool _1768_isDatatype = _source74.dtor_onDatatype; - bool _1769_isStatic = _source74.dtor_isStatic; - BigInteger _1770_arity = _source74.dtor_arity; + DAST._IExpression _1693_on = _source74.dtor_expr; + Dafny.ISequence _1694_field = _source74.dtor_field; + bool _1695_isDatatype = _source74.dtor_onDatatype; + bool _1696_isStatic = _source74.dtor_isStatic; + BigInteger _1697_arity = _source74.dtor_arity; unmatched74 = false; { - RAST._IExpr _1771_onExpr; - DCOMP._IOwnership _1772_onOwned; - Dafny.ISet> _1773_recIdents; + RAST._IExpr _1698_onExpr; + DCOMP._IOwnership _1699_onOwned; + Dafny.ISet> _1700_recIdents; RAST._IExpr _out450; DCOMP._IOwnership _out451; Dafny.ISet> _out452; - (this).GenExpr(_1766_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out450, out _out451, out _out452); - _1771_onExpr = _out450; - _1772_onOwned = _out451; - _1773_recIdents = _out452; - Dafny.ISequence _1774_s = Dafny.Sequence.Empty; - Dafny.ISequence _1775_onString; - _1775_onString = (_1771_onExpr)._ToString(DCOMP.__default.IND); - if (_1769_isStatic) { - _1774_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1775_onString, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName(_1767_field)); + (this).GenExpr(_1693_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out450, out _out451, out _out452); + _1698_onExpr = _out450; + _1699_onOwned = _out451; + _1700_recIdents = _out452; + Dafny.ISequence _1701_s = Dafny.Sequence.Empty; + Dafny.ISequence _1702_onString; + _1702_onString = (_1698_onExpr)._ToString(DCOMP.__default.IND); + if (_1696_isStatic) { + _1701_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1702_onString, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName(_1694_field)); } else { - _1774_s = Dafny.Sequence.UnicodeFromString("{\n"); - _1774_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1774_s, Dafny.Sequence.UnicodeFromString("let callTarget = (")), _1775_onString), ((object.Equals(_1772_onOwned, DCOMP.Ownership.create_OwnershipOwned())) ? (Dafny.Sequence.UnicodeFromString(")")) : (Dafny.Sequence.UnicodeFromString(").clone()")))), Dafny.Sequence.UnicodeFromString(";\n")); - Dafny.ISequence _1776_args; - _1776_args = Dafny.Sequence.UnicodeFromString(""); - BigInteger _1777_i; - _1777_i = BigInteger.Zero; - while ((_1777_i) < (_1770_arity)) { - if ((_1777_i).Sign == 1) { - _1776_args = Dafny.Sequence.Concat(_1776_args, Dafny.Sequence.UnicodeFromString(", ")); + _1701_s = Dafny.Sequence.UnicodeFromString("{\n"); + _1701_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1701_s, Dafny.Sequence.UnicodeFromString("let callTarget = (")), _1702_onString), ((object.Equals(_1699_onOwned, DCOMP.Ownership.create_OwnershipOwned())) ? (Dafny.Sequence.UnicodeFromString(")")) : (Dafny.Sequence.UnicodeFromString(").clone()")))), Dafny.Sequence.UnicodeFromString(";\n")); + Dafny.ISequence _1703_args; + _1703_args = Dafny.Sequence.UnicodeFromString(""); + BigInteger _1704_i; + _1704_i = BigInteger.Zero; + while ((_1704_i) < (_1697_arity)) { + if ((_1704_i).Sign == 1) { + _1703_args = Dafny.Sequence.Concat(_1703_args, Dafny.Sequence.UnicodeFromString(", ")); } - _1776_args = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1776_args, Dafny.Sequence.UnicodeFromString("arg")), Std.Strings.__default.OfNat(_1777_i)); - _1777_i = (_1777_i) + (BigInteger.One); + _1703_args = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1703_args, Dafny.Sequence.UnicodeFromString("arg")), Std.Strings.__default.OfNat(_1704_i)); + _1704_i = (_1704_i) + (BigInteger.One); } - _1774_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1774_s, Dafny.Sequence.UnicodeFromString("move |")), _1776_args), Dafny.Sequence.UnicodeFromString("| {\n")); - _1774_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1774_s, Dafny.Sequence.UnicodeFromString("callTarget.")), DCOMP.__default.escapeName(_1767_field)), Dafny.Sequence.UnicodeFromString("(")), _1776_args), Dafny.Sequence.UnicodeFromString(")\n")); - _1774_s = Dafny.Sequence.Concat(_1774_s, Dafny.Sequence.UnicodeFromString("}\n")); - _1774_s = Dafny.Sequence.Concat(_1774_s, Dafny.Sequence.UnicodeFromString("}")); + _1701_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1701_s, Dafny.Sequence.UnicodeFromString("move |")), _1703_args), Dafny.Sequence.UnicodeFromString("| {\n")); + _1701_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1701_s, Dafny.Sequence.UnicodeFromString("callTarget.")), DCOMP.__default.escapeName(_1694_field)), Dafny.Sequence.UnicodeFromString("(")), _1703_args), Dafny.Sequence.UnicodeFromString(")\n")); + _1701_s = Dafny.Sequence.Concat(_1701_s, Dafny.Sequence.UnicodeFromString("}\n")); + _1701_s = Dafny.Sequence.Concat(_1701_s, Dafny.Sequence.UnicodeFromString("}")); } - Dafny.ISequence _1778_typeShape; - _1778_typeShape = Dafny.Sequence.UnicodeFromString("dyn ::std::ops::Fn("); - BigInteger _1779_i; - _1779_i = BigInteger.Zero; - while ((_1779_i) < (_1770_arity)) { - if ((_1779_i).Sign == 1) { - _1778_typeShape = Dafny.Sequence.Concat(_1778_typeShape, Dafny.Sequence.UnicodeFromString(", ")); + Dafny.ISequence _1705_typeShape; + _1705_typeShape = Dafny.Sequence.UnicodeFromString("dyn ::std::ops::Fn("); + BigInteger _1706_i; + _1706_i = BigInteger.Zero; + while ((_1706_i) < (_1697_arity)) { + if ((_1706_i).Sign == 1) { + _1705_typeShape = Dafny.Sequence.Concat(_1705_typeShape, Dafny.Sequence.UnicodeFromString(", ")); } - _1778_typeShape = Dafny.Sequence.Concat(_1778_typeShape, Dafny.Sequence.UnicodeFromString("&_")); - _1779_i = (_1779_i) + (BigInteger.One); + _1705_typeShape = Dafny.Sequence.Concat(_1705_typeShape, Dafny.Sequence.UnicodeFromString("&_")); + _1706_i = (_1706_i) + (BigInteger.One); } - _1778_typeShape = Dafny.Sequence.Concat(_1778_typeShape, Dafny.Sequence.UnicodeFromString(") -> _")); - _1774_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new("), _1774_s), Dafny.Sequence.UnicodeFromString(") as ::std::rc::Rc<")), _1778_typeShape), Dafny.Sequence.UnicodeFromString(">")); - r = RAST.Expr.create_RawExpr(_1774_s); + _1705_typeShape = Dafny.Sequence.Concat(_1705_typeShape, Dafny.Sequence.UnicodeFromString(") -> _")); + _1701_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new("), _1701_s), Dafny.Sequence.UnicodeFromString(") as ::std::rc::Rc<")), _1705_typeShape), Dafny.Sequence.UnicodeFromString(">")); + r = RAST.Expr.create_RawExpr(_1701_s); RAST._IExpr _out453; DCOMP._IOwnership _out454; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out453, out _out454); r = _out453; resultingOwnership = _out454; - readIdents = _1773_recIdents; + readIdents = _1700_recIdents; return ; } } @@ -4755,30 +4714,30 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1780_c = expr0.dtor_Companion_a0; - Dafny.ISequence _1781_field = _source74.dtor_field; - bool _1782_isConstant = _source74.dtor_isConstant; - bool _1783_isDatatype = _source74.dtor_onDatatype; - DAST._IType _1784_fieldType = _source74.dtor_fieldType; + Dafny.ISequence> _1707_c = expr0.dtor_Companion_a0; + Dafny.ISequence _1708_field = _source74.dtor_field; + bool _1709_isConstant = _source74.dtor_isConstant; + bool _1710_isDatatype = _source74.dtor_onDatatype; + DAST._IType _1711_fieldType = _source74.dtor_fieldType; unmatched74 = false; { - RAST._IExpr _1785_onExpr; - DCOMP._IOwnership _1786_onOwned; - Dafny.ISet> _1787_recIdents; + RAST._IExpr _1712_onExpr; + DCOMP._IOwnership _1713_onOwned; + Dafny.ISet> _1714_recIdents; RAST._IExpr _out455; DCOMP._IOwnership _out456; Dafny.ISet> _out457; - (this).GenExpr(DAST.Expression.create_Companion(_1780_c), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out455, out _out456, out _out457); - _1785_onExpr = _out455; - _1786_onOwned = _out456; - _1787_recIdents = _out457; - r = ((_1785_onExpr).MSel(DCOMP.__default.escapeName(_1781_field))).Apply(Dafny.Sequence.FromElements()); + (this).GenExpr(DAST.Expression.create_Companion(_1707_c), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out455, out _out456, out _out457); + _1712_onExpr = _out455; + _1713_onOwned = _out456; + _1714_recIdents = _out457; + r = ((_1712_onExpr).MSel(DCOMP.__default.escapeName(_1708_field))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out458; DCOMP._IOwnership _out459; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out458, out _out459); r = _out458; resultingOwnership = _out459; - readIdents = _1787_recIdents; + readIdents = _1714_recIdents; return ; } } @@ -4786,63 +4745,63 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1789_field = _source74.dtor_field; - bool _1790_isConstant = _source74.dtor_isConstant; - bool _1791_isDatatype = _source74.dtor_onDatatype; - DAST._IType _1792_fieldType = _source74.dtor_fieldType; + DAST._IExpression _1715_on = _source74.dtor_expr; + Dafny.ISequence _1716_field = _source74.dtor_field; + bool _1717_isConstant = _source74.dtor_isConstant; + bool _1718_isDatatype = _source74.dtor_onDatatype; + DAST._IType _1719_fieldType = _source74.dtor_fieldType; unmatched74 = false; { - if (_1791_isDatatype) { - RAST._IExpr _1793_onExpr; - DCOMP._IOwnership _1794_onOwned; - Dafny.ISet> _1795_recIdents; + if (_1718_isDatatype) { + RAST._IExpr _1720_onExpr; + DCOMP._IOwnership _1721_onOwned; + Dafny.ISet> _1722_recIdents; RAST._IExpr _out460; DCOMP._IOwnership _out461; Dafny.ISet> _out462; - (this).GenExpr(_1788_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out460, out _out461, out _out462); - _1793_onExpr = _out460; - _1794_onOwned = _out461; - _1795_recIdents = _out462; - r = ((_1793_onExpr).Sel(DCOMP.__default.escapeName(_1789_field))).Apply(Dafny.Sequence.FromElements()); - RAST._IType _1796_typ; + (this).GenExpr(_1715_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out460, out _out461, out _out462); + _1720_onExpr = _out460; + _1721_onOwned = _out461; + _1722_recIdents = _out462; + r = ((_1720_onExpr).Sel(DCOMP.__default.escapeName(_1716_field))).Apply(Dafny.Sequence.FromElements()); + RAST._IType _1723_typ; RAST._IType _out463; - _out463 = (this).GenType(_1792_fieldType, false, false); - _1796_typ = _out463; + _out463 = (this).GenType(_1719_fieldType, false, false); + _1723_typ = _out463; RAST._IExpr _out464; DCOMP._IOwnership _out465; DCOMP.COMP.FromOwnership(r, DCOMP.Ownership.create_OwnershipBorrowed(), expectedOwnership, out _out464, out _out465); r = _out464; resultingOwnership = _out465; - readIdents = _1795_recIdents; + readIdents = _1722_recIdents; } else { - RAST._IExpr _1797_onExpr; - DCOMP._IOwnership _1798_onOwned; - Dafny.ISet> _1799_recIdents; + RAST._IExpr _1724_onExpr; + DCOMP._IOwnership _1725_onOwned; + Dafny.ISet> _1726_recIdents; RAST._IExpr _out466; DCOMP._IOwnership _out467; Dafny.ISet> _out468; - (this).GenExpr(_1788_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out466, out _out467, out _out468); - _1797_onExpr = _out466; - _1798_onOwned = _out467; - _1799_recIdents = _out468; - r = _1797_onExpr; - r = (r).Sel(DCOMP.__default.escapeName(_1789_field)); - if (_1790_isConstant) { + (this).GenExpr(_1715_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out466, out _out467, out _out468); + _1724_onExpr = _out466; + _1725_onOwned = _out467; + _1726_recIdents = _out468; + r = _1724_onExpr; + r = (r).Sel(DCOMP.__default.escapeName(_1716_field)); + if (_1717_isConstant) { r = (r).Apply(Dafny.Sequence.FromElements()); } else { - Dafny.ISequence _1800_s; - _1800_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&(("), (_1797_onExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")), Dafny.Sequence.UnicodeFromString(".")), DCOMP.__default.escapeName(_1789_field)), Dafny.Sequence.UnicodeFromString(".borrow()))")); - r = RAST.Expr.create_RawExpr(_1800_s); + Dafny.ISequence _1727_s; + _1727_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&(("), (_1724_onExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")), Dafny.Sequence.UnicodeFromString(".")), DCOMP.__default.escapeName(_1716_field)), Dafny.Sequence.UnicodeFromString(".borrow()))")); + r = RAST.Expr.create_RawExpr(_1727_s); } - DCOMP._IOwnership _1801_fromOwnership; - _1801_fromOwnership = ((_1790_isConstant) ? (DCOMP.Ownership.create_OwnershipOwned()) : (DCOMP.Ownership.create_OwnershipBorrowed())); + DCOMP._IOwnership _1728_fromOwnership; + _1728_fromOwnership = ((_1717_isConstant) ? (DCOMP.Ownership.create_OwnershipOwned()) : (DCOMP.Ownership.create_OwnershipBorrowed())); RAST._IExpr _out469; DCOMP._IOwnership _out470; - DCOMP.COMP.FromOwnership(r, _1801_fromOwnership, expectedOwnership, out _out469, out _out470); + DCOMP.COMP.FromOwnership(r, _1728_fromOwnership, expectedOwnership, out _out469, out _out470); r = _out469; resultingOwnership = _out470; - readIdents = _1799_recIdents; + readIdents = _1726_recIdents; } return ; } @@ -4850,42 +4809,42 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1804_indices = _source74.dtor_indices; + DAST._IExpression _1729_on = _source74.dtor_expr; + DAST._ICollKind _1730_collKind = _source74.dtor_collKind; + Dafny.ISequence _1731_indices = _source74.dtor_indices; unmatched74 = false; { - RAST._IExpr _1805_onExpr; - DCOMP._IOwnership _1806_onOwned; - Dafny.ISet> _1807_recIdents; + RAST._IExpr _1732_onExpr; + DCOMP._IOwnership _1733_onOwned; + Dafny.ISet> _1734_recIdents; RAST._IExpr _out471; DCOMP._IOwnership _out472; Dafny.ISet> _out473; - (this).GenExpr(_1802_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out471, out _out472, out _out473); - _1805_onExpr = _out471; - _1806_onOwned = _out472; - _1807_recIdents = _out473; - readIdents = _1807_recIdents; - r = _1805_onExpr; - BigInteger _1808_i; - _1808_i = BigInteger.Zero; - while ((_1808_i) < (new BigInteger((_1804_indices).Count))) { - if (object.Equals(_1803_collKind, DAST.CollKind.create_Array())) { + (this).GenExpr(_1729_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out471, out _out472, out _out473); + _1732_onExpr = _out471; + _1733_onOwned = _out472; + _1734_recIdents = _out473; + readIdents = _1734_recIdents; + r = _1732_onExpr; + BigInteger _1735_i; + _1735_i = BigInteger.Zero; + while ((_1735_i) < (new BigInteger((_1731_indices).Count))) { + if (object.Equals(_1730_collKind, DAST.CollKind.create_Array())) { r = ((r).Sel(Dafny.Sequence.UnicodeFromString("borrow"))).Apply(Dafny.Sequence.FromElements()); } - RAST._IExpr _1809_idx; - DCOMP._IOwnership _1810_idxOwned; - Dafny.ISet> _1811_recIdentsIdx; + RAST._IExpr _1736_idx; + DCOMP._IOwnership _1737_idxOwned; + Dafny.ISet> _1738_recIdentsIdx; RAST._IExpr _out474; DCOMP._IOwnership _out475; Dafny.ISet> _out476; - (this).GenExpr((_1804_indices).Select(_1808_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out474, out _out475, out _out476); - _1809_idx = _out474; - _1810_idxOwned = _out475; - _1811_recIdentsIdx = _out476; - r = ((r).Sel(Dafny.Sequence.UnicodeFromString("get"))).Apply1(_1809_idx); - readIdents = Dafny.Set>.Union(readIdents, _1811_recIdentsIdx); - _1808_i = (_1808_i) + (BigInteger.One); + (this).GenExpr((_1731_indices).Select(_1735_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out474, out _out475, out _out476); + _1736_idx = _out474; + _1737_idxOwned = _out475; + _1738_recIdentsIdx = _out476; + r = ((r).Sel(Dafny.Sequence.UnicodeFromString("get"))).Apply1(_1736_idx); + readIdents = Dafny.Set>.Union(readIdents, _1738_recIdentsIdx); + _1735_i = (_1735_i) + (BigInteger.One); } RAST._IExpr _out477; DCOMP._IOwnership _out478; @@ -4898,86 +4857,86 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1814_low = _source74.dtor_low; - Std.Wrappers._IOption _1815_high = _source74.dtor_high; + DAST._IExpression _1739_on = _source74.dtor_expr; + bool _1740_isArray = _source74.dtor_isArray; + Std.Wrappers._IOption _1741_low = _source74.dtor_low; + Std.Wrappers._IOption _1742_high = _source74.dtor_high; unmatched74 = false; { - RAST._IExpr _1816_onExpr; - DCOMP._IOwnership _1817_onOwned; - Dafny.ISet> _1818_recIdents; + RAST._IExpr _1743_onExpr; + DCOMP._IOwnership _1744_onOwned; + Dafny.ISet> _1745_recIdents; RAST._IExpr _out479; DCOMP._IOwnership _out480; Dafny.ISet> _out481; - (this).GenExpr(_1812_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out479, out _out480, out _out481); - _1816_onExpr = _out479; - _1817_onOwned = _out480; - _1818_recIdents = _out481; - readIdents = _1818_recIdents; - Dafny.ISequence _1819_methodName; - _1819_methodName = (((_1814_low).is_Some) ? ((((_1815_high).is_Some) ? (Dafny.Sequence.UnicodeFromString("slice")) : (Dafny.Sequence.UnicodeFromString("drop")))) : ((((_1815_high).is_Some) ? (Dafny.Sequence.UnicodeFromString("take")) : (Dafny.Sequence.UnicodeFromString(""))))); - Dafny.ISequence _1820_arguments; - _1820_arguments = Dafny.Sequence.FromElements(); - Std.Wrappers._IOption _source76 = _1814_low; + (this).GenExpr(_1739_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out479, out _out480, out _out481); + _1743_onExpr = _out479; + _1744_onOwned = _out480; + _1745_recIdents = _out481; + readIdents = _1745_recIdents; + Dafny.ISequence _1746_methodName; + _1746_methodName = (((_1741_low).is_Some) ? ((((_1742_high).is_Some) ? (Dafny.Sequence.UnicodeFromString("slice")) : (Dafny.Sequence.UnicodeFromString("drop")))) : ((((_1742_high).is_Some) ? (Dafny.Sequence.UnicodeFromString("take")) : (Dafny.Sequence.UnicodeFromString(""))))); + Dafny.ISequence _1747_arguments; + _1747_arguments = Dafny.Sequence.FromElements(); + Std.Wrappers._IOption _source76 = _1741_low; bool unmatched76 = true; if (unmatched76) { if (_source76.is_Some) { - DAST._IExpression _1821_l = _source76.dtor_value; + DAST._IExpression _1748_l = _source76.dtor_value; unmatched76 = false; { - RAST._IExpr _1822_lExpr; - DCOMP._IOwnership _1823___v138; - Dafny.ISet> _1824_recIdentsL; + RAST._IExpr _1749_lExpr; + DCOMP._IOwnership _1750___v138; + Dafny.ISet> _1751_recIdentsL; RAST._IExpr _out482; DCOMP._IOwnership _out483; Dafny.ISet> _out484; - (this).GenExpr(_1821_l, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out482, out _out483, out _out484); - _1822_lExpr = _out482; - _1823___v138 = _out483; - _1824_recIdentsL = _out484; - _1820_arguments = Dafny.Sequence.Concat(_1820_arguments, Dafny.Sequence.FromElements(_1822_lExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1824_recIdentsL); + (this).GenExpr(_1748_l, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out482, out _out483, out _out484); + _1749_lExpr = _out482; + _1750___v138 = _out483; + _1751_recIdentsL = _out484; + _1747_arguments = Dafny.Sequence.Concat(_1747_arguments, Dafny.Sequence.FromElements(_1749_lExpr)); + readIdents = Dafny.Set>.Union(readIdents, _1751_recIdentsL); } } } if (unmatched76) { unmatched76 = false; } - Std.Wrappers._IOption _source77 = _1815_high; + Std.Wrappers._IOption _source77 = _1742_high; bool unmatched77 = true; if (unmatched77) { if (_source77.is_Some) { - DAST._IExpression _1825_h = _source77.dtor_value; + DAST._IExpression _1752_h = _source77.dtor_value; unmatched77 = false; { - RAST._IExpr _1826_hExpr; - DCOMP._IOwnership _1827___v139; - Dafny.ISet> _1828_recIdentsH; + RAST._IExpr _1753_hExpr; + DCOMP._IOwnership _1754___v139; + Dafny.ISet> _1755_recIdentsH; RAST._IExpr _out485; DCOMP._IOwnership _out486; Dafny.ISet> _out487; - (this).GenExpr(_1825_h, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out485, out _out486, out _out487); - _1826_hExpr = _out485; - _1827___v139 = _out486; - _1828_recIdentsH = _out487; - _1820_arguments = Dafny.Sequence.Concat(_1820_arguments, Dafny.Sequence.FromElements(_1826_hExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1828_recIdentsH); + (this).GenExpr(_1752_h, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out485, out _out486, out _out487); + _1753_hExpr = _out485; + _1754___v139 = _out486; + _1755_recIdentsH = _out487; + _1747_arguments = Dafny.Sequence.Concat(_1747_arguments, Dafny.Sequence.FromElements(_1753_hExpr)); + readIdents = Dafny.Set>.Union(readIdents, _1755_recIdentsH); } } } if (unmatched77) { unmatched77 = false; } - r = _1816_onExpr; - if (_1813_isArray) { - if (!(_1819_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { - _1819_methodName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _1819_methodName); + r = _1743_onExpr; + if (_1740_isArray) { + if (!(_1746_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { + _1746_methodName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _1746_methodName); } - r = ((RAST.__default.dafny__runtime__Sequence).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("from_array"), _1819_methodName))).Apply(_1820_arguments); + r = ((RAST.__default.dafny__runtime__Sequence).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("from_array"), _1746_methodName))).Apply(_1747_arguments); } else { - if (!(_1819_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { - r = ((r).Sel(_1819_methodName)).Apply(_1820_arguments); + if (!(_1746_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { + r = ((r).Sel(_1746_methodName)).Apply(_1747_arguments); } } RAST._IExpr _out488; @@ -4991,120 +4950,117 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1834_recIdents; + RAST._IExpr _1759_onExpr; + DCOMP._IOwnership _1760_onOwnership; + Dafny.ISet> _1761_recIdents; RAST._IExpr _out490; DCOMP._IOwnership _out491; Dafny.ISet> _out492; - (this).GenExpr(_1829_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out490, out _out491, out _out492); - _1832_onExpr = _out490; - _1833_onOwnership = _out491; - _1834_recIdents = _out492; - Dafny.ISequence _1835_selName; - _1835_selName = Std.Strings.__default.OfNat(_1830_idx); - DAST._IType _source78 = _1831_fieldType; + (this).GenExpr(_1756_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out490, out _out491, out _out492); + _1759_onExpr = _out490; + _1760_onOwnership = _out491; + _1761_recIdents = _out492; + Dafny.ISequence _1762_selName; + _1762_selName = Std.Strings.__default.OfNat(_1757_idx); + DAST._IType _source78 = _1758_fieldType; bool unmatched78 = true; if (unmatched78) { if (_source78.is_Tuple) { - Dafny.ISequence _1836_tps = _source78.dtor_Tuple_a0; + Dafny.ISequence _1763_tps = _source78.dtor_Tuple_a0; unmatched78 = false; - if (((_1831_fieldType).is_Tuple) && ((new BigInteger((_1836_tps).Count)) > (RAST.__default.MAX__TUPLE__SIZE))) { - _1835_selName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _1835_selName); + if (((_1758_fieldType).is_Tuple) && ((new BigInteger((_1763_tps).Count)) > (RAST.__default.MAX__TUPLE__SIZE))) { + _1762_selName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _1762_selName); } } } if (unmatched78) { - DAST._IType _1837___v140 = _source78; unmatched78 = false; } - r = (_1832_onExpr).Sel(_1835_selName); + r = (_1759_onExpr).Sel(_1762_selName); RAST._IExpr _out493; DCOMP._IOwnership _out494; - DCOMP.COMP.FromOwnership(r, _1833_onOwnership, expectedOwnership, out _out493, out _out494); + DCOMP.COMP.FromOwnership(r, _1760_onOwnership, expectedOwnership, out _out493, out _out494); r = _out493; resultingOwnership = _out494; - readIdents = _1834_recIdents; + readIdents = _1761_recIdents; return ; } } } if (unmatched74) { if (_source74.is_Call) { - DAST._IExpression _1838_on = _source74.dtor_on; - DAST._ICallName _1839_name = _source74.dtor_callName; - Dafny.ISequence _1840_typeArgs = _source74.dtor_typeArgs; - Dafny.ISequence _1841_args = _source74.dtor_args; + DAST._IExpression _1764_on = _source74.dtor_on; + DAST._ICallName _1765_name = _source74.dtor_callName; + Dafny.ISequence _1766_typeArgs = _source74.dtor_typeArgs; + Dafny.ISequence _1767_args = _source74.dtor_args; unmatched74 = false; { readIdents = Dafny.Set>.FromElements(); - RAST._IExpr _1842_onExpr; - DCOMP._IOwnership _1843___v141; - Dafny.ISet> _1844_recIdents; + RAST._IExpr _1768_onExpr; + DCOMP._IOwnership _1769___v141; + Dafny.ISet> _1770_recIdents; RAST._IExpr _out495; DCOMP._IOwnership _out496; Dafny.ISet> _out497; - (this).GenExpr(_1838_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out495, out _out496, out _out497); - _1842_onExpr = _out495; - _1843___v141 = _out496; - _1844_recIdents = _out497; - Dafny.ISequence _1845_typeExprs; - _1845_typeExprs = Dafny.Sequence.FromElements(); - if ((new BigInteger((_1840_typeArgs).Count)) >= (BigInteger.One)) { - BigInteger _hi35 = new BigInteger((_1840_typeArgs).Count); - for (BigInteger _1846_typeI = BigInteger.Zero; _1846_typeI < _hi35; _1846_typeI++) { - RAST._IType _1847_typeExpr; + (this).GenExpr(_1764_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out495, out _out496, out _out497); + _1768_onExpr = _out495; + _1769___v141 = _out496; + _1770_recIdents = _out497; + Dafny.ISequence _1771_typeExprs; + _1771_typeExprs = Dafny.Sequence.FromElements(); + if ((new BigInteger((_1766_typeArgs).Count)) >= (BigInteger.One)) { + BigInteger _hi35 = new BigInteger((_1766_typeArgs).Count); + for (BigInteger _1772_typeI = BigInteger.Zero; _1772_typeI < _hi35; _1772_typeI++) { + RAST._IType _1773_typeExpr; RAST._IType _out498; - _out498 = (this).GenType((_1840_typeArgs).Select(_1846_typeI), false, false); - _1847_typeExpr = _out498; - _1845_typeExprs = Dafny.Sequence.Concat(_1845_typeExprs, Dafny.Sequence.FromElements(_1847_typeExpr)); + _out498 = (this).GenType((_1766_typeArgs).Select(_1772_typeI), false, false); + _1773_typeExpr = _out498; + _1771_typeExprs = Dafny.Sequence.Concat(_1771_typeExprs, Dafny.Sequence.FromElements(_1773_typeExpr)); } } - Dafny.ISequence _1848_argExprs; - _1848_argExprs = Dafny.Sequence.FromElements(); - BigInteger _hi36 = new BigInteger((_1841_args).Count); - for (BigInteger _1849_i = BigInteger.Zero; _1849_i < _hi36; _1849_i++) { - DCOMP._IOwnership _1850_argOwnership; - _1850_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); - if (((_1839_name).is_CallName) && ((_1849_i) < (new BigInteger((((_1839_name).dtor_signature)).Count)))) { - RAST._IType _1851_tpe; + Dafny.ISequence _1774_argExprs; + _1774_argExprs = Dafny.Sequence.FromElements(); + BigInteger _hi36 = new BigInteger((_1767_args).Count); + for (BigInteger _1775_i = BigInteger.Zero; _1775_i < _hi36; _1775_i++) { + DCOMP._IOwnership _1776_argOwnership; + _1776_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); + if (((_1765_name).is_CallName) && ((_1775_i) < (new BigInteger((((_1765_name).dtor_signature)).Count)))) { + RAST._IType _1777_tpe; RAST._IType _out499; - _out499 = (this).GenType(((((_1839_name).dtor_signature)).Select(_1849_i)).dtor_typ, false, false); - _1851_tpe = _out499; - if ((_1851_tpe).CanReadWithoutClone()) { - _1850_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); + _out499 = (this).GenType(((((_1765_name).dtor_signature)).Select(_1775_i)).dtor_typ, false, false); + _1777_tpe = _out499; + if ((_1777_tpe).CanReadWithoutClone()) { + _1776_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); } } - RAST._IExpr _1852_argExpr; - DCOMP._IOwnership _1853___v142; - Dafny.ISet> _1854_argIdents; + RAST._IExpr _1778_argExpr; + DCOMP._IOwnership _1779___v142; + Dafny.ISet> _1780_argIdents; RAST._IExpr _out500; DCOMP._IOwnership _out501; Dafny.ISet> _out502; - (this).GenExpr((_1841_args).Select(_1849_i), selfIdent, env, _1850_argOwnership, out _out500, out _out501, out _out502); - _1852_argExpr = _out500; - _1853___v142 = _out501; - _1854_argIdents = _out502; - _1848_argExprs = Dafny.Sequence.Concat(_1848_argExprs, Dafny.Sequence.FromElements(_1852_argExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1854_argIdents); + (this).GenExpr((_1767_args).Select(_1775_i), selfIdent, env, _1776_argOwnership, out _out500, out _out501, out _out502); + _1778_argExpr = _out500; + _1779___v142 = _out501; + _1780_argIdents = _out502; + _1774_argExprs = Dafny.Sequence.Concat(_1774_argExprs, Dafny.Sequence.FromElements(_1778_argExpr)); + readIdents = Dafny.Set>.Union(readIdents, _1780_argIdents); } - readIdents = Dafny.Set>.Union(readIdents, _1844_recIdents); - Dafny.ISequence _1855_renderedName; - _1855_renderedName = ((System.Func>)(() => { - DAST._ICallName _source79 = _1839_name; + readIdents = Dafny.Set>.Union(readIdents, _1770_recIdents); + Dafny.ISequence _1781_renderedName; + _1781_renderedName = ((System.Func>)(() => { + DAST._ICallName _source79 = _1765_name; bool unmatched79 = true; if (unmatched79) { if (_source79.is_CallName) { - Dafny.ISequence _1856_ident = _source79.dtor_name; - Std.Wrappers._IOption _1857___v143 = _source79.dtor_onType; - Dafny.ISequence _1858___v144 = _source79.dtor_signature; + Dafny.ISequence _1782_ident = _source79.dtor_name; unmatched79 = false; - return DCOMP.__default.escapeName(_1856_ident); + return DCOMP.__default.escapeName(_1782_ident); } } if (unmatched79) { @@ -5131,29 +5087,27 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1859___v145 = _source80.dtor_Companion_a0; unmatched80 = false; { - _1842_onExpr = (_1842_onExpr).MSel(_1855_renderedName); + _1768_onExpr = (_1768_onExpr).MSel(_1781_renderedName); } } } if (unmatched80) { - DAST._IExpression _1860___v146 = _source80; unmatched80 = false; { - _1842_onExpr = (_1842_onExpr).Sel(_1855_renderedName); + _1768_onExpr = (_1768_onExpr).Sel(_1781_renderedName); } } - r = _1842_onExpr; - if ((new BigInteger((_1845_typeExprs).Count)).Sign == 1) { - r = (r).ApplyType(_1845_typeExprs); + r = _1768_onExpr; + if ((new BigInteger((_1771_typeExprs).Count)).Sign == 1) { + r = (r).ApplyType(_1771_typeExprs); } - r = (r).Apply(_1848_argExprs); + r = (r).Apply(_1774_argExprs); RAST._IExpr _out503; DCOMP._IOwnership _out504; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out503, out _out504); @@ -5165,76 +5119,76 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1861_paramsDafny = _source74.dtor_params; - DAST._IType _1862_retType = _source74.dtor_retType; - Dafny.ISequence _1863_body = _source74.dtor_body; + Dafny.ISequence _1783_paramsDafny = _source74.dtor_params; + DAST._IType _1784_retType = _source74.dtor_retType; + Dafny.ISequence _1785_body = _source74.dtor_body; unmatched74 = false; { - Dafny.ISequence _1864_params; + Dafny.ISequence _1786_params; Dafny.ISequence _out505; - _out505 = (this).GenParams(_1861_paramsDafny); - _1864_params = _out505; - Dafny.ISequence> _1865_paramNames; - _1865_paramNames = Dafny.Sequence>.FromElements(); - Dafny.IMap,RAST._IType> _1866_paramTypesMap; - _1866_paramTypesMap = Dafny.Map, RAST._IType>.FromElements(); - BigInteger _hi37 = new BigInteger((_1864_params).Count); - for (BigInteger _1867_i = BigInteger.Zero; _1867_i < _hi37; _1867_i++) { - Dafny.ISequence _1868_name; - _1868_name = ((_1864_params).Select(_1867_i)).dtor_name; - _1865_paramNames = Dafny.Sequence>.Concat(_1865_paramNames, Dafny.Sequence>.FromElements(_1868_name)); - _1866_paramTypesMap = Dafny.Map, RAST._IType>.Update(_1866_paramTypesMap, _1868_name, ((_1864_params).Select(_1867_i)).dtor_tpe); + _out505 = (this).GenParams(_1783_paramsDafny); + _1786_params = _out505; + Dafny.ISequence> _1787_paramNames; + _1787_paramNames = Dafny.Sequence>.FromElements(); + Dafny.IMap,RAST._IType> _1788_paramTypesMap; + _1788_paramTypesMap = Dafny.Map, RAST._IType>.FromElements(); + BigInteger _hi37 = new BigInteger((_1786_params).Count); + for (BigInteger _1789_i = BigInteger.Zero; _1789_i < _hi37; _1789_i++) { + Dafny.ISequence _1790_name; + _1790_name = ((_1786_params).Select(_1789_i)).dtor_name; + _1787_paramNames = Dafny.Sequence>.Concat(_1787_paramNames, Dafny.Sequence>.FromElements(_1790_name)); + _1788_paramTypesMap = Dafny.Map, RAST._IType>.Update(_1788_paramTypesMap, _1790_name, ((_1786_params).Select(_1789_i)).dtor_tpe); } - DCOMP._IEnvironment _1869_env; - _1869_env = DCOMP.Environment.create(_1865_paramNames, _1866_paramTypesMap); - RAST._IExpr _1870_recursiveGen; - Dafny.ISet> _1871_recIdents; - DCOMP._IEnvironment _1872___v147; + DCOMP._IEnvironment _1791_env; + _1791_env = DCOMP.Environment.create(_1787_paramNames, _1788_paramTypesMap); + RAST._IExpr _1792_recursiveGen; + Dafny.ISet> _1793_recIdents; + DCOMP._IEnvironment _1794___v147; RAST._IExpr _out506; Dafny.ISet> _out507; DCOMP._IEnvironment _out508; - (this).GenStmts(_1863_body, ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) ? (Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("_this"))) : (Std.Wrappers.Option>.create_None())), _1869_env, true, RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")), out _out506, out _out507, out _out508); - _1870_recursiveGen = _out506; - _1871_recIdents = _out507; - _1872___v147 = _out508; + (this).GenStmts(_1785_body, ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) ? (Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("_this"))) : (Std.Wrappers.Option>.create_None())), _1791_env, true, RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")), out _out506, out _out507, out _out508); + _1792_recursiveGen = _out506; + _1793_recIdents = _out507; + _1794___v147 = _out508; readIdents = Dafny.Set>.FromElements(); - _1871_recIdents = Dafny.Set>.Difference(_1871_recIdents, Dafny.Helpers.Id>, Dafny.ISet>>>((_1873_paramNames) => ((System.Func>>)(() => { + _1793_recIdents = Dafny.Set>.Difference(_1793_recIdents, Dafny.Helpers.Id>, Dafny.ISet>>>((_1795_paramNames) => ((System.Func>>)(() => { var _coll6 = new System.Collections.Generic.List>(); - foreach (Dafny.ISequence _compr_6 in (_1873_paramNames).CloneAsArray()) { - Dafny.ISequence _1874_name = (Dafny.ISequence)_compr_6; - if ((_1873_paramNames).Contains(_1874_name)) { - _coll6.Add(_1874_name); + foreach (Dafny.ISequence _compr_6 in (_1795_paramNames).CloneAsArray()) { + Dafny.ISequence _1796_name = (Dafny.ISequence)_compr_6; + if ((_1795_paramNames).Contains(_1796_name)) { + _coll6.Add(_1796_name); } } return Dafny.Set>.FromCollection(_coll6); - }))())(_1865_paramNames)); - RAST._IExpr _1875_allReadCloned; - _1875_allReadCloned = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - while (!(_1871_recIdents).Equals(Dafny.Set>.FromElements())) { - Dafny.ISequence _1876_next; - foreach (Dafny.ISequence _assign_such_that_3 in (_1871_recIdents).Elements) { - _1876_next = (Dafny.ISequence)_assign_such_that_3; - if ((_1871_recIdents).Contains(_1876_next)) { + }))())(_1787_paramNames)); + RAST._IExpr _1797_allReadCloned; + _1797_allReadCloned = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + while (!(_1793_recIdents).Equals(Dafny.Set>.FromElements())) { + Dafny.ISequence _1798_next; + foreach (Dafny.ISequence _assign_such_that_3 in (_1793_recIdents).Elements) { + _1798_next = (Dafny.ISequence)_assign_such_that_3; + if ((_1793_recIdents).Contains(_1798_next)) { goto after__ASSIGN_SUCH_THAT_3; } } throw new System.Exception("assign-such-that search produced no value (line 3735)"); after__ASSIGN_SUCH_THAT_3: ; - if ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) && ((_1876_next).Equals(Dafny.Sequence.UnicodeFromString("_this")))) { + if ((!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) && ((_1798_next).Equals(Dafny.Sequence.UnicodeFromString("_this")))) { if (!object.Equals(selfIdent, Std.Wrappers.Option>.create_None())) { - _1875_allReadCloned = (_1875_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((RAST.__default.self).Sel(Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements())))); + _1797_allReadCloned = (_1797_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((RAST.__default.self).Sel(Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements())))); } - } else if (!((_1865_paramNames).Contains(_1876_next))) { - _1875_allReadCloned = (_1875_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1876_next, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((RAST.Expr.create_Identifier(_1876_next)).Sel(Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements())))); - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_1876_next)); + } else if (!((_1787_paramNames).Contains(_1798_next))) { + _1797_allReadCloned = (_1797_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1798_next, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((RAST.Expr.create_Identifier(_1798_next)).Sel(Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements())))); + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_1798_next)); } - _1871_recIdents = Dafny.Set>.Difference(_1871_recIdents, Dafny.Set>.FromElements(_1876_next)); + _1793_recIdents = Dafny.Set>.Difference(_1793_recIdents, Dafny.Set>.FromElements(_1798_next)); } - RAST._IType _1877_retTypeGen; + RAST._IType _1799_retTypeGen; RAST._IType _out509; - _out509 = (this).GenType(_1862_retType, false, true); - _1877_retTypeGen = _out509; - r = RAST.Expr.create_Block((_1875_allReadCloned).Then(RAST.__default.RcNew(RAST.Expr.create_Lambda(_1864_params, Std.Wrappers.Option.create_Some(_1877_retTypeGen), RAST.Expr.create_Block(_1870_recursiveGen))))); + _out509 = (this).GenType(_1784_retType, false, true); + _1799_retTypeGen = _out509; + r = RAST.Expr.create_Block((_1797_allReadCloned).Then(RAST.__default.RcNew(RAST.Expr.create_Lambda(_1786_params, Std.Wrappers.Option.create_Some(_1799_retTypeGen), RAST.Expr.create_Block(_1792_recursiveGen))))); RAST._IExpr _out510; DCOMP._IOwnership _out511; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out510, out _out511); @@ -5246,71 +5200,71 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1878_values = _source74.dtor_values; - DAST._IType _1879_retType = _source74.dtor_retType; - DAST._IExpression _1880_expr = _source74.dtor_expr; + Dafny.ISequence<_System._ITuple2> _1800_values = _source74.dtor_values; + DAST._IType _1801_retType = _source74.dtor_retType; + DAST._IExpression _1802_expr = _source74.dtor_expr; unmatched74 = false; { - Dafny.ISequence> _1881_paramNames; - _1881_paramNames = Dafny.Sequence>.FromElements(); - Dafny.ISequence _1882_paramFormals; + Dafny.ISequence> _1803_paramNames; + _1803_paramNames = Dafny.Sequence>.FromElements(); + Dafny.ISequence _1804_paramFormals; Dafny.ISequence _out512; - _out512 = (this).GenParams(Std.Collections.Seq.__default.Map<_System._ITuple2, DAST._IFormal>(((System.Func<_System._ITuple2, DAST._IFormal>)((_1883_value) => { - return (_1883_value).dtor__0; - })), _1878_values)); - _1882_paramFormals = _out512; - Dafny.IMap,RAST._IType> _1884_paramTypes; - _1884_paramTypes = Dafny.Map, RAST._IType>.FromElements(); - Dafny.ISet> _1885_paramNamesSet; - _1885_paramNamesSet = Dafny.Set>.FromElements(); - BigInteger _hi38 = new BigInteger((_1878_values).Count); - for (BigInteger _1886_i = BigInteger.Zero; _1886_i < _hi38; _1886_i++) { - Dafny.ISequence _1887_name; - _1887_name = (((_1878_values).Select(_1886_i)).dtor__0).dtor_name; - Dafny.ISequence _1888_rName; - _1888_rName = DCOMP.__default.escapeName(_1887_name); - _1881_paramNames = Dafny.Sequence>.Concat(_1881_paramNames, Dafny.Sequence>.FromElements(_1888_rName)); - _1884_paramTypes = Dafny.Map, RAST._IType>.Update(_1884_paramTypes, _1888_rName, ((_1882_paramFormals).Select(_1886_i)).dtor_tpe); - _1885_paramNamesSet = Dafny.Set>.Union(_1885_paramNamesSet, Dafny.Set>.FromElements(_1888_rName)); + _out512 = (this).GenParams(Std.Collections.Seq.__default.Map<_System._ITuple2, DAST._IFormal>(((System.Func<_System._ITuple2, DAST._IFormal>)((_1805_value) => { + return (_1805_value).dtor__0; + })), _1800_values)); + _1804_paramFormals = _out512; + Dafny.IMap,RAST._IType> _1806_paramTypes; + _1806_paramTypes = Dafny.Map, RAST._IType>.FromElements(); + Dafny.ISet> _1807_paramNamesSet; + _1807_paramNamesSet = Dafny.Set>.FromElements(); + BigInteger _hi38 = new BigInteger((_1800_values).Count); + for (BigInteger _1808_i = BigInteger.Zero; _1808_i < _hi38; _1808_i++) { + Dafny.ISequence _1809_name; + _1809_name = (((_1800_values).Select(_1808_i)).dtor__0).dtor_name; + Dafny.ISequence _1810_rName; + _1810_rName = DCOMP.__default.escapeName(_1809_name); + _1803_paramNames = Dafny.Sequence>.Concat(_1803_paramNames, Dafny.Sequence>.FromElements(_1810_rName)); + _1806_paramTypes = Dafny.Map, RAST._IType>.Update(_1806_paramTypes, _1810_rName, ((_1804_paramFormals).Select(_1808_i)).dtor_tpe); + _1807_paramNamesSet = Dafny.Set>.Union(_1807_paramNamesSet, Dafny.Set>.FromElements(_1810_rName)); } readIdents = Dafny.Set>.FromElements(); r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - BigInteger _hi39 = new BigInteger((_1878_values).Count); - for (BigInteger _1889_i = BigInteger.Zero; _1889_i < _hi39; _1889_i++) { - RAST._IType _1890_typeGen; + BigInteger _hi39 = new BigInteger((_1800_values).Count); + for (BigInteger _1811_i = BigInteger.Zero; _1811_i < _hi39; _1811_i++) { + RAST._IType _1812_typeGen; RAST._IType _out513; - _out513 = (this).GenType((((_1878_values).Select(_1889_i)).dtor__0).dtor_typ, false, true); - _1890_typeGen = _out513; - RAST._IExpr _1891_valueGen; - DCOMP._IOwnership _1892___v148; - Dafny.ISet> _1893_recIdents; + _out513 = (this).GenType((((_1800_values).Select(_1811_i)).dtor__0).dtor_typ, false, true); + _1812_typeGen = _out513; + RAST._IExpr _1813_valueGen; + DCOMP._IOwnership _1814___v148; + Dafny.ISet> _1815_recIdents; RAST._IExpr _out514; DCOMP._IOwnership _out515; Dafny.ISet> _out516; - (this).GenExpr(((_1878_values).Select(_1889_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out514, out _out515, out _out516); - _1891_valueGen = _out514; - _1892___v148 = _out515; - _1893_recIdents = _out516; - r = (r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((((_1878_values).Select(_1889_i)).dtor__0).dtor_name), Std.Wrappers.Option.create_Some(_1890_typeGen), Std.Wrappers.Option.create_Some(_1891_valueGen))); - readIdents = Dafny.Set>.Union(readIdents, _1893_recIdents); + (this).GenExpr(((_1800_values).Select(_1811_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out514, out _out515, out _out516); + _1813_valueGen = _out514; + _1814___v148 = _out515; + _1815_recIdents = _out516; + r = (r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((((_1800_values).Select(_1811_i)).dtor__0).dtor_name), Std.Wrappers.Option.create_Some(_1812_typeGen), Std.Wrappers.Option.create_Some(_1813_valueGen))); + readIdents = Dafny.Set>.Union(readIdents, _1815_recIdents); } - DCOMP._IEnvironment _1894_newEnv; - _1894_newEnv = DCOMP.Environment.create(_1881_paramNames, _1884_paramTypes); - RAST._IExpr _1895_recGen; - DCOMP._IOwnership _1896_recOwned; - Dafny.ISet> _1897_recIdents; + DCOMP._IEnvironment _1816_newEnv; + _1816_newEnv = DCOMP.Environment.create(_1803_paramNames, _1806_paramTypes); + RAST._IExpr _1817_recGen; + DCOMP._IOwnership _1818_recOwned; + Dafny.ISet> _1819_recIdents; RAST._IExpr _out517; DCOMP._IOwnership _out518; Dafny.ISet> _out519; - (this).GenExpr(_1880_expr, selfIdent, _1894_newEnv, expectedOwnership, out _out517, out _out518, out _out519); - _1895_recGen = _out517; - _1896_recOwned = _out518; - _1897_recIdents = _out519; - readIdents = Dafny.Set>.Difference(_1897_recIdents, _1885_paramNamesSet); - r = RAST.Expr.create_Block((r).Then(_1895_recGen)); + (this).GenExpr(_1802_expr, selfIdent, _1816_newEnv, expectedOwnership, out _out517, out _out518, out _out519); + _1817_recGen = _out517; + _1818_recOwned = _out518; + _1819_recIdents = _out519; + readIdents = Dafny.Set>.Difference(_1819_recIdents, _1807_paramNamesSet); + r = RAST.Expr.create_Block((r).Then(_1817_recGen)); RAST._IExpr _out520; DCOMP._IOwnership _out521; - DCOMP.COMP.FromOwnership(r, _1896_recOwned, expectedOwnership, out _out520, out _out521); + DCOMP.COMP.FromOwnership(r, _1818_recOwned, expectedOwnership, out _out520, out _out521); r = _out520; resultingOwnership = _out521; return ; @@ -5319,39 +5273,39 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1898_name = _source74.dtor_name; - DAST._IType _1899_tpe = _source74.dtor_typ; - DAST._IExpression _1900_value = _source74.dtor_value; - DAST._IExpression _1901_iifeBody = _source74.dtor_iifeBody; + Dafny.ISequence _1820_name = _source74.dtor_name; + DAST._IType _1821_tpe = _source74.dtor_typ; + DAST._IExpression _1822_value = _source74.dtor_value; + DAST._IExpression _1823_iifeBody = _source74.dtor_iifeBody; unmatched74 = false; { - RAST._IExpr _1902_valueGen; - DCOMP._IOwnership _1903___v149; - Dafny.ISet> _1904_recIdents; + RAST._IExpr _1824_valueGen; + DCOMP._IOwnership _1825___v149; + Dafny.ISet> _1826_recIdents; RAST._IExpr _out522; DCOMP._IOwnership _out523; Dafny.ISet> _out524; - (this).GenExpr(_1900_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out522, out _out523, out _out524); - _1902_valueGen = _out522; - _1903___v149 = _out523; - _1904_recIdents = _out524; - readIdents = _1904_recIdents; - RAST._IType _1905_valueTypeGen; + (this).GenExpr(_1822_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out522, out _out523, out _out524); + _1824_valueGen = _out522; + _1825___v149 = _out523; + _1826_recIdents = _out524; + readIdents = _1826_recIdents; + RAST._IType _1827_valueTypeGen; RAST._IType _out525; - _out525 = (this).GenType(_1899_tpe, false, true); - _1905_valueTypeGen = _out525; - RAST._IExpr _1906_bodyGen; - DCOMP._IOwnership _1907___v150; - Dafny.ISet> _1908_bodyIdents; + _out525 = (this).GenType(_1821_tpe, false, true); + _1827_valueTypeGen = _out525; + RAST._IExpr _1828_bodyGen; + DCOMP._IOwnership _1829___v150; + Dafny.ISet> _1830_bodyIdents; RAST._IExpr _out526; DCOMP._IOwnership _out527; Dafny.ISet> _out528; - (this).GenExpr(_1901_iifeBody, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out526, out _out527, out _out528); - _1906_bodyGen = _out526; - _1907___v150 = _out527; - _1908_bodyIdents = _out528; - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_1908_bodyIdents, Dafny.Set>.FromElements(DCOMP.__default.escapeName((_1898_name))))); - r = RAST.Expr.create_Block((RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((_1898_name)), Std.Wrappers.Option.create_Some(_1905_valueTypeGen), Std.Wrappers.Option.create_Some(_1902_valueGen))).Then(_1906_bodyGen)); + (this).GenExpr(_1823_iifeBody, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out526, out _out527, out _out528); + _1828_bodyGen = _out526; + _1829___v150 = _out527; + _1830_bodyIdents = _out528; + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_1830_bodyIdents, Dafny.Set>.FromElements(DCOMP.__default.escapeName((_1820_name))))); + r = RAST.Expr.create_Block((RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((_1820_name)), Std.Wrappers.Option.create_Some(_1827_valueTypeGen), Std.Wrappers.Option.create_Some(_1824_valueGen))).Then(_1828_bodyGen)); RAST._IExpr _out529; DCOMP._IOwnership _out530; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out529, out _out530); @@ -5363,39 +5317,39 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption _1910_args = _source74.dtor_args; + DAST._IExpression _1831_func = _source74.dtor_expr; + Dafny.ISequence _1832_args = _source74.dtor_args; unmatched74 = false; { - RAST._IExpr _1911_funcExpr; - DCOMP._IOwnership _1912___v151; - Dafny.ISet> _1913_recIdents; + RAST._IExpr _1833_funcExpr; + DCOMP._IOwnership _1834___v151; + Dafny.ISet> _1835_recIdents; RAST._IExpr _out531; DCOMP._IOwnership _out532; Dafny.ISet> _out533; - (this).GenExpr(_1909_func, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out531, out _out532, out _out533); - _1911_funcExpr = _out531; - _1912___v151 = _out532; - _1913_recIdents = _out533; - readIdents = _1913_recIdents; - Dafny.ISequence _1914_rArgs; - _1914_rArgs = Dafny.Sequence.FromElements(); - BigInteger _hi40 = new BigInteger((_1910_args).Count); - for (BigInteger _1915_i = BigInteger.Zero; _1915_i < _hi40; _1915_i++) { - RAST._IExpr _1916_argExpr; - DCOMP._IOwnership _1917_argOwned; - Dafny.ISet> _1918_argIdents; + (this).GenExpr(_1831_func, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out531, out _out532, out _out533); + _1833_funcExpr = _out531; + _1834___v151 = _out532; + _1835_recIdents = _out533; + readIdents = _1835_recIdents; + Dafny.ISequence _1836_rArgs; + _1836_rArgs = Dafny.Sequence.FromElements(); + BigInteger _hi40 = new BigInteger((_1832_args).Count); + for (BigInteger _1837_i = BigInteger.Zero; _1837_i < _hi40; _1837_i++) { + RAST._IExpr _1838_argExpr; + DCOMP._IOwnership _1839_argOwned; + Dafny.ISet> _1840_argIdents; RAST._IExpr _out534; DCOMP._IOwnership _out535; Dafny.ISet> _out536; - (this).GenExpr((_1910_args).Select(_1915_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out534, out _out535, out _out536); - _1916_argExpr = _out534; - _1917_argOwned = _out535; - _1918_argIdents = _out536; - _1914_rArgs = Dafny.Sequence.Concat(_1914_rArgs, Dafny.Sequence.FromElements(_1916_argExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1918_argIdents); + (this).GenExpr((_1832_args).Select(_1837_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out534, out _out535, out _out536); + _1838_argExpr = _out534; + _1839_argOwned = _out535; + _1840_argIdents = _out536; + _1836_rArgs = Dafny.Sequence.Concat(_1836_rArgs, Dafny.Sequence.FromElements(_1838_argExpr)); + readIdents = Dafny.Set>.Union(readIdents, _1840_argIdents); } - r = (_1911_funcExpr).Apply(_1914_rArgs); + r = (_1833_funcExpr).Apply(_1836_rArgs); RAST._IExpr _out537; DCOMP._IOwnership _out538; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out537, out _out538); @@ -5407,32 +5361,32 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1920_dType = _source74.dtor_dType; - Dafny.ISequence _1921_variant = _source74.dtor_variant; + DAST._IExpression _1841_on = _source74.dtor_on; + Dafny.ISequence> _1842_dType = _source74.dtor_dType; + Dafny.ISequence _1843_variant = _source74.dtor_variant; unmatched74 = false; { - RAST._IExpr _1922_exprGen; - DCOMP._IOwnership _1923___v152; - Dafny.ISet> _1924_recIdents; + RAST._IExpr _1844_exprGen; + DCOMP._IOwnership _1845___v152; + Dafny.ISet> _1846_recIdents; RAST._IExpr _out539; DCOMP._IOwnership _out540; Dafny.ISet> _out541; - (this).GenExpr(_1919_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out539, out _out540, out _out541); - _1922_exprGen = _out539; - _1923___v152 = _out540; - _1924_recIdents = _out541; - RAST._IType _1925_dTypePath; + (this).GenExpr(_1841_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out539, out _out540, out _out541); + _1844_exprGen = _out539; + _1845___v152 = _out540; + _1846_recIdents = _out541; + RAST._IType _1847_dTypePath; RAST._IType _out542; - _out542 = DCOMP.COMP.GenPath(_1920_dType); - _1925_dTypePath = _out542; - r = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("matches!"))).Apply(Dafny.Sequence.FromElements(((_1922_exprGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(((_1925_dTypePath).MSel(DCOMP.__default.escapeName(_1921_variant)))._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("{ .. }"))))); + _out542 = DCOMP.COMP.GenPath(_1842_dType); + _1847_dTypePath = _out542; + r = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("matches!"))).Apply(Dafny.Sequence.FromElements(((_1844_exprGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(((_1847_dTypePath).MSel(DCOMP.__default.escapeName(_1843_variant)))._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("{ .. }"))))); RAST._IExpr _out543; DCOMP._IOwnership _out544; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out543, out _out544); r = _out543; resultingOwnership = _out544; - readIdents = _1924_recIdents; + readIdents = _1846_recIdents; return ; } } @@ -5454,48 +5408,48 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1929_recIdents; + RAST._IExpr _1849_exprGen; + DCOMP._IOwnership _1850___v153; + Dafny.ISet> _1851_recIdents; RAST._IExpr _out547; DCOMP._IOwnership _out548; Dafny.ISet> _out549; - (this).GenExpr(_1926_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out547, out _out548, out _out549); - _1927_exprGen = _out547; - _1928___v153 = _out548; - _1929_recIdents = _out549; - r = ((((_1927_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("cloned"))).Apply(Dafny.Sequence.FromElements()); + (this).GenExpr(_1848_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out547, out _out548, out _out549); + _1849_exprGen = _out547; + _1850___v153 = _out548; + _1851_recIdents = _out549; + r = ((((_1849_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("cloned"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out550; DCOMP._IOwnership _out551; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out550, out _out551); r = _out550; resultingOwnership = _out551; - readIdents = _1929_recIdents; + readIdents = _1851_recIdents; return ; } } } if (unmatched74) { if (_source74.is_SeqBoundedPool) { - DAST._IExpression _1930_of = _source74.dtor_of; - bool _1931_includeDuplicates = _source74.dtor_includeDuplicates; + DAST._IExpression _1852_of = _source74.dtor_of; + bool _1853_includeDuplicates = _source74.dtor_includeDuplicates; unmatched74 = false; { - RAST._IExpr _1932_exprGen; - DCOMP._IOwnership _1933___v154; - Dafny.ISet> _1934_recIdents; + RAST._IExpr _1854_exprGen; + DCOMP._IOwnership _1855___v154; + Dafny.ISet> _1856_recIdents; RAST._IExpr _out552; DCOMP._IOwnership _out553; Dafny.ISet> _out554; - (this).GenExpr(_1930_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out552, out _out553, out _out554); - _1932_exprGen = _out552; - _1933___v154 = _out553; - _1934_recIdents = _out554; - r = ((_1932_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); - if (!(_1931_includeDuplicates)) { + (this).GenExpr(_1852_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out552, out _out553, out _out554); + _1854_exprGen = _out552; + _1855___v154 = _out553; + _1856_recIdents = _out554; + r = ((_1854_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); + if (!(_1853_includeDuplicates)) { r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("itertools"))).MSel(Dafny.Sequence.UnicodeFromString("Itertools"))).MSel(Dafny.Sequence.UnicodeFromString("unique"))).Apply1(r); } RAST._IExpr _out555; @@ -5503,63 +5457,63 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption> _1939_recIdentsLo; + RAST._IExpr _1859_lo; + DCOMP._IOwnership _1860___v155; + Dafny.ISet> _1861_recIdentsLo; RAST._IExpr _out557; DCOMP._IOwnership _out558; Dafny.ISet> _out559; - (this).GenExpr(_1935_lo, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out557, out _out558, out _out559); - _1937_lo = _out557; - _1938___v155 = _out558; - _1939_recIdentsLo = _out559; - RAST._IExpr _1940_hi; - DCOMP._IOwnership _1941___v156; - Dafny.ISet> _1942_recIdentsHi; + (this).GenExpr(_1857_lo, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out557, out _out558, out _out559); + _1859_lo = _out557; + _1860___v155 = _out558; + _1861_recIdentsLo = _out559; + RAST._IExpr _1862_hi; + DCOMP._IOwnership _1863___v156; + Dafny.ISet> _1864_recIdentsHi; RAST._IExpr _out560; DCOMP._IOwnership _out561; Dafny.ISet> _out562; - (this).GenExpr(_1936_hi, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out560, out _out561, out _out562); - _1940_hi = _out560; - _1941___v156 = _out561; - _1942_recIdentsHi = _out562; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range"))).Apply(Dafny.Sequence.FromElements(_1937_lo, _1940_hi)); + (this).GenExpr(_1858_hi, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out560, out _out561, out _out562); + _1862_hi = _out560; + _1863___v156 = _out561; + _1864_recIdentsHi = _out562; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range"))).Apply(Dafny.Sequence.FromElements(_1859_lo, _1862_hi)); RAST._IExpr _out563; DCOMP._IOwnership _out564; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out563, out _out564); r = _out563; resultingOwnership = _out564; - readIdents = Dafny.Set>.Union(_1939_recIdentsLo, _1942_recIdentsHi); + readIdents = Dafny.Set>.Union(_1861_recIdentsLo, _1864_recIdentsHi); return ; } } } if (unmatched74) { if (_source74.is_MapBuilder) { - DAST._IType _1943_keyType = _source74.dtor_keyType; - DAST._IType _1944_valueType = _source74.dtor_valueType; + DAST._IType _1865_keyType = _source74.dtor_keyType; + DAST._IType _1866_valueType = _source74.dtor_valueType; unmatched74 = false; { - RAST._IType _1945_kType; + RAST._IType _1867_kType; RAST._IType _out565; - _out565 = (this).GenType(_1943_keyType, false, false); - _1945_kType = _out565; - RAST._IType _1946_vType; + _out565 = (this).GenType(_1865_keyType, false, false); + _1867_kType = _out565; + RAST._IType _1868_vType; RAST._IType _out566; - _out566 = (this).GenType(_1944_valueType, false, false); - _1946_vType = _out566; - r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder"))).ApplyType(Dafny.Sequence.FromElements(_1945_kType, _1946_vType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); + _out566 = (this).GenType(_1866_valueType, false, false); + _1868_vType = _out566; + r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder"))).ApplyType(Dafny.Sequence.FromElements(_1867_kType, _1868_vType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out567; DCOMP._IOwnership _out568; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out567, out _out568); @@ -5571,15 +5525,15 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption>.FromElements(); - r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder"))).ApplyType(Dafny.Sequence.FromElements(_1948_eType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); + r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder"))).ApplyType(Dafny.Sequence.FromElements(_1870_eType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); RAST._IExpr _out570; DCOMP._IOwnership _out571; DCOMP.COMP.FromOwned(r, expectedOwnership, out _out570, out _out571); @@ -5594,20 +5548,20 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption s = Dafny.Sequence.Empty; s = Dafny.Sequence.UnicodeFromString("#![allow(warnings, unconditional_panic)]\n"); s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("#![allow(nonstandard_style)]\n")); - BigInteger _1949_i; - _1949_i = BigInteger.Zero; - while ((_1949_i) < (new BigInteger((p).Count))) { - Dafny.ISequence _1950_generated = Dafny.Sequence.Empty; - RAST._IMod _1951_m; + BigInteger _1871_i; + _1871_i = BigInteger.Zero; + while ((_1871_i) < (new BigInteger((p).Count))) { + Dafny.ISequence _1872_generated = Dafny.Sequence.Empty; + RAST._IMod _1873_m; RAST._IMod _out572; - _out572 = (this).GenModule((p).Select(_1949_i), Dafny.Sequence>.FromElements()); - _1951_m = _out572; - _1950_generated = (_1951_m)._ToString(Dafny.Sequence.UnicodeFromString("")); - if ((_1949_i).Sign == 1) { + _out572 = (this).GenModule((p).Select(_1871_i), Dafny.Sequence>.FromElements()); + _1873_m = _out572; + _1872_generated = (_1873_m)._ToString(Dafny.Sequence.UnicodeFromString("")); + if ((_1871_i).Sign == 1) { s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("\n")); } - s = Dafny.Sequence.Concat(s, _1950_generated); - _1949_i = (_1949_i) + (BigInteger.One); + s = Dafny.Sequence.Concat(s, _1872_generated); + _1871_i = (_1871_i) + (BigInteger.One); } return s; } @@ -5615,14 +5569,14 @@ public void GenExpr(DAST._IExpression e, Std.Wrappers._IOption s = Dafny.Sequence.Empty; s = Dafny.Sequence.UnicodeFromString("\nfn main() {\n"); - BigInteger _1952_i; - _1952_i = BigInteger.Zero; - while ((_1952_i) < (new BigInteger((fullName).Count))) { - if ((_1952_i).Sign == 1) { + BigInteger _1874_i; + _1874_i = BigInteger.Zero; + while ((_1874_i) < (new BigInteger((fullName).Count))) { + if ((_1874_i).Sign == 1) { s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("::")); } - s = Dafny.Sequence.Concat(s, DCOMP.__default.escapeName((fullName).Select(_1952_i))); - _1952_i = (_1952_i) + (BigInteger.One); + s = Dafny.Sequence.Concat(s, DCOMP.__default.escapeName((fullName).Select(_1874_i))); + _1874_i = (_1874_i) + (BigInteger.One); } s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("();\n}")); return s; diff --git a/Source/DafnyCore/GeneratedFromDafny/RAST.cs b/Source/DafnyCore/GeneratedFromDafny/RAST.cs index c10ca2e00fb..06d44a01585 100644 --- a/Source/DafnyCore/GeneratedFromDafny/RAST.cs +++ b/Source/DafnyCore/GeneratedFromDafny/RAST.cs @@ -67,8 +67,8 @@ public static bool IsImmutableConversion(RAST._IType fromTpe, RAST._IType toTpe) if (object.Equals(name0, Dafny.Sequence.UnicodeFromString(""))) { Dafny.ISequence name1 = base0.dtor_name; if (object.Equals(name1, Dafny.Sequence.UnicodeFromString("dafny_runtime"))) { - Dafny.ISequence _765_tpe1 = baseName0.dtor_name; - Dafny.ISequence _766_elems1 = _00.dtor_arguments; + Dafny.ISequence _761_tpe1 = baseName0.dtor_name; + Dafny.ISequence _762_elems1 = _00.dtor_arguments; RAST._IType _10 = _source25.dtor__1; if (_10.is_TypeApp) { RAST._IType baseName1 = _10.dtor_baseName; @@ -81,10 +81,10 @@ public static bool IsImmutableConversion(RAST._IType fromTpe, RAST._IType toTpe) if (object.Equals(name2, Dafny.Sequence.UnicodeFromString(""))) { Dafny.ISequence name3 = base2.dtor_name; if (object.Equals(name3, Dafny.Sequence.UnicodeFromString("dafny_runtime"))) { - Dafny.ISequence _767_tpe2 = baseName1.dtor_name; - Dafny.ISequence _768_elems2 = _10.dtor_arguments; + Dafny.ISequence _763_tpe2 = baseName1.dtor_name; + Dafny.ISequence _764_elems2 = _10.dtor_arguments; unmatched25 = false; - return ((_765_tpe1).Equals(_767_tpe2)) && (((((_765_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Set"))) || ((_765_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Sequence")))) || ((_765_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Multiset")))) || ((_765_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Map")))); + return ((_761_tpe1).Equals(_763_tpe2)) && (((((_761_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Set"))) || ((_761_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Sequence")))) || ((_761_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Multiset")))) || ((_761_tpe1).Equals(Dafny.Sequence.UnicodeFromString("Map")))); } } } @@ -99,7 +99,6 @@ public static bool IsImmutableConversion(RAST._IType fromTpe, RAST._IType toTpe) } } if (unmatched25) { - _System._ITuple2 _769___v0 = _source25; unmatched25 = false; return false; } @@ -109,46 +108,46 @@ public static RAST._IType SystemTupleType(Dafny.ISequence elements) return (((RAST.__default.super__type).MSel(Dafny.Sequence.UnicodeFromString("_System"))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Tuple"), Std.Strings.__default.OfNat(new BigInteger((elements).Count))))).Apply(elements); } public static RAST._IExpr SystemTuple(Dafny.ISequence elements) { - Dafny.ISequence _770_size = Std.Strings.__default.OfNat(new BigInteger((elements).Count)); - return RAST.Expr.create_StructBuild((((RAST.__default.super).MSel(Dafny.Sequence.UnicodeFromString("_System"))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Tuple"), _770_size))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), _770_size)), ((System.Func>) (() => { + Dafny.ISequence _765_size = Std.Strings.__default.OfNat(new BigInteger((elements).Count)); + return RAST.Expr.create_StructBuild((((RAST.__default.super).MSel(Dafny.Sequence.UnicodeFromString("_System"))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Tuple"), _765_size))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), _765_size)), ((System.Func>) (() => { BigInteger dim10 = new BigInteger((elements).Count); var arr10 = new RAST._IAssignIdentifier[Dafny.Helpers.ToIntChecked(dim10, "array size exceeds memory limit")]; for (int i10 = 0; i10 < dim10; i10++) { - var _771_i = (BigInteger) i10; - arr10[(int)(_771_i)] = RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), Std.Strings.__default.OfNat(_771_i)), (elements).Select(_771_i)); + var _766_i = (BigInteger) i10; + arr10[(int)(_766_i)] = RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), Std.Strings.__default.OfNat(_766_i)), (elements).Select(_766_i)); } return Dafny.Sequence.FromArray(arr10); }))()); } public static Dafny.ISequence AddIndent(Dafny.ISequence raw, Dafny.ISequence ind) { - Dafny.ISequence _772___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _767___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((raw).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_772___accumulator, raw); + return Dafny.Sequence.Concat(_767___accumulator, raw); } else if ((Dafny.Sequence.UnicodeFromString("[({")).Contains((raw).Select(BigInteger.Zero))) { - _772___accumulator = Dafny.Sequence.Concat(_772___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + _767___accumulator = Dafny.Sequence.Concat(_767___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); Dafny.ISequence _in103 = (raw).Drop(BigInteger.One); Dafny.ISequence _in104 = Dafny.Sequence.Concat(ind, RAST.__default.IND); raw = _in103; ind = _in104; goto TAIL_CALL_START; } else if (((Dafny.Sequence.UnicodeFromString("})]")).Contains((raw).Select(BigInteger.Zero))) && ((new BigInteger((ind).Count)) > (new BigInteger(2)))) { - _772___accumulator = Dafny.Sequence.Concat(_772___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + _767___accumulator = Dafny.Sequence.Concat(_767___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); Dafny.ISequence _in105 = (raw).Drop(BigInteger.One); Dafny.ISequence _in106 = (ind).Take((new BigInteger((ind).Count)) - (new BigInteger(2))); raw = _in105; ind = _in106; goto TAIL_CALL_START; } else if (((raw).Select(BigInteger.Zero)) == (new Dafny.Rune('\n'))) { - _772___accumulator = Dafny.Sequence.Concat(_772___accumulator, Dafny.Sequence.Concat(Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero)), ind)); + _767___accumulator = Dafny.Sequence.Concat(_767___accumulator, Dafny.Sequence.Concat(Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero)), ind)); Dafny.ISequence _in107 = (raw).Drop(BigInteger.One); Dafny.ISequence _in108 = ind; raw = _in107; ind = _in108; goto TAIL_CALL_START; } else { - _772___accumulator = Dafny.Sequence.Concat(_772___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + _767___accumulator = Dafny.Sequence.Concat(_767___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); Dafny.ISequence _in109 = (raw).Drop(BigInteger.One); Dafny.ISequence _in110 = ind; raw = _in109; @@ -335,17 +334,17 @@ public Dafny.ISequence dtor_body { bool unmatched26 = true; if (unmatched26) { if (_source26.is_ExternMod) { - Dafny.ISequence _773_name = _source26.dtor_name; + Dafny.ISequence _768_name = _source26.dtor_name; unmatched26 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _773_name), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _768_name), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched26) { - Dafny.ISequence _774_name = _source26.dtor_name; - Dafny.ISequence _775_body = _source26.dtor_body; + Dafny.ISequence _769_name = _source26.dtor_name; + Dafny.ISequence _770_body = _source26.dtor_body; unmatched26 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _774_name), Dafny.Sequence.UnicodeFromString(" {")), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv23), RAST.__default.IND), RAST.__default.SeqToString(_775_body, Dafny.Helpers.Id, Func>>>((_776_ind) => ((System.Func>)((_777_modDecl) => { - return (_777_modDecl)._ToString(Dafny.Sequence.Concat(_776_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _769_name), Dafny.Sequence.UnicodeFromString(" {")), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv23), RAST.__default.IND), RAST.__default.SeqToString(_770_body, Dafny.Helpers.Id, Func>>>((_771_ind) => ((System.Func>)((_772_modDecl) => { + return (_772_modDecl)._ToString(Dafny.Sequence.Concat(_771_ind, RAST.__default.IND)); })))(_pat_let_tv24), Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n\n"), _pat_let_tv25), RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv26), Dafny.Sequence.UnicodeFromString("}")); } throw new System.Exception("unexpected control point"); @@ -729,8 +728,8 @@ public Dafny.ISequence dtor_content { } public static Dafny.ISequence ToStringMultiple(Dafny.ISequence> attributes, Dafny.ISequence ind) { - return RAST.__default.SeqToString>(attributes, Dafny.Helpers.Id, Func, Dafny.ISequence>>>((_778_ind) => ((System.Func, Dafny.ISequence>)((_779_attribute) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_779_attribute), Dafny.Sequence.UnicodeFromString("\n")), _778_ind); + return RAST.__default.SeqToString>(attributes, Dafny.Helpers.Id, Func, Dafny.ISequence>>>((_773_ind) => ((System.Func, Dafny.ISequence>)((_774_attribute) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_774_attribute), Dafny.Sequence.UnicodeFromString("\n")), _773_ind); })))(ind), Dafny.Sequence.UnicodeFromString("")); } } @@ -1011,8 +1010,8 @@ public RAST._IFields ToNamelessFields() { BigInteger dim11 = new BigInteger(((this).dtor_fields).Count); var arr11 = new RAST._INamelessField[Dafny.Helpers.ToIntChecked(dim11, "array size exceeds memory limit")]; for (int i11 = 0; i11 < dim11; i11++) { - var _780_i = (BigInteger) i11; - arr11[(int)(_780_i)] = (((this).dtor_fields).Select(_780_i)).ToNamelessField(); + var _775_i = (BigInteger) i11; + arr11[(int)(_775_i)] = (((this).dtor_fields).Select(_775_i)).ToNamelessField(); } return Dafny.Sequence.FromArray(arr11); }))()); @@ -1020,18 +1019,18 @@ public RAST._IFields ToNamelessFields() { public Dafny.ISequence _ToString(Dafny.ISequence ind, bool newLine) { if ((this).is_NamedFields) { - Dafny.ISequence _781_separator = ((newLine) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(",\n"), ind), RAST.__default.IND)) : (Dafny.Sequence.UnicodeFromString(", "))); + Dafny.ISequence _776_separator = ((newLine) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(",\n"), ind), RAST.__default.IND)) : (Dafny.Sequence.UnicodeFromString(", "))); _System._ITuple2, Dafny.ISequence> _let_tmp_rhs40 = (((newLine) && ((new BigInteger(((this).dtor_fields).Count)).Sign == 1)) ? (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind))) : ((((new BigInteger(((this).dtor_fields).Count)).Sign == 1) ? (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString(" "), Dafny.Sequence.UnicodeFromString(" "))) : (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.UnicodeFromString("")))))); - Dafny.ISequence _782_beginSpace = _let_tmp_rhs40.dtor__0; - Dafny.ISequence _783_endSpace = _let_tmp_rhs40.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {"), _782_beginSpace), RAST.__default.SeqToString((this).dtor_fields, Dafny.Helpers.Id, Func>>>((_784_ind) => ((System.Func>)((_785_field) => { - return (_785_field)._ToString(Dafny.Sequence.Concat(_784_ind, RAST.__default.IND)); - })))(ind), _781_separator)), _783_endSpace), Dafny.Sequence.UnicodeFromString("}")); + Dafny.ISequence _777_beginSpace = _let_tmp_rhs40.dtor__0; + Dafny.ISequence _778_endSpace = _let_tmp_rhs40.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {"), _777_beginSpace), RAST.__default.SeqToString((this).dtor_fields, Dafny.Helpers.Id, Func>>>((_779_ind) => ((System.Func>)((_780_field) => { + return (_780_field)._ToString(Dafny.Sequence.Concat(_779_ind, RAST.__default.IND)); + })))(ind), _776_separator)), _778_endSpace), Dafny.Sequence.UnicodeFromString("}")); } else { - Dafny.ISequence _786_separator = ((newLine) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(",\n"), ind), RAST.__default.IND)) : (Dafny.Sequence.UnicodeFromString(", "))); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString((this).dtor_types, Dafny.Helpers.Id, Func>>>((_787_ind) => ((System.Func>)((_788_t) => { - return (_788_t)._ToString(Dafny.Sequence.Concat(_787_ind, RAST.__default.IND)); - })))(ind), _786_separator)), Dafny.Sequence.UnicodeFromString(")")); + Dafny.ISequence _781_separator = ((newLine) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(",\n"), ind), RAST.__default.IND)) : (Dafny.Sequence.UnicodeFromString(", "))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString((this).dtor_types, Dafny.Helpers.Id, Func>>>((_782_ind) => ((System.Func>)((_783_t) => { + return (_783_t)._ToString(Dafny.Sequence.Concat(_782_ind, RAST.__default.IND)); + })))(ind), _781_separator)), Dafny.Sequence.UnicodeFromString(")")); } } } @@ -1245,8 +1244,8 @@ public Dafny.ISequence dtor_variants { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Attribute.ToStringMultiple((this).dtor_attributes, ind), Dafny.Sequence.UnicodeFromString("pub enum ")), (this).dtor_name), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_variants, Dafny.Helpers.Id, Func>>>((_789_ind) => ((System.Func>)((_790_variant) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _789_ind), RAST.__default.IND), (_790_variant)._ToString(Dafny.Sequence.Concat(_789_ind, RAST.__default.IND), true)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Attribute.ToStringMultiple((this).dtor_attributes, ind), Dafny.Sequence.UnicodeFromString("pub enum ")), (this).dtor_name), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_variants, Dafny.Helpers.Id, Func>>>((_784_ind) => ((System.Func>)((_785_variant) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _784_ind), RAST.__default.IND), (_785_variant)._ToString(Dafny.Sequence.Concat(_784_ind, RAST.__default.IND), true)); })))(ind), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } @@ -1320,19 +1319,19 @@ public Dafny.ISequence dtor_constraints { if ((new BigInteger((typeParams).Count)).Sign == 0) { return Dafny.Sequence.UnicodeFromString(""); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(typeParams, Dafny.Helpers.Id, Func>>>((_791_ind) => ((System.Func>)((_792_t) => { - return (_792_t)._ToString(Dafny.Sequence.Concat(_791_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(typeParams, Dafny.Helpers.Id, Func>>>((_786_ind) => ((System.Func>)((_787_t) => { + return (_787_t)._ToString(Dafny.Sequence.Concat(_786_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">")); } } public static Dafny.ISequence AddConstraintsMultiple(Dafny.ISequence typeParams, Dafny.ISequence constraints) { - Dafny.ISequence _793___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _788___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((typeParams).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_793___accumulator, Dafny.Sequence.FromElements()); + return Dafny.Sequence.Concat(_788___accumulator, Dafny.Sequence.FromElements()); } else { - _793___accumulator = Dafny.Sequence.Concat(_793___accumulator, Dafny.Sequence.FromElements(((typeParams).Select(BigInteger.Zero)).AddConstraints(constraints))); + _788___accumulator = Dafny.Sequence.Concat(_788___accumulator, Dafny.Sequence.FromElements(((typeParams).Select(BigInteger.Zero)).AddConstraints(constraints))); Dafny.ISequence _in111 = (typeParams).Drop(BigInteger.One); Dafny.ISequence _in112 = constraints; typeParams = _in111; @@ -1341,13 +1340,13 @@ public Dafny.ISequence dtor_constraints { } } public RAST._ITypeParamDecl AddConstraints(Dafny.ISequence constraints) { - RAST._ITypeParamDecl _794_dt__update__tmp_h0 = this; - Dafny.ISequence _795_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((this).dtor_constraints, constraints); - return RAST.TypeParamDecl.create((_794_dt__update__tmp_h0).dtor_content, _795_dt__update_hconstraints_h0); + RAST._ITypeParamDecl _789_dt__update__tmp_h0 = this; + Dafny.ISequence _790_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((this).dtor_constraints, constraints); + return RAST.TypeParamDecl.create((_789_dt__update__tmp_h0).dtor_content, _790_dt__update_hconstraints_h0); } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - return Dafny.Sequence.Concat((this).dtor_content, (((new BigInteger(((this).dtor_constraints).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), RAST.__default.SeqToString((this).dtor_constraints, Dafny.Helpers.Id, Func>>>((_796_ind) => ((System.Func>)((_797_t) => { - return (_797_t)._ToString(Dafny.Sequence.Concat(_796_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat((this).dtor_content, (((new BigInteger(((this).dtor_constraints).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), RAST.__default.SeqToString((this).dtor_constraints, Dafny.Helpers.Id, Func>>>((_791_ind) => ((System.Func>)((_792_t) => { + return (_792_t)._ToString(Dafny.Sequence.Concat(_791_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(" + ")))))); } } @@ -1571,85 +1570,85 @@ public bool CanReadWithoutClone() { } if (unmatched27) { if (_source27.is_TIdentifier) { - Dafny.ISequence _798_underlying = _source27.dtor_name; + Dafny.ISequence _793_underlying = _source27.dtor_name; unmatched27 = false; - return _798_underlying; + return _793_underlying; } } if (unmatched27) { if (_source27.is_TMemberSelect) { - RAST._IType _799_underlying = _source27.dtor_base; - Dafny.ISequence _800_name = _source27.dtor_name; + RAST._IType _794_underlying = _source27.dtor_base; + Dafny.ISequence _795_name = _source27.dtor_name; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_799_underlying)._ToString(_pat_let_tv27), Dafny.Sequence.UnicodeFromString("::")), _800_name); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_794_underlying)._ToString(_pat_let_tv27), Dafny.Sequence.UnicodeFromString("::")), _795_name); } } if (unmatched27) { if (_source27.is_Borrowed) { - RAST._IType _801_underlying = _source27.dtor_underlying; + RAST._IType _796_underlying = _source27.dtor_underlying; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&"), (_801_underlying)._ToString(_pat_let_tv28)); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&"), (_796_underlying)._ToString(_pat_let_tv28)); } } if (unmatched27) { if (_source27.is_BorrowedMut) { - RAST._IType _802_underlying = _source27.dtor_underlying; + RAST._IType _797_underlying = _source27.dtor_underlying; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&mut "), (_802_underlying)._ToString(_pat_let_tv29)); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&mut "), (_797_underlying)._ToString(_pat_let_tv29)); } } if (unmatched27) { if (_source27.is_ImplType) { - RAST._IType _803_underlying = _source27.dtor_underlying; + RAST._IType _798_underlying = _source27.dtor_underlying; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl "), (_803_underlying)._ToString(_pat_let_tv30)); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl "), (_798_underlying)._ToString(_pat_let_tv30)); } } if (unmatched27) { if (_source27.is_DynType) { - RAST._IType _804_underlying = _source27.dtor_underlying; + RAST._IType _799_underlying = _source27.dtor_underlying; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("dyn "), (_804_underlying)._ToString(_pat_let_tv31)); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("dyn "), (_799_underlying)._ToString(_pat_let_tv31)); } } if (unmatched27) { if (_source27.is_FnType) { - Dafny.ISequence _805_arguments = _source27.dtor_arguments; - RAST._IType _806_returnType = _source27.dtor_returnType; + Dafny.ISequence _800_arguments = _source27.dtor_arguments; + RAST._IType _801_returnType = _source27.dtor_returnType; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Fn("), RAST.__default.SeqToString(_805_arguments, Dafny.Helpers.Id, Func>>>((_807_ind) => ((System.Func>)((_808_arg) => { - return (_808_arg)._ToString(Dafny.Sequence.Concat(_807_ind, RAST.__default.IND)); - })))(_pat_let_tv32), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(") -> ")), (_806_returnType)._ToString(Dafny.Sequence.Concat(_pat_let_tv33, RAST.__default.IND))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Fn("), RAST.__default.SeqToString(_800_arguments, Dafny.Helpers.Id, Func>>>((_802_ind) => ((System.Func>)((_803_arg) => { + return (_803_arg)._ToString(Dafny.Sequence.Concat(_802_ind, RAST.__default.IND)); + })))(_pat_let_tv32), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(") -> ")), (_801_returnType)._ToString(Dafny.Sequence.Concat(_pat_let_tv33, RAST.__default.IND))); } } if (unmatched27) { if (_source27.is_IntersectionType) { - RAST._IType _809_left = _source27.dtor_left; - RAST._IType _810_right = _source27.dtor_right; + RAST._IType _804_left = _source27.dtor_left; + RAST._IType _805_right = _source27.dtor_right; unmatched27 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_809_left)._ToString(_pat_let_tv34), Dafny.Sequence.UnicodeFromString(" + ")), (_810_right)._ToString(_pat_let_tv35)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_804_left)._ToString(_pat_let_tv34), Dafny.Sequence.UnicodeFromString(" + ")), (_805_right)._ToString(_pat_let_tv35)); } } if (unmatched27) { if (_source27.is_TupleType) { - Dafny.ISequence _811_args = _source27.dtor_arguments; + Dafny.ISequence _806_args = _source27.dtor_arguments; unmatched27 = false; - if ((_811_args).Equals(Dafny.Sequence.FromElements())) { + if ((_806_args).Equals(Dafny.Sequence.FromElements())) { return Dafny.Sequence.UnicodeFromString("()"); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_811_args, Dafny.Helpers.Id, Func>>>((_812_ind) => ((System.Func>)((_813_arg) => { - return (_813_arg)._ToString(Dafny.Sequence.Concat(_812_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_806_args, Dafny.Helpers.Id, Func>>>((_807_ind) => ((System.Func>)((_808_arg) => { + return (_808_arg)._ToString(Dafny.Sequence.Concat(_807_ind, RAST.__default.IND)); })))(_pat_let_tv36), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(")")); } } } if (unmatched27) { if (_source27.is_TypeApp) { - RAST._IType _814_base = _source27.dtor_baseName; - Dafny.ISequence _815_args = _source27.dtor_arguments; + RAST._IType _809_base = _source27.dtor_baseName; + Dafny.ISequence _810_args = _source27.dtor_arguments; unmatched27 = false; - return Dafny.Sequence.Concat((_814_base)._ToString(_pat_let_tv37), (((_815_args).Equals(Dafny.Sequence.FromElements())) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(_815_args, Dafny.Helpers.Id, Func>>>((_816_ind) => ((System.Func>)((_817_arg) => { - return (_817_arg)._ToString(Dafny.Sequence.Concat(_816_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat((_809_base)._ToString(_pat_let_tv37), (((_810_args).Equals(Dafny.Sequence.FromElements())) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(_810_args, Dafny.Helpers.Id, Func>>>((_811_ind) => ((System.Func>)((_812_arg) => { + return (_812_arg)._ToString(Dafny.Sequence.Concat(_811_ind, RAST.__default.IND)); })))(_pat_let_tv38), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">"))))); } } @@ -1733,22 +1732,22 @@ public RAST._IType ToOwned() { bool unmatched28 = true; if (unmatched28) { if (_source28.is_Borrowed) { - RAST._IType _818_x = _source28.dtor_underlying; + RAST._IType _813_x = _source28.dtor_underlying; unmatched28 = false; - return _818_x; + return _813_x; } } if (unmatched28) { if (_source28.is_BorrowedMut) { - RAST._IType _819_x = _source28.dtor_underlying; + RAST._IType _814_x = _source28.dtor_underlying; unmatched28 = false; - return _819_x; + return _814_x; } } if (unmatched28) { - RAST._IType _820_x = _source28; + RAST._IType _815_x = _source28; unmatched28 = false; - return _820_x; + return _815_x; } throw new System.Exception("unexpected control point"); } @@ -2382,8 +2381,8 @@ public Dafny.ISequence dtor_body { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub trait "), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), ((this).dtor_tpe)._ToString(ind)), ((!((this).dtor_where).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), (this).dtor_where)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_821_ind) => ((System.Func>)((_822_member) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _821_ind), RAST.__default.IND), (_822_member)._ToString(Dafny.Sequence.Concat(_821_ind, RAST.__default.IND))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub trait "), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), ((this).dtor_tpe)._ToString(ind)), ((!((this).dtor_where).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), (this).dtor_where)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_816_ind) => ((System.Func>)((_817_member) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _816_ind), RAST.__default.IND), (_817_member)._ToString(Dafny.Sequence.Concat(_816_ind, RAST.__default.IND))); })))(ind), Dafny.Sequence.UnicodeFromString(""))), (((new BigInteger(((this).dtor_body).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)))), Dafny.Sequence.UnicodeFromString("}")); } } @@ -2454,8 +2453,8 @@ public Dafny.ISequence dtor_body { } public abstract _IImpl DowncastClone(); public Dafny.ISequence _ToString(Dafny.ISequence ind) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl"), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString(" ")), ((this).dtor_tpe)._ToString(ind)), (((this).is_ImplFor) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), Dafny.Sequence.UnicodeFromString("for ")), ((this).dtor_forType)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), ((!((this).dtor_where).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), (this).dtor_where)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_823_ind) => ((System.Func>)((_824_member) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _823_ind), RAST.__default.IND), (_824_member)._ToString(Dafny.Sequence.Concat(_823_ind, RAST.__default.IND))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl"), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString(" ")), ((this).dtor_tpe)._ToString(ind)), (((this).is_ImplFor) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), Dafny.Sequence.UnicodeFromString("for ")), ((this).dtor_forType)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), ((!((this).dtor_where).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), (this).dtor_where)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_818_ind) => ((System.Func>)((_819_member) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _818_ind), RAST.__default.IND), (_819_member)._ToString(Dafny.Sequence.Concat(_818_ind, RAST.__default.IND))); })))(ind), Dafny.Sequence.UnicodeFromString(""))), (((new BigInteger(((this).dtor_body).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)))), Dafny.Sequence.UnicodeFromString("}")); } } @@ -2950,9 +2949,9 @@ public RAST._IExpr dtor_rhs { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - Dafny.ISequence _825_newIndent = ((((this).dtor_rhs).is_Block) ? (ind) : (Dafny.Sequence.Concat(ind, RAST.__default.IND))); - Dafny.ISequence _826_rhsString = ((this).dtor_rhs)._ToString(_825_newIndent); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Pattern._ToString((this).dtor_pattern, ind), Dafny.Sequence.UnicodeFromString(" =>")), ((((_826_rhsString).Contains(new Dafny.Rune('\n'))) && (((_826_rhsString).Select(BigInteger.Zero)) != (new Dafny.Rune('{')))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), _826_rhsString)) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _826_rhsString)))); + Dafny.ISequence _820_newIndent = ((((this).dtor_rhs).is_Block) ? (ind) : (Dafny.Sequence.Concat(ind, RAST.__default.IND))); + Dafny.ISequence _821_rhsString = ((this).dtor_rhs)._ToString(_820_newIndent); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Pattern._ToString((this).dtor_pattern, ind), Dafny.Sequence.UnicodeFromString(" =>")), ((((_821_rhsString).Contains(new Dafny.Rune('\n'))) && (((_821_rhsString).Select(BigInteger.Zero)) != (new Dafny.Rune('{')))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), _821_rhsString)) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _821_rhsString)))); } } @@ -4058,14 +4057,14 @@ public RAST._IExpr Optimize() { if (underlying0.is_Call) { RAST._IExpr obj0 = underlying0.dtor_obj; if (obj0.is_Select) { - RAST._IExpr _827_underlying = obj0.dtor_obj; + RAST._IExpr _822_underlying = obj0.dtor_obj; Dafny.ISequence name4 = obj0.dtor_name; if (object.Equals(name4, Dafny.Sequence.UnicodeFromString("clone"))) { - Dafny.ISequence _828_args = underlying0.dtor_arguments; - DAST.Format._IUnaryOpFormat _829_format = _source29.dtor_format; + Dafny.ISequence _823_args = underlying0.dtor_arguments; + DAST.Format._IUnaryOpFormat _824_format = _source29.dtor_format; unmatched29 = false; - if ((_828_args).Equals(Dafny.Sequence.FromElements())) { - return RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _827_underlying, _829_format); + if ((_823_args).Equals(Dafny.Sequence.FromElements())) { + return RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _822_underlying, _824_format); } else { return this; } @@ -4083,13 +4082,13 @@ public RAST._IExpr Optimize() { if (underlying1.is_BinaryOp) { Dafny.ISequence op20 = underlying1.dtor_op2; if (object.Equals(op20, Dafny.Sequence.UnicodeFromString("=="))) { - RAST._IExpr _830_left = underlying1.dtor_left; - RAST._IExpr _831_right = underlying1.dtor_right; - DAST.Format._IBinaryOpFormat _832_format = underlying1.dtor_format2; + RAST._IExpr _825_left = underlying1.dtor_left; + RAST._IExpr _826_right = underlying1.dtor_right; + DAST.Format._IBinaryOpFormat _827_format = underlying1.dtor_format2; DAST.Format._IUnaryOpFormat format0 = _source29.dtor_format; if (format0.is_CombineFormat) { unmatched29 = false; - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _830_left, _831_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _825_left, _826_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -4104,14 +4103,14 @@ public RAST._IExpr Optimize() { if (underlying2.is_BinaryOp) { Dafny.ISequence op21 = underlying2.dtor_op2; if (object.Equals(op21, Dafny.Sequence.UnicodeFromString("<"))) { - RAST._IExpr _833_left = underlying2.dtor_left; - RAST._IExpr _834_right = underlying2.dtor_right; + RAST._IExpr _828_left = underlying2.dtor_left; + RAST._IExpr _829_right = underlying2.dtor_right; DAST.Format._IBinaryOpFormat format20 = underlying2.dtor_format2; if (format20.is_NoFormat) { DAST.Format._IUnaryOpFormat format1 = _source29.dtor_format; if (format1.is_CombineFormat) { unmatched29 = false; - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _833_left, _834_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _828_left, _829_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -4127,14 +4126,14 @@ public RAST._IExpr Optimize() { if (underlying3.is_BinaryOp) { Dafny.ISequence op22 = underlying3.dtor_op2; if (object.Equals(op22, Dafny.Sequence.UnicodeFromString("<"))) { - RAST._IExpr _835_left = underlying3.dtor_left; - RAST._IExpr _836_right = underlying3.dtor_right; + RAST._IExpr _830_left = underlying3.dtor_left; + RAST._IExpr _831_right = underlying3.dtor_right; DAST.Format._IBinaryOpFormat format21 = underlying3.dtor_format2; if (format21.is_ReverseFormat) { DAST.Format._IUnaryOpFormat format2 = _source29.dtor_format; if (format2.is_CombineFormat) { unmatched29 = false; - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _836_right, _835_left, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _831_right, _830_left, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -4146,53 +4145,50 @@ public RAST._IExpr Optimize() { if (_source29.is_Call) { RAST._IExpr obj1 = _source29.dtor_obj; if (obj1.is_MemberSelect) { - RAST._IExpr _837_r = obj1.dtor_obj; + RAST._IExpr _832_r = obj1.dtor_obj; Dafny.ISequence name5 = obj1.dtor_name; if (object.Equals(name5, Dafny.Sequence.UnicodeFromString("truncate!"))) { - Dafny.ISequence _838_args = _source29.dtor_arguments; + Dafny.ISequence _833_args = _source29.dtor_arguments; unmatched29 = false; - if (((!object.Equals(_837_r, RAST.__default.dafny__runtime)) && (!object.Equals(_837_r, RAST.__default.@global))) || ((new BigInteger((_838_args).Count)) != (new BigInteger(2)))) { + if (((!object.Equals(_832_r, RAST.__default.dafny__runtime)) && (!object.Equals(_832_r, RAST.__default.@global))) || ((new BigInteger((_833_args).Count)) != (new BigInteger(2)))) { return this; } else { - RAST._IExpr _839_expr = (_838_args).Select(BigInteger.Zero); - RAST._IExpr _840_tpeExpr = (_838_args).Select(BigInteger.One); - if (!((_840_tpeExpr).is_ExprFromType)) { + RAST._IExpr _834_expr = (_833_args).Select(BigInteger.Zero); + RAST._IExpr _835_tpeExpr = (_833_args).Select(BigInteger.One); + if (!((_835_tpeExpr).is_ExprFromType)) { return this; } else { - RAST._IType _841_tpe = (_840_tpeExpr).dtor_tpe; - if (((((((((((_841_tpe).is_U8) || ((_841_tpe).is_U16)) || ((_841_tpe).is_U32)) || ((_841_tpe).is_U64)) || ((_841_tpe).is_U128)) || ((_841_tpe).is_I8)) || ((_841_tpe).is_I16)) || ((_841_tpe).is_I32)) || ((_841_tpe).is_I64)) || ((_841_tpe).is_I128)) { - RAST._IExpr _source30 = _839_expr; + RAST._IType _836_tpe = (_835_tpeExpr).dtor_tpe; + if (((((((((((_836_tpe).is_U8) || ((_836_tpe).is_U16)) || ((_836_tpe).is_U32)) || ((_836_tpe).is_U64)) || ((_836_tpe).is_U128)) || ((_836_tpe).is_I8)) || ((_836_tpe).is_I16)) || ((_836_tpe).is_I32)) || ((_836_tpe).is_I64)) || ((_836_tpe).is_I128)) { + RAST._IExpr _source30 = _834_expr; bool unmatched30 = true; if (unmatched30) { if (_source30.is_Call) { RAST._IExpr obj2 = _source30.dtor_obj; if (obj2.is_MemberSelect) { - RAST._IExpr _842_base = obj2.dtor_obj; + RAST._IExpr _837_base = obj2.dtor_obj; Dafny.ISequence name6 = obj2.dtor_name; if (object.Equals(name6, Dafny.Sequence.UnicodeFromString("int!"))) { - Dafny.ISequence _843_args = _source30.dtor_arguments; + Dafny.ISequence _838_args = _source30.dtor_arguments; unmatched30 = false; - if (((new BigInteger((_843_args).Count)) == (BigInteger.One)) && ((object.Equals(_842_base, RAST.__default.dafny__runtime)) || (object.Equals(_842_base, RAST.__default.@global)))) { - RAST._IExpr _source31 = (_843_args).Select(BigInteger.Zero); + if (((new BigInteger((_838_args).Count)) == (BigInteger.One)) && ((object.Equals(_837_base, RAST.__default.dafny__runtime)) || (object.Equals(_837_base, RAST.__default.@global)))) { + RAST._IExpr _source31 = (_838_args).Select(BigInteger.Zero); bool unmatched31 = true; if (unmatched31) { if (_source31.is_LiteralInt) { - Dafny.ISequence _844_number = _source31.dtor_value; + Dafny.ISequence _839_number = _source31.dtor_value; unmatched31 = false; - return RAST.Expr.create_LiteralInt(_844_number); + return RAST.Expr.create_LiteralInt(_839_number); } } if (unmatched31) { if (_source31.is_LiteralString) { - Dafny.ISequence _845_number = _source31.dtor_value; - bool _846___v33 = _source31.dtor_binary; - bool _847___v34 = _source31.dtor_verbatim; + Dafny.ISequence _840_number = _source31.dtor_value; unmatched31 = false; - return RAST.Expr.create_LiteralInt(_845_number); + return RAST.Expr.create_LiteralInt(_840_number); } } if (unmatched31) { - RAST._IExpr _848___v35 = _source31; unmatched31 = false; return this; } @@ -4205,7 +4201,6 @@ public RAST._IExpr Optimize() { } } if (unmatched30) { - RAST._IExpr _849___v36 = _source30; unmatched30 = false; return this; } @@ -4223,24 +4218,24 @@ public RAST._IExpr Optimize() { if (_source29.is_StmtExpr) { RAST._IExpr stmt0 = _source29.dtor_stmt; if (stmt0.is_DeclareVar) { - RAST._IDeclareType _850_mod = stmt0.dtor_declareType; - Dafny.ISequence _851_name = stmt0.dtor_name; + RAST._IDeclareType _841_mod = stmt0.dtor_declareType; + Dafny.ISequence _842_name = stmt0.dtor_name; Std.Wrappers._IOption optType0 = stmt0.dtor_optType; if (optType0.is_Some) { - RAST._IType _852_tpe = optType0.dtor_value; + RAST._IType _843_tpe = optType0.dtor_value; Std.Wrappers._IOption optRhs0 = stmt0.dtor_optRhs; if (optRhs0.is_None) { RAST._IExpr rhs0 = _source29.dtor_rhs; if (rhs0.is_StmtExpr) { RAST._IExpr stmt1 = rhs0.dtor_stmt; if (stmt1.is_Assign) { - Std.Wrappers._IOption _853_name2 = stmt1.dtor_names; - RAST._IExpr _854_rhs = stmt1.dtor_rhs; - RAST._IExpr _855_last = rhs0.dtor_rhs; + Std.Wrappers._IOption _844_name2 = stmt1.dtor_names; + RAST._IExpr _845_rhs = stmt1.dtor_rhs; + RAST._IExpr _846_last = rhs0.dtor_rhs; unmatched29 = false; - if (object.Equals(_853_name2, Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_LocalVar(_851_name)))) { - RAST._IExpr _856_rewriting = RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(_850_mod, _851_name, Std.Wrappers.Option.create_Some(_852_tpe), Std.Wrappers.Option.create_Some(_854_rhs)), _855_last); - return _856_rewriting; + if (object.Equals(_844_name2, Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_LocalVar(_842_name)))) { + RAST._IExpr _847_rewriting = RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(_841_mod, _842_name, Std.Wrappers.Option.create_Some(_843_tpe), Std.Wrappers.Option.create_Some(_845_rhs)), _846_last); + return _847_rewriting; } else { return this; } @@ -4263,10 +4258,10 @@ public RAST._IExpr Optimize() { if (underlying4.is_BinaryOp) { Dafny.ISequence op23 = underlying4.dtor_op2; if (object.Equals(op23, Dafny.Sequence.UnicodeFromString("=="))) { - RAST._IExpr _857_a = underlying4.dtor_left; - RAST._IExpr _858_b = underlying4.dtor_right; - DAST.Format._IBinaryOpFormat _859_f = underlying4.dtor_format2; - DAST.Format._IUnaryOpFormat _860_of = cond0.dtor_format; + RAST._IExpr _848_a = underlying4.dtor_left; + RAST._IExpr _849_b = underlying4.dtor_right; + DAST.Format._IBinaryOpFormat _850_f = underlying4.dtor_format2; + DAST.Format._IUnaryOpFormat _851_of = cond0.dtor_format; RAST._IExpr thn0 = stmt2.dtor_thn; if (thn0.is_RawExpr) { Dafny.ISequence content0 = thn0.dtor_content; @@ -4275,10 +4270,10 @@ public RAST._IExpr Optimize() { if (els0.is_RawExpr) { Dafny.ISequence content1 = els0.dtor_content; if (object.Equals(content1, Dafny.Sequence.UnicodeFromString(""))) { - RAST._IExpr _861_last = _source29.dtor_rhs; + RAST._IExpr _852_last = _source29.dtor_rhs; unmatched29 = false; - RAST._IExpr _862_rewriting = RAST.Expr.create_StmtExpr((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("assert_eq!"))).Apply(Dafny.Sequence.FromElements(_857_a, _858_b)), _861_last); - return _862_rewriting; + RAST._IExpr _853_rewriting = RAST.Expr.create_StmtExpr((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("assert_eq!"))).Apply(Dafny.Sequence.FromElements(_848_a, _849_b)), _852_last); + return _853_rewriting; } } } @@ -4291,7 +4286,6 @@ public RAST._IExpr Optimize() { } } if (unmatched29) { - RAST._IExpr _863___v37 = _source29; unmatched29 = false; return this; } @@ -4322,14 +4316,12 @@ public bool RightRequiresParentheses(RAST._IExpr right) { bool unmatched32 = true; if (unmatched32) { if (_source32.is_MemberSelect) { - RAST._IExpr _864___v38 = _source32.dtor_obj; - Dafny.ISequence _865_id = _source32.dtor_name; + Dafny.ISequence _854_id = _source32.dtor_name; unmatched32 = false; - return Std.Wrappers.Option>.create_Some(_865_id); + return Std.Wrappers.Option>.create_Some(_854_id); } } if (unmatched32) { - RAST._IExpr _866___v39 = _source32; unmatched32 = false; return Std.Wrappers.Option>.create_None(); } @@ -4363,17 +4355,17 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } public static Dafny.ISequence RemoveDoubleQuotes(Dafny.ISequence s) { - Dafny.ISequence _867___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _855___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((s).Count)) <= (BigInteger.One)) { - return Dafny.Sequence.Concat(_867___accumulator, s); + return Dafny.Sequence.Concat(_855___accumulator, s); } else if (((s).Subsequence(BigInteger.Zero, new BigInteger(2))).Equals(Dafny.Sequence.UnicodeFromString(@""""""))) { - _867___accumulator = Dafny.Sequence.Concat(_867___accumulator, Dafny.Sequence.UnicodeFromString(@"""")); + _855___accumulator = Dafny.Sequence.Concat(_855___accumulator, Dafny.Sequence.UnicodeFromString(@"""")); Dafny.ISequence _in119 = (s).Drop(new BigInteger(2)); s = _in119; goto TAIL_CALL_START; } else { - _867___accumulator = Dafny.Sequence.Concat(_867___accumulator, (s).Subsequence(BigInteger.Zero, BigInteger.One)); + _855___accumulator = Dafny.Sequence.Concat(_855___accumulator, (s).Subsequence(BigInteger.Zero, BigInteger.One)); Dafny.ISequence _in120 = (s).Drop(BigInteger.One); s = _in120; goto TAIL_CALL_START; @@ -4442,30 +4434,30 @@ public bool RightRequiresParentheses(RAST._IExpr right) { bool unmatched33 = true; if (unmatched33) { if (_source33.is_Identifier) { - Dafny.ISequence _868_name = _source33.dtor_name; + Dafny.ISequence _856_name = _source33.dtor_name; unmatched33 = false; - return _868_name; + return _856_name; } } if (unmatched33) { if (_source33.is_ExprFromType) { - RAST._IType _869_t = _source33.dtor_tpe; + RAST._IType _857_t = _source33.dtor_tpe; unmatched33 = false; - return (_869_t)._ToString(_pat_let_tv39); + return (_857_t)._ToString(_pat_let_tv39); } } if (unmatched33) { if (_source33.is_LiteralInt) { - Dafny.ISequence _870_number = _source33.dtor_value; + Dafny.ISequence _858_number = _source33.dtor_value; unmatched33 = false; - return _870_number; + return _858_number; } } if (unmatched33) { if (_source33.is_LiteralBool) { - bool _871_b = _source33.dtor_bvalue; + bool _859_b = _source33.dtor_bvalue; unmatched33 = false; - if (_871_b) { + if (_859_b) { return Dafny.Sequence.UnicodeFromString("true"); } else { return Dafny.Sequence.UnicodeFromString("false"); @@ -4474,146 +4466,146 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } if (unmatched33) { if (_source33.is_LiteralString) { - Dafny.ISequence _872_characters = _source33.dtor_value; - bool _873_binary = _source33.dtor_binary; - bool _874_verbatim = _source33.dtor_verbatim; + Dafny.ISequence _860_characters = _source33.dtor_value; + bool _861_binary = _source33.dtor_binary; + bool _862_verbatim = _source33.dtor_verbatim; unmatched33 = false; - Dafny.ISequence _875_hashes = ((_874_verbatim) ? (Dafny.Sequence.Concat(RAST.Expr.MaxHashes(_872_characters, Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.UnicodeFromString("")), Dafny.Sequence.UnicodeFromString("#"))) : (Dafny.Sequence.UnicodeFromString(""))); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(((_873_binary) ? (Dafny.Sequence.UnicodeFromString("b")) : (Dafny.Sequence.UnicodeFromString(""))), ((_874_verbatim) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r"), _875_hashes)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("\"")), ((_874_verbatim) ? (RAST.Expr.RemoveDoubleQuotes(_872_characters)) : (_872_characters))), Dafny.Sequence.UnicodeFromString("\"")), _875_hashes); + Dafny.ISequence _863_hashes = ((_862_verbatim) ? (Dafny.Sequence.Concat(RAST.Expr.MaxHashes(_860_characters, Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.UnicodeFromString("")), Dafny.Sequence.UnicodeFromString("#"))) : (Dafny.Sequence.UnicodeFromString(""))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(((_861_binary) ? (Dafny.Sequence.UnicodeFromString("b")) : (Dafny.Sequence.UnicodeFromString(""))), ((_862_verbatim) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r"), _863_hashes)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("\"")), ((_862_verbatim) ? (RAST.Expr.RemoveDoubleQuotes(_860_characters)) : (_860_characters))), Dafny.Sequence.UnicodeFromString("\"")), _863_hashes); } } if (unmatched33) { if (_source33.is_Match) { - RAST._IExpr _876_matchee = _source33.dtor_matchee; - Dafny.ISequence _877_cases = _source33.dtor_cases; + RAST._IExpr _864_matchee = _source33.dtor_matchee; + Dafny.ISequence _865_cases = _source33.dtor_cases; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("match "), (_876_matchee)._ToString(Dafny.Sequence.Concat(_pat_let_tv40, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_877_cases, Dafny.Helpers.Id, Func>>>((_878_ind) => ((System.Func>)((_879_c) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _878_ind), RAST.__default.IND), (_879_c)._ToString(Dafny.Sequence.Concat(_878_ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(",")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("match "), (_864_matchee)._ToString(Dafny.Sequence.Concat(_pat_let_tv40, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_865_cases, Dafny.Helpers.Id, Func>>>((_866_ind) => ((System.Func>)((_867_c) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _866_ind), RAST.__default.IND), (_867_c)._ToString(Dafny.Sequence.Concat(_866_ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(",")); })))(_pat_let_tv41), Dafny.Sequence.UnicodeFromString(""))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv42), Dafny.Sequence.UnicodeFromString("}")); } } if (unmatched33) { if (_source33.is_StmtExpr) { - RAST._IExpr _880_stmt = _source33.dtor_stmt; - RAST._IExpr _881_rhs = _source33.dtor_rhs; + RAST._IExpr _868_stmt = _source33.dtor_stmt; + RAST._IExpr _869_rhs = _source33.dtor_rhs; unmatched33 = false; - if (((_880_stmt).is_RawExpr) && (((_880_stmt).dtor_content).Equals(Dafny.Sequence.UnicodeFromString("")))) { - return (_881_rhs)._ToString(_pat_let_tv43); + if (((_868_stmt).is_RawExpr) && (((_868_stmt).dtor_content).Equals(Dafny.Sequence.UnicodeFromString("")))) { + return (_869_rhs)._ToString(_pat_let_tv43); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_880_stmt)._ToString(_pat_let_tv44), (((_880_stmt).NoExtraSemicolonAfter()) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.UnicodeFromString(";")))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv45), (_881_rhs)._ToString(_pat_let_tv46)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_868_stmt)._ToString(_pat_let_tv44), (((_868_stmt).NoExtraSemicolonAfter()) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.UnicodeFromString(";")))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv45), (_869_rhs)._ToString(_pat_let_tv46)); } } } if (unmatched33) { if (_source33.is_Block) { - RAST._IExpr _882_underlying = _source33.dtor_underlying; + RAST._IExpr _870_underlying = _source33.dtor_underlying; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\n"), _pat_let_tv47), RAST.__default.IND), (_882_underlying)._ToString(Dafny.Sequence.Concat(_pat_let_tv48, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv49), Dafny.Sequence.UnicodeFromString("}")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\n"), _pat_let_tv47), RAST.__default.IND), (_870_underlying)._ToString(Dafny.Sequence.Concat(_pat_let_tv48, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv49), Dafny.Sequence.UnicodeFromString("}")); } } if (unmatched33) { if (_source33.is_IfExpr) { - RAST._IExpr _883_cond = _source33.dtor_cond; - RAST._IExpr _884_thn = _source33.dtor_thn; - RAST._IExpr _885_els = _source33.dtor_els; + RAST._IExpr _871_cond = _source33.dtor_cond; + RAST._IExpr _872_thn = _source33.dtor_thn; + RAST._IExpr _873_els = _source33.dtor_els; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("if "), (_883_cond)._ToString(Dafny.Sequence.Concat(_pat_let_tv50, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv51), RAST.__default.IND), (_884_thn)._ToString(Dafny.Sequence.Concat(_pat_let_tv52, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv53), Dafny.Sequence.UnicodeFromString("}")), ((object.Equals(_885_els, RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")))) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" else {\n"), _pat_let_tv54), RAST.__default.IND), (_885_els)._ToString(Dafny.Sequence.Concat(_pat_let_tv55, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv56), Dafny.Sequence.UnicodeFromString("}"))))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("if "), (_871_cond)._ToString(Dafny.Sequence.Concat(_pat_let_tv50, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv51), RAST.__default.IND), (_872_thn)._ToString(Dafny.Sequence.Concat(_pat_let_tv52, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv53), Dafny.Sequence.UnicodeFromString("}")), ((object.Equals(_873_els, RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")))) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" else {\n"), _pat_let_tv54), RAST.__default.IND), (_873_els)._ToString(Dafny.Sequence.Concat(_pat_let_tv55, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv56), Dafny.Sequence.UnicodeFromString("}"))))); } } if (unmatched33) { if (_source33.is_StructBuild) { - RAST._IExpr _886_name = _source33.dtor_underlying; - Dafny.ISequence _887_assignments = _source33.dtor_assignments; + RAST._IExpr _874_name = _source33.dtor_underlying; + Dafny.ISequence _875_assignments = _source33.dtor_assignments; unmatched33 = false; - if (((new BigInteger((_887_assignments).Count)).Sign == 1) && ((((_887_assignments).Select(BigInteger.Zero)).dtor_identifier).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_886_name)._ToString(_pat_let_tv57), Dafny.Sequence.UnicodeFromString(" (")), RAST.__default.SeqToString(_887_assignments, Dafny.Helpers.Id, Func>>>((_888_ind) => ((System.Func>)((_889_assignment) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _888_ind), RAST.__default.IND), ((_889_assignment).dtor_rhs)._ToString(Dafny.Sequence.Concat(_888_ind, RAST.__default.IND))); - })))(_pat_let_tv58), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_887_assignments).Count)) > (BigInteger.One)) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv59)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); + if (((new BigInteger((_875_assignments).Count)).Sign == 1) && ((((_875_assignments).Select(BigInteger.Zero)).dtor_identifier).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_874_name)._ToString(_pat_let_tv57), Dafny.Sequence.UnicodeFromString(" (")), RAST.__default.SeqToString(_875_assignments, Dafny.Helpers.Id, Func>>>((_876_ind) => ((System.Func>)((_877_assignment) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _876_ind), RAST.__default.IND), ((_877_assignment).dtor_rhs)._ToString(Dafny.Sequence.Concat(_876_ind, RAST.__default.IND))); + })))(_pat_let_tv58), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_875_assignments).Count)) > (BigInteger.One)) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv59)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_886_name)._ToString(_pat_let_tv60), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_887_assignments, Dafny.Helpers.Id, Func>>>((_890_ind) => ((System.Func>)((_891_assignment) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _890_ind), RAST.__default.IND), (_891_assignment)._ToString(Dafny.Sequence.Concat(_890_ind, RAST.__default.IND))); - })))(_pat_let_tv61), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_887_assignments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv62)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("}")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_874_name)._ToString(_pat_let_tv60), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_875_assignments, Dafny.Helpers.Id, Func>>>((_878_ind) => ((System.Func>)((_879_assignment) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _878_ind), RAST.__default.IND), (_879_assignment)._ToString(Dafny.Sequence.Concat(_878_ind, RAST.__default.IND))); + })))(_pat_let_tv61), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_875_assignments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv62)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("}")); } } } if (unmatched33) { if (_source33.is_Tuple) { - Dafny.ISequence _892_arguments = _source33.dtor_arguments; + Dafny.ISequence _880_arguments = _source33.dtor_arguments; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_892_arguments, Dafny.Helpers.Id, Func>>>((_893_ind) => ((System.Func>)((_894_arg) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _893_ind), RAST.__default.IND), (_894_arg)._ToString(Dafny.Sequence.Concat(_893_ind, RAST.__default.IND))); - })))(_pat_let_tv63), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_892_arguments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv64)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_880_arguments, Dafny.Helpers.Id, Func>>>((_881_ind) => ((System.Func>)((_882_arg) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _881_ind), RAST.__default.IND), (_882_arg)._ToString(Dafny.Sequence.Concat(_881_ind, RAST.__default.IND))); + })))(_pat_let_tv63), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_880_arguments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _pat_let_tv64)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); } } if (unmatched33) { if (_source33.is_UnaryOp) { - Dafny.ISequence _895_op = _source33.dtor_op1; - RAST._IExpr _896_underlying = _source33.dtor_underlying; - DAST.Format._IUnaryOpFormat _897_format = _source33.dtor_format; + Dafny.ISequence _883_op = _source33.dtor_op1; + RAST._IExpr _884_underlying = _source33.dtor_underlying; + DAST.Format._IUnaryOpFormat _885_format = _source33.dtor_format; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs41 = ((((this).printingInfo).NeedParenthesesFor((_896_underlying).printingInfo)) ? (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("("), Dafny.Sequence.UnicodeFromString(")"))) : (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.UnicodeFromString("")))); - Dafny.ISequence _898_leftP = _let_tmp_rhs41.dtor__0; - Dafny.ISequence _899_rightP = _let_tmp_rhs41.dtor__1; - Dafny.ISequence _900_leftOp = ((((_895_op).Equals(Dafny.Sequence.UnicodeFromString("&mut"))) && (!(_898_leftP).Equals(Dafny.Sequence.UnicodeFromString("(")))) ? (Dafny.Sequence.Concat(_895_op, Dafny.Sequence.UnicodeFromString(" "))) : ((((_895_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (Dafny.Sequence.UnicodeFromString("")) : (_895_op)))); - Dafny.ISequence _901_rightOp = (((_895_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (_895_op) : (Dafny.Sequence.UnicodeFromString(""))); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_900_leftOp, _898_leftP), (_896_underlying)._ToString(_pat_let_tv65)), _899_rightP), _901_rightOp); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs41 = ((((this).printingInfo).NeedParenthesesFor((_884_underlying).printingInfo)) ? (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("("), Dafny.Sequence.UnicodeFromString(")"))) : (_System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.UnicodeFromString("")))); + Dafny.ISequence _886_leftP = _let_tmp_rhs41.dtor__0; + Dafny.ISequence _887_rightP = _let_tmp_rhs41.dtor__1; + Dafny.ISequence _888_leftOp = ((((_883_op).Equals(Dafny.Sequence.UnicodeFromString("&mut"))) && (!(_886_leftP).Equals(Dafny.Sequence.UnicodeFromString("(")))) ? (Dafny.Sequence.Concat(_883_op, Dafny.Sequence.UnicodeFromString(" "))) : ((((_883_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (Dafny.Sequence.UnicodeFromString("")) : (_883_op)))); + Dafny.ISequence _889_rightOp = (((_883_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (_883_op) : (Dafny.Sequence.UnicodeFromString(""))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_888_leftOp, _886_leftP), (_884_underlying)._ToString(_pat_let_tv65)), _887_rightP), _889_rightOp); } } if (unmatched33) { if (_source33.is_TypeAscription) { - RAST._IExpr _902_left = _source33.dtor_left; - RAST._IType _903_tpe = _source33.dtor_tpe; + RAST._IExpr _890_left = _source33.dtor_left; + RAST._IType _891_tpe = _source33.dtor_tpe; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs42 = (this).LeftParentheses(_902_left); - Dafny.ISequence _904_leftLeftP = _let_tmp_rhs42.dtor__0; - Dafny.ISequence _905_leftRightP = _let_tmp_rhs42.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_904_leftLeftP, (_902_left)._ToString(RAST.__default.IND)), _905_leftRightP), Dafny.Sequence.UnicodeFromString(" as ")), (_903_tpe)._ToString(RAST.__default.IND)); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs42 = (this).LeftParentheses(_890_left); + Dafny.ISequence _892_leftLeftP = _let_tmp_rhs42.dtor__0; + Dafny.ISequence _893_leftRightP = _let_tmp_rhs42.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_892_leftLeftP, (_890_left)._ToString(RAST.__default.IND)), _893_leftRightP), Dafny.Sequence.UnicodeFromString(" as ")), (_891_tpe)._ToString(RAST.__default.IND)); } } if (unmatched33) { if (_source33.is_BinaryOp) { - Dafny.ISequence _906_op2 = _source33.dtor_op2; - RAST._IExpr _907_left = _source33.dtor_left; - RAST._IExpr _908_right = _source33.dtor_right; - DAST.Format._IBinaryOpFormat _909_format = _source33.dtor_format2; + Dafny.ISequence _894_op2 = _source33.dtor_op2; + RAST._IExpr _895_left = _source33.dtor_left; + RAST._IExpr _896_right = _source33.dtor_right; + DAST.Format._IBinaryOpFormat _897_format = _source33.dtor_format2; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs43 = (this).LeftParentheses(_907_left); - Dafny.ISequence _910_leftLeftP = _let_tmp_rhs43.dtor__0; - Dafny.ISequence _911_leftRighP = _let_tmp_rhs43.dtor__1; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs44 = (this).RightParentheses(_908_right); - Dafny.ISequence _912_rightLeftP = _let_tmp_rhs44.dtor__0; - Dafny.ISequence _913_rightRightP = _let_tmp_rhs44.dtor__1; - Dafny.ISequence _914_opRendered = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _906_op2), Dafny.Sequence.UnicodeFromString(" ")); - Dafny.ISequence _915_indLeft = (((_910_leftLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(_pat_let_tv66, RAST.__default.IND)) : (_pat_let_tv67)); - Dafny.ISequence _916_indRight = (((_912_rightLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(_pat_let_tv68, RAST.__default.IND)) : (_pat_let_tv69)); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_910_leftLeftP, (_907_left)._ToString(_915_indLeft)), _911_leftRighP), _914_opRendered), _912_rightLeftP), (_908_right)._ToString(_916_indRight)), _913_rightRightP); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs43 = (this).LeftParentheses(_895_left); + Dafny.ISequence _898_leftLeftP = _let_tmp_rhs43.dtor__0; + Dafny.ISequence _899_leftRighP = _let_tmp_rhs43.dtor__1; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs44 = (this).RightParentheses(_896_right); + Dafny.ISequence _900_rightLeftP = _let_tmp_rhs44.dtor__0; + Dafny.ISequence _901_rightRightP = _let_tmp_rhs44.dtor__1; + Dafny.ISequence _902_opRendered = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _894_op2), Dafny.Sequence.UnicodeFromString(" ")); + Dafny.ISequence _903_indLeft = (((_898_leftLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(_pat_let_tv66, RAST.__default.IND)) : (_pat_let_tv67)); + Dafny.ISequence _904_indRight = (((_900_rightLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(_pat_let_tv68, RAST.__default.IND)) : (_pat_let_tv69)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_898_leftLeftP, (_895_left)._ToString(_903_indLeft)), _899_leftRighP), _902_opRendered), _900_rightLeftP), (_896_right)._ToString(_904_indRight)), _901_rightRightP); } } if (unmatched33) { if (_source33.is_DeclareVar) { - RAST._IDeclareType _917_declareType = _source33.dtor_declareType; - Dafny.ISequence _918_name = _source33.dtor_name; - Std.Wrappers._IOption _919_optType = _source33.dtor_optType; - Std.Wrappers._IOption _920_optExpr = _source33.dtor_optRhs; + RAST._IDeclareType _905_declareType = _source33.dtor_declareType; + Dafny.ISequence _906_name = _source33.dtor_name; + Std.Wrappers._IOption _907_optType = _source33.dtor_optType; + Std.Wrappers._IOption _908_optExpr = _source33.dtor_optRhs; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("let "), ((object.Equals(_917_declareType, RAST.DeclareType.create_MUT())) ? (Dafny.Sequence.UnicodeFromString("mut ")) : (Dafny.Sequence.UnicodeFromString("")))), _918_name), (((_919_optType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), ((_919_optType).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv70, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), (((_920_optExpr).is_Some) ? (Dafny.Helpers.Let, Dafny.ISequence>(((_920_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv71, RAST.__default.IND)), _pat_let5_0 => Dafny.Helpers.Let, Dafny.ISequence>(_pat_let5_0, _921_optExprString => (((_921_optExprString).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("= /*issue with empty RHS*/"), ((((_920_optExpr).dtor_value).is_RawExpr) ? (Dafny.Sequence.UnicodeFromString("Empty Raw expr")) : (((((_920_optExpr).dtor_value).is_LiteralString) ? (Dafny.Sequence.UnicodeFromString("Empty string literal")) : (((((_920_optExpr).dtor_value).is_LiteralInt) ? (Dafny.Sequence.UnicodeFromString("Empty int literal")) : (Dafny.Sequence.UnicodeFromString("Another case"))))))))) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" = "), _921_optExprString)))))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("let "), ((object.Equals(_905_declareType, RAST.DeclareType.create_MUT())) ? (Dafny.Sequence.UnicodeFromString("mut ")) : (Dafny.Sequence.UnicodeFromString("")))), _906_name), (((_907_optType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), ((_907_optType).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv70, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), (((_908_optExpr).is_Some) ? (Dafny.Helpers.Let, Dafny.ISequence>(((_908_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv71, RAST.__default.IND)), _pat_let5_0 => Dafny.Helpers.Let, Dafny.ISequence>(_pat_let5_0, _909_optExprString => (((_909_optExprString).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("= /*issue with empty RHS*/"), ((((_908_optExpr).dtor_value).is_RawExpr) ? (Dafny.Sequence.UnicodeFromString("Empty Raw expr")) : (((((_908_optExpr).dtor_value).is_LiteralString) ? (Dafny.Sequence.UnicodeFromString("Empty string literal")) : (((((_908_optExpr).dtor_value).is_LiteralInt) ? (Dafny.Sequence.UnicodeFromString("Empty int literal")) : (Dafny.Sequence.UnicodeFromString("Another case"))))))))) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" = "), _909_optExprString)))))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched33) { if (_source33.is_Assign) { - Std.Wrappers._IOption _922_names = _source33.dtor_names; - RAST._IExpr _923_expr = _source33.dtor_rhs; + Std.Wrappers._IOption _910_names = _source33.dtor_names; + RAST._IExpr _911_expr = _source33.dtor_rhs; unmatched33 = false; - Dafny.ISequence _924_lhs = ((System.Func>)(() => { - Std.Wrappers._IOption _source34 = _922_names; + Dafny.ISequence _912_lhs = ((System.Func>)(() => { + Std.Wrappers._IOption _source34 = _910_names; bool unmatched34 = true; if (unmatched34) { if (_source34.is_Some) { RAST._IAssignLhs value0 = _source34.dtor_value; if (value0.is_LocalVar) { - Dafny.ISequence _925_name = value0.dtor_name; + Dafny.ISequence _913_name = value0.dtor_name; unmatched34 = false; - return Dafny.Sequence.Concat(_925_name, Dafny.Sequence.UnicodeFromString(" = ")); + return Dafny.Sequence.Concat(_913_name, Dafny.Sequence.UnicodeFromString(" = ")); } } } @@ -4621,13 +4613,13 @@ public bool RightRequiresParentheses(RAST._IExpr right) { if (_source34.is_Some) { RAST._IAssignLhs value1 = _source34.dtor_value; if (value1.is_SelectMember) { - RAST._IExpr _926_member = value1.dtor_on; - Dafny.ISequence _927_field = value1.dtor_field; + RAST._IExpr _914_member = value1.dtor_on; + Dafny.ISequence _915_field = value1.dtor_field; unmatched34 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs45 = (RAST.Expr.create_Select(_926_member, _927_field)).LeftParentheses(_926_member); - Dafny.ISequence _928_leftP = _let_tmp_rhs45.dtor__0; - Dafny.ISequence _929_rightP = _let_tmp_rhs45.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_928_leftP, (_926_member)._ToString(_pat_let_tv72)), _929_rightP), Dafny.Sequence.UnicodeFromString(".")), _927_field), Dafny.Sequence.UnicodeFromString(" = ")); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs45 = (RAST.Expr.create_Select(_914_member, _915_field)).LeftParentheses(_914_member); + Dafny.ISequence _916_leftP = _let_tmp_rhs45.dtor__0; + Dafny.ISequence _917_rightP = _let_tmp_rhs45.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_916_leftP, (_914_member)._ToString(_pat_let_tv72)), _917_rightP), Dafny.Sequence.UnicodeFromString(".")), _915_field), Dafny.Sequence.UnicodeFromString(" = ")); } } } @@ -4635,10 +4627,10 @@ public bool RightRequiresParentheses(RAST._IExpr right) { if (_source34.is_Some) { RAST._IAssignLhs value2 = _source34.dtor_value; if (value2.is_ExtractTuple) { - Dafny.ISequence> _930_names = value2.dtor_names; + Dafny.ISequence> _918_names = value2.dtor_names; unmatched34 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString>(_930_names, ((System.Func, Dafny.ISequence>)((_931_name) => { - return _931_name; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString>(_918_names, ((System.Func, Dafny.ISequence>)((_919_name) => { + return _919_name; })), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString(") = ")); } } @@ -4647,14 +4639,14 @@ public bool RightRequiresParentheses(RAST._IExpr right) { if (_source34.is_Some) { RAST._IAssignLhs value3 = _source34.dtor_value; if (value3.is_Index) { - RAST._IExpr _932_e = value3.dtor_expr; - Dafny.ISequence _933_indices = value3.dtor_indices; + RAST._IExpr _920_e = value3.dtor_expr; + Dafny.ISequence _921_indices = value3.dtor_indices; unmatched34 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs46 = (RAST.Expr.create_Call(_932_e, _933_indices)).LeftParentheses(_932_e); - Dafny.ISequence _934_leftP = _let_tmp_rhs46.dtor__0; - Dafny.ISequence _935_rightP = _let_tmp_rhs46.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_934_leftP, (_932_e)._ToString(_pat_let_tv73)), _935_rightP), Dafny.Sequence.UnicodeFromString("[")), RAST.__default.SeqToString(_933_indices, Dafny.Helpers.Id, Func>>>((_936_ind) => ((System.Func>)((_937_index) => { - return (_937_index)._ToString(Dafny.Sequence.Concat(_936_ind, RAST.__default.IND)); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs46 = (RAST.Expr.create_Call(_920_e, _921_indices)).LeftParentheses(_920_e); + Dafny.ISequence _922_leftP = _let_tmp_rhs46.dtor__0; + Dafny.ISequence _923_rightP = _let_tmp_rhs46.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_922_leftP, (_920_e)._ToString(_pat_let_tv73)), _923_rightP), Dafny.Sequence.UnicodeFromString("[")), RAST.__default.SeqToString(_921_indices, Dafny.Helpers.Id, Func>>>((_924_ind) => ((System.Func>)((_925_index) => { + return (_925_index)._ToString(Dafny.Sequence.Concat(_924_ind, RAST.__default.IND)); })))(_pat_let_tv74), Dafny.Sequence.UnicodeFromString("]["))), Dafny.Sequence.UnicodeFromString("] = ")); } } @@ -4665,28 +4657,28 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } throw new System.Exception("unexpected control point"); }))(); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_924_lhs, (_923_expr)._ToString(Dafny.Sequence.Concat(_pat_let_tv75, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_912_lhs, (_911_expr)._ToString(Dafny.Sequence.Concat(_pat_let_tv75, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched33) { if (_source33.is_Labelled) { - Dafny.ISequence _938_name = _source33.dtor_lbl; - RAST._IExpr _939_underlying = _source33.dtor_underlying; + Dafny.ISequence _926_name = _source33.dtor_lbl; + RAST._IExpr _927_underlying = _source33.dtor_underlying; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("'"), _938_name), Dafny.Sequence.UnicodeFromString(": ")), (_939_underlying)._ToString(_pat_let_tv76)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("'"), _926_name), Dafny.Sequence.UnicodeFromString(": ")), (_927_underlying)._ToString(_pat_let_tv76)); } } if (unmatched33) { if (_source33.is_Break) { - Std.Wrappers._IOption> _940_optLbl = _source33.dtor_optLbl; + Std.Wrappers._IOption> _928_optLbl = _source33.dtor_optLbl; unmatched33 = false; - Std.Wrappers._IOption> _source35 = _940_optLbl; + Std.Wrappers._IOption> _source35 = _928_optLbl; bool unmatched35 = true; if (unmatched35) { if (_source35.is_Some) { - Dafny.ISequence _941_lbl = _source35.dtor_value; + Dafny.ISequence _929_lbl = _source35.dtor_value; unmatched35 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("break '"), _941_lbl), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("break '"), _929_lbl), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched35) { @@ -4698,15 +4690,15 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } if (unmatched33) { if (_source33.is_Continue) { - Std.Wrappers._IOption> _942_optLbl = _source33.dtor_optLbl; + Std.Wrappers._IOption> _930_optLbl = _source33.dtor_optLbl; unmatched33 = false; - Std.Wrappers._IOption> _source36 = _942_optLbl; + Std.Wrappers._IOption> _source36 = _930_optLbl; bool unmatched36 = true; if (unmatched36) { if (_source36.is_Some) { - Dafny.ISequence _943_lbl = _source36.dtor_value; + Dafny.ISequence _931_lbl = _source36.dtor_value; unmatched36 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("continue '"), _943_lbl), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("continue '"), _931_lbl), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched36) { @@ -4718,11 +4710,11 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } if (unmatched33) { if (_source33.is_Loop) { - Std.Wrappers._IOption _944_optCond = _source33.dtor_optCond; - RAST._IExpr _945_underlying = _source33.dtor_underlying; + Std.Wrappers._IOption _932_optCond = _source33.dtor_optCond; + RAST._IExpr _933_underlying = _source33.dtor_underlying; unmatched33 = false; return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(((System.Func>)(() => { - Std.Wrappers._IOption _source37 = _944_optCond; + Std.Wrappers._IOption _source37 = _932_optCond; bool unmatched37 = true; if (unmatched37) { if (_source37.is_None) { @@ -4731,57 +4723,57 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } if (unmatched37) { - RAST._IExpr _946_c = _source37.dtor_value; + RAST._IExpr _934_c = _source37.dtor_value; unmatched37 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("while "), (_946_c)._ToString(Dafny.Sequence.Concat(_pat_let_tv77, RAST.__default.IND))); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("while "), (_934_c)._ToString(Dafny.Sequence.Concat(_pat_let_tv77, RAST.__default.IND))); } throw new System.Exception("unexpected control point"); - }))(), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv78), RAST.__default.IND), (_945_underlying)._ToString(Dafny.Sequence.Concat(_pat_let_tv79, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv80), Dafny.Sequence.UnicodeFromString("}")); + }))(), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv78), RAST.__default.IND), (_933_underlying)._ToString(Dafny.Sequence.Concat(_pat_let_tv79, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv80), Dafny.Sequence.UnicodeFromString("}")); } } if (unmatched33) { if (_source33.is_For) { - Dafny.ISequence _947_name = _source33.dtor_name; - RAST._IExpr _948_range = _source33.dtor_range; - RAST._IExpr _949_body = _source33.dtor_body; + Dafny.ISequence _935_name = _source33.dtor_name; + RAST._IExpr _936_range = _source33.dtor_range; + RAST._IExpr _937_body = _source33.dtor_body; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("for "), _947_name), Dafny.Sequence.UnicodeFromString(" in ")), (_948_range)._ToString(Dafny.Sequence.Concat(_pat_let_tv81, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv82), RAST.__default.IND), (_949_body)._ToString(Dafny.Sequence.Concat(_pat_let_tv83, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv84), Dafny.Sequence.UnicodeFromString("}")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("for "), _935_name), Dafny.Sequence.UnicodeFromString(" in ")), (_936_range)._ToString(Dafny.Sequence.Concat(_pat_let_tv81, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), _pat_let_tv82), RAST.__default.IND), (_937_body)._ToString(Dafny.Sequence.Concat(_pat_let_tv83, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv84), Dafny.Sequence.UnicodeFromString("}")); } } if (unmatched33) { if (_source33.is_Return) { - Std.Wrappers._IOption _950_optExpr = _source33.dtor_optExpr; + Std.Wrappers._IOption _938_optExpr = _source33.dtor_optExpr; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("return"), (((_950_optExpr).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), ((_950_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv85, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("return"), (((_938_optExpr).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), ((_938_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(_pat_let_tv85, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); } } if (unmatched33) { if (_source33.is_CallType) { - RAST._IExpr _951_expr = _source33.dtor_obj; - Dafny.ISequence _952_tpes = _source33.dtor_typeParameters; + RAST._IExpr _939_expr = _source33.dtor_obj; + Dafny.ISequence _940_tpes = _source33.dtor_typeParameters; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs47 = (this).LeftParentheses(_951_expr); - Dafny.ISequence _953_leftP = _let_tmp_rhs47.dtor__0; - Dafny.ISequence _954_rightP = _let_tmp_rhs47.dtor__1; - if ((_952_tpes).Equals(Dafny.Sequence.FromElements())) { - return (_951_expr)._ToString(_pat_let_tv86); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs47 = (this).LeftParentheses(_939_expr); + Dafny.ISequence _941_leftP = _let_tmp_rhs47.dtor__0; + Dafny.ISequence _942_rightP = _let_tmp_rhs47.dtor__1; + if ((_940_tpes).Equals(Dafny.Sequence.FromElements())) { + return (_939_expr)._ToString(_pat_let_tv86); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_953_leftP, (_951_expr)._ToString(_pat_let_tv87)), _954_rightP), Dafny.Sequence.UnicodeFromString("::<")), RAST.__default.SeqToString(_952_tpes, Dafny.Helpers.Id, Func>>>((_955_ind) => ((System.Func>)((_956_tpe) => { - return (_956_tpe)._ToString(Dafny.Sequence.Concat(_955_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_941_leftP, (_939_expr)._ToString(_pat_let_tv87)), _942_rightP), Dafny.Sequence.UnicodeFromString("::<")), RAST.__default.SeqToString(_940_tpes, Dafny.Helpers.Id, Func>>>((_943_ind) => ((System.Func>)((_944_tpe) => { + return (_944_tpe)._ToString(Dafny.Sequence.Concat(_943_ind, RAST.__default.IND)); })))(_pat_let_tv88), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">")); } } } if (unmatched33) { if (_source33.is_Call) { - RAST._IExpr _957_expr = _source33.dtor_obj; - Dafny.ISequence _958_args = _source33.dtor_arguments; + RAST._IExpr _945_expr = _source33.dtor_obj; + Dafny.ISequence _946_args = _source33.dtor_arguments; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs48 = (this).LeftParentheses(_957_expr); - Dafny.ISequence _959_leftP = _let_tmp_rhs48.dtor__0; - Dafny.ISequence _960_rightP = _let_tmp_rhs48.dtor__1; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs48 = (this).LeftParentheses(_945_expr); + Dafny.ISequence _947_leftP = _let_tmp_rhs48.dtor__0; + Dafny.ISequence _948_rightP = _let_tmp_rhs48.dtor__1; _System._ITuple2, Dafny.ISequence> _let_tmp_rhs49 = ((System.Func<_System._ITuple2, Dafny.ISequence>>)(() => { - Std.Wrappers._IOption> _source38 = (_957_expr).RightMostIdentifier(); + Std.Wrappers._IOption> _source38 = (_945_expr).RightMostIdentifier(); bool unmatched38 = true; if (unmatched38) { bool disjunctiveMatch0 = false; @@ -4822,56 +4814,55 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } if (unmatched38) { - Std.Wrappers._IOption> _961___v40 = _source38; unmatched38 = false; return _System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("("), Dafny.Sequence.UnicodeFromString(")")); } throw new System.Exception("unexpected control point"); }))(); - Dafny.ISequence _962_leftCallP = _let_tmp_rhs49.dtor__0; - Dafny.ISequence _963_rightCallP = _let_tmp_rhs49.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_959_leftP, (_957_expr)._ToString(_pat_let_tv89)), _960_rightP), _962_leftCallP), RAST.__default.SeqToString(_958_args, Dafny.Helpers.Id, Func>>>((_964_ind) => ((System.Func>)((_965_arg) => { - return (_965_arg)._ToString(Dafny.Sequence.Concat(_964_ind, RAST.__default.IND)); - })))(_pat_let_tv90), Dafny.Sequence.UnicodeFromString(", "))), _963_rightCallP); + Dafny.ISequence _949_leftCallP = _let_tmp_rhs49.dtor__0; + Dafny.ISequence _950_rightCallP = _let_tmp_rhs49.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_947_leftP, (_945_expr)._ToString(_pat_let_tv89)), _948_rightP), _949_leftCallP), RAST.__default.SeqToString(_946_args, Dafny.Helpers.Id, Func>>>((_951_ind) => ((System.Func>)((_952_arg) => { + return (_952_arg)._ToString(Dafny.Sequence.Concat(_951_ind, RAST.__default.IND)); + })))(_pat_let_tv90), Dafny.Sequence.UnicodeFromString(", "))), _950_rightCallP); } } if (unmatched33) { if (_source33.is_Select) { - RAST._IExpr _966_expression = _source33.dtor_obj; - Dafny.ISequence _967_name = _source33.dtor_name; + RAST._IExpr _953_expression = _source33.dtor_obj; + Dafny.ISequence _954_name = _source33.dtor_name; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs50 = (this).LeftParentheses(_966_expression); - Dafny.ISequence _968_leftP = _let_tmp_rhs50.dtor__0; - Dafny.ISequence _969_rightP = _let_tmp_rhs50.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_968_leftP, (_966_expression)._ToString(_pat_let_tv91)), _969_rightP), Dafny.Sequence.UnicodeFromString(".")), _967_name); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs50 = (this).LeftParentheses(_953_expression); + Dafny.ISequence _955_leftP = _let_tmp_rhs50.dtor__0; + Dafny.ISequence _956_rightP = _let_tmp_rhs50.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_955_leftP, (_953_expression)._ToString(_pat_let_tv91)), _956_rightP), Dafny.Sequence.UnicodeFromString(".")), _954_name); } } if (unmatched33) { if (_source33.is_MemberSelect) { - RAST._IExpr _970_expression = _source33.dtor_obj; - Dafny.ISequence _971_name = _source33.dtor_name; + RAST._IExpr _957_expression = _source33.dtor_obj; + Dafny.ISequence _958_name = _source33.dtor_name; unmatched33 = false; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs51 = (this).LeftParentheses(_970_expression); - Dafny.ISequence _972_leftP = _let_tmp_rhs51.dtor__0; - Dafny.ISequence _973_rightP = _let_tmp_rhs51.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_972_leftP, (_970_expression)._ToString(_pat_let_tv92)), _973_rightP), Dafny.Sequence.UnicodeFromString("::")), _971_name); + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs51 = (this).LeftParentheses(_957_expression); + Dafny.ISequence _959_leftP = _let_tmp_rhs51.dtor__0; + Dafny.ISequence _960_rightP = _let_tmp_rhs51.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_959_leftP, (_957_expression)._ToString(_pat_let_tv92)), _960_rightP), Dafny.Sequence.UnicodeFromString("::")), _958_name); } } if (unmatched33) { if (_source33.is_Lambda) { - Dafny.ISequence _974_params = _source33.dtor_params; - Std.Wrappers._IOption _975_retType = _source33.dtor_retType; - RAST._IExpr _976_body = _source33.dtor_body; + Dafny.ISequence _961_params = _source33.dtor_params; + Std.Wrappers._IOption _962_retType = _source33.dtor_retType; + RAST._IExpr _963_body = _source33.dtor_body; unmatched33 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("move |"), RAST.__default.SeqToString(_974_params, Dafny.Helpers.Id, Func>>>((_977_ind) => ((System.Func>)((_978_arg) => { - return (_978_arg)._ToString(_977_ind); - })))(_pat_let_tv93), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("| ")), (((_975_retType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("-> "), ((_975_retType).dtor_value)._ToString(_pat_let_tv94)), Dafny.Sequence.UnicodeFromString(" "))) : (Dafny.Sequence.UnicodeFromString("")))), (_976_body)._ToString(_pat_let_tv95)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("move |"), RAST.__default.SeqToString(_961_params, Dafny.Helpers.Id, Func>>>((_964_ind) => ((System.Func>)((_965_arg) => { + return (_965_arg)._ToString(_964_ind); + })))(_pat_let_tv93), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("| ")), (((_962_retType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("-> "), ((_962_retType).dtor_value)._ToString(_pat_let_tv94)), Dafny.Sequence.UnicodeFromString(" "))) : (Dafny.Sequence.UnicodeFromString("")))), (_963_body)._ToString(_pat_let_tv95)); } } if (unmatched33) { - RAST._IExpr _979_r = _source33; + RAST._IExpr _966_r = _source33; unmatched33 = false; - return RAST.__default.AddIndent((_979_r).dtor_content, _pat_let_tv96); + return RAST.__default.AddIndent((_966_r).dtor_content, _pat_let_tv96); } throw new System.Exception("unexpected control point"); } @@ -4917,55 +4908,47 @@ public RAST._IPrintingInfo printingInfo { get { bool unmatched39 = true; if (unmatched39) { if (_source39.is_RawExpr) { - Dafny.ISequence _980___v1 = _source39.dtor_content; unmatched39 = false; return RAST.PrintingInfo.create_UnknownPrecedence(); } } if (unmatched39) { if (_source39.is_ExprFromType) { - RAST._IType _981___v2 = _source39.dtor_tpe; unmatched39 = false; return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } if (unmatched39) { if (_source39.is_Identifier) { - Dafny.ISequence _982___v3 = _source39.dtor_name; unmatched39 = false; return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } if (unmatched39) { if (_source39.is_LiteralInt) { - Dafny.ISequence _983___v4 = _source39.dtor_value; unmatched39 = false; return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } if (unmatched39) { if (_source39.is_LiteralBool) { - bool _984___v5 = _source39.dtor_bvalue; unmatched39 = false; return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } if (unmatched39) { if (_source39.is_LiteralString) { - Dafny.ISequence _985___v6 = _source39.dtor_value; - bool _986___v7 = _source39.dtor_binary; - bool _987___v8 = _source39.dtor_verbatim; unmatched39 = false; return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } if (unmatched39) { if (_source39.is_UnaryOp) { - Dafny.ISequence _988_op = _source39.dtor_op1; - RAST._IExpr _989_underlying = _source39.dtor_underlying; - DAST.Format._IUnaryOpFormat _990_format = _source39.dtor_format; + Dafny.ISequence _967_op = _source39.dtor_op1; + RAST._IExpr _968_underlying = _source39.dtor_underlying; + DAST.Format._IUnaryOpFormat _969_format = _source39.dtor_format; unmatched39 = false; - Dafny.ISequence _source40 = _988_op; + Dafny.ISequence _source40 = _967_op; bool unmatched40 = true; if (unmatched40) { if (object.Equals(_source40, Dafny.Sequence.UnicodeFromString("?"))) { @@ -4996,7 +4979,6 @@ public RAST._IPrintingInfo printingInfo { get { } } if (unmatched40) { - Dafny.ISequence _991___v9 = _source40; unmatched40 = false; return RAST.PrintingInfo.create_UnknownPrecedence(); } @@ -5005,52 +4987,48 @@ public RAST._IPrintingInfo printingInfo { get { } if (unmatched39) { if (_source39.is_Select) { - RAST._IExpr _992_underlying = _source39.dtor_obj; - Dafny.ISequence _993_name = _source39.dtor_name; + RAST._IExpr _970_underlying = _source39.dtor_obj; + Dafny.ISequence _971_name = _source39.dtor_name; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { if (_source39.is_MemberSelect) { - RAST._IExpr _994_underlying = _source39.dtor_obj; - Dafny.ISequence _995_name = _source39.dtor_name; + RAST._IExpr _972_underlying = _source39.dtor_obj; + Dafny.ISequence _973_name = _source39.dtor_name; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { if (_source39.is_CallType) { - RAST._IExpr _996___v10 = _source39.dtor_obj; - Dafny.ISequence _997___v11 = _source39.dtor_typeParameters; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { if (_source39.is_Call) { - RAST._IExpr _998___v12 = _source39.dtor_obj; - Dafny.ISequence _999___v13 = _source39.dtor_arguments; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { if (_source39.is_TypeAscription) { - RAST._IExpr _1000_left = _source39.dtor_left; - RAST._IType _1001_tpe = _source39.dtor_tpe; + RAST._IExpr _974_left = _source39.dtor_left; + RAST._IType _975_tpe = _source39.dtor_tpe; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(10), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { if (_source39.is_BinaryOp) { - Dafny.ISequence _1002_op2 = _source39.dtor_op2; - RAST._IExpr _1003_left = _source39.dtor_left; - RAST._IExpr _1004_right = _source39.dtor_right; - DAST.Format._IBinaryOpFormat _1005_format = _source39.dtor_format2; + Dafny.ISequence _976_op2 = _source39.dtor_op2; + RAST._IExpr _977_left = _source39.dtor_left; + RAST._IExpr _978_right = _source39.dtor_right; + DAST.Format._IBinaryOpFormat _979_format = _source39.dtor_format2; unmatched39 = false; - Dafny.ISequence _source41 = _1002_op2; + Dafny.ISequence _source41 = _976_op2; bool unmatched41 = true; if (unmatched41) { bool disjunctiveMatch3 = false; @@ -5203,7 +5181,6 @@ public RAST._IPrintingInfo printingInfo { get { } } if (unmatched41) { - Dafny.ISequence _1006___v14 = _source41; unmatched41 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(BigInteger.Zero, RAST.Associativity.create_RequiresParentheses()); } @@ -5212,15 +5189,11 @@ public RAST._IPrintingInfo printingInfo { get { } if (unmatched39) { if (_source39.is_Lambda) { - Dafny.ISequence _1007___v15 = _source39.dtor_params; - Std.Wrappers._IOption _1008___v16 = _source39.dtor_retType; - RAST._IExpr _1009___v17 = _source39.dtor_body; unmatched39 = false; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(300), RAST.Associativity.create_LeftToRight()); } } if (unmatched39) { - RAST._IExpr _1010___v18 = _source39; unmatched39 = false; return RAST.PrintingInfo.create_UnknownPrecedence(); } @@ -6231,20 +6204,19 @@ public Std.Wrappers._IOption dtor_body { var _pat_let_tv98 = ind; var _pat_let_tv99 = ind; var _pat_let_tv100 = ind; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("fn "), (this).dtor_name), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString("(")), RAST.__default.SeqToString((this).dtor_formals, Dafny.Helpers.Id, Func>>>((_1011_ind) => ((System.Func>)((_1012_formal) => { - return (_1012_formal)._ToString(_1011_ind); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("fn "), (this).dtor_name), RAST.TypeParamDecl.ToStringMultiple((this).dtor_typeParams, ind)), Dafny.Sequence.UnicodeFromString("(")), RAST.__default.SeqToString((this).dtor_formals, Dafny.Helpers.Id, Func>>>((_980_ind) => ((System.Func>)((_981_formal) => { + return (_981_formal)._ToString(_980_ind); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(")")), ((System.Func>)(() => { Std.Wrappers._IOption _source42 = (this).dtor_returnType; bool unmatched42 = true; if (unmatched42) { if (_source42.is_Some) { - RAST._IType _1013_t = _source42.dtor_value; + RAST._IType _982_t = _source42.dtor_value; unmatched42 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" -> "), (_1013_t)._ToString(_pat_let_tv97)); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" -> "), (_982_t)._ToString(_pat_let_tv97)); } } if (unmatched42) { - Std.Wrappers._IOption _1014___v41 = _source42; unmatched42 = false; return Dafny.Sequence.UnicodeFromString(""); } @@ -6259,9 +6231,9 @@ public Std.Wrappers._IOption dtor_body { } } if (unmatched43) { - RAST._IExpr _1015_body = _source43.dtor_value; + RAST._IExpr _983_body = _source43.dtor_value; unmatched43 = false; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {\n"), _pat_let_tv98), RAST.__default.IND), (_1015_body)._ToString(Dafny.Sequence.Concat(_pat_let_tv99, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv100), Dafny.Sequence.UnicodeFromString("}")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {\n"), _pat_let_tv98), RAST.__default.IND), (_983_body)._ToString(Dafny.Sequence.Concat(_pat_let_tv99, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), _pat_let_tv100), Dafny.Sequence.UnicodeFromString("}")); } throw new System.Exception("unexpected control point"); }))()); diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy new file mode 100644 index 00000000000..e73be31b7f9 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy @@ -0,0 +1,14 @@ +// RUN: %testDafnyForEachCompiler "%s" + +datatype D = A(int) | C(int) { + function Test(): D { + match this{ + case A(_) | C(_) => + this + } + } +} +method Main() { + var x := C(0).Test(); + print "ok"; +} \ No newline at end of file diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy.expect b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy.expect new file mode 100644 index 00000000000..b5754e20373 --- /dev/null +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/git-issues/git-issue-5572.dfy.expect @@ -0,0 +1 @@ +ok \ No newline at end of file diff --git a/docs/dev/news/5572.fix b/docs/dev/news/5572.fix new file mode 100644 index 00000000000..fb0a662697e --- /dev/null +++ b/docs/dev/news/5572.fix @@ -0,0 +1 @@ +Compiled disjunctive nested pattern matching no longer crashing \ No newline at end of file