diff --git a/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs b/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs index db6a2b35422..8a4171f4809 100644 --- a/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs +++ b/Source/DafnyCore.Test/GeneratedFromDafny/DafnyToRustCompilerCoverage_RASTCoverage.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace DafnyToRustCompilerCoverage.RASTCoverage { @@ -24,120 +27,120 @@ public static RAST._IExpr DafnyIntLiteral(Dafny.ISequence s) { } public static void TestOptimizeToString() { - RAST._IExpr _1095_x; - _1095_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); - RAST._IExpr _1096_y; - _1096_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(_1095_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements()), DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1095_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(_1095_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements(_1096_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("=="), _1095_x, _1096_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _1095_x, _1096_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("<"), _1095_x, _1096_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _1095_x, _1096_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("<"), _1095_x, _1096_y, DAST.Format.BinaryOpFormat.create_ReverseFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1096_y, _1095_x, DAST.Format.BinaryOpFormat.create_NoFormat()))); + RAST._IExpr _0_x; + _0_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); + RAST._IExpr _1_y; + _1_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(_0_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements()), DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(), RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _0_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(_0_x, Dafny.Sequence.UnicodeFromString("clone")), Dafny.Sequence.FromElements(_1_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("=="), _0_x, _1_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _0_x, _1_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("<"), _0_x, _1_y, DAST.Format.BinaryOpFormat.create_NoFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _0_x, _1_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("<"), _0_x, _1_y, DAST.Format.BinaryOpFormat.create_ReverseFormat()), DAST.Format.UnaryOpFormat.create_CombineFormat())).Optimize(), RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1_y, _0_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(), _1095_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"), _1096_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(_1096_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"), _1096_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(_1095_x); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(_1095_x, _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Match(_1095_x, Dafny.Sequence.FromElements()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_StructBuild(_1095_x, Dafny.Sequence.FromElements()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Tuple(Dafny.Sequence.FromElements()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1095_x, DAST.Format.UnaryOpFormat.create_NoFormat()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _1095_x, _1095_x, DAST.Format.BinaryOpFormat.create_NoFormat()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_TypeAscription(_1095_x, RAST.Type.create_I128()), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("1")), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("2"), true, false), _1095_x)); - DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("3"), false, true), _1095_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"), _1096_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(_1096_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); - Dafny.ISequence _1097_coverageExpression; - _1097_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((_1097_coverageExpression).Count); - for (BigInteger _1098_i = BigInteger.Zero; _1098_i < _hi4; _1098_i++) { - RAST._IExpr _1099_c; - _1099_c = (_1097_coverageExpression).Select(_1098_i); - RAST._IPrintingInfo _1100___v0; - _1100___v0 = (_1099_c).printingInfo; - RAST._IExpr _1101___v1; - _1101___v1 = (_1099_c).Optimize(); - Dafny.IMap> _1102___v2; - _1102___v2 = Dafny.Map>.FromElements(new Dafny.Pair>(_1099_c, (_1099_c)._ToString(Dafny.Sequence.UnicodeFromString("")))); - RAST._IExpr _1103___v3; - _1103___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()), _1099_c)).Optimize(); - RAST._IExpr _1104___v4; - _1104___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"), _1099_c), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString(""))))).Optimize(); - RAST._IExpr _1105___v5; - _1105___v5 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _1099_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); - RAST._IExpr _1106___v6; - _1106___v6 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1099_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); - RAST._IExpr _1107___v7; - _1107___v7 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), _1099_c)).Optimize(); - RAST._IExpr _1108___v8; - _1108___v8 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(_1099_c, Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1109___v9; - _1109___v9 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(_1099_c, Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1110___v10; - _1110___v10 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(_1099_c, Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); - RAST._IExpr _1111___v11; - _1111___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(_1099_c)))).Optimize(); - Std.Wrappers._IOption> _1112___v12; - _1112___v12 = (_1099_c).RightMostIdentifier(); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_I128(), _0_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"), _1_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(_1_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"), _1_y), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(_0_x); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(_0_x, _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Match(_0_x, Dafny.Sequence.FromElements()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_StructBuild(_0_x, Dafny.Sequence.FromElements()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_Tuple(Dafny.Sequence.FromElements()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _0_x, DAST.Format.UnaryOpFormat.create_NoFormat()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("&&"), _0_x, _0_x, DAST.Format.BinaryOpFormat.create_NoFormat()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_TypeAscription(_0_x, RAST.Type.create_I128()), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("1")), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("2"), true, false), _0_x)); + DafnyToRustCompilerCoverage.RASTCoverage.__default.TestNoOptimize(RAST.Expr.create_StmtExpr(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("3"), false, true), _0_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"), _1_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(_1_y)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("return"))))); + Dafny.ISequence _2_coverageExpression; + _2_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 _hi0 = new BigInteger((_2_coverageExpression).Count); + for (BigInteger _3_i = BigInteger.Zero; _3_i < _hi0; _3_i++) { + RAST._IExpr _4_c; + _4_c = (_2_coverageExpression).Select(_3_i); + RAST._IPrintingInfo _5___v0; + _5___v0 = (_4_c).printingInfo; + RAST._IExpr _6___v1; + _6___v1 = (_4_c).Optimize(); + Dafny.IMap> _7___v2; + _7___v2 = Dafny.Map>.FromElements(new Dafny.Pair>(_4_c, (_4_c)._ToString(Dafny.Sequence.UnicodeFromString("")))); + RAST._IExpr _8___v3; + _8___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()), _4_c)).Optimize(); + RAST._IExpr _9___v4; + _9___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"), _4_c), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString(""))))).Optimize(); + RAST._IExpr _10___v5; + _10___v5 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("&"), _4_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); + RAST._IExpr _11___v6; + _11___v6 = (RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _4_c, DAST.Format.UnaryOpFormat.create_NoFormat())).Optimize(); + RAST._IExpr _12___v7; + _12___v7 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), _4_c)).Optimize(); + RAST._IExpr _13___v8; + _13___v8 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(_4_c, Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _14___v9; + _14___v9 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(_4_c, Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _15___v10; + _15___v10 = (DafnyToRustCompilerCoverage.RASTCoverage.__default.ConversionNum(RAST.Type.create_U8(), RAST.Expr.create_Call(RAST.Expr.create_MemberSelect(RAST.Expr.create_MemberSelect(_4_c, Dafny.Sequence.UnicodeFromString("dafny_runtime")), Dafny.Sequence.UnicodeFromString("int!")), Dafny.Sequence.FromElements()))).Optimize(); + RAST._IExpr _16___v11; + _16___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(_4_c)))).Optimize(); + Std.Wrappers._IOption> _17___v12; + _17___v12 = (_4_c).RightMostIdentifier(); } } public static void TestPrintingInfo() { - RAST._IExpr _1113_x; - _1113_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); - RAST._IExpr _1114_y; - _1114_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); - DAST.Format._IBinaryOpFormat _1115_bnf; - _1115_bnf = DAST.Format.BinaryOpFormat.create_NoFormat(); + RAST._IExpr _0_x; + _0_x = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("x")); + RAST._IExpr _1_y; + _1_y = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("y")); + DAST.Format._IBinaryOpFormat _2_bnf; + _2_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((_1113_x).printingInfo, RAST.PrintingInfo.create_Precedence(BigInteger.One))); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((_0_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("?"), _1113_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("-"), _1113_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("*"), _1113_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("!"), _1113_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("&"), _1113_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"), _1113_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("!!"), _1113_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_UnknownPrecedence())); - DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Select(_1113_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(_1113_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(_1113_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(_1113_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("*"), _1113_x, _1114_y, _1115_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("/"), _1113_x, _1114_y, _1115_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("%"), _1113_x, _1114_y, _1115_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("+"), _1113_x, _1114_y, _1115_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("-"), _1113_x, _1114_y, _1115_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("<<"), _1113_x, _1114_y, _1115_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(">>"), _1113_x, _1114_y, _1115_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("&"), _1113_x, _1114_y, _1115_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("^"), _1113_x, _1114_y, _1115_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("|"), _1113_x, _1114_y, _1115_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("=="), _1113_x, _1114_y, _1115_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("!="), _1113_x, _1114_y, _1115_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("<"), _1113_x, _1114_y, _1115_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(">"), _1113_x, _1114_y, _1115_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("<="), _1113_x, _1114_y, _1115_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(">="), _1113_x, _1114_y, _1115_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("&&"), _1113_x, _1114_y, _1115_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("||"), _1113_x, _1114_y, _1115_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(".."), _1113_x, _1114_y, _1115_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("..="), _1113_x, _1114_y, _1115_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("="), _1113_x, _1114_y, _1115_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("+="), _1113_x, _1114_y, _1115_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("-="), _1113_x, _1114_y, _1115_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("*="), _1113_x, _1114_y, _1115_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("/="), _1113_x, _1114_y, _1115_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("%="), _1113_x, _1114_y, _1115_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("&="), _1113_x, _1114_y, _1115_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("|="), _1113_x, _1114_y, _1115_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("^="), _1113_x, _1114_y, _1115_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("<<="), _1113_x, _1114_y, _1115_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(">>="), _1113_x, _1114_y, _1115_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("?!?"), _1113_x, _1114_y, _1115_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("?"), _0_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("-"), _0_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("*"), _0_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("!"), _0_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("&"), _0_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"), _0_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("!!"), _0_x, DAST.Format.UnaryOpFormat.create_NoFormat())).printingInfo, RAST.PrintingInfo.create_UnknownPrecedence())); + DafnyToRustCompilerCoverage.RASTCoverage.__default.AssertCoverage(object.Equals((RAST.Expr.create_Select(_0_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(_0_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(_0_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(_0_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("*"), _0_x, _1_y, _2_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("/"), _0_x, _1_y, _2_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("%"), _0_x, _1_y, _2_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("+"), _0_x, _1_y, _2_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("-"), _0_x, _1_y, _2_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("<<"), _0_x, _1_y, _2_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(">>"), _0_x, _1_y, _2_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("&"), _0_x, _1_y, _2_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("^"), _0_x, _1_y, _2_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("|"), _0_x, _1_y, _2_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("=="), _0_x, _1_y, _2_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("!="), _0_x, _1_y, _2_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("<"), _0_x, _1_y, _2_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(">"), _0_x, _1_y, _2_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("<="), _0_x, _1_y, _2_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(">="), _0_x, _1_y, _2_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("&&"), _0_x, _1_y, _2_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("||"), _0_x, _1_y, _2_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(".."), _0_x, _1_y, _2_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("..="), _0_x, _1_y, _2_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("="), _0_x, _1_y, _2_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("+="), _0_x, _1_y, _2_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("-="), _0_x, _1_y, _2_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("*="), _0_x, _1_y, _2_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("/="), _0_x, _1_y, _2_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("%="), _0_x, _1_y, _2_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("&="), _0_x, _1_y, _2_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("|="), _0_x, _1_y, _2_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("^="), _0_x, _1_y, _2_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("<<="), _0_x, _1_y, _2_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(">>="), _0_x, _1_y, _2_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("?!?"), _0_x, _1_y, _2_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/CompilationData.cs b/Source/DafnyCore/AST/CompilationData.cs index ce827a7c0d9..d6a4508b230 100644 --- a/Source/DafnyCore/AST/CompilationData.cs +++ b/Source/DafnyCore/AST/CompilationData.cs @@ -5,8 +5,6 @@ namespace Microsoft.Dafny; public class CompilationData { - public readonly FreshIdGenerator IdGenerator = new(); - public CompilationData(ErrorReporter errorReporter, List includes, IList rootSourceUris, ISet alreadyVerifiedRoots, ISet alreadyCompiledRoots) { Includes = includes; ErrorReporter = errorReporter; diff --git a/Source/DafnyCore/AST/Expressions/Variables/Formal.cs b/Source/DafnyCore/AST/Expressions/Variables/Formal.cs index cdbff00e752..c3fc0844884 100644 --- a/Source/DafnyCore/AST/Expressions/Variables/Formal.cs +++ b/Source/DafnyCore/AST/Expressions/Variables/Formal.cs @@ -35,11 +35,11 @@ public Formal(IToken tok, string name, Type type, bool inParam, bool isGhost, Ex public bool HasName => !Name.StartsWith("#"); - private string sanitizedName; - public override string SanitizedName => - sanitizedName ??= SanitizeName(Name); // No unique-ification - public override string CompileName => - compileName ??= SanitizeName(NameForCompilation); + public override string GetOrCreateCompileName(CodeGenIdGenerator generator) { + return CompileName; + } + + public string CompileName => compileName ??= SanitizeName(NameForCompilation); public override IEnumerable Children => (DefaultValue != null ? new List { DefaultValue } : Enumerable.Empty()).Concat(base.Children); diff --git a/Source/DafnyCore/AST/Expressions/Variables/IVariable.cs b/Source/DafnyCore/AST/Expressions/Variables/IVariable.cs index b262ff36001..c8f174a0788 100644 --- a/Source/DafnyCore/AST/Expressions/Variables/IVariable.cs +++ b/Source/DafnyCore/AST/Expressions/Variables/IVariable.cs @@ -19,18 +19,14 @@ string UniqueName { bool HasBeenAssignedUniqueName { // unique names are not assigned until the Translator; if you don't already know if that stage has run, this boolean method will tell you get; } - static FreshIdGenerator CompileNameIdGenerator = new FreshIdGenerator(); - string AssignUniqueName(FreshIdGenerator generator); - string SanitizedName { - get; - } - string SanitizedNameShadowable { // A name suitable for compilation, but without the unique identifier. - // Useful to generate readable identifiers in the generated source code. - get; - } - string CompileName { - get; - } + string AssignUniqueName(VerificationIdGenerator generator); + + /// + /// A name suitable for compilation, but without the unique identifier. + /// Useful to generate readable identifiers in the generated source code. + /// + string CompileNameShadowable { get; } + string GetOrCreateCompileName(CodeGenIdGenerator generator); PreType PreType { get; diff --git a/Source/DafnyCore/AST/Expressions/Variables/IVariableContracts.cs b/Source/DafnyCore/AST/Expressions/Variables/IVariableContracts.cs index 7a473d9ba98..9880d147130 100644 --- a/Source/DafnyCore/AST/Expressions/Variables/IVariableContracts.cs +++ b/Source/DafnyCore/AST/Expressions/Variables/IVariableContracts.cs @@ -35,24 +35,20 @@ public bool HasBeenAssignedUniqueName { throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here } } - public string SanitizedName { - get { - Contract.Ensures(Contract.Result() != null); - throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here - } + public string SanitizedName(CodeGenIdGenerator generator) { + Contract.Ensures(Contract.Result() != null); + throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here } - public string SanitizedNameShadowable { + public string CompileNameShadowable { get { Contract.Ensures(Contract.Result() != null); throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here } } - public string CompileName { - get { - Contract.Ensures(Contract.Result() != null); - throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here - } + public string GetOrCreateCompileName(CodeGenIdGenerator generator) { + Contract.Ensures(Contract.Result() != null); + throw new NotImplementedException(); // this getter implementation is here only so that the Ensures contract can be given here } public Type Type { get { @@ -88,7 +84,7 @@ public bool IsGhost { public void MakeGhost() { throw new NotImplementedException(); } - public string AssignUniqueName(FreshIdGenerator generator) { + public string AssignUniqueName(VerificationIdGenerator generator) { Contract.Ensures(Contract.Result() != null); throw new NotImplementedException(); } diff --git a/Source/DafnyCore/AST/Expressions/Variables/NonglobalVariable.cs b/Source/DafnyCore/AST/Expressions/Variables/NonglobalVariable.cs index 88aa24aa10f..26ad772c020 100644 --- a/Source/DafnyCore/AST/Expressions/Variables/NonglobalVariable.cs +++ b/Source/DafnyCore/AST/Expressions/Variables/NonglobalVariable.cs @@ -38,7 +38,7 @@ public string Name { private string uniqueName; public string UniqueName => uniqueName; public bool HasBeenAssignedUniqueName => uniqueName != null; - public string AssignUniqueName(FreshIdGenerator generator) { + public string AssignUniqueName(VerificationIdGenerator generator) { return uniqueName ??= generator.FreshId(Name + "#"); } @@ -87,16 +87,14 @@ public static string SanitizeName(string nm) { private string sanitizedNameShadowable; - public virtual string SanitizedNameShadowable => + public virtual string CompileNameShadowable => sanitizedNameShadowable ??= SanitizeName(Name); - private string sanitizedName; - public virtual string SanitizedName => - sanitizedName ??= $"_{IVariable.CompileNameIdGenerator.FreshNumericId()}_{SanitizedNameShadowable}"; - protected string compileName; - public virtual string CompileName => - compileName ??= SanitizedName; + + public virtual string GetOrCreateCompileName(CodeGenIdGenerator generator) { + return compileName ??= $"_{generator.FreshNumericId()}_{CompileNameShadowable}"; + } Type type; public bool IsTypeExplicit { get; set; } diff --git a/Source/DafnyCore/AST/Members/ConstantField.cs b/Source/DafnyCore/AST/Members/ConstantField.cs index 490443f42f2..2aba49f9ccc 100644 --- a/Source/DafnyCore/AST/Members/ConstantField.cs +++ b/Source/DafnyCore/AST/Members/ConstantField.cs @@ -30,6 +30,8 @@ public override bool CanBeRevealed() { public ModuleDefinition EnclosingModule { get { return this.EnclosingClass.EnclosingModuleDefinition; } } public bool MustReverify { get { return false; } } public bool AllowsNontermination { get { throw new cce.UnreachableException(); } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; + public string NameRelativeToModule { get { if (EnclosingClass is DefaultClassDecl) { diff --git a/Source/DafnyCore/AST/Members/Function.cs b/Source/DafnyCore/AST/Members/Function.cs index 3e20e201691..aff0218bdef 100644 --- a/Source/DafnyCore/AST/Members/Function.cs +++ b/Source/DafnyCore/AST/Members/Function.cs @@ -200,6 +200,8 @@ public bool AllowsNontermination { } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; + /// /// The "AllCalls" field is used for non-ExtremePredicate, non-PrefixPredicate functions only (so its value should not be relied upon for ExtremePredicate and PrefixPredicate functions). /// It records all function calls made by the Function, including calls made in the body as well as in the specification. diff --git a/Source/DafnyCore/AST/Members/ICodeContext.cs b/Source/DafnyCore/AST/Members/ICodeContext.cs index 9dda622ab1e..a5ab7e0886e 100644 --- a/Source/DafnyCore/AST/Members/ICodeContext.cs +++ b/Source/DafnyCore/AST/Members/ICodeContext.cs @@ -14,6 +14,7 @@ public interface ICodeContext : IASTVisitorContext { bool MustReverify { get; } string FullSanitizedName { get; } bool AllowsNontermination { get; } + CodeGenIdGenerator CodeGenIdGenerator { get; } } @@ -37,6 +38,7 @@ public CodeContextWrapper(ICodeContext inner, bool isGhostContext) { public bool MustReverify => inner.MustReverify; public string FullSanitizedName => inner.FullSanitizedName; public bool AllowsNontermination => inner.AllowsNontermination; + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => inner.CodeGenIdGenerator; public static ICodeContext Unwrap(ICodeContext codeContext) { while (codeContext is CodeContextWrapper ccw) { @@ -129,6 +131,8 @@ public NoContext(ModuleDefinition module) { bool ICodeContext.MustReverify { get { Contract.Assume(false, "should not be called on NoContext"); throw new cce.UnreachableException(); } } public string FullSanitizedName { get { Contract.Assume(false, "should not be called on NoContext"); throw new cce.UnreachableException(); } } public bool AllowsNontermination { get { Contract.Assume(false, "should not be called on NoContext"); throw new cce.UnreachableException(); } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator { get; } = new(); + public bool AllowsAllocation => true; } @@ -144,7 +148,7 @@ public interface RedirectingTypeDecl : ICallable { Expression/*?*/ Constraint { get; } SubsetTypeDecl.WKind WitnessKind { get; } Expression/*?*/ Witness { get; } // non-null iff WitnessKind is Compiled or Ghost - FreshIdGenerator IdGenerator { get; } + VerificationIdGenerator IdGenerator { get; } [FilledInDuringResolution] bool ConstraintIsCompilable { get; set; } } \ No newline at end of file diff --git a/Source/DafnyCore/AST/Members/Method.cs b/Source/DafnyCore/AST/Members/Method.cs index e8dd717a039..73a4be9c63f 100644 --- a/Source/DafnyCore/AST/Members/Method.cs +++ b/Source/DafnyCore/AST/Members/Method.cs @@ -200,6 +200,8 @@ public bool AllowsNontermination { } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; + public override string GetCompileName(DafnyOptions options) { var nm = base.GetCompileName(options); if (nm == Dafny.Compilers.SinglePassCodeGenerator.DefaultNameMain && IsStatic && !IsEntryPoint) { diff --git a/Source/DafnyCore/AST/Modules/ModuleDefinition.cs b/Source/DafnyCore/AST/Modules/ModuleDefinition.cs index c7da3bee900..f165d89b5f3 100644 --- a/Source/DafnyCore/AST/Modules/ModuleDefinition.cs +++ b/Source/DafnyCore/AST/Modules/ModuleDefinition.cs @@ -4,6 +4,7 @@ using System.Diagnostics.Contracts; using System.Linq; using Microsoft.Dafny.Auditor; +using Microsoft.Dafny.Compilers; using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace Microsoft.Dafny; diff --git a/Source/DafnyCore/AST/Statements/Assignment/LocalVariable.cs b/Source/DafnyCore/AST/Statements/Assignment/LocalVariable.cs index e90f93964c2..ab2331d019f 100644 --- a/Source/DafnyCore/AST/Statements/Assignment/LocalVariable.cs +++ b/Source/DafnyCore/AST/Statements/Assignment/LocalVariable.cs @@ -65,23 +65,20 @@ public string DisplayName { private string uniqueName; public string UniqueName => uniqueName; public bool HasBeenAssignedUniqueName => uniqueName != null; - public string AssignUniqueName(FreshIdGenerator generator) { + public string AssignUniqueName(VerificationIdGenerator generator) { return uniqueName ??= generator.FreshId(Name + "#"); } private string sanitizedNameShadowable; - public string SanitizedNameShadowable => + public string CompileNameShadowable => sanitizedNameShadowable ??= NonglobalVariable.SanitizeName(Name); - private string sanitizedName; - - public string SanitizedName => - sanitizedName ??= $"_{IVariable.CompileNameIdGenerator.FreshNumericId()}_{SanitizedNameShadowable}"; - string compileName; - public string CompileName => - compileName ??= SanitizedName; + + public string GetOrCreateCompileName(CodeGenIdGenerator generator) { + return compileName ??= $"_{generator.FreshNumericId()}_{CompileNameShadowable}"; + } // TODO rename and update comment? Or make it nullable? public readonly Type SyntacticType; // this is the type mentioned in the declaration, if any diff --git a/Source/DafnyCore/AST/TypeDeclarations/DatatypeDecl.cs b/Source/DafnyCore/AST/TypeDeclarations/DatatypeDecl.cs index a8b82c29e9a..e6cb1c6facc 100644 --- a/Source/DafnyCore/AST/TypeDeclarations/DatatypeDecl.cs +++ b/Source/DafnyCore/AST/TypeDeclarations/DatatypeDecl.cs @@ -55,6 +55,7 @@ public bool IsRecordType { ModuleDefinition IASTVisitorContext.EnclosingModule { get { return EnclosingModuleDefinition; } } bool ICodeContext.MustReverify { get { return false; } } bool ICodeContext.AllowsNontermination { get { return false; } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; string ICallable.NameRelativeToModule { get { return Name; } } Specification ICallable.Decreases { get { diff --git a/Source/DafnyCore/AST/TypeDeclarations/Declaration.cs b/Source/DafnyCore/AST/TypeDeclarations/Declaration.cs index daa1077654e..db68fdf4112 100644 --- a/Source/DafnyCore/AST/TypeDeclarations/Declaration.cs +++ b/Source/DafnyCore/AST/TypeDeclarations/Declaration.cs @@ -132,9 +132,14 @@ public override string ToString() { return Name; } - internal FreshIdGenerator IdGenerator = new(); + // For Boogie + internal VerificationIdGenerator IdGenerator = new(); public override IEnumerable Children => (Attributes != null ? new List { Attributes } : Enumerable.Empty()); public override IEnumerable PreResolveChildren => Children; public abstract SymbolKind? Kind { get; } public abstract string GetDescription(DafnyOptions options); + + + // For Compilation + internal CodeGenIdGenerator CodeGenIdGenerator = new(); } \ No newline at end of file diff --git a/Source/DafnyCore/AST/TypeDeclarations/IteratorDecl.cs b/Source/DafnyCore/AST/TypeDeclarations/IteratorDecl.cs index 36a2666c330..081b675123e 100644 --- a/Source/DafnyCore/AST/TypeDeclarations/IteratorDecl.cs +++ b/Source/DafnyCore/AST/TypeDeclarations/IteratorDecl.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Diagnostics.Contracts; +using Microsoft.Dafny.Compilers; namespace Microsoft.Dafny; @@ -151,6 +152,8 @@ public bool AllowsNontermination { } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; + public override bool SetIndent(int indentBefore, TokenNewIndentCollector formatter) { formatter.SetMethodLikeIndent(StartToken, OwnedTokens, indentBefore); foreach (var req in Requires) { diff --git a/Source/DafnyCore/AST/TypeDeclarations/NewtypeDecl.cs b/Source/DafnyCore/AST/TypeDeclarations/NewtypeDecl.cs index efd594d52f4..ba3f7a8ab20 100644 --- a/Source/DafnyCore/AST/TypeDeclarations/NewtypeDecl.cs +++ b/Source/DafnyCore/AST/TypeDeclarations/NewtypeDecl.cs @@ -116,7 +116,7 @@ public TypeParameter.EqualitySupportValue EqualitySupport { Expression RedirectingTypeDecl.Constraint { get { return Constraint; } } SubsetTypeDecl.WKind RedirectingTypeDecl.WitnessKind { get { return WitnessKind; } } Expression RedirectingTypeDecl.Witness { get { return Witness; } } - FreshIdGenerator RedirectingTypeDecl.IdGenerator { get { return IdGenerator; } } + VerificationIdGenerator RedirectingTypeDecl.IdGenerator { get { return IdGenerator; } } bool ICodeContext.IsGhost { get { throw new NotSupportedException(); } // if .IsGhost is needed, the object should always be wrapped in an CodeContextWrapper @@ -126,6 +126,7 @@ bool ICodeContext.IsGhost { ModuleDefinition IASTVisitorContext.EnclosingModule { get { return EnclosingModuleDefinition; } } bool ICodeContext.MustReverify { get { return false; } } bool ICodeContext.AllowsNontermination { get { return false; } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; string ICallable.NameRelativeToModule { get { return Name; } } Specification ICallable.Decreases { get { diff --git a/Source/DafnyCore/AST/TypeDeclarations/TypeSynonymDeclBase.cs b/Source/DafnyCore/AST/TypeDeclarations/TypeSynonymDeclBase.cs index a6daacab0d6..57f35075f3e 100644 --- a/Source/DafnyCore/AST/TypeDeclarations/TypeSynonymDeclBase.cs +++ b/Source/DafnyCore/AST/TypeDeclarations/TypeSynonymDeclBase.cs @@ -73,7 +73,7 @@ bool RedirectingTypeDecl.ConstraintIsCompilable { SubsetTypeDecl.WKind RedirectingTypeDecl.WitnessKind { get { return SubsetTypeDecl.WKind.CompiledZero; } } Expression RedirectingTypeDecl.Witness { get { return null; } } - FreshIdGenerator RedirectingTypeDecl.IdGenerator { get { return IdGenerator; } } + VerificationIdGenerator RedirectingTypeDecl.IdGenerator { get { return IdGenerator; } } bool ICodeContext.IsGhost { get { throw new NotSupportedException(); } // if .IsGhost is needed, the object should always be wrapped in an CodeContextWrapper @@ -83,6 +83,7 @@ bool ICodeContext.IsGhost { ModuleDefinition IASTVisitorContext.EnclosingModule { get { return EnclosingModuleDefinition; } } bool ICodeContext.MustReverify { get { return false; } } bool ICodeContext.AllowsNontermination { get { return false; } } + CodeGenIdGenerator ICodeContext.CodeGenIdGenerator => CodeGenIdGenerator; string ICallable.NameRelativeToModule { get { return Name; } } Specification ICallable.Decreases { get { diff --git a/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs b/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs index 076c247c6de..7db21e91763 100644 --- a/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs +++ b/Source/DafnyCore/Backends/CSharp/CsharpCodeGenerator.cs @@ -2046,18 +2046,18 @@ protected override void EmitHalt(IToken tok, Expression/*?*/ messageExpr, Concre protected override ConcreteSyntaxTree EmitForStmt(IToken tok, IVariable loopIndex, bool goingUp, string /*?*/ endVarName, List body, LList public class MatchFlattener : IRewriter { private const string NoCasesMessage = "match has no cases and this is only allowed when the verifier can prove the match is unreachable"; - private readonly FreshIdGenerator idGenerator; private ResolutionContext resolutionContext; - public MatchFlattener(ErrorReporter reporter, FreshIdGenerator idGenerator) + public MatchFlattener(ErrorReporter reporter) : base(reporter) { - this.idGenerator = idGenerator; } internal override void PostResolve(ModuleDefinition module) { @@ -174,7 +172,7 @@ private ExtendedPattern RemoveIllegalSubpatterns(ExtendedPattern pat, bool inDis } string FreshTempVarName(string prefix, ICodeContext context) { - var gen = context is Declaration decl ? decl.IdGenerator : idGenerator; + var gen = context.CodeGenIdGenerator; var freshTempVarName = gen.FreshId(prefix); return freshTempVarName; } diff --git a/Source/DafnyCore/DafnyCore.csproj b/Source/DafnyCore/DafnyCore.csproj index a7f2c8eb1fe..e4bf8fe0ea7 100644 --- a/Source/DafnyCore/DafnyCore.csproj +++ b/Source/DafnyCore/DafnyCore.csproj @@ -34,7 +34,7 @@ - + diff --git a/Source/DafnyCore/DafnyGeneratedFromDafnyPost.py b/Source/DafnyCore/DafnyGeneratedFromDafnyPost.py index 88906120526..f3d2fb0c4d6 100644 --- a/Source/DafnyCore/DafnyGeneratedFromDafnyPost.py +++ b/Source/DafnyCore/DafnyGeneratedFromDafnyPost.py @@ -22,7 +22,7 @@ with open (output + '.cs', 'r' ) as f: content = f.read() - content_trimmed = re.sub('\[assembly[\s\S]*?(?=namespace Formatting)|namespace\s+\w+\s*\{\s*\}\s*//.*|_\d_', '', content, flags = re.M) + content_trimmed = re.sub('\[assembly[\s\S]*?(?=namespace Formatting)|namespace\s+\w+\s*\{\s*\}\s*//.*', '', content, flags = re.M) content_new = re.sub('\r?\nnamespace\s+(Std\.(?!Wrappers)(?!Strings)(?!Collections.Seq)(?!Arithmetic)(?!Math)\S+)\s*\{[\s\S]*?\}\s*// end of namespace \\1', '', content_trimmed, flags = re.M) content_new = re.sub('Backends\\\\\\\\Rust\\\\\\\\', 'Backends/Rust/', content_new, flags = re.M) @@ -38,6 +38,10 @@ prelude_match = re.match(r'(.*?)\nnamespace', content_new, re.DOTALL) prelude = prelude_match.group(1).strip() if prelude_match else "" + prelude = (prelude + + "\n#pragma warning disable CS0164 // This label has not been referenced" + + "\n#pragma warning disable CS0162 // Unreachable code detected" + + "\n#pragma warning disable CS1717 // Assignment made to same variable") # Define a regular expression to match the prelude and namespace blocks pattern = re.compile(r'(namespace\s+([\w.]+)\s*{[\s\S]*?}\s*//\s*end\s*of\s*namespace\s+\2)') diff --git a/Source/DafnyCore/GeneratedFromDafny/D2DPrettyPrinter.cs b/Source/DafnyCore/GeneratedFromDafny/D2DPrettyPrinter.cs index 6329abd9049..eaf1d9b97eb 100644 --- a/Source/DafnyCore/GeneratedFromDafny/D2DPrettyPrinter.cs +++ b/Source/DafnyCore/GeneratedFromDafny/D2DPrettyPrinter.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace D2DPrettyPrinter { diff --git a/Source/DafnyCore/GeneratedFromDafny/DAST.cs b/Source/DafnyCore/GeneratedFromDafny/DAST.cs index 3e5da1aea22..57d24f8460a 100644 --- a/Source/DafnyCore/GeneratedFromDafny/DAST.cs +++ b/Source/DafnyCore/GeneratedFromDafny/DAST.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace DAST { @@ -562,73 +565,73 @@ public DAST._IType Replace(Dafny.IMap mapping) { if ((mapping).Contains(this)) { return Dafny.Map.Select(mapping,this); } else { - DAST._IType _source25 = this; + DAST._IType _source0 = this; { - if (_source25.is_UserDefined) { - DAST._IResolvedType _761_resolved = _source25.dtor_resolved; - return DAST.Type.create_UserDefined((_761_resolved).Replace(mapping)); + if (_source0.is_UserDefined) { + DAST._IResolvedType _0_resolved = _source0.dtor_resolved; + return DAST.Type.create_UserDefined((_0_resolved).Replace(mapping)); } } { - if (_source25.is_Tuple) { - Dafny.ISequence _762_arguments = _source25.dtor_Tuple_a0; - return DAST.Type.create_Tuple(Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_763_mapping, _764_arguments) => ((System.Func)((_765_t) => { - return (_765_t).Replace(_763_mapping); -})))(mapping, _762_arguments), _762_arguments)); + if (_source0.is_Tuple) { + Dafny.ISequence _1_arguments = _source0.dtor_Tuple_a0; + return DAST.Type.create_Tuple(Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_2_mapping, _3_arguments) => ((System.Func)((_4_t) => { + return (_4_t).Replace(_2_mapping); +})))(mapping, _1_arguments), _1_arguments)); } } { - if (_source25.is_Array) { - DAST._IType _766_element = _source25.dtor_element; - BigInteger _767_dims = _source25.dtor_dims; - return DAST.Type.create_Array((_766_element).Replace(mapping), _767_dims); + if (_source0.is_Array) { + DAST._IType _5_element = _source0.dtor_element; + BigInteger _6_dims = _source0.dtor_dims; + return DAST.Type.create_Array((_5_element).Replace(mapping), _6_dims); } } { - if (_source25.is_Seq) { - DAST._IType _768_element = _source25.dtor_element; - return DAST.Type.create_Seq((_768_element).Replace(mapping)); + if (_source0.is_Seq) { + DAST._IType _7_element = _source0.dtor_element; + return DAST.Type.create_Seq((_7_element).Replace(mapping)); } } { - if (_source25.is_Set) { - DAST._IType _769_element = _source25.dtor_element; - return DAST.Type.create_Set((_769_element).Replace(mapping)); + if (_source0.is_Set) { + DAST._IType _8_element = _source0.dtor_element; + return DAST.Type.create_Set((_8_element).Replace(mapping)); } } { - if (_source25.is_Multiset) { - DAST._IType _770_element = _source25.dtor_element; - return DAST.Type.create_Multiset((_770_element).Replace(mapping)); + if (_source0.is_Multiset) { + DAST._IType _9_element = _source0.dtor_element; + return DAST.Type.create_Multiset((_9_element).Replace(mapping)); } } { - if (_source25.is_Map) { - DAST._IType _771_key = _source25.dtor_key; - DAST._IType _772_value = _source25.dtor_value; - return DAST.Type.create_Map((_771_key).Replace(mapping), (_772_value).Replace(mapping)); + if (_source0.is_Map) { + DAST._IType _10_key = _source0.dtor_key; + DAST._IType _11_value = _source0.dtor_value; + return DAST.Type.create_Map((_10_key).Replace(mapping), (_11_value).Replace(mapping)); } } { - if (_source25.is_SetBuilder) { - DAST._IType _773_element = _source25.dtor_element; - return DAST.Type.create_SetBuilder((_773_element).Replace(mapping)); + if (_source0.is_SetBuilder) { + DAST._IType _12_element = _source0.dtor_element; + return DAST.Type.create_SetBuilder((_12_element).Replace(mapping)); } } { - if (_source25.is_MapBuilder) { - DAST._IType _774_key = _source25.dtor_key; - DAST._IType _775_value = _source25.dtor_value; - return DAST.Type.create_MapBuilder((_774_key).Replace(mapping), (_775_value).Replace(mapping)); + if (_source0.is_MapBuilder) { + DAST._IType _13_key = _source0.dtor_key; + DAST._IType _14_value = _source0.dtor_value; + return DAST.Type.create_MapBuilder((_13_key).Replace(mapping), (_14_value).Replace(mapping)); } } { - if (_source25.is_Arrow) { - Dafny.ISequence _776_args = _source25.dtor_args; - DAST._IType _777_result = _source25.dtor_result; - return DAST.Type.create_Arrow(Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_778_mapping, _779_args) => ((System.Func)((_780_t) => { - return (_780_t).Replace(_778_mapping); -})))(mapping, _776_args), _776_args), (_777_result).Replace(mapping)); + if (_source0.is_Arrow) { + Dafny.ISequence _15_args = _source0.dtor_args; + DAST._IType _16_result = _source0.dtor_result; + return DAST.Type.create_Arrow(Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_17_mapping, _18_args) => ((System.Func)((_19_t) => { + return (_19_t).Replace(_17_mapping); +})))(mapping, _15_args), _15_args), (_16_result).Replace(mapping)); } } { @@ -2293,23 +2296,23 @@ public Dafny.ISequence dtor_extendedTypes { } } public DAST._IResolvedType Replace(Dafny.IMap mapping) { - return DAST.ResolvedType.create((this).dtor_path, Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Func>>((_781_mapping) => ((System.Func)((_782_t) => { - return (_782_t).Replace(_781_mapping); + return DAST.ResolvedType.create((this).dtor_path, Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Func>>((_0_mapping) => ((System.Func)((_1_t) => { + return (_1_t).Replace(_0_mapping); })))(mapping), (this).dtor_typeArgs), ((System.Func)(() => { - DAST._IResolvedTypeBase _source26 = (this).dtor_kind; + DAST._IResolvedTypeBase _source0 = (this).dtor_kind; { - if (_source26.is_Newtype) { - DAST._IType _783_baseType = _source26.dtor_baseType; - DAST._INewtypeRange _784_range = _source26.dtor_range; - bool _785_erase = _source26.dtor_erase; - return DAST.ResolvedTypeBase.create_Newtype((_783_baseType).Replace(mapping), _784_range, _785_erase); + if (_source0.is_Newtype) { + DAST._IType _2_baseType = _source0.dtor_baseType; + DAST._INewtypeRange _3_range = _source0.dtor_range; + bool _4_erase = _source0.dtor_erase; + return DAST.ResolvedTypeBase.create_Newtype((_2_baseType).Replace(mapping), _3_range, _4_erase); } } { return (this).dtor_kind; } -}))(), (this).dtor_attributes, (this).dtor_properMethods, Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Func>>((_786_mapping) => ((System.Func)((_787_t) => { - return (_787_t).Replace(_786_mapping); +}))(), (this).dtor_attributes, (this).dtor_properMethods, Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Func>>((_5_mapping) => ((System.Func)((_6_t) => { + return (_6_t).Replace(_5_mapping); })))(mapping), (this).dtor_extendedTypes)); } } diff --git a/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs b/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs index 9dcb31e5331..1efc61a86e8 100644 --- a/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs +++ b/Source/DafnyCore/GeneratedFromDafny/DAST_Format.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace DAST.Format { @@ -17,12 +20,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 _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; + BigInteger _0_i = Dafny.Helpers.Id>(f)((s).Select(BigInteger.Zero)); + BigInteger _1_j = DAST.Format.__default.SeqToHeight<__T>((s).Drop(BigInteger.One), f); + if ((_0_i) < (_1_j)) { + return _1_j; } else { - return _759_i; + return _0_i; } } } diff --git a/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs b/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs index fb266640623..29a884221c1 100644 --- a/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs +++ b/Source/DafnyCore/GeneratedFromDafny/DCOMP.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace DCOMP { @@ -28,50 +31,50 @@ public static bool has__special(Dafny.ISequence i) { if (((i).Select(BigInteger.One)) != (new Dafny.Rune('_'))) { return true; } else { - Dafny.ISequence _in121 = (i).Drop(new BigInteger(2)); - i = _in121; + Dafny.ISequence _in0 = (i).Drop(new BigInteger(2)); + i = _in0; goto TAIL_CALL_START; } } else { return true; } } else { - Dafny.ISequence _in122 = (i).Drop(BigInteger.One); - i = _in122; + Dafny.ISequence _in1 = (i).Drop(BigInteger.One); + i = _in1; goto TAIL_CALL_START; } } public static Dafny.ISequence idiomatic__rust(Dafny.ISequence i) { - Dafny.ISequence _1116___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((i).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_1116___accumulator, Dafny.Sequence.UnicodeFromString("")); + return Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.UnicodeFromString("")); } else if (((i).Select(BigInteger.Zero)) == (new Dafny.Rune('_'))) { - _1116___accumulator = Dafny.Sequence.Concat(_1116___accumulator, Dafny.Sequence.UnicodeFromString("_")); - Dafny.ISequence _in123 = (i).Drop(new BigInteger(2)); - i = _in123; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.UnicodeFromString("_")); + Dafny.ISequence _in0 = (i).Drop(new BigInteger(2)); + i = _in0; goto TAIL_CALL_START; } else { - _1116___accumulator = Dafny.Sequence.Concat(_1116___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); - Dafny.ISequence _in124 = (i).Drop(BigInteger.One); - i = _in124; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); + Dafny.ISequence _in1 = (i).Drop(BigInteger.One); + i = _in1; goto TAIL_CALL_START; } } public static Dafny.ISequence replaceDots(Dafny.ISequence i) { - Dafny.ISequence _1117___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((i).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_1117___accumulator, Dafny.Sequence.UnicodeFromString("")); + return Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.UnicodeFromString("")); } else if (((i).Select(BigInteger.Zero)) == (new Dafny.Rune('.'))) { - _1117___accumulator = Dafny.Sequence.Concat(_1117___accumulator, Dafny.Sequence.UnicodeFromString("_d")); - Dafny.ISequence _in125 = (i).Drop(BigInteger.One); - i = _in125; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.UnicodeFromString("_d")); + Dafny.ISequence _in0 = (i).Drop(BigInteger.One); + i = _in0; goto TAIL_CALL_START; } else { - _1117___accumulator = Dafny.Sequence.Concat(_1117___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); - Dafny.ISequence _in126 = (i).Drop(BigInteger.One); - i = _in126; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((i).Select(BigInteger.Zero))); + Dafny.ISequence _in1 = (i).Drop(BigInteger.One); + i = _in1; goto TAIL_CALL_START; } } @@ -104,22 +107,22 @@ public static bool is__idiomatic__rust__id(Dafny.ISequence i) { } else if (DCOMP.__default.is__dafny__generated__id(i)) { return i; } else { - Dafny.ISequence _1118_r = DCOMP.__default.replaceDots(i); - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _1118_r); + Dafny.ISequence _0_r = DCOMP.__default.replaceDots(i); + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _0_r); } } public static Dafny.ISequence escapeField(Dafny.ISequence f) { - Dafny.ISequence _1119_r = (f); - if ((DCOMP.__default.reserved__fields).Contains(_1119_r)) { - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _1119_r); + Dafny.ISequence _0_r = (f); + if ((DCOMP.__default.reserved__fields).Contains(_0_r)) { + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r#_"), _0_r); } else { return DCOMP.__default.escapeName(f); } } public static Dafny.ISequence escapeDtor(Dafny.ISequence f) { - Dafny.ISequence _1120_r = (f); - if ((DCOMP.__default.reserved__fields).Contains(_1120_r)) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1120_r, Dafny.Sequence.UnicodeFromString(": r#_")), _1120_r); + Dafny.ISequence _0_r = (f); + if ((DCOMP.__default.reserved__fields).Contains(_0_r)) { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_0_r, Dafny.Sequence.UnicodeFromString(": r#_")), _0_r); } else { return DCOMP.__default.escapeName(f); } @@ -136,22 +139,22 @@ public static bool is__idiomatic__rust__id(Dafny.ISequence i) { if ((new BigInteger((rs).Count)).Sign == 0) { return Std.Wrappers.Option.create_None(); } else { - Std.Wrappers._IOption _1121_res = ((System.Func>)(() => { - DAST._IType _source51 = (rs).Select(BigInteger.Zero); + Std.Wrappers._IOption _0_res = ((System.Func>)(() => { + DAST._IType _source0 = (rs).Select(BigInteger.Zero); { - if (_source51.is_UserDefined) { - DAST._IResolvedType _1122_resolvedType = _source51.dtor_resolved; - return DCOMP.__default.TraitTypeContainingMethod(_1122_resolvedType, dafnyName); + if (_source0.is_UserDefined) { + DAST._IResolvedType _1_resolvedType = _source0.dtor_resolved; + return DCOMP.__default.TraitTypeContainingMethod(_1_resolvedType, dafnyName); } } { return Std.Wrappers.Option.create_None(); } }))(); - Std.Wrappers._IOption _source52 = _1121_res; + Std.Wrappers._IOption _source1 = _0_res; { - if (_source52.is_Some) { - return _1121_res; + if (_source1.is_Some) { + return _0_res; } } { @@ -161,17 +164,17 @@ public static bool is__idiomatic__rust__id(Dafny.ISequence i) { } public static Std.Wrappers._IOption TraitTypeContainingMethod(DAST._IResolvedType r, Dafny.ISequence dafnyName) { - DAST._IResolvedType _let_tmp_rhs53 = r; - Dafny.ISequence> _1123_path = _let_tmp_rhs53.dtor_path; - Dafny.ISequence _1124_typeArgs = _let_tmp_rhs53.dtor_typeArgs; - DAST._IResolvedTypeBase _1125_kind = _let_tmp_rhs53.dtor_kind; - Dafny.ISequence _1126_attributes = _let_tmp_rhs53.dtor_attributes; - Dafny.ISequence> _1127_properMethods = _let_tmp_rhs53.dtor_properMethods; - Dafny.ISequence _1128_extendedTypes = _let_tmp_rhs53.dtor_extendedTypes; - if ((_1127_properMethods).Contains(dafnyName)) { + DAST._IResolvedType _let_tmp_rhs0 = r; + Dafny.ISequence> _0_path = _let_tmp_rhs0.dtor_path; + Dafny.ISequence _1_typeArgs = _let_tmp_rhs0.dtor_typeArgs; + DAST._IResolvedTypeBase _2_kind = _let_tmp_rhs0.dtor_kind; + Dafny.ISequence _3_attributes = _let_tmp_rhs0.dtor_attributes; + Dafny.ISequence> _4_properMethods = _let_tmp_rhs0.dtor_properMethods; + Dafny.ISequence _5_extendedTypes = _let_tmp_rhs0.dtor_extendedTypes; + if ((_4_properMethods).Contains(dafnyName)) { return Std.Wrappers.Option.create_Some(r); } else { - return DCOMP.__default.TraitTypeContainingMethodAux(_1128_extendedTypes, dafnyName); + return DCOMP.__default.TraitTypeContainingMethodAux(_5_extendedTypes, dafnyName); } } public static Dafny.ISet> reserved__rust { get { @@ -422,18 +425,18 @@ public Dafny.ISequence> dtor_names { } } public DCOMP._IEnvironment ToOwned() { - DCOMP._IEnvironment _1129_dt__update__tmp_h0 = this; - Dafny.IMap,RAST._IType> _1130_dt__update_htypes_h0 = ((System.Func,RAST._IType>>)(() => { - var _coll6 = new System.Collections.Generic.List,RAST._IType>>(); - foreach (Dafny.ISequence _compr_6 in ((this).dtor_types).Keys.Elements) { - Dafny.ISequence _1131_k = (Dafny.ISequence)_compr_6; - if (((this).dtor_types).Contains(_1131_k)) { - _coll6.Add(new Dafny.Pair,RAST._IType>(_1131_k, (Dafny.Map, RAST._IType>.Select((this).dtor_types,_1131_k)).ToOwned())); + DCOMP._IEnvironment _0_dt__update__tmp_h0 = this; + Dafny.IMap,RAST._IType> _1_dt__update_htypes_h0 = ((System.Func,RAST._IType>>)(() => { + var _coll0 = new System.Collections.Generic.List,RAST._IType>>(); + foreach (Dafny.ISequence _compr_0 in ((this).dtor_types).Keys.Elements) { + Dafny.ISequence _2_k = (Dafny.ISequence)_compr_0; + if (((this).dtor_types).Contains(_2_k)) { + _coll0.Add(new Dafny.Pair,RAST._IType>(_2_k, (Dafny.Map, RAST._IType>.Select((this).dtor_types,_2_k)).ToOwned())); } } - return Dafny.Map,RAST._IType>.FromCollection(_coll6); + return Dafny.Map,RAST._IType>.FromCollection(_coll0); }))(); - return DCOMP.Environment.create((_1129_dt__update__tmp_h0).dtor_names, _1130_dt__update_htypes_h0); + return DCOMP.Environment.create((_0_dt__update__tmp_h0).dtor_names, _1_dt__update_htypes_h0); } public static DCOMP._IEnvironment Empty() { return DCOMP.Environment.create(Dafny.Sequence>.FromElements(), Dafny.Map, RAST._IType>.FromElements()); @@ -465,8 +468,8 @@ public DCOMP._IEnvironment merge(DCOMP._IEnvironment other) { return DCOMP.Environment.create(Dafny.Sequence>.Concat((this).dtor_names, (other).dtor_names), Dafny.Map, RAST._IType>.Merge((this).dtor_types, (other).dtor_types)); } public DCOMP._IEnvironment RemoveAssigned(Dafny.ISequence name) { - BigInteger _1132_indexInEnv = Std.Collections.Seq.__default.IndexOf>((this).dtor_names, name); - return DCOMP.Environment.create(Dafny.Sequence>.Concat(((this).dtor_names).Subsequence(BigInteger.Zero, _1132_indexInEnv), ((this).dtor_names).Drop((_1132_indexInEnv) + (BigInteger.One))), Dafny.Map, RAST._IType>.Subtract((this).dtor_types, Dafny.Set>.FromElements(name))); + BigInteger _0_indexInEnv = Std.Collections.Seq.__default.IndexOf>((this).dtor_names, name); + return DCOMP.Environment.create(Dafny.Sequence>.Concat(((this).dtor_names).Subsequence(BigInteger.Zero, _0_indexInEnv), ((this).dtor_names).Drop((_0_indexInEnv) + (BigInteger.One))), Dafny.Map, RAST._IType>.Subtract((this).dtor_types, Dafny.Set>.FromElements(name))); } } @@ -765,16 +768,16 @@ public void __ctor(bool unicodeChars, DCOMP._IObjectType objectType) public RAST._IMod GenModule(DAST._IModule mod, Dafny.ISequence> containingPath) { RAST._IMod s = RAST.Mod.Default(); - Dafny.ISequence _1133_modName; - _1133_modName = DCOMP.__default.escapeName((mod).dtor_name); + Dafny.ISequence _0_modName; + _0_modName = DCOMP.__default.escapeName((mod).dtor_name); if (((mod).dtor_body).is_None) { - s = RAST.Mod.create_ExternMod(_1133_modName); + s = RAST.Mod.create_ExternMod(_0_modName); } else { - Dafny.ISequence _1134_body; - Dafny.ISequence _out15; - _out15 = (this).GenModuleBody(((mod).dtor_body).dtor_value, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((mod).dtor_name))); - _1134_body = _out15; - s = RAST.Mod.create_Mod(_1133_modName, _1134_body); + Dafny.ISequence _1_body; + Dafny.ISequence _out0; + _out0 = (this).GenModuleBody(((mod).dtor_body).dtor_value, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((mod).dtor_name))); + _1_body = _out0; + s = RAST.Mod.create_Mod(_0_modName, _1_body); } return s; } @@ -782,65 +785,65 @@ 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 _1135_i = BigInteger.Zero; _1135_i < _hi5; _1135_i++) { - Dafny.ISequence _1136_generated = Dafny.Sequence.Empty; - DAST._IModuleItem _source53 = (body).Select(_1135_i); + BigInteger _hi0 = new BigInteger((body).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + Dafny.ISequence _1_generated = Dafny.Sequence.Empty; + DAST._IModuleItem _source0 = (body).Select(_0_i); { - if (_source53.is_Module) { - DAST._IModule _1137_m = _source53.dtor_Module_a0; - RAST._IMod _1138_mm; - RAST._IMod _out16; - _out16 = (this).GenModule(_1137_m, containingPath); - _1138_mm = _out16; - _1136_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_ModDecl(_1138_mm)); - goto after_match1; + if (_source0.is_Module) { + DAST._IModule _2_m = _source0.dtor_Module_a0; + RAST._IMod _3_mm; + RAST._IMod _out0; + _out0 = (this).GenModule(_2_m, containingPath); + _3_mm = _out0; + _1_generated = Dafny.Sequence.FromElements(RAST.ModDecl.create_ModDecl(_3_mm)); + goto after_match0; } } { - if (_source53.is_Class) { - DAST._IClass _1139_c = _source53.dtor_Class_a0; - Dafny.ISequence _out17; - _out17 = (this).GenClass(_1139_c, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((_1139_c).dtor_name))); - _1136_generated = _out17; - goto after_match1; + if (_source0.is_Class) { + DAST._IClass _4_c = _source0.dtor_Class_a0; + Dafny.ISequence _out1; + _out1 = (this).GenClass(_4_c, Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((_4_c).dtor_name))); + _1_generated = _out1; + goto after_match0; } } { - if (_source53.is_Trait) { - DAST._ITrait _1140_t = _source53.dtor_Trait_a0; - Dafny.ISequence _out18; - _out18 = (this).GenTrait(_1140_t, containingPath); - _1136_generated = _out18; - goto after_match1; + if (_source0.is_Trait) { + DAST._ITrait _5_t = _source0.dtor_Trait_a0; + Dafny.ISequence _out2; + _out2 = (this).GenTrait(_5_t, containingPath); + _1_generated = _out2; + goto after_match0; } } { - if (_source53.is_Newtype) { - DAST._INewtype _1141_n = _source53.dtor_Newtype_a0; - Dafny.ISequence _out19; - _out19 = (this).GenNewtype(_1141_n); - _1136_generated = _out19; - goto after_match1; + if (_source0.is_Newtype) { + DAST._INewtype _6_n = _source0.dtor_Newtype_a0; + Dafny.ISequence _out3; + _out3 = (this).GenNewtype(_6_n); + _1_generated = _out3; + goto after_match0; } } { - if (_source53.is_SynonymType) { - DAST._ISynonymType _1142_s = _source53.dtor_SynonymType_a0; - Dafny.ISequence _out20; - _out20 = (this).GenSynonymType(_1142_s); - _1136_generated = _out20; - goto after_match1; + if (_source0.is_SynonymType) { + DAST._ISynonymType _7_s = _source0.dtor_SynonymType_a0; + Dafny.ISequence _out4; + _out4 = (this).GenSynonymType(_7_s); + _1_generated = _out4; + goto after_match0; } } { - DAST._IDatatype _1143_d = _source53.dtor_Datatype_a0; - Dafny.ISequence _out21; - _out21 = (this).GenDatatype(_1143_d); - _1136_generated = _out21; + DAST._IDatatype _8_d = _source0.dtor_Datatype_a0; + Dafny.ISequence _out5; + _out5 = (this).GenDatatype(_8_d); + _1_generated = _out5; } - after_match1: ; - s = Dafny.Sequence.Concat(s, _1136_generated); + after_match0: ; + s = Dafny.Sequence.Concat(s, _1_generated); } return s; } @@ -849,16 +852,16 @@ 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 _1144_genTpConstraint; + Dafny.ISequence _0_genTpConstraint; if (((tp).dtor_bounds).Contains(DAST.TypeArgBound.create_SupportsEquality())) { - _1144_genTpConstraint = Dafny.Sequence.FromElements(RAST.__default.DafnyTypeEq); + _0_genTpConstraint = Dafny.Sequence.FromElements(RAST.__default.DafnyTypeEq); } else { - _1144_genTpConstraint = Dafny.Sequence.FromElements(RAST.__default.DafnyType); + _0_genTpConstraint = Dafny.Sequence.FromElements(RAST.__default.DafnyType); } if (((tp).dtor_bounds).Contains(DAST.TypeArgBound.create_SupportsDefault())) { - _1144_genTpConstraint = Dafny.Sequence.Concat(_1144_genTpConstraint, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))); + _0_genTpConstraint = Dafny.Sequence.Concat(_0_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)), _1144_genTpConstraint); + typeParam = RAST.TypeParamDecl.create(DCOMP.__default.escapeName(((tp).dtor_name)), _0_genTpConstraint); } public void GenTypeParameters(Dafny.ISequence @params, out Dafny.ISequence typeParamsSeq, out Dafny.ISequence typeParams, out Dafny.ISequence constrainedTypeParams, out Dafny.ISequence whereConstraints) { @@ -871,24 +874,24 @@ public void GenTypeParameters(Dafny.ISequence @params, out D constrainedTypeParams = Dafny.Sequence.FromElements(); whereConstraints = Dafny.Sequence.UnicodeFromString(""); if ((new BigInteger((@params).Count)).Sign == 1) { - BigInteger _hi6 = new BigInteger((@params).Count); - for (BigInteger _1145_tpI = BigInteger.Zero; _1145_tpI < _hi6; _1145_tpI++) { - DAST._ITypeArgDecl _1146_tp; - _1146_tp = (@params).Select(_1145_tpI); - DAST._IType _1147_typeArg; - RAST._ITypeParamDecl _1148_typeParam; - DAST._IType _out22; - RAST._ITypeParamDecl _out23; - (this).GenTypeParam(_1146_tp, out _out22, out _out23); - _1147_typeArg = _out22; - _1148_typeParam = _out23; - RAST._IType _1149_rType; - RAST._IType _out24; - _out24 = (this).GenType(_1147_typeArg, DCOMP.GenTypeContext.@default()); - _1149_rType = _out24; - typeParamsSeq = Dafny.Sequence.Concat(typeParamsSeq, Dafny.Sequence.FromElements(_1147_typeArg)); - typeParams = Dafny.Sequence.Concat(typeParams, Dafny.Sequence.FromElements(_1149_rType)); - constrainedTypeParams = Dafny.Sequence.Concat(constrainedTypeParams, Dafny.Sequence.FromElements(_1148_typeParam)); + BigInteger _hi0 = new BigInteger((@params).Count); + for (BigInteger _0_tpI = BigInteger.Zero; _0_tpI < _hi0; _0_tpI++) { + DAST._ITypeArgDecl _1_tp; + _1_tp = (@params).Select(_0_tpI); + DAST._IType _2_typeArg; + RAST._ITypeParamDecl _3_typeParam; + DAST._IType _out0; + RAST._ITypeParamDecl _out1; + (this).GenTypeParam(_1_tp, out _out0, out _out1); + _2_typeArg = _out0; + _3_typeParam = _out1; + RAST._IType _4_rType; + RAST._IType _out2; + _out2 = (this).GenType(_2_typeArg, DCOMP.GenTypeContext.@default()); + _4_rType = _out2; + typeParamsSeq = Dafny.Sequence.Concat(typeParamsSeq, Dafny.Sequence.FromElements(_2_typeArg)); + typeParams = Dafny.Sequence.Concat(typeParams, Dafny.Sequence.FromElements(_4_rType)); + constrainedTypeParams = Dafny.Sequence.Concat(constrainedTypeParams, Dafny.Sequence.FromElements(_3_typeParam)); } } } @@ -903,447 +906,447 @@ public bool IsSameResolvedType(DAST._IResolvedType r1, DAST._IResolvedType r2) public Dafny.ISequence GenClass(DAST._IClass c, Dafny.ISequence> path) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _1150_typeParamsSeq; - Dafny.ISequence _1151_rTypeParams; - Dafny.ISequence _1152_rTypeParamsDecls; - Dafny.ISequence _1153_whereConstraints; - Dafny.ISequence _out25; - Dafny.ISequence _out26; - Dafny.ISequence _out27; - Dafny.ISequence _out28; - (this).GenTypeParameters((c).dtor_typeParams, out _out25, out _out26, out _out27, out _out28); - _1150_typeParamsSeq = _out25; - _1151_rTypeParams = _out26; - _1152_rTypeParamsDecls = _out27; - _1153_whereConstraints = _out28; - Dafny.ISequence _1154_constrainedTypeParams; - _1154_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1152_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); - Dafny.ISequence _1155_fields; - _1155_fields = Dafny.Sequence.FromElements(); - Dafny.ISequence _1156_fieldInits; - _1156_fieldInits = Dafny.Sequence.FromElements(); - BigInteger _hi7 = new BigInteger(((c).dtor_fields).Count); - for (BigInteger _1157_fieldI = BigInteger.Zero; _1157_fieldI < _hi7; _1157_fieldI++) { - DAST._IField _1158_field; - _1158_field = ((c).dtor_fields).Select(_1157_fieldI); - RAST._IType _1159_fieldType; - RAST._IType _out29; - _out29 = (this).GenType(((_1158_field).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); - _1159_fieldType = _out29; - Dafny.ISequence _1160_fieldRustName; - _1160_fieldRustName = DCOMP.__default.escapeName(((_1158_field).dtor_formal).dtor_name); - _1155_fields = Dafny.Sequence.Concat(_1155_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PUB(), RAST.Formal.create(_1160_fieldRustName, _1159_fieldType)))); - Std.Wrappers._IOption _source54 = (_1158_field).dtor_defaultValue; + Dafny.ISequence _0_typeParamsSeq; + Dafny.ISequence _1_rTypeParams; + Dafny.ISequence _2_rTypeParamsDecls; + Dafny.ISequence _3_whereConstraints; + Dafny.ISequence _out0; + Dafny.ISequence _out1; + Dafny.ISequence _out2; + Dafny.ISequence _out3; + (this).GenTypeParameters((c).dtor_typeParams, out _out0, out _out1, out _out2, out _out3); + _0_typeParamsSeq = _out0; + _1_rTypeParams = _out1; + _2_rTypeParamsDecls = _out2; + _3_whereConstraints = _out3; + Dafny.ISequence _4_constrainedTypeParams; + _4_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_2_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); + Dafny.ISequence _5_fields; + _5_fields = Dafny.Sequence.FromElements(); + Dafny.ISequence _6_fieldInits; + _6_fieldInits = Dafny.Sequence.FromElements(); + BigInteger _hi0 = new BigInteger(((c).dtor_fields).Count); + for (BigInteger _7_fieldI = BigInteger.Zero; _7_fieldI < _hi0; _7_fieldI++) { + DAST._IField _8_field; + _8_field = ((c).dtor_fields).Select(_7_fieldI); + RAST._IType _9_fieldType; + RAST._IType _out4; + _out4 = (this).GenType(((_8_field).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); + _9_fieldType = _out4; + Dafny.ISequence _10_fieldRustName; + _10_fieldRustName = DCOMP.__default.escapeName(((_8_field).dtor_formal).dtor_name); + _5_fields = Dafny.Sequence.Concat(_5_fields, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PUB(), RAST.Formal.create(_10_fieldRustName, _9_fieldType)))); + Std.Wrappers._IOption _source0 = (_8_field).dtor_defaultValue; { - if (_source54.is_Some) { - DAST._IExpression _1161_e = _source54.dtor_value; + if (_source0.is_Some) { + DAST._IExpression _11_e = _source0.dtor_value; { - RAST._IExpr _1162_expr; - DCOMP._IOwnership _1163___v48; - Dafny.ISet> _1164___v49; - RAST._IExpr _out30; - DCOMP._IOwnership _out31; - Dafny.ISet> _out32; - (this).GenExpr(_1161_e, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out30, out _out31, out _out32); - _1162_expr = _out30; - _1163___v48 = _out31; - _1164___v49 = _out32; - _1156_fieldInits = Dafny.Sequence.Concat(_1156_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1160_fieldRustName, _1162_expr))); + RAST._IExpr _12_expr; + DCOMP._IOwnership _13___v48; + Dafny.ISet> _14___v49; + RAST._IExpr _out5; + DCOMP._IOwnership _out6; + Dafny.ISet> _out7; + (this).GenExpr(_11_e, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out5, out _out6, out _out7); + _12_expr = _out5; + _13___v48 = _out6; + _14___v49 = _out7; + _6_fieldInits = Dafny.Sequence.Concat(_6_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_10_fieldRustName, _12_expr))); } - goto after_match2; + goto after_match0; } } { { - RAST._IExpr _1165_default; - _1165_default = RAST.__default.std__Default__default; - if ((_1159_fieldType).IsObjectOrPointer()) { - _1165_default = (_1159_fieldType).ToNullExpr(); + RAST._IExpr _15_default; + _15_default = RAST.__default.std__Default__default; + if ((_9_fieldType).IsObjectOrPointer()) { + _15_default = (_9_fieldType).ToNullExpr(); } - _1156_fieldInits = Dafny.Sequence.Concat(_1156_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1160_fieldRustName, _1165_default))); - } - } - after_match2: ; - } - BigInteger _hi8 = new BigInteger(((c).dtor_typeParams).Count); - for (BigInteger _1166_typeParamI = BigInteger.Zero; _1166_typeParamI < _hi8; _1166_typeParamI++) { - DAST._IType _1167_typeArg; - RAST._ITypeParamDecl _1168_typeParam; - DAST._IType _out33; - RAST._ITypeParamDecl _out34; - (this).GenTypeParam(((c).dtor_typeParams).Select(_1166_typeParamI), out _out33, out _out34); - _1167_typeArg = _out33; - _1168_typeParam = _out34; - RAST._IType _1169_rTypeArg; - RAST._IType _out35; - _out35 = (this).GenType(_1167_typeArg, DCOMP.GenTypeContext.@default()); - _1169_rTypeArg = _out35; - _1155_fields = Dafny.Sequence.Concat(_1155_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(_1166_typeParamI)), RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_1169_rTypeArg)))))); - _1156_fieldInits = Dafny.Sequence.Concat(_1156_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_1166_typeParamI)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::marker::PhantomData"))))); - } - Dafny.ISequence _1170_datatypeName; - _1170_datatypeName = DCOMP.__default.escapeName((c).dtor_name); - RAST._IStruct _1171_struct; - _1171_struct = RAST.Struct.create(Dafny.Sequence>.FromElements(), _1170_datatypeName, _1152_rTypeParamsDecls, RAST.Fields.create_NamedFields(_1155_fields)); - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(_1171_struct)); - Dafny.ISequence _1172_implBodyRaw; - Dafny.IMap>,Dafny.ISequence> _1173_traitBodies; - Dafny.ISequence _out36; - Dafny.IMap>,Dafny.ISequence> _out37; - (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_UserDefined(DAST.ResolvedType.create(path, Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Class(), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _1150_typeParamsSeq, out _out36, out _out37); - _1172_implBodyRaw = _out36; - _1173_traitBodies = _out37; - Dafny.ISequence _1174_implBody; - _1174_implBody = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create((this).allocate__fn, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some((this).Object(RAST.Type.create_SelfOwned())), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((((RAST.__default.dafny__runtime).MSel((this).allocate)).ApplyType1(RAST.Type.create_SelfOwned())).Apply(Dafny.Sequence.FromElements()))))), _1172_implBodyRaw); - RAST._IImpl _1175_i; - _1175_i = RAST.Impl.create_Impl(_1152_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1170_datatypeName), _1151_rTypeParams), _1153_whereConstraints, _1174_implBody); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_1175_i))); - RAST._IType _1176_genSelfPath; - RAST._IType _out38; - _out38 = DCOMP.COMP.GenPath(path); - _1176_genSelfPath = _out38; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1152_rTypeParamsDecls, ((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply(Dafny.Sequence.FromElements(RAST.Type.create_DynType(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any"))))), RAST.Type.create_TypeApp(_1176_genSelfPath, _1151_rTypeParams), _1153_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_ImplMemberMacro(((RAST.__default.dafny__runtime).MSel((this).UpcastFnMacro)).Apply1(RAST.Expr.create_ExprFromType(RAST.Type.create_DynType(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any"))))))))))); - BigInteger _hi9 = new BigInteger(((c).dtor_superClasses).Count); - for (BigInteger _1177_i = BigInteger.Zero; _1177_i < _hi9; _1177_i++) { - DAST._IType _1178_superClass; - _1178_superClass = ((c).dtor_superClasses).Select(_1177_i); - DAST._IType _source55 = _1178_superClass; + _6_fieldInits = Dafny.Sequence.Concat(_6_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_10_fieldRustName, _15_default))); + } + } + after_match0: ; + } + BigInteger _hi1 = new BigInteger(((c).dtor_typeParams).Count); + for (BigInteger _16_typeParamI = BigInteger.Zero; _16_typeParamI < _hi1; _16_typeParamI++) { + DAST._IType _17_typeArg; + RAST._ITypeParamDecl _18_typeParam; + DAST._IType _out8; + RAST._ITypeParamDecl _out9; + (this).GenTypeParam(((c).dtor_typeParams).Select(_16_typeParamI), out _out8, out _out9); + _17_typeArg = _out8; + _18_typeParam = _out9; + RAST._IType _19_rTypeArg; + RAST._IType _out10; + _out10 = (this).GenType(_17_typeArg, DCOMP.GenTypeContext.@default()); + _19_rTypeArg = _out10; + _5_fields = Dafny.Sequence.Concat(_5_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(_16_typeParamI)), RAST.Type.create_TypeApp(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("marker"))).MSel(Dafny.Sequence.UnicodeFromString("PhantomData")), Dafny.Sequence.FromElements(_19_rTypeArg)))))); + _6_fieldInits = Dafny.Sequence.Concat(_6_fieldInits, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_phantom_type_param_"), Std.Strings.__default.OfNat(_16_typeParamI)), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::marker::PhantomData"))))); + } + Dafny.ISequence _20_datatypeName; + _20_datatypeName = DCOMP.__default.escapeName((c).dtor_name); + RAST._IStruct _21_struct; + _21_struct = RAST.Struct.create(Dafny.Sequence>.FromElements(), _20_datatypeName, _2_rTypeParamsDecls, RAST.Fields.create_NamedFields(_5_fields)); + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_StructDecl(_21_struct)); + Dafny.ISequence _22_implBodyRaw; + Dafny.IMap>,Dafny.ISequence> _23_traitBodies; + Dafny.ISequence _out11; + Dafny.IMap>,Dafny.ISequence> _out12; + (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_UserDefined(DAST.ResolvedType.create(path, Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Class(), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _0_typeParamsSeq, out _out11, out _out12); + _22_implBodyRaw = _out11; + _23_traitBodies = _out12; + Dafny.ISequence _24_implBody; + _24_implBody = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create((this).allocate__fn, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some((this).Object(RAST.Type.create_SelfOwned())), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((((RAST.__default.dafny__runtime).MSel((this).allocate)).ApplyType1(RAST.Type.create_SelfOwned())).Apply(Dafny.Sequence.FromElements()))))), _22_implBodyRaw); + RAST._IImpl _25_i; + _25_i = RAST.Impl.create_Impl(_2_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_20_datatypeName), _1_rTypeParams), _3_whereConstraints, _24_implBody); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(_25_i))); + RAST._IType _26_genSelfPath; + RAST._IType _out13; + _out13 = DCOMP.COMP.GenPath(path); + _26_genSelfPath = _out13; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, ((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply(Dafny.Sequence.FromElements(RAST.Type.create_DynType(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any"))))), RAST.Type.create_TypeApp(_26_genSelfPath, _1_rTypeParams), _3_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_ImplMemberMacro(((RAST.__default.dafny__runtime).MSel((this).UpcastFnMacro)).Apply1(RAST.Expr.create_ExprFromType(RAST.Type.create_DynType(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any"))))))))))); + BigInteger _hi2 = new BigInteger(((c).dtor_superClasses).Count); + for (BigInteger _27_i = BigInteger.Zero; _27_i < _hi2; _27_i++) { + DAST._IType _28_superClass; + _28_superClass = ((c).dtor_superClasses).Select(_27_i); + DAST._IType _source1 = _28_superClass; { - if (_source55.is_UserDefined) { - DAST._IResolvedType resolved0 = _source55.dtor_resolved; - Dafny.ISequence> _1179_traitPath = resolved0.dtor_path; - Dafny.ISequence _1180_typeArgs = resolved0.dtor_typeArgs; + if (_source1.is_UserDefined) { + DAST._IResolvedType resolved0 = _source1.dtor_resolved; + Dafny.ISequence> _29_traitPath = resolved0.dtor_path; + Dafny.ISequence _30_typeArgs = resolved0.dtor_typeArgs; DAST._IResolvedTypeBase kind0 = resolved0.dtor_kind; if (kind0.is_Trait) { { - RAST._IType _1181_pathStr; - RAST._IType _out39; - _out39 = DCOMP.COMP.GenPath(_1179_traitPath); - _1181_pathStr = _out39; - Dafny.ISequence _1182_typeArgs; - Dafny.ISequence _out40; - _out40 = (this).GenTypeArgs(_1180_typeArgs, DCOMP.GenTypeContext.@default()); - _1182_typeArgs = _out40; - Dafny.ISequence _1183_body; - _1183_body = Dafny.Sequence.FromElements(); - if ((_1173_traitBodies).Contains(_1179_traitPath)) { - _1183_body = Dafny.Map>, Dafny.ISequence>.Select(_1173_traitBodies,_1179_traitPath); + RAST._IType _31_pathStr; + RAST._IType _out14; + _out14 = DCOMP.COMP.GenPath(_29_traitPath); + _31_pathStr = _out14; + Dafny.ISequence _32_typeArgs; + Dafny.ISequence _out15; + _out15 = (this).GenTypeArgs(_30_typeArgs, DCOMP.GenTypeContext.@default()); + _32_typeArgs = _out15; + Dafny.ISequence _33_body; + _33_body = Dafny.Sequence.FromElements(); + if ((_23_traitBodies).Contains(_29_traitPath)) { + _33_body = Dafny.Map>, Dafny.ISequence>.Select(_23_traitBodies,_29_traitPath); } - RAST._IType _1184_traitType; - _1184_traitType = RAST.Type.create_TypeApp(_1181_pathStr, _1182_typeArgs); - RAST._IModDecl _1185_x; - _1185_x = RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1152_rTypeParamsDecls, _1184_traitType, RAST.Type.create_TypeApp(_1176_genSelfPath, _1151_rTypeParams), _1153_whereConstraints, _1183_body)); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1185_x)); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1152_rTypeParamsDecls, ((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply(Dafny.Sequence.FromElements(RAST.Type.create_DynType(_1184_traitType))), RAST.Type.create_TypeApp(_1176_genSelfPath, _1151_rTypeParams), _1153_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_ImplMemberMacro(((RAST.__default.dafny__runtime).MSel((this).UpcastFnMacro)).Apply1(RAST.Expr.create_ExprFromType(RAST.Type.create_DynType(_1184_traitType))))))))); + RAST._IType _34_traitType; + _34_traitType = RAST.Type.create_TypeApp(_31_pathStr, _32_typeArgs); + RAST._IModDecl _35_x; + _35_x = RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, _34_traitType, RAST.Type.create_TypeApp(_26_genSelfPath, _1_rTypeParams), _3_whereConstraints, _33_body)); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_35_x)); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, ((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply(Dafny.Sequence.FromElements(RAST.Type.create_DynType(_34_traitType))), RAST.Type.create_TypeApp(_26_genSelfPath, _1_rTypeParams), _3_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_ImplMemberMacro(((RAST.__default.dafny__runtime).MSel((this).UpcastFnMacro)).Apply1(RAST.Expr.create_ExprFromType(RAST.Type.create_DynType(_34_traitType))))))))); } - goto after_match3; + goto after_match1; } } } { } - after_match3: ; + after_match1: ; } return s; } public Dafny.ISequence GenTrait(DAST._ITrait t, Dafny.ISequence> containingPath) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _1186_typeParamsSeq; - _1186_typeParamsSeq = Dafny.Sequence.FromElements(); - Dafny.ISequence _1187_typeParamDecls; - _1187_typeParamDecls = Dafny.Sequence.FromElements(); - Dafny.ISequence _1188_typeParams; - _1188_typeParams = Dafny.Sequence.FromElements(); + Dafny.ISequence _0_typeParamsSeq; + _0_typeParamsSeq = Dafny.Sequence.FromElements(); + Dafny.ISequence _1_typeParamDecls; + _1_typeParamDecls = Dafny.Sequence.FromElements(); + Dafny.ISequence _2_typeParams; + _2_typeParams = Dafny.Sequence.FromElements(); if ((new BigInteger(((t).dtor_typeParams).Count)).Sign == 1) { - BigInteger _hi10 = new BigInteger(((t).dtor_typeParams).Count); - for (BigInteger _1189_tpI = BigInteger.Zero; _1189_tpI < _hi10; _1189_tpI++) { - DAST._ITypeArgDecl _1190_tp; - _1190_tp = ((t).dtor_typeParams).Select(_1189_tpI); - DAST._IType _1191_typeArg; - RAST._ITypeParamDecl _1192_typeParamDecl; - DAST._IType _out41; - RAST._ITypeParamDecl _out42; - (this).GenTypeParam(_1190_tp, out _out41, out _out42); - _1191_typeArg = _out41; - _1192_typeParamDecl = _out42; - _1186_typeParamsSeq = Dafny.Sequence.Concat(_1186_typeParamsSeq, Dafny.Sequence.FromElements(_1191_typeArg)); - _1187_typeParamDecls = Dafny.Sequence.Concat(_1187_typeParamDecls, Dafny.Sequence.FromElements(_1192_typeParamDecl)); - RAST._IType _1193_typeParam; - RAST._IType _out43; - _out43 = (this).GenType(_1191_typeArg, DCOMP.GenTypeContext.@default()); - _1193_typeParam = _out43; - _1188_typeParams = Dafny.Sequence.Concat(_1188_typeParams, Dafny.Sequence.FromElements(_1193_typeParam)); - } - } - Dafny.ISequence> _1194_fullPath; - _1194_fullPath = Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((t).dtor_name)); - Dafny.ISequence _1195_implBody; - Dafny.IMap>,Dafny.ISequence> _1196___v54; - Dafny.ISequence _out44; - Dafny.IMap>,Dafny.ISequence> _out45; - (this).GenClassImplBody((t).dtor_body, true, DAST.Type.create_UserDefined(DAST.ResolvedType.create(_1194_fullPath, Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Trait(), (t).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _1186_typeParamsSeq, out _out44, out _out45); - _1195_implBody = _out44; - _1196___v54 = _out45; - Dafny.ISequence _1197_parents; - _1197_parents = Dafny.Sequence.FromElements(); - BigInteger _hi11 = new BigInteger(((t).dtor_parents).Count); - for (BigInteger _1198_i = BigInteger.Zero; _1198_i < _hi11; _1198_i++) { - RAST._IType _1199_tpe; - RAST._IType _out46; - _out46 = (this).GenType(((t).dtor_parents).Select(_1198_i), DCOMP.GenTypeContext.ForTraitParents()); - _1199_tpe = _out46; - _1197_parents = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1197_parents, Dafny.Sequence.FromElements(_1199_tpe)), Dafny.Sequence.FromElements(((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply1(RAST.Type.create_DynType(_1199_tpe)))); - } - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_TraitDecl(RAST.Trait.create(_1187_typeParamDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(DCOMP.__default.escapeName((t).dtor_name)), _1188_typeParams), _1197_parents, _1195_implBody))); + BigInteger _hi0 = new BigInteger(((t).dtor_typeParams).Count); + for (BigInteger _3_tpI = BigInteger.Zero; _3_tpI < _hi0; _3_tpI++) { + DAST._ITypeArgDecl _4_tp; + _4_tp = ((t).dtor_typeParams).Select(_3_tpI); + DAST._IType _5_typeArg; + RAST._ITypeParamDecl _6_typeParamDecl; + DAST._IType _out0; + RAST._ITypeParamDecl _out1; + (this).GenTypeParam(_4_tp, out _out0, out _out1); + _5_typeArg = _out0; + _6_typeParamDecl = _out1; + _0_typeParamsSeq = Dafny.Sequence.Concat(_0_typeParamsSeq, Dafny.Sequence.FromElements(_5_typeArg)); + _1_typeParamDecls = Dafny.Sequence.Concat(_1_typeParamDecls, Dafny.Sequence.FromElements(_6_typeParamDecl)); + RAST._IType _7_typeParam; + RAST._IType _out2; + _out2 = (this).GenType(_5_typeArg, DCOMP.GenTypeContext.@default()); + _7_typeParam = _out2; + _2_typeParams = Dafny.Sequence.Concat(_2_typeParams, Dafny.Sequence.FromElements(_7_typeParam)); + } + } + Dafny.ISequence> _8_fullPath; + _8_fullPath = Dafny.Sequence>.Concat(containingPath, Dafny.Sequence>.FromElements((t).dtor_name)); + Dafny.ISequence _9_implBody; + Dafny.IMap>,Dafny.ISequence> _10___v54; + Dafny.ISequence _out3; + Dafny.IMap>,Dafny.ISequence> _out4; + (this).GenClassImplBody((t).dtor_body, true, DAST.Type.create_UserDefined(DAST.ResolvedType.create(_8_fullPath, Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Trait(), (t).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _0_typeParamsSeq, out _out3, out _out4); + _9_implBody = _out3; + _10___v54 = _out4; + Dafny.ISequence _11_parents; + _11_parents = Dafny.Sequence.FromElements(); + BigInteger _hi1 = new BigInteger(((t).dtor_parents).Count); + for (BigInteger _12_i = BigInteger.Zero; _12_i < _hi1; _12_i++) { + RAST._IType _13_tpe; + RAST._IType _out5; + _out5 = (this).GenType(((t).dtor_parents).Select(_12_i), DCOMP.GenTypeContext.ForTraitParents()); + _13_tpe = _out5; + _11_parents = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_11_parents, Dafny.Sequence.FromElements(_13_tpe)), Dafny.Sequence.FromElements(((RAST.__default.dafny__runtime__type).MSel((this).Upcast)).Apply1(RAST.Type.create_DynType(_13_tpe)))); + } + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_TraitDecl(RAST.Trait.create(_1_typeParamDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(DCOMP.__default.escapeName((t).dtor_name)), _2_typeParams), _11_parents, _9_implBody))); return s; } public Dafny.ISequence GenNewtype(DAST._INewtype c) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _1200_typeParamsSeq; - Dafny.ISequence _1201_rTypeParams; - Dafny.ISequence _1202_rTypeParamsDecls; - Dafny.ISequence _1203_whereConstraints; - Dafny.ISequence _out47; - Dafny.ISequence _out48; - Dafny.ISequence _out49; - Dafny.ISequence _out50; - (this).GenTypeParameters((c).dtor_typeParams, out _out47, out _out48, out _out49, out _out50); - _1200_typeParamsSeq = _out47; - _1201_rTypeParams = _out48; - _1202_rTypeParamsDecls = _out49; - _1203_whereConstraints = _out50; - Dafny.ISequence _1204_constrainedTypeParams; - _1204_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1202_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); - RAST._IType _1205_underlyingType = RAST.Type.Default(); - Std.Wrappers._IOption _source56 = DCOMP.COMP.NewtypeToRustType((c).dtor_base, (c).dtor_range); - { - if (_source56.is_Some) { - RAST._IType _1206_v = _source56.dtor_value; - _1205_underlyingType = _1206_v; - goto after_match4; - } - } - { - RAST._IType _out51; - _out51 = (this).GenType((c).dtor_base, DCOMP.GenTypeContext.@default()); - _1205_underlyingType = _out51; - } - after_match4: ; - DAST._IType _1207_resultingType; - _1207_resultingType = DAST.Type.create_UserDefined(DAST.ResolvedType.create(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Newtype((c).dtor_base, (c).dtor_range, false), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())); - Dafny.ISequence _1208_newtypeName; - _1208_newtypeName = 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)]")), _1208_newtypeName, _1202_rTypeParamsDecls, RAST.Fields.create_NamelessFields(Dafny.Sequence.FromElements(RAST.NamelessField.create(RAST.Visibility.create_PUB(), _1205_underlyingType)))))); - RAST._IExpr _1209_fnBody; - _1209_fnBody = RAST.Expr.create_Identifier(_1208_newtypeName); - Std.Wrappers._IOption _source57 = (c).dtor_witnessExpr; - { - if (_source57.is_Some) { - DAST._IExpression _1210_e = _source57.dtor_value; + Dafny.ISequence _0_typeParamsSeq; + Dafny.ISequence _1_rTypeParams; + Dafny.ISequence _2_rTypeParamsDecls; + Dafny.ISequence _3_whereConstraints; + Dafny.ISequence _out0; + Dafny.ISequence _out1; + Dafny.ISequence _out2; + Dafny.ISequence _out3; + (this).GenTypeParameters((c).dtor_typeParams, out _out0, out _out1, out _out2, out _out3); + _0_typeParamsSeq = _out0; + _1_rTypeParams = _out1; + _2_rTypeParamsDecls = _out2; + _3_whereConstraints = _out3; + Dafny.ISequence _4_constrainedTypeParams; + _4_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_2_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); + RAST._IType _5_underlyingType = RAST.Type.Default(); + Std.Wrappers._IOption _source0 = DCOMP.COMP.NewtypeToRustType((c).dtor_base, (c).dtor_range); + { + if (_source0.is_Some) { + RAST._IType _6_v = _source0.dtor_value; + _5_underlyingType = _6_v; + goto after_match0; + } + } + { + RAST._IType _out4; + _out4 = (this).GenType((c).dtor_base, DCOMP.GenTypeContext.@default()); + _5_underlyingType = _out4; + } + after_match0: ; + DAST._IType _7_resultingType; + _7_resultingType = DAST.Type.create_UserDefined(DAST.ResolvedType.create(Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements(), DAST.ResolvedTypeBase.create_Newtype((c).dtor_base, (c).dtor_range, false), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())); + Dafny.ISequence _8_newtypeName; + _8_newtypeName = 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)]")), _8_newtypeName, _2_rTypeParamsDecls, RAST.Fields.create_NamelessFields(Dafny.Sequence.FromElements(RAST.NamelessField.create(RAST.Visibility.create_PUB(), _5_underlyingType)))))); + RAST._IExpr _9_fnBody; + _9_fnBody = RAST.Expr.create_Identifier(_8_newtypeName); + Std.Wrappers._IOption _source1 = (c).dtor_witnessExpr; + { + if (_source1.is_Some) { + DAST._IExpression _10_e = _source1.dtor_value; { - DAST._IExpression _1211_e; - if (object.Equals((c).dtor_base, _1207_resultingType)) { - _1211_e = _1210_e; + DAST._IExpression _11_e; + if (object.Equals((c).dtor_base, _7_resultingType)) { + _11_e = _10_e; } else { - _1211_e = DAST.Expression.create_Convert(_1210_e, (c).dtor_base, _1207_resultingType); + _11_e = DAST.Expression.create_Convert(_10_e, (c).dtor_base, _7_resultingType); } - RAST._IExpr _1212_eStr; - DCOMP._IOwnership _1213___v55; - Dafny.ISet> _1214___v56; - RAST._IExpr _out52; - DCOMP._IOwnership _out53; - Dafny.ISet> _out54; - (this).GenExpr(_1211_e, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out52, out _out53, out _out54); - _1212_eStr = _out52; - _1213___v55 = _out53; - _1214___v56 = _out54; - _1209_fnBody = (_1209_fnBody).Apply1(_1212_eStr); + RAST._IExpr _12_eStr; + DCOMP._IOwnership _13___v55; + Dafny.ISet> _14___v56; + RAST._IExpr _out5; + DCOMP._IOwnership _out6; + Dafny.ISet> _out7; + (this).GenExpr(_11_e, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out5, out _out6, out _out7); + _12_eStr = _out5; + _13___v55 = _out6; + _14___v56 = _out7; + _9_fnBody = (_9_fnBody).Apply1(_12_eStr); } - goto after_match5; + goto after_match1; } } { { - _1209_fnBody = (_1209_fnBody).Apply1(RAST.__default.std__Default__default); - } - } - after_match5: ; - RAST._IImplMember _1215_body; - _1215_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(_1209_fnBody))); - Std.Wrappers._IOption _source58 = (c).dtor_constraint; - { - if (_source58.is_None) { - goto after_match6; - } - } - { - DAST._INewtypeConstraint value8 = _source58.dtor_value; - DAST._IFormal _1216_formal = value8.dtor_variable; - Dafny.ISequence _1217_constraintStmts = value8.dtor_constraintStmts; - RAST._IExpr _1218_rStmts; - Dafny.ISet> _1219___v57; - DCOMP._IEnvironment _1220_newEnv; - RAST._IExpr _out55; - Dafny.ISet> _out56; - DCOMP._IEnvironment _out57; - (this).GenStmts(_1217_constraintStmts, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), false, Std.Wrappers.Option>>.create_None(), out _out55, out _out56, out _out57); - _1218_rStmts = _out55; - _1219___v57 = _out56; - _1220_newEnv = _out57; - Dafny.ISequence _1221_rFormals; - Dafny.ISequence _out58; - _out58 = (this).GenParams(Dafny.Sequence.FromElements(_1216_formal)); - _1221_rFormals = _out58; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_1202_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1208_newtypeName), _1201_rTypeParams), _1203_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("is"), Dafny.Sequence.FromElements(), _1221_rFormals, Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1218_rStmts)))))))); - } - after_match6: ; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1202_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1208_newtypeName), _1201_rTypeParams), _1203_whereConstraints, Dafny.Sequence.FromElements(_1215_body))))); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1202_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1208_newtypeName), _1201_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(_1202_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::ops::Deref")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1208_newtypeName), _1201_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_RawImplMember(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("type Target = "), (_1205_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")))))))))); + _9_fnBody = (_9_fnBody).Apply1(RAST.__default.std__Default__default); + } + } + after_match1: ; + RAST._IImplMember _15_body; + _15_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(_9_fnBody))); + Std.Wrappers._IOption _source2 = (c).dtor_constraint; + { + if (_source2.is_None) { + goto after_match2; + } + } + { + DAST._INewtypeConstraint value0 = _source2.dtor_value; + DAST._IFormal _16_formal = value0.dtor_variable; + Dafny.ISequence _17_constraintStmts = value0.dtor_constraintStmts; + RAST._IExpr _18_rStmts; + Dafny.ISet> _19___v57; + DCOMP._IEnvironment _20_newEnv; + RAST._IExpr _out8; + Dafny.ISet> _out9; + DCOMP._IEnvironment _out10; + (this).GenStmts(_17_constraintStmts, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), false, Std.Wrappers.Option>>.create_None(), out _out8, out _out9, out _out10); + _18_rStmts = _out8; + _19___v57 = _out9; + _20_newEnv = _out10; + Dafny.ISequence _21_rFormals; + Dafny.ISequence _out11; + _out11 = (this).GenParams(Dafny.Sequence.FromElements(_16_formal)); + _21_rFormals = _out11; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_2_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_8_newtypeName), _1_rTypeParams), _3_whereConstraints, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("is"), Dafny.Sequence.FromElements(), _21_rFormals, Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_18_rStmts)))))))); + } + after_match2: ; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, RAST.__default.DefaultTrait, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_8_newtypeName), _1_rTypeParams), _3_whereConstraints, Dafny.Sequence.FromElements(_15_body))))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_8_newtypeName), _1_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(_2_rTypeParamsDecls, RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("::std::ops::Deref")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_8_newtypeName), _1_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_RawImplMember(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("type Target = "), (_5_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 GenSynonymType(DAST._ISynonymType c) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _1222_typeParamsSeq; - Dafny.ISequence _1223_rTypeParams; - Dafny.ISequence _1224_rTypeParamsDecls; - Dafny.ISequence _1225_whereConstraints; - Dafny.ISequence _out59; - Dafny.ISequence _out60; - Dafny.ISequence _out61; - Dafny.ISequence _out62; - (this).GenTypeParameters((c).dtor_typeParams, out _out59, out _out60, out _out61, out _out62); - _1222_typeParamsSeq = _out59; - _1223_rTypeParams = _out60; - _1224_rTypeParamsDecls = _out61; - _1225_whereConstraints = _out62; - Dafny.ISequence _1226_constrainedTypeParams; - _1226_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_1224_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); - Dafny.ISequence _1227_synonymTypeName; - _1227_synonymTypeName = DCOMP.__default.escapeName((c).dtor_name); - RAST._IType _1228_resultingType; - RAST._IType _out63; - _out63 = (this).GenType((c).dtor_base, DCOMP.GenTypeContext.@default()); - _1228_resultingType = _out63; - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_TypeDecl(RAST.TypeSynonym.create(Dafny.Sequence>.FromElements(), _1227_synonymTypeName, _1224_rTypeParamsDecls, _1228_resultingType))); - Std.Wrappers._IOption _source59 = (c).dtor_witnessExpr; - { - if (_source59.is_Some) { - DAST._IExpression _1229_e = _source59.dtor_value; + Dafny.ISequence _0_typeParamsSeq; + Dafny.ISequence _1_rTypeParams; + Dafny.ISequence _2_rTypeParamsDecls; + Dafny.ISequence _3_whereConstraints; + Dafny.ISequence _out0; + Dafny.ISequence _out1; + Dafny.ISequence _out2; + Dafny.ISequence _out3; + (this).GenTypeParameters((c).dtor_typeParams, out _out0, out _out1, out _out2, out _out3); + _0_typeParamsSeq = _out0; + _1_rTypeParams = _out1; + _2_rTypeParamsDecls = _out2; + _3_whereConstraints = _out3; + Dafny.ISequence _4_constrainedTypeParams; + _4_constrainedTypeParams = RAST.TypeParamDecl.ToStringMultiple(_2_rTypeParamsDecls, Dafny.Sequence.Concat(RAST.__default.IND, RAST.__default.IND)); + Dafny.ISequence _5_synonymTypeName; + _5_synonymTypeName = DCOMP.__default.escapeName((c).dtor_name); + RAST._IType _6_resultingType; + RAST._IType _out4; + _out4 = (this).GenType((c).dtor_base, DCOMP.GenTypeContext.@default()); + _6_resultingType = _out4; + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_TypeDecl(RAST.TypeSynonym.create(Dafny.Sequence>.FromElements(), _5_synonymTypeName, _2_rTypeParamsDecls, _6_resultingType))); + Std.Wrappers._IOption _source0 = (c).dtor_witnessExpr; + { + if (_source0.is_Some) { + DAST._IExpression _7_e = _source0.dtor_value; { - RAST._IExpr _1230_rStmts; - Dafny.ISet> _1231___v58; - DCOMP._IEnvironment _1232_newEnv; - RAST._IExpr _out64; - Dafny.ISet> _out65; - DCOMP._IEnvironment _out66; - (this).GenStmts((c).dtor_witnessStmts, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), false, Std.Wrappers.Option>>.create_None(), out _out64, out _out65, out _out66); - _1230_rStmts = _out64; - _1231___v58 = _out65; - _1232_newEnv = _out66; - RAST._IExpr _1233_rExpr; - DCOMP._IOwnership _1234___v59; - Dafny.ISet> _1235___v60; - RAST._IExpr _out67; - DCOMP._IOwnership _out68; - Dafny.ISet> _out69; - (this).GenExpr(_1229_e, DCOMP.SelfInfo.create_NoSelf(), _1232_newEnv, DCOMP.Ownership.create_OwnershipOwned(), out _out67, out _out68, out _out69); - _1233_rExpr = _out67; - _1234___v59 = _out68; - _1235___v60 = _out69; - Dafny.ISequence _1236_constantName; - _1236_constantName = DCOMP.__default.escapeName(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_init_"), ((c).dtor_name))); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_TopFnDecl(RAST.TopFnDecl.create(Dafny.Sequence>.FromElements(), RAST.Visibility.create_PUB(), RAST.Fn.create(_1236_constantName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(_1228_resultingType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((_1230_rStmts).Then(_1233_rExpr))))))); - } - goto after_match7; - } - } - { - } - after_match7: ; + RAST._IExpr _8_rStmts; + Dafny.ISet> _9___v58; + DCOMP._IEnvironment _10_newEnv; + RAST._IExpr _out5; + Dafny.ISet> _out6; + DCOMP._IEnvironment _out7; + (this).GenStmts((c).dtor_witnessStmts, DCOMP.SelfInfo.create_NoSelf(), DCOMP.Environment.Empty(), false, Std.Wrappers.Option>>.create_None(), out _out5, out _out6, out _out7); + _8_rStmts = _out5; + _9___v58 = _out6; + _10_newEnv = _out7; + RAST._IExpr _11_rExpr; + DCOMP._IOwnership _12___v59; + Dafny.ISet> _13___v60; + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + Dafny.ISet> _out10; + (this).GenExpr(_7_e, DCOMP.SelfInfo.create_NoSelf(), _10_newEnv, DCOMP.Ownership.create_OwnershipOwned(), out _out8, out _out9, out _out10); + _11_rExpr = _out8; + _12___v59 = _out9; + _13___v60 = _out10; + Dafny.ISequence _14_constantName; + _14_constantName = DCOMP.__default.escapeName(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_init_"), ((c).dtor_name))); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_TopFnDecl(RAST.TopFnDecl.create(Dafny.Sequence>.FromElements(), RAST.Visibility.create_PUB(), RAST.Fn.create(_14_constantName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(), Std.Wrappers.Option.create_Some(_6_resultingType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some((_8_rStmts).Then(_11_rExpr))))))); + } + goto after_match0; + } + } + { + } + after_match0: ; return s; } public bool TypeIsEq(DAST._IType t) { - DAST._IType _source60 = t; + DAST._IType _source0 = t; { - if (_source60.is_UserDefined) { + if (_source0.is_UserDefined) { return true; } } { - if (_source60.is_Tuple) { - Dafny.ISequence _1237_ts = _source60.dtor_Tuple_a0; - return Dafny.Helpers.Id, bool>>((_1238_ts) => Dafny.Helpers.Quantifier((_1238_ts).UniqueElements, true, (((_forall_var_5) => { - DAST._IType _1239_t = (DAST._IType)_forall_var_5; - return !((_1238_ts).Contains(_1239_t)) || ((this).TypeIsEq(_1239_t)); - }))))(_1237_ts); + if (_source0.is_Tuple) { + Dafny.ISequence _0_ts = _source0.dtor_Tuple_a0; + return Dafny.Helpers.Id, bool>>((_1_ts) => Dafny.Helpers.Quantifier((_1_ts).UniqueElements, true, (((_forall_var_0) => { + DAST._IType _2_t = (DAST._IType)_forall_var_0; + return !((_1_ts).Contains(_2_t)) || ((this).TypeIsEq(_2_t)); + }))))(_0_ts); } } { - if (_source60.is_Array) { - DAST._IType _1240_t = _source60.dtor_element; - return (this).TypeIsEq(_1240_t); + if (_source0.is_Array) { + DAST._IType _3_t = _source0.dtor_element; + return (this).TypeIsEq(_3_t); } } { - if (_source60.is_Seq) { - DAST._IType _1241_t = _source60.dtor_element; - return (this).TypeIsEq(_1241_t); + if (_source0.is_Seq) { + DAST._IType _4_t = _source0.dtor_element; + return (this).TypeIsEq(_4_t); } } { - if (_source60.is_Set) { - DAST._IType _1242_t = _source60.dtor_element; - return (this).TypeIsEq(_1242_t); + if (_source0.is_Set) { + DAST._IType _5_t = _source0.dtor_element; + return (this).TypeIsEq(_5_t); } } { - if (_source60.is_Multiset) { - DAST._IType _1243_t = _source60.dtor_element; - return (this).TypeIsEq(_1243_t); + if (_source0.is_Multiset) { + DAST._IType _6_t = _source0.dtor_element; + return (this).TypeIsEq(_6_t); } } { - if (_source60.is_Map) { - DAST._IType _1244_k = _source60.dtor_key; - DAST._IType _1245_v = _source60.dtor_value; - return ((this).TypeIsEq(_1244_k)) && ((this).TypeIsEq(_1245_v)); + if (_source0.is_Map) { + DAST._IType _7_k = _source0.dtor_key; + DAST._IType _8_v = _source0.dtor_value; + return ((this).TypeIsEq(_7_k)) && ((this).TypeIsEq(_8_v)); } } { - if (_source60.is_SetBuilder) { - DAST._IType _1246_t = _source60.dtor_element; - return (this).TypeIsEq(_1246_t); + if (_source0.is_SetBuilder) { + DAST._IType _9_t = _source0.dtor_element; + return (this).TypeIsEq(_9_t); } } { - if (_source60.is_MapBuilder) { - DAST._IType _1247_k = _source60.dtor_key; - DAST._IType _1248_v = _source60.dtor_value; - return ((this).TypeIsEq(_1247_k)) && ((this).TypeIsEq(_1248_v)); + if (_source0.is_MapBuilder) { + DAST._IType _10_k = _source0.dtor_key; + DAST._IType _11_v = _source0.dtor_value; + return ((this).TypeIsEq(_10_k)) && ((this).TypeIsEq(_11_v)); } } { - if (_source60.is_Arrow) { + if (_source0.is_Arrow) { return false; } } { - if (_source60.is_Primitive) { + if (_source0.is_Primitive) { return true; } } { - if (_source60.is_Passthrough) { + if (_source0.is_Passthrough) { return true; } } { - if (_source60.is_TypeArg) { - Dafny.ISequence _1249_i = _source60.dtor_TypeArg_a0; + if (_source0.is_TypeArg) { + Dafny.ISequence _12_i = _source0.dtor_TypeArg_a0; return true; } } @@ -1352,376 +1355,376 @@ public bool TypeIsEq(DAST._IType t) { } } public bool DatatypeIsEq(DAST._IDatatype c) { - return (!((c).dtor_isCo)) && (Dafny.Helpers.Id>((_1250_c) => Dafny.Helpers.Quantifier(((_1250_c).dtor_ctors).UniqueElements, true, (((_forall_var_6) => { - DAST._IDatatypeCtor _1251_ctor = (DAST._IDatatypeCtor)_forall_var_6; - return Dafny.Helpers.Quantifier(((_1251_ctor).dtor_args).UniqueElements, true, (((_forall_var_7) => { - DAST._IDatatypeDtor _1252_arg = (DAST._IDatatypeDtor)_forall_var_7; - return !((((_1250_c).dtor_ctors).Contains(_1251_ctor)) && (((_1251_ctor).dtor_args).Contains(_1252_arg))) || ((this).TypeIsEq(((_1252_arg).dtor_formal).dtor_typ)); + return (!((c).dtor_isCo)) && (Dafny.Helpers.Id>((_0_c) => Dafny.Helpers.Quantifier(((_0_c).dtor_ctors).UniqueElements, true, (((_forall_var_0) => { + DAST._IDatatypeCtor _1_ctor = (DAST._IDatatypeCtor)_forall_var_0; + return Dafny.Helpers.Quantifier(((_1_ctor).dtor_args).UniqueElements, true, (((_forall_var_1) => { + DAST._IDatatypeDtor _2_arg = (DAST._IDatatypeDtor)_forall_var_1; + return !((((_0_c).dtor_ctors).Contains(_1_ctor)) && (((_1_ctor).dtor_args).Contains(_2_arg))) || ((this).TypeIsEq(((_2_arg).dtor_formal).dtor_typ)); }))); }))))(c)); } public Dafny.ISequence GenDatatype(DAST._IDatatype c) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _1253_typeParamsSeq; - Dafny.ISequence _1254_rTypeParams; - Dafny.ISequence _1255_rTypeParamsDecls; - Dafny.ISequence _1256_whereConstraints; - Dafny.ISequence _out70; - Dafny.ISequence _out71; - Dafny.ISequence _out72; - Dafny.ISequence _out73; - (this).GenTypeParameters((c).dtor_typeParams, out _out70, out _out71, out _out72, out _out73); - _1253_typeParamsSeq = _out70; - _1254_rTypeParams = _out71; - _1255_rTypeParamsDecls = _out72; - _1256_whereConstraints = _out73; - Dafny.ISequence _1257_datatypeName; - _1257_datatypeName = DCOMP.__default.escapeName((c).dtor_name); - Dafny.ISequence _1258_ctors; - _1258_ctors = Dafny.Sequence.FromElements(); - Dafny.ISequence _1259_variances; - _1259_variances = Std.Collections.Seq.__default.Map(((System.Func)((_1260_typeParamDecl) => { - return (_1260_typeParamDecl).dtor_variance; + Dafny.ISequence _0_typeParamsSeq; + Dafny.ISequence _1_rTypeParams; + Dafny.ISequence _2_rTypeParamsDecls; + Dafny.ISequence _3_whereConstraints; + Dafny.ISequence _out0; + Dafny.ISequence _out1; + Dafny.ISequence _out2; + Dafny.ISequence _out3; + (this).GenTypeParameters((c).dtor_typeParams, out _out0, out _out1, out _out2, out _out3); + _0_typeParamsSeq = _out0; + _1_rTypeParams = _out1; + _2_rTypeParamsDecls = _out2; + _3_whereConstraints = _out3; + Dafny.ISequence _4_datatypeName; + _4_datatypeName = DCOMP.__default.escapeName((c).dtor_name); + Dafny.ISequence _5_ctors; + _5_ctors = Dafny.Sequence.FromElements(); + Dafny.ISequence _6_variances; + _6_variances = Std.Collections.Seq.__default.Map(((System.Func)((_7_typeParamDecl) => { + return (_7_typeParamDecl).dtor_variance; })), (c).dtor_typeParams); - BigInteger _hi12 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1261_i = BigInteger.Zero; _1261_i < _hi12; _1261_i++) { - DAST._IDatatypeCtor _1262_ctor; - _1262_ctor = ((c).dtor_ctors).Select(_1261_i); - Dafny.ISequence _1263_ctorArgs; - _1263_ctorArgs = Dafny.Sequence.FromElements(); - bool _1264_isNumeric; - _1264_isNumeric = false; - BigInteger _hi13 = new BigInteger(((_1262_ctor).dtor_args).Count); - for (BigInteger _1265_j = BigInteger.Zero; _1265_j < _hi13; _1265_j++) { - DAST._IDatatypeDtor _1266_dtor; - _1266_dtor = ((_1262_ctor).dtor_args).Select(_1265_j); - RAST._IType _1267_formalType; - RAST._IType _out74; - _out74 = (this).GenType(((_1266_dtor).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); - _1267_formalType = _out74; - Dafny.ISequence _1268_formalName; - _1268_formalName = DCOMP.__default.escapeName(((_1266_dtor).dtor_formal).dtor_name); - if (((_1265_j).Sign == 0) && ((Dafny.Sequence.UnicodeFromString("0")).Equals(_1268_formalName))) { - _1264_isNumeric = true; - } - if ((((_1265_j).Sign != 0) && (_1264_isNumeric)) && (!(Std.Strings.__default.OfNat(_1265_j)).Equals(_1268_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 "), _1268_formalName), Dafny.Sequence.UnicodeFromString(" instead of ")), Std.Strings.__default.OfNat(_1265_j))); - _1264_isNumeric = false; + BigInteger _hi0 = new BigInteger(((c).dtor_ctors).Count); + for (BigInteger _8_i = BigInteger.Zero; _8_i < _hi0; _8_i++) { + DAST._IDatatypeCtor _9_ctor; + _9_ctor = ((c).dtor_ctors).Select(_8_i); + Dafny.ISequence _10_ctorArgs; + _10_ctorArgs = Dafny.Sequence.FromElements(); + bool _11_isNumeric; + _11_isNumeric = false; + BigInteger _hi1 = new BigInteger(((_9_ctor).dtor_args).Count); + for (BigInteger _12_j = BigInteger.Zero; _12_j < _hi1; _12_j++) { + DAST._IDatatypeDtor _13_dtor; + _13_dtor = ((_9_ctor).dtor_args).Select(_12_j); + RAST._IType _14_formalType; + RAST._IType _out4; + _out4 = (this).GenType(((_13_dtor).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); + _14_formalType = _out4; + Dafny.ISequence _15_formalName; + _15_formalName = DCOMP.__default.escapeName(((_13_dtor).dtor_formal).dtor_name); + if (((_12_j).Sign == 0) && ((Dafny.Sequence.UnicodeFromString("0")).Equals(_15_formalName))) { + _11_isNumeric = true; + } + if ((((_12_j).Sign != 0) && (_11_isNumeric)) && (!(Std.Strings.__default.OfNat(_12_j)).Equals(_15_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 "), _15_formalName), Dafny.Sequence.UnicodeFromString(" instead of ")), Std.Strings.__default.OfNat(_12_j))); + _11_isNumeric = false; } if ((c).dtor_isCo) { - _1263_ctorArgs = Dafny.Sequence.Concat(_1263_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1268_formalName, RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("LazyFieldWrapper")), Dafny.Sequence.FromElements(_1267_formalType)))))); + _10_ctorArgs = Dafny.Sequence.Concat(_10_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_15_formalName, RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("LazyFieldWrapper")), Dafny.Sequence.FromElements(_14_formalType)))))); } else { - _1263_ctorArgs = Dafny.Sequence.Concat(_1263_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_1268_formalName, _1267_formalType)))); - } - } - RAST._IFields _1269_namedFields; - _1269_namedFields = RAST.Fields.create_NamedFields(_1263_ctorArgs); - if (_1264_isNumeric) { - _1269_namedFields = (_1269_namedFields).ToNamelessFields(); - } - _1258_ctors = Dafny.Sequence.Concat(_1258_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(DCOMP.__default.escapeName((_1262_ctor).dtor_name), _1269_namedFields))); - } - Dafny.ISequence> _1270_selfPath; - _1270_selfPath = Dafny.Sequence>.FromElements((c).dtor_name); - Dafny.ISequence _1271_implBodyRaw; - Dafny.IMap>,Dafny.ISequence> _1272_traitBodies; - Dafny.ISequence _out75; - Dafny.IMap>,Dafny.ISequence> _out76; - (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_UserDefined(DAST.ResolvedType.create(_1270_selfPath, _1253_typeParamsSeq, DAST.ResolvedTypeBase.create_Datatype(_1259_variances), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _1253_typeParamsSeq, out _out75, out _out76); - _1271_implBodyRaw = _out75; - _1272_traitBodies = _out76; - Dafny.ISequence _1273_implBody; - _1273_implBody = _1271_implBodyRaw; - Dafny.ISet> _1274_emittedFields; - _1274_emittedFields = Dafny.Set>.FromElements(); - BigInteger _hi14 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1275_i = BigInteger.Zero; _1275_i < _hi14; _1275_i++) { - DAST._IDatatypeCtor _1276_ctor; - _1276_ctor = ((c).dtor_ctors).Select(_1275_i); - BigInteger _hi15 = new BigInteger(((_1276_ctor).dtor_args).Count); - for (BigInteger _1277_j = BigInteger.Zero; _1277_j < _hi15; _1277_j++) { - DAST._IDatatypeDtor _1278_dtor; - _1278_dtor = ((_1276_ctor).dtor_args).Select(_1277_j); - Dafny.ISequence _1279_callName; - _1279_callName = Std.Wrappers.Option>.GetOr((_1278_dtor).dtor_callName, DCOMP.__default.escapeName(((_1278_dtor).dtor_formal).dtor_name)); - if (!((_1274_emittedFields).Contains(_1279_callName))) { - _1274_emittedFields = Dafny.Set>.Union(_1274_emittedFields, Dafny.Set>.FromElements(_1279_callName)); - RAST._IType _1280_formalType; - RAST._IType _out77; - _out77 = (this).GenType(((_1278_dtor).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); - _1280_formalType = _out77; - Dafny.ISequence _1281_cases; - _1281_cases = Dafny.Sequence.FromElements(); - BigInteger _hi16 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1282_k = BigInteger.Zero; _1282_k < _hi16; _1282_k++) { - DAST._IDatatypeCtor _1283_ctor2; - _1283_ctor2 = ((c).dtor_ctors).Select(_1282_k); - Dafny.ISequence _1284_pattern; - _1284_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName((_1283_ctor2).dtor_name)); - Dafny.ISequence _1285_rhs = Dafny.Sequence.Empty; - Std.Wrappers._IOption> _1286_hasMatchingField; - _1286_hasMatchingField = Std.Wrappers.Option>.create_None(); - Dafny.ISequence _1287_patternInner; - _1287_patternInner = Dafny.Sequence.UnicodeFromString(""); - bool _1288_isNumeric; - _1288_isNumeric = false; - BigInteger _hi17 = new BigInteger(((_1283_ctor2).dtor_args).Count); - for (BigInteger _1289_l = BigInteger.Zero; _1289_l < _hi17; _1289_l++) { - DAST._IDatatypeDtor _1290_dtor2; - _1290_dtor2 = ((_1283_ctor2).dtor_args).Select(_1289_l); - Dafny.ISequence _1291_patternName; - _1291_patternName = DCOMP.__default.escapeDtor(((_1290_dtor2).dtor_formal).dtor_name); - Dafny.ISequence _1292_varName; - _1292_varName = DCOMP.__default.escapeField(((_1290_dtor2).dtor_formal).dtor_name); - if (((_1289_l).Sign == 0) && ((_1291_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - _1288_isNumeric = true; + _10_ctorArgs = Dafny.Sequence.Concat(_10_ctorArgs, Dafny.Sequence.FromElements(RAST.Field.create(RAST.Visibility.create_PRIV(), RAST.Formal.create(_15_formalName, _14_formalType)))); + } + } + RAST._IFields _16_namedFields; + _16_namedFields = RAST.Fields.create_NamedFields(_10_ctorArgs); + if (_11_isNumeric) { + _16_namedFields = (_16_namedFields).ToNamelessFields(); + } + _5_ctors = Dafny.Sequence.Concat(_5_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(DCOMP.__default.escapeName((_9_ctor).dtor_name), _16_namedFields))); + } + Dafny.ISequence> _17_selfPath; + _17_selfPath = Dafny.Sequence>.FromElements((c).dtor_name); + Dafny.ISequence _18_implBodyRaw; + Dafny.IMap>,Dafny.ISequence> _19_traitBodies; + Dafny.ISequence _out5; + Dafny.IMap>,Dafny.ISequence> _out6; + (this).GenClassImplBody((c).dtor_body, false, DAST.Type.create_UserDefined(DAST.ResolvedType.create(_17_selfPath, _0_typeParamsSeq, DAST.ResolvedTypeBase.create_Datatype(_6_variances), (c).dtor_attributes, Dafny.Sequence>.FromElements(), Dafny.Sequence.FromElements())), _0_typeParamsSeq, out _out5, out _out6); + _18_implBodyRaw = _out5; + _19_traitBodies = _out6; + Dafny.ISequence _20_implBody; + _20_implBody = _18_implBodyRaw; + Dafny.ISet> _21_emittedFields; + _21_emittedFields = Dafny.Set>.FromElements(); + BigInteger _hi2 = new BigInteger(((c).dtor_ctors).Count); + for (BigInteger _22_i = BigInteger.Zero; _22_i < _hi2; _22_i++) { + DAST._IDatatypeCtor _23_ctor; + _23_ctor = ((c).dtor_ctors).Select(_22_i); + BigInteger _hi3 = new BigInteger(((_23_ctor).dtor_args).Count); + for (BigInteger _24_j = BigInteger.Zero; _24_j < _hi3; _24_j++) { + DAST._IDatatypeDtor _25_dtor; + _25_dtor = ((_23_ctor).dtor_args).Select(_24_j); + Dafny.ISequence _26_callName; + _26_callName = Std.Wrappers.Option>.GetOr((_25_dtor).dtor_callName, DCOMP.__default.escapeName(((_25_dtor).dtor_formal).dtor_name)); + if (!((_21_emittedFields).Contains(_26_callName))) { + _21_emittedFields = Dafny.Set>.Union(_21_emittedFields, Dafny.Set>.FromElements(_26_callName)); + RAST._IType _27_formalType; + RAST._IType _out7; + _out7 = (this).GenType(((_25_dtor).dtor_formal).dtor_typ, DCOMP.GenTypeContext.@default()); + _27_formalType = _out7; + Dafny.ISequence _28_cases; + _28_cases = Dafny.Sequence.FromElements(); + BigInteger _hi4 = new BigInteger(((c).dtor_ctors).Count); + for (BigInteger _29_k = BigInteger.Zero; _29_k < _hi4; _29_k++) { + DAST._IDatatypeCtor _30_ctor2; + _30_ctor2 = ((c).dtor_ctors).Select(_29_k); + Dafny.ISequence _31_pattern; + _31_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName((_30_ctor2).dtor_name)); + Dafny.ISequence _32_rhs = Dafny.Sequence.Empty; + Std.Wrappers._IOption> _33_hasMatchingField; + _33_hasMatchingField = Std.Wrappers.Option>.create_None(); + Dafny.ISequence _34_patternInner; + _34_patternInner = Dafny.Sequence.UnicodeFromString(""); + bool _35_isNumeric; + _35_isNumeric = false; + BigInteger _hi5 = new BigInteger(((_30_ctor2).dtor_args).Count); + for (BigInteger _36_l = BigInteger.Zero; _36_l < _hi5; _36_l++) { + DAST._IDatatypeDtor _37_dtor2; + _37_dtor2 = ((_30_ctor2).dtor_args).Select(_36_l); + Dafny.ISequence _38_patternName; + _38_patternName = DCOMP.__default.escapeDtor(((_37_dtor2).dtor_formal).dtor_name); + Dafny.ISequence _39_varName; + _39_varName = DCOMP.__default.escapeField(((_37_dtor2).dtor_formal).dtor_name); + if (((_36_l).Sign == 0) && ((_38_patternName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + _35_isNumeric = true; } - if (_1288_isNumeric) { - _1291_patternName = Std.Wrappers.Option>.GetOr((_1290_dtor2).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1289_l))); - _1292_varName = _1291_patternName; + if (_35_isNumeric) { + _38_patternName = Std.Wrappers.Option>.GetOr((_37_dtor2).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_36_l))); + _39_varName = _38_patternName; } - if (object.Equals(((_1278_dtor).dtor_formal).dtor_name, ((_1290_dtor2).dtor_formal).dtor_name)) { - _1286_hasMatchingField = Std.Wrappers.Option>.create_Some(_1292_varName); + if (object.Equals(((_25_dtor).dtor_formal).dtor_name, ((_37_dtor2).dtor_formal).dtor_name)) { + _33_hasMatchingField = Std.Wrappers.Option>.create_Some(_39_varName); } - _1287_patternInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1287_patternInner, _1291_patternName), Dafny.Sequence.UnicodeFromString(", ")); + _34_patternInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_34_patternInner, _38_patternName), Dafny.Sequence.UnicodeFromString(", ")); } - if (_1288_isNumeric) { - _1284_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_pattern, Dafny.Sequence.UnicodeFromString("(")), _1287_patternInner), Dafny.Sequence.UnicodeFromString(")")); + if (_35_isNumeric) { + _31_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_31_pattern, Dafny.Sequence.UnicodeFromString("(")), _34_patternInner), Dafny.Sequence.UnicodeFromString(")")); } else { - _1284_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1284_pattern, Dafny.Sequence.UnicodeFromString("{")), _1287_patternInner), Dafny.Sequence.UnicodeFromString("}")); + _31_pattern = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_31_pattern, Dafny.Sequence.UnicodeFromString("{")), _34_patternInner), Dafny.Sequence.UnicodeFromString("}")); } - if ((_1286_hasMatchingField).is_Some) { + if ((_33_hasMatchingField).is_Some) { if ((c).dtor_isCo) { - _1285_rhs = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&"), (_1286_hasMatchingField).dtor_value), Dafny.Sequence.UnicodeFromString(".0)")); + _32_rhs = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Deref::deref(&"), (_33_hasMatchingField).dtor_value), Dafny.Sequence.UnicodeFromString(".0)")); } else { - _1285_rhs = Dafny.Sequence.Concat((_1286_hasMatchingField).dtor_value, Dafny.Sequence.UnicodeFromString("")); + _32_rhs = Dafny.Sequence.Concat((_33_hasMatchingField).dtor_value, Dafny.Sequence.UnicodeFromString("")); } } else { - _1285_rhs = (this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString("field does not exist on this variant")); + _32_rhs = (this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString("field does not exist on this variant")); } - RAST._IMatchCase _1293_ctorMatch; - _1293_ctorMatch = RAST.MatchCase.create(_1284_pattern, RAST.Expr.create_RawExpr(_1285_rhs)); - _1281_cases = Dafny.Sequence.Concat(_1281_cases, Dafny.Sequence.FromElements(_1293_ctorMatch)); + RAST._IMatchCase _40_ctorMatch; + _40_ctorMatch = RAST.MatchCase.create(_31_pattern, RAST.Expr.create_RawExpr(_32_rhs)); + _28_cases = Dafny.Sequence.Concat(_28_cases, Dafny.Sequence.FromElements(_40_ctorMatch)); } if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - _1281_cases = Dafny.Sequence.Concat(_1281_cases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr((this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString("")))))); + _28_cases = Dafny.Sequence.Concat(_28_cases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr((this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString("")))))); } - RAST._IExpr _1294_methodBody; - _1294_methodBody = RAST.Expr.create_Match(RAST.__default.self, _1281_cases); - _1273_implBody = Dafny.Sequence.Concat(_1273_implBody, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(_1279_callName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_Borrowed(_1280_formalType)), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1294_methodBody))))); - } - } - } - Dafny.ISequence _1295_coerceTypes; - _1295_coerceTypes = Dafny.Sequence.FromElements(); - Dafny.ISequence _1296_rCoerceTypeParams; - _1296_rCoerceTypeParams = Dafny.Sequence.FromElements(); - Dafny.ISequence _1297_coerceArguments; - _1297_coerceArguments = Dafny.Sequence.FromElements(); - Dafny.IMap _1298_coerceMap; - _1298_coerceMap = Dafny.Map.FromElements(); - Dafny.IMap _1299_rCoerceMap; - _1299_rCoerceMap = Dafny.Map.FromElements(); - Dafny.IMap<_System._ITuple2,RAST._IExpr> _1300_coerceMapToArg; - _1300_coerceMapToArg = Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements(); + RAST._IExpr _41_methodBody; + _41_methodBody = RAST.Expr.create_Match(RAST.__default.self, _28_cases); + _20_implBody = Dafny.Sequence.Concat(_20_implBody, Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(_26_callName, Dafny.Sequence.FromElements(), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed), Std.Wrappers.Option.create_Some(RAST.Type.create_Borrowed(_27_formalType)), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_41_methodBody))))); + } + } + } + Dafny.ISequence _42_coerceTypes; + _42_coerceTypes = Dafny.Sequence.FromElements(); + Dafny.ISequence _43_rCoerceTypeParams; + _43_rCoerceTypeParams = Dafny.Sequence.FromElements(); + Dafny.ISequence _44_coerceArguments; + _44_coerceArguments = Dafny.Sequence.FromElements(); + Dafny.IMap _45_coerceMap; + _45_coerceMap = Dafny.Map.FromElements(); + Dafny.IMap _46_rCoerceMap; + _46_rCoerceMap = Dafny.Map.FromElements(); + Dafny.IMap<_System._ITuple2,RAST._IExpr> _47_coerceMapToArg; + _47_coerceMapToArg = Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements(); if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - Dafny.ISequence _1301_types; - _1301_types = Dafny.Sequence.FromElements(); - BigInteger _hi18 = new BigInteger(((c).dtor_typeParams).Count); - for (BigInteger _1302_typeI = BigInteger.Zero; _1302_typeI < _hi18; _1302_typeI++) { - DAST._ITypeArgDecl _1303_typeParam; - _1303_typeParam = ((c).dtor_typeParams).Select(_1302_typeI); - DAST._IType _1304_typeArg; - RAST._ITypeParamDecl _1305_rTypeParamDecl; - DAST._IType _out78; - RAST._ITypeParamDecl _out79; - (this).GenTypeParam(_1303_typeParam, out _out78, out _out79); - _1304_typeArg = _out78; - _1305_rTypeParamDecl = _out79; - RAST._IType _1306_rTypeArg; - RAST._IType _out80; - _out80 = (this).GenType(_1304_typeArg, DCOMP.GenTypeContext.@default()); - _1306_rTypeArg = _out80; - _1301_types = Dafny.Sequence.Concat(_1301_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(_1306_rTypeArg)))); - if (((_1302_typeI) < (new BigInteger((_1259_variances).Count))) && (((_1259_variances).Select(_1302_typeI)).is_Nonvariant)) { - _1295_coerceTypes = Dafny.Sequence.Concat(_1295_coerceTypes, Dafny.Sequence.FromElements(_1306_rTypeArg)); - goto continue0; - } - DAST._ITypeArgDecl _1307_coerceTypeParam; - DAST._ITypeArgDecl _1308_dt__update__tmp_h0 = _1303_typeParam; - Dafny.ISequence _1309_dt__update_hname_h0 = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), Std.Strings.__default.OfNat(_1302_typeI)); - _1307_coerceTypeParam = DAST.TypeArgDecl.create(_1309_dt__update_hname_h0, (_1308_dt__update__tmp_h0).dtor_bounds, (_1308_dt__update__tmp_h0).dtor_variance); - DAST._IType _1310_coerceTypeArg; - RAST._ITypeParamDecl _1311_rCoerceTypeParamDecl; - DAST._IType _out81; - RAST._ITypeParamDecl _out82; - (this).GenTypeParam(_1307_coerceTypeParam, out _out81, out _out82); - _1310_coerceTypeArg = _out81; - _1311_rCoerceTypeParamDecl = _out82; - _1298_coerceMap = Dafny.Map.Merge(_1298_coerceMap, Dafny.Map.FromElements(new Dafny.Pair(_1304_typeArg, _1310_coerceTypeArg))); - RAST._IType _1312_rCoerceType; - RAST._IType _out83; - _out83 = (this).GenType(_1310_coerceTypeArg, DCOMP.GenTypeContext.@default()); - _1312_rCoerceType = _out83; - _1299_rCoerceMap = Dafny.Map.Merge(_1299_rCoerceMap, Dafny.Map.FromElements(new Dafny.Pair(_1306_rTypeArg, _1312_rCoerceType))); - _1295_coerceTypes = Dafny.Sequence.Concat(_1295_coerceTypes, Dafny.Sequence.FromElements(_1312_rCoerceType)); - _1296_rCoerceTypeParams = Dafny.Sequence.Concat(_1296_rCoerceTypeParams, Dafny.Sequence.FromElements(_1311_rCoerceTypeParamDecl)); - Dafny.ISequence _1313_coerceFormal; - _1313_coerceFormal = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("f_"), Std.Strings.__default.OfNat(_1302_typeI)); - _1300_coerceMapToArg = Dafny.Map<_System._ITuple2, RAST._IExpr>.Merge(_1300_coerceMapToArg, Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements(new Dafny.Pair<_System._ITuple2, RAST._IExpr>(_System.Tuple2.create(_1306_rTypeArg, _1312_rCoerceType), (RAST.Expr.create_Identifier(_1313_coerceFormal)).Clone()))); - _1297_coerceArguments = Dafny.Sequence.Concat(_1297_coerceArguments, Dafny.Sequence.FromElements(RAST.Formal.create(_1313_coerceFormal, RAST.__default.Rc(RAST.Type.create_IntersectionType(RAST.Type.create_ImplType(RAST.Type.create_FnType(Dafny.Sequence.FromElements(_1306_rTypeArg), _1312_rCoerceType)), RAST.__default.StaticTrait))))); - continue0: ; - } - after0: ; - _1258_ctors = Dafny.Sequence.Concat(_1258_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(Dafny.Sequence.UnicodeFromString("_PhantomVariant"), RAST.Fields.create_NamelessFields(Std.Collections.Seq.__default.Map(((System.Func)((_1314_tpe) => { - return RAST.NamelessField.create(RAST.Visibility.create_PRIV(), _1314_tpe); -})), _1301_types))))); - } - bool _1315_cIsEq; - _1315_cIsEq = (this).DatatypeIsEq(c); - s = Dafny.Sequence.FromElements(RAST.ModDecl.create_EnumDecl(RAST.Enum.create(((_1315_cIsEq) ? (Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(PartialEq, Clone)]"))) : (Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(Clone)]")))), _1257_datatypeName, _1255_rTypeParamsDecls, _1258_ctors)), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_1255_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams), _1256_whereConstraints, _1273_implBody))); - Dafny.ISequence _1316_printImplBodyCases; - _1316_printImplBodyCases = Dafny.Sequence.FromElements(); - Dafny.ISequence _1317_hashImplBodyCases; - _1317_hashImplBodyCases = Dafny.Sequence.FromElements(); - Dafny.ISequence _1318_coerceImplBodyCases; - _1318_coerceImplBodyCases = Dafny.Sequence.FromElements(); - BigInteger _hi19 = new BigInteger(((c).dtor_ctors).Count); - for (BigInteger _1319_i = BigInteger.Zero; _1319_i < _hi19; _1319_i++) { - DAST._IDatatypeCtor _1320_ctor; - _1320_ctor = ((c).dtor_ctors).Select(_1319_i); - Dafny.ISequence _1321_ctorMatch; - _1321_ctorMatch = DCOMP.__default.escapeName((_1320_ctor).dtor_name); - Dafny.ISequence _1322_modulePrefix; + Dafny.ISequence _48_types; + _48_types = Dafny.Sequence.FromElements(); + BigInteger _hi6 = new BigInteger(((c).dtor_typeParams).Count); + for (BigInteger _49_typeI = BigInteger.Zero; _49_typeI < _hi6; _49_typeI++) { + DAST._ITypeArgDecl _50_typeParam; + _50_typeParam = ((c).dtor_typeParams).Select(_49_typeI); + DAST._IType _51_typeArg; + RAST._ITypeParamDecl _52_rTypeParamDecl; + DAST._IType _out8; + RAST._ITypeParamDecl _out9; + (this).GenTypeParam(_50_typeParam, out _out8, out _out9); + _51_typeArg = _out8; + _52_rTypeParamDecl = _out9; + RAST._IType _53_rTypeArg; + RAST._IType _out10; + _out10 = (this).GenType(_51_typeArg, DCOMP.GenTypeContext.@default()); + _53_rTypeArg = _out10; + _48_types = Dafny.Sequence.Concat(_48_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(_53_rTypeArg)))); + if (((_49_typeI) < (new BigInteger((_6_variances).Count))) && (((_6_variances).Select(_49_typeI)).is_Nonvariant)) { + _42_coerceTypes = Dafny.Sequence.Concat(_42_coerceTypes, Dafny.Sequence.FromElements(_53_rTypeArg)); + goto continue_2_0; + } + DAST._ITypeArgDecl _54_coerceTypeParam; + DAST._ITypeArgDecl _55_dt__update__tmp_h0 = _50_typeParam; + Dafny.ISequence _56_dt__update_hname_h0 = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), Std.Strings.__default.OfNat(_49_typeI)); + _54_coerceTypeParam = DAST.TypeArgDecl.create(_56_dt__update_hname_h0, (_55_dt__update__tmp_h0).dtor_bounds, (_55_dt__update__tmp_h0).dtor_variance); + DAST._IType _57_coerceTypeArg; + RAST._ITypeParamDecl _58_rCoerceTypeParamDecl; + DAST._IType _out11; + RAST._ITypeParamDecl _out12; + (this).GenTypeParam(_54_coerceTypeParam, out _out11, out _out12); + _57_coerceTypeArg = _out11; + _58_rCoerceTypeParamDecl = _out12; + _45_coerceMap = Dafny.Map.Merge(_45_coerceMap, Dafny.Map.FromElements(new Dafny.Pair(_51_typeArg, _57_coerceTypeArg))); + RAST._IType _59_rCoerceType; + RAST._IType _out13; + _out13 = (this).GenType(_57_coerceTypeArg, DCOMP.GenTypeContext.@default()); + _59_rCoerceType = _out13; + _46_rCoerceMap = Dafny.Map.Merge(_46_rCoerceMap, Dafny.Map.FromElements(new Dafny.Pair(_53_rTypeArg, _59_rCoerceType))); + _42_coerceTypes = Dafny.Sequence.Concat(_42_coerceTypes, Dafny.Sequence.FromElements(_59_rCoerceType)); + _43_rCoerceTypeParams = Dafny.Sequence.Concat(_43_rCoerceTypeParams, Dafny.Sequence.FromElements(_58_rCoerceTypeParamDecl)); + Dafny.ISequence _60_coerceFormal; + _60_coerceFormal = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("f_"), Std.Strings.__default.OfNat(_49_typeI)); + _47_coerceMapToArg = Dafny.Map<_System._ITuple2, RAST._IExpr>.Merge(_47_coerceMapToArg, Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements(new Dafny.Pair<_System._ITuple2, RAST._IExpr>(_System.Tuple2.create(_53_rTypeArg, _59_rCoerceType), (RAST.Expr.create_Identifier(_60_coerceFormal)).Clone()))); + _44_coerceArguments = Dafny.Sequence.Concat(_44_coerceArguments, Dafny.Sequence.FromElements(RAST.Formal.create(_60_coerceFormal, RAST.__default.Rc(RAST.Type.create_IntersectionType(RAST.Type.create_ImplType(RAST.Type.create_FnType(Dafny.Sequence.FromElements(_53_rTypeArg), _59_rCoerceType)), RAST.__default.StaticTrait))))); + continue_2_0: ; + } + after_2_0: ; + _5_ctors = Dafny.Sequence.Concat(_5_ctors, Dafny.Sequence.FromElements(RAST.EnumCase.create(Dafny.Sequence.UnicodeFromString("_PhantomVariant"), RAST.Fields.create_NamelessFields(Std.Collections.Seq.__default.Map(((System.Func)((_61_tpe) => { + return RAST.NamelessField.create(RAST.Visibility.create_PRIV(), _61_tpe); +})), _48_types))))); + } + bool _62_cIsEq; + _62_cIsEq = (this).DatatypeIsEq(c); + s = Dafny.Sequence.FromElements(RAST.ModDecl.create_EnumDecl(RAST.Enum.create(((_62_cIsEq) ? (Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(PartialEq, Clone)]"))) : (Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("#[derive(Clone)]")))), _4_datatypeName, _2_rTypeParamsDecls, _5_ctors)), RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_2_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams), _3_whereConstraints, _20_implBody))); + Dafny.ISequence _63_printImplBodyCases; + _63_printImplBodyCases = Dafny.Sequence.FromElements(); + Dafny.ISequence _64_hashImplBodyCases; + _64_hashImplBodyCases = Dafny.Sequence.FromElements(); + Dafny.ISequence _65_coerceImplBodyCases; + _65_coerceImplBodyCases = Dafny.Sequence.FromElements(); + BigInteger _hi7 = new BigInteger(((c).dtor_ctors).Count); + for (BigInteger _66_i = BigInteger.Zero; _66_i < _hi7; _66_i++) { + DAST._IDatatypeCtor _67_ctor; + _67_ctor = ((c).dtor_ctors).Select(_66_i); + Dafny.ISequence _68_ctorMatch; + _68_ctorMatch = DCOMP.__default.escapeName((_67_ctor).dtor_name); + Dafny.ISequence _69_modulePrefix; if (((((c).dtor_enclosingModule))).Equals(Dafny.Sequence.UnicodeFromString("_module"))) { - _1322_modulePrefix = Dafny.Sequence.UnicodeFromString(""); + _69_modulePrefix = Dafny.Sequence.UnicodeFromString(""); } else { - _1322_modulePrefix = Dafny.Sequence.Concat((((c).dtor_enclosingModule)), Dafny.Sequence.UnicodeFromString(".")); - } - Dafny.ISequence _1323_ctorName; - _1323_ctorName = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1322_modulePrefix, ((c).dtor_name)), Dafny.Sequence.UnicodeFromString(".")), ((_1320_ctor).dtor_name)); - if (((new BigInteger((_1323_ctorName).Count)) >= (new BigInteger(13))) && (((_1323_ctorName).Subsequence(BigInteger.Zero, new BigInteger(13))).Equals(Dafny.Sequence.UnicodeFromString("_System.Tuple")))) { - _1323_ctorName = Dafny.Sequence.UnicodeFromString(""); - } - RAST._IExpr _1324_printRhs; - _1324_printRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), _1323_ctorName), (((_1320_ctor).dtor_hasAnyArgs) ? (Dafny.Sequence.UnicodeFromString("(\")?")) : (Dafny.Sequence.UnicodeFromString("\")?"))))); - RAST._IExpr _1325_hashRhs; - _1325_hashRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - Dafny.ISequence _1326_coerceRhsArgs; - _1326_coerceRhsArgs = Dafny.Sequence.FromElements(); - bool _1327_isNumeric; - _1327_isNumeric = false; - Dafny.ISequence _1328_ctorMatchInner; - _1328_ctorMatchInner = Dafny.Sequence.UnicodeFromString(""); - BigInteger _hi20 = new BigInteger(((_1320_ctor).dtor_args).Count); - for (BigInteger _1329_j = BigInteger.Zero; _1329_j < _hi20; _1329_j++) { - DAST._IDatatypeDtor _1330_dtor; - _1330_dtor = ((_1320_ctor).dtor_args).Select(_1329_j); - Dafny.ISequence _1331_patternName; - _1331_patternName = DCOMP.__default.escapeDtor(((_1330_dtor).dtor_formal).dtor_name); - Dafny.ISequence _1332_fieldName; - _1332_fieldName = DCOMP.__default.escapeField(((_1330_dtor).dtor_formal).dtor_name); - DAST._IType _1333_formalType; - _1333_formalType = ((_1330_dtor).dtor_formal).dtor_typ; - if (((_1329_j).Sign == 0) && ((_1332_fieldName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - _1327_isNumeric = true; - } - if (_1327_isNumeric) { - _1332_fieldName = Std.Wrappers.Option>.GetOr((_1330_dtor).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_1329_j))); - } - if ((_1333_formalType).is_Arrow) { - _1325_hashRhs = (_1325_hashRhs).Then(((RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0"))).Sel(Dafny.Sequence.UnicodeFromString("hash"))).Apply1(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("_state")))); + _69_modulePrefix = Dafny.Sequence.Concat((((c).dtor_enclosingModule)), Dafny.Sequence.UnicodeFromString(".")); + } + Dafny.ISequence _70_ctorName; + _70_ctorName = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_69_modulePrefix, ((c).dtor_name)), Dafny.Sequence.UnicodeFromString(".")), ((_67_ctor).dtor_name)); + if (((new BigInteger((_70_ctorName).Count)) >= (new BigInteger(13))) && (((_70_ctorName).Subsequence(BigInteger.Zero, new BigInteger(13))).Equals(Dafny.Sequence.UnicodeFromString("_System.Tuple")))) { + _70_ctorName = Dafny.Sequence.UnicodeFromString(""); + } + RAST._IExpr _71_printRhs; + _71_printRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("write!(_formatter, \""), _70_ctorName), (((_67_ctor).dtor_hasAnyArgs) ? (Dafny.Sequence.UnicodeFromString("(\")?")) : (Dafny.Sequence.UnicodeFromString("\")?"))))); + RAST._IExpr _72_hashRhs; + _72_hashRhs = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + Dafny.ISequence _73_coerceRhsArgs; + _73_coerceRhsArgs = Dafny.Sequence.FromElements(); + bool _74_isNumeric; + _74_isNumeric = false; + Dafny.ISequence _75_ctorMatchInner; + _75_ctorMatchInner = Dafny.Sequence.UnicodeFromString(""); + BigInteger _hi8 = new BigInteger(((_67_ctor).dtor_args).Count); + for (BigInteger _76_j = BigInteger.Zero; _76_j < _hi8; _76_j++) { + DAST._IDatatypeDtor _77_dtor; + _77_dtor = ((_67_ctor).dtor_args).Select(_76_j); + Dafny.ISequence _78_patternName; + _78_patternName = DCOMP.__default.escapeDtor(((_77_dtor).dtor_formal).dtor_name); + Dafny.ISequence _79_fieldName; + _79_fieldName = DCOMP.__default.escapeField(((_77_dtor).dtor_formal).dtor_name); + DAST._IType _80_formalType; + _80_formalType = ((_77_dtor).dtor_formal).dtor_typ; + if (((_76_j).Sign == 0) && ((_79_fieldName).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + _74_isNumeric = true; + } + if (_74_isNumeric) { + _79_fieldName = Std.Wrappers.Option>.GetOr((_77_dtor).dtor_callName, Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("v"), Std.Strings.__default.OfNat(_76_j))); + } + if ((_80_formalType).is_Arrow) { + _72_hashRhs = (_72_hashRhs).Then(((RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0"))).Sel(Dafny.Sequence.UnicodeFromString("hash"))).Apply1(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("_state")))); } else { - _1325_hashRhs = (_1325_hashRhs).Then(((RAST.Expr.create_Identifier(_1332_fieldName)).Sel(Dafny.Sequence.UnicodeFromString("hash"))).Apply1(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("_state")))); - } - _1328_ctorMatchInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1328_ctorMatchInner, ((_1327_isNumeric) ? (_1332_fieldName) : (_1331_patternName))), Dafny.Sequence.UnicodeFromString(", ")); - if ((_1329_j).Sign == 1) { - _1324_printRhs = (_1324_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \", \")?"))); - } - _1324_printRhs = (_1324_printRhs).Then(RAST.Expr.create_RawExpr((((_1333_formalType).is_Arrow) ? (Dafny.Sequence.UnicodeFromString("write!(_formatter, \"\")?")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print("), _1332_fieldName), Dafny.Sequence.UnicodeFromString(", _formatter, false)?")))))); - RAST._IExpr _1334_coerceRhsArg = RAST.Expr.Default(); - RAST._IType _1335_formalTpe; - RAST._IType _out84; - _out84 = (this).GenType(_1333_formalType, DCOMP.GenTypeContext.@default()); - _1335_formalTpe = _out84; - DAST._IType _1336_newFormalType; - _1336_newFormalType = (_1333_formalType).Replace(_1298_coerceMap); - RAST._IType _1337_newFormalTpe; - _1337_newFormalTpe = (_1335_formalTpe).Replace(_1299_rCoerceMap); - Std.Wrappers._IResult,RAST._IExpr>>> _1338_upcastConverter; - _1338_upcastConverter = (this).UpcastConversionLambda(_1333_formalType, _1335_formalTpe, _1336_newFormalType, _1337_newFormalTpe, _1300_coerceMapToArg); - if ((_1338_upcastConverter).is_Success) { - RAST._IExpr _1339_coercionFunction; - _1339_coercionFunction = (_1338_upcastConverter).dtor_value; - _1334_coerceRhsArg = (_1339_coercionFunction).Apply1(RAST.Expr.create_Identifier(_1331_patternName)); + _72_hashRhs = (_72_hashRhs).Then(((RAST.Expr.create_Identifier(_79_fieldName)).Sel(Dafny.Sequence.UnicodeFromString("hash"))).Apply1(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("_state")))); + } + _75_ctorMatchInner = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_75_ctorMatchInner, ((_74_isNumeric) ? (_79_fieldName) : (_78_patternName))), Dafny.Sequence.UnicodeFromString(", ")); + if ((_76_j).Sign == 1) { + _71_printRhs = (_71_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \", \")?"))); + } + _71_printRhs = (_71_printRhs).Then(RAST.Expr.create_RawExpr((((_80_formalType).is_Arrow) ? (Dafny.Sequence.UnicodeFromString("write!(_formatter, \"\")?")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyPrint::fmt_print("), _79_fieldName), Dafny.Sequence.UnicodeFromString(", _formatter, false)?")))))); + RAST._IExpr _81_coerceRhsArg = RAST.Expr.Default(); + RAST._IType _82_formalTpe; + RAST._IType _out14; + _out14 = (this).GenType(_80_formalType, DCOMP.GenTypeContext.@default()); + _82_formalTpe = _out14; + DAST._IType _83_newFormalType; + _83_newFormalType = (_80_formalType).Replace(_45_coerceMap); + RAST._IType _84_newFormalTpe; + _84_newFormalTpe = (_82_formalTpe).Replace(_46_rCoerceMap); + Std.Wrappers._IResult,RAST._IExpr>>> _85_upcastConverter; + _85_upcastConverter = (this).UpcastConversionLambda(_80_formalType, _82_formalTpe, _83_newFormalType, _84_newFormalTpe, _47_coerceMapToArg); + if ((_85_upcastConverter).is_Success) { + RAST._IExpr _86_coercionFunction; + _86_coercionFunction = (_85_upcastConverter).dtor_value; + _81_coerceRhsArg = (_86_coercionFunction).Apply1(RAST.Expr.create_Identifier(_78_patternName)); } else { - (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Could not generate coercion function for contructor "), Std.Strings.__default.OfNat(_1329_j)), Dafny.Sequence.UnicodeFromString(" of ")), _1257_datatypeName)); - _1334_coerceRhsArg = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("todo!"))).Apply1(RAST.Expr.create_LiteralString((this.error).dtor_value, false, false)); + (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Could not generate coercion function for contructor "), Std.Strings.__default.OfNat(_76_j)), Dafny.Sequence.UnicodeFromString(" of ")), _4_datatypeName)); + _81_coerceRhsArg = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("todo!"))).Apply1(RAST.Expr.create_LiteralString((this.error).dtor_value, false, false)); } - _1326_coerceRhsArgs = Dafny.Sequence.Concat(_1326_coerceRhsArgs, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_1331_patternName, _1334_coerceRhsArg))); + _73_coerceRhsArgs = Dafny.Sequence.Concat(_73_coerceRhsArgs, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(_78_patternName, _81_coerceRhsArg))); } - RAST._IExpr _1340_coerceRhs; - _1340_coerceRhs = RAST.Expr.create_StructBuild((RAST.Expr.create_Identifier(_1257_datatypeName)).MSel(DCOMP.__default.escapeName((_1320_ctor).dtor_name)), _1326_coerceRhsArgs); - if (_1327_isNumeric) { - _1321_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1321_ctorMatch, Dafny.Sequence.UnicodeFromString("(")), _1328_ctorMatchInner), Dafny.Sequence.UnicodeFromString(")")); + RAST._IExpr _87_coerceRhs; + _87_coerceRhs = RAST.Expr.create_StructBuild((RAST.Expr.create_Identifier(_4_datatypeName)).MSel(DCOMP.__default.escapeName((_67_ctor).dtor_name)), _73_coerceRhsArgs); + if (_74_isNumeric) { + _68_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_68_ctorMatch, Dafny.Sequence.UnicodeFromString("(")), _75_ctorMatchInner), Dafny.Sequence.UnicodeFromString(")")); } else { - _1321_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1321_ctorMatch, Dafny.Sequence.UnicodeFromString("{")), _1328_ctorMatchInner), Dafny.Sequence.UnicodeFromString("}")); + _68_ctorMatch = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_68_ctorMatch, Dafny.Sequence.UnicodeFromString("{")), _75_ctorMatchInner), Dafny.Sequence.UnicodeFromString("}")); } - if ((_1320_ctor).dtor_hasAnyArgs) { - _1324_printRhs = (_1324_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \")\")?"))); + if ((_67_ctor).dtor_hasAnyArgs) { + _71_printRhs = (_71_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("write!(_formatter, \")\")?"))); } - _1324_printRhs = (_1324_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("Ok(())"))); - _1316_printImplBodyCases = Dafny.Sequence.Concat(_1316_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _1321_ctorMatch), RAST.Expr.create_Block(_1324_printRhs)))); - _1317_hashImplBodyCases = Dafny.Sequence.Concat(_1317_hashImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _1321_ctorMatch), RAST.Expr.create_Block(_1325_hashRhs)))); - _1318_coerceImplBodyCases = Dafny.Sequence.Concat(_1318_coerceImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _1321_ctorMatch), RAST.Expr.create_Block(_1340_coerceRhs)))); + _71_printRhs = (_71_printRhs).Then(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("Ok(())"))); + _63_printImplBodyCases = Dafny.Sequence.Concat(_63_printImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _68_ctorMatch), RAST.Expr.create_Block(_71_printRhs)))); + _64_hashImplBodyCases = Dafny.Sequence.Concat(_64_hashImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _68_ctorMatch), RAST.Expr.create_Block(_72_hashRhs)))); + _65_coerceImplBodyCases = Dafny.Sequence.Concat(_65_coerceImplBodyCases, Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::")), _68_ctorMatch), RAST.Expr.create_Block(_87_coerceRhs)))); } if ((new BigInteger(((c).dtor_typeParams).Count)).Sign == 1) { - Dafny.ISequence _1341_extraCases; - _1341_extraCases = Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_1257_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{"), (this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString(""))), Dafny.Sequence.UnicodeFromString("}"))))); - _1316_printImplBodyCases = Dafny.Sequence.Concat(_1316_printImplBodyCases, _1341_extraCases); - _1317_hashImplBodyCases = Dafny.Sequence.Concat(_1317_hashImplBodyCases, _1341_extraCases); - _1318_coerceImplBodyCases = Dafny.Sequence.Concat(_1318_coerceImplBodyCases, _1341_extraCases); - } - Dafny.ISequence _1342_defaultConstrainedTypeParams; - _1342_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1255_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); - Dafny.ISequence _1343_rTypeParamsDeclsWithEq; - _1343_rTypeParamsDeclsWithEq = RAST.TypeParamDecl.AddConstraintsMultiple(_1255_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.Eq)); - Dafny.ISequence _1344_rTypeParamsDeclsWithHash; - _1344_rTypeParamsDeclsWithHash = RAST.TypeParamDecl.AddConstraintsMultiple(_1255_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.Hash)); - RAST._IExpr _1345_printImplBody; - _1345_printImplBody = RAST.Expr.create_Match(RAST.__default.self, _1316_printImplBodyCases); - RAST._IExpr _1346_hashImplBody; - _1346_hashImplBody = RAST.Expr.create_Match(RAST.__default.self, _1317_hashImplBodyCases); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1255_rTypeParamsDecls, ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Debug")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_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(_1255_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_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(_1345_printImplBody)))))))); - if ((new BigInteger((_1296_rCoerceTypeParams).Count)).Sign == 1) { - RAST._IExpr _1347_coerceImplBody; - _1347_coerceImplBody = RAST.Expr.create_Match(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("this")), _1318_coerceImplBodyCases); - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_1255_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("coerce"), _1296_rCoerceTypeParams, _1297_coerceArguments, Std.Wrappers.Option.create_Some(RAST.__default.Rc(RAST.Type.create_ImplType(RAST.Type.create_FnType(Dafny.Sequence.FromElements(RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams)), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1295_coerceTypes))))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.__default.RcNew(RAST.Expr.create_Lambda(Dafny.Sequence.FromElements(RAST.Formal.create(Dafny.Sequence.UnicodeFromString("this"), RAST.Type.create_SelfOwned())), Std.Wrappers.Option.create_Some(RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1295_coerceTypes)), _1347_coerceImplBody)))))))))); - } - if (_1315_cIsEq) { - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1343_rTypeParamsDeclsWithEq, RAST.__default.Eq, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements())))); - } - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1344_rTypeParamsDeclsWithHash, RAST.__default.Hash, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("hash"), Dafny.Sequence.FromElements(RAST.TypeParamDecl.create(Dafny.Sequence.UnicodeFromString("_H"), Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("hash"))).MSel(Dafny.Sequence.UnicodeFromString("Hasher"))))), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_state"), RAST.Type.create_BorrowedMut(RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("_H"))))), Std.Wrappers.Option.create_None(), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_1346_hashImplBody)))))))); + Dafny.ISequence _88_extraCases; + _88_extraCases = Dafny.Sequence.FromElements(RAST.MatchCase.create(Dafny.Sequence.Concat(_4_datatypeName, Dafny.Sequence.UnicodeFromString("::_PhantomVariant(..)")), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{"), (this).UnreachablePanicIfVerified(Dafny.Sequence.UnicodeFromString(""))), Dafny.Sequence.UnicodeFromString("}"))))); + _63_printImplBodyCases = Dafny.Sequence.Concat(_63_printImplBodyCases, _88_extraCases); + _64_hashImplBodyCases = Dafny.Sequence.Concat(_64_hashImplBodyCases, _88_extraCases); + _65_coerceImplBodyCases = Dafny.Sequence.Concat(_65_coerceImplBodyCases, _88_extraCases); + } + Dafny.ISequence _89_defaultConstrainedTypeParams; + _89_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_2_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); + Dafny.ISequence _90_rTypeParamsDeclsWithEq; + _90_rTypeParamsDeclsWithEq = RAST.TypeParamDecl.AddConstraintsMultiple(_2_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.Eq)); + Dafny.ISequence _91_rTypeParamsDeclsWithHash; + _91_rTypeParamsDeclsWithHash = RAST.TypeParamDecl.AddConstraintsMultiple(_2_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.Hash)); + RAST._IExpr _92_printImplBody; + _92_printImplBody = RAST.Expr.create_Match(RAST.__default.self, _63_printImplBodyCases); + RAST._IExpr _93_hashImplBody; + _93_hashImplBody = RAST.Expr.create_Match(RAST.__default.self, _64_hashImplBodyCases); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("fmt"))).MSel(Dafny.Sequence.UnicodeFromString("Debug")), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_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(_2_rTypeParamsDecls, RAST.__default.DafnyPrint, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_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(_92_printImplBody)))))))); + if ((new BigInteger((_43_rCoerceTypeParams).Count)).Sign == 1) { + RAST._IExpr _94_coerceImplBody; + _94_coerceImplBody = RAST.Expr.create_Match(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("this")), _65_coerceImplBodyCases); + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_Impl(_2_rTypeParamsDecls, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PUB(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("coerce"), _43_rCoerceTypeParams, _44_coerceArguments, Std.Wrappers.Option.create_Some(RAST.__default.Rc(RAST.Type.create_ImplType(RAST.Type.create_FnType(Dafny.Sequence.FromElements(RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams)), RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _42_coerceTypes))))), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.__default.RcNew(RAST.Expr.create_Lambda(Dafny.Sequence.FromElements(RAST.Formal.create(Dafny.Sequence.UnicodeFromString("this"), RAST.Type.create_SelfOwned())), Std.Wrappers.Option.create_Some(RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _42_coerceTypes)), _94_coerceImplBody)))))))))); + } + if (_62_cIsEq) { + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_90_rTypeParamsDeclsWithEq, RAST.__default.Eq, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements())))); + } + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_91_rTypeParamsDeclsWithHash, RAST.__default.Hash, RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams), Dafny.Sequence.UnicodeFromString(""), Dafny.Sequence.FromElements(RAST.ImplMember.create_FnDecl(RAST.Visibility.create_PRIV(), RAST.Fn.create(Dafny.Sequence.UnicodeFromString("hash"), Dafny.Sequence.FromElements(RAST.TypeParamDecl.create(Dafny.Sequence.UnicodeFromString("_H"), Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("hash"))).MSel(Dafny.Sequence.UnicodeFromString("Hasher"))))), Dafny.Sequence.FromElements(RAST.Formal.selfBorrowed, RAST.Formal.create(Dafny.Sequence.UnicodeFromString("_state"), RAST.Type.create_BorrowedMut(RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("_H"))))), Std.Wrappers.Option.create_None(), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(_93_hashImplBody)))))))); if ((new BigInteger(((c).dtor_ctors).Count)).Sign == 1) { - RAST._IExpr _1348_structName; - _1348_structName = (RAST.Expr.create_Identifier(_1257_datatypeName)).MSel(DCOMP.__default.escapeName((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_name)); - Dafny.ISequence _1349_structAssignments; - _1349_structAssignments = Dafny.Sequence.FromElements(); - BigInteger _hi21 = new BigInteger(((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Count); - for (BigInteger _1350_i = BigInteger.Zero; _1350_i < _hi21; _1350_i++) { - DAST._IDatatypeDtor _1351_dtor; - _1351_dtor = ((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Select(_1350_i); - _1349_structAssignments = Dafny.Sequence.Concat(_1349_structAssignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_1351_dtor).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::default::Default::default()"))))); - } - Dafny.ISequence _1352_defaultConstrainedTypeParams; - _1352_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_1255_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); - RAST._IType _1353_fullType; - _1353_fullType = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_1257_datatypeName), _1254_rTypeParams); - if (_1315_cIsEq) { - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1352_defaultConstrainedTypeParams, RAST.__default.DefaultTrait, _1353_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(_1353_fullType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(_1348_structName, _1349_structAssignments))))))))); - } - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_1255_rTypeParamsDecls, (((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("convert"))).MSel(Dafny.Sequence.UnicodeFromString("AsRef"))).Apply1(_1353_fullType), RAST.Type.create_Borrowed(_1353_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)))))))); + RAST._IExpr _95_structName; + _95_structName = (RAST.Expr.create_Identifier(_4_datatypeName)).MSel(DCOMP.__default.escapeName((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_name)); + Dafny.ISequence _96_structAssignments; + _96_structAssignments = Dafny.Sequence.FromElements(); + BigInteger _hi9 = new BigInteger(((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Count); + for (BigInteger _97_i = BigInteger.Zero; _97_i < _hi9; _97_i++) { + DAST._IDatatypeDtor _98_dtor; + _98_dtor = ((((c).dtor_ctors).Select(BigInteger.Zero)).dtor_args).Select(_97_i); + _96_structAssignments = Dafny.Sequence.Concat(_96_structAssignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeName(((_98_dtor).dtor_formal).dtor_name), RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::std::default::Default::default()"))))); + } + Dafny.ISequence _99_defaultConstrainedTypeParams; + _99_defaultConstrainedTypeParams = RAST.TypeParamDecl.AddConstraintsMultiple(_2_rTypeParamsDecls, Dafny.Sequence.FromElements(RAST.__default.DefaultTrait)); + RAST._IType _100_fullType; + _100_fullType = RAST.Type.create_TypeApp(RAST.Type.create_TIdentifier(_4_datatypeName), _1_rTypeParams); + if (_62_cIsEq) { + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_99_defaultConstrainedTypeParams, RAST.__default.DefaultTrait, _100_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(_100_fullType), Dafny.Sequence.UnicodeFromString(""), Std.Wrappers.Option.create_Some(RAST.Expr.create_StructBuild(_95_structName, _96_structAssignments))))))))); + } + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.ModDecl.create_ImplDecl(RAST.Impl.create_ImplFor(_2_rTypeParamsDecls, (((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("convert"))).MSel(Dafny.Sequence.UnicodeFromString("AsRef"))).Apply1(_100_fullType), RAST.Type.create_Borrowed(_100_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)))))))); } return s; } @@ -1739,9 +1742,9 @@ public static RAST._IType GenPath(Dafny.ISequence> p } else { r = RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("super")); } - BigInteger _hi22 = new BigInteger((p).Count); - for (BigInteger _1354_i = BigInteger.Zero; _1354_i < _hi22; _1354_i++) { - r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1354_i)))); + BigInteger _hi0 = new BigInteger((p).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_0_i)))); } } return r; @@ -1760,9 +1763,9 @@ public static RAST._IExpr GenPathExpr(Dafny.ISequence.UnicodeFromString("super")); } - BigInteger _hi23 = new BigInteger((p).Count); - for (BigInteger _1355_i = BigInteger.Zero; _1355_i < _hi23; _1355_i++) { - r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_1355_i)))); + BigInteger _hi0 = new BigInteger((p).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + r = (r).MSel(DCOMP.__default.escapeName(((p).Select(_0_i)))); } } return r; @@ -1771,13 +1774,13 @@ public static RAST._IExpr GenPathExpr(Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.FromElements(); - BigInteger _hi24 = new BigInteger((args).Count); - for (BigInteger _1356_i = BigInteger.Zero; _1356_i < _hi24; _1356_i++) { - RAST._IType _1357_genTp; - RAST._IType _out85; - _out85 = (this).GenType((args).Select(_1356_i), genTypeContext); - _1357_genTp = _out85; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1357_genTp)); + BigInteger _hi0 = new BigInteger((args).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + RAST._IType _1_genTp; + RAST._IType _out0; + _out0 = (this).GenType((args).Select(_0_i), genTypeContext); + _1_genTp = _out0; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1_genTp)); } return s; } @@ -1787,303 +1790,303 @@ public bool IsRcWrapped(Dafny.ISequence attributes) { public RAST._IType GenType(DAST._IType c, DCOMP._IGenTypeContext genTypeContext) { RAST._IType s = RAST.Type.Default(); - DAST._IType _source61 = c; + DAST._IType _source0 = c; { - if (_source61.is_UserDefined) { - DAST._IResolvedType _1358_resolved = _source61.dtor_resolved; + if (_source0.is_UserDefined) { + DAST._IResolvedType _0_resolved = _source0.dtor_resolved; { - RAST._IType _1359_t; - RAST._IType _out86; - _out86 = DCOMP.COMP.GenPath((_1358_resolved).dtor_path); - _1359_t = _out86; - Dafny.ISequence _1360_typeArgs; - Dafny.ISequence _out87; - _out87 = (this).GenTypeArgs((_1358_resolved).dtor_typeArgs, Dafny.Helpers.Let(genTypeContext, _pat_let9_0 => Dafny.Helpers.Let(_pat_let9_0, _1361_dt__update__tmp_h0 => Dafny.Helpers.Let(false, _pat_let10_0 => Dafny.Helpers.Let(_pat_let10_0, _1362_dt__update_hforTraitParents_h0 => DCOMP.GenTypeContext.create((_1361_dt__update__tmp_h0).dtor_inBinding, (_1361_dt__update__tmp_h0).dtor_inFn, _1362_dt__update_hforTraitParents_h0)))))); - _1360_typeArgs = _out87; - s = RAST.Type.create_TypeApp(_1359_t, _1360_typeArgs); - DAST._IResolvedTypeBase _source62 = (_1358_resolved).dtor_kind; + RAST._IType _1_t; + RAST._IType _out0; + _out0 = DCOMP.COMP.GenPath((_0_resolved).dtor_path); + _1_t = _out0; + Dafny.ISequence _2_typeArgs; + Dafny.ISequence _out1; + _out1 = (this).GenTypeArgs((_0_resolved).dtor_typeArgs, Dafny.Helpers.Let(genTypeContext, _pat_let9_0 => Dafny.Helpers.Let(_pat_let9_0, _3_dt__update__tmp_h0 => Dafny.Helpers.Let(false, _pat_let10_0 => Dafny.Helpers.Let(_pat_let10_0, _4_dt__update_hforTraitParents_h0 => DCOMP.GenTypeContext.create((_3_dt__update__tmp_h0).dtor_inBinding, (_3_dt__update__tmp_h0).dtor_inFn, _4_dt__update_hforTraitParents_h0)))))); + _2_typeArgs = _out1; + s = RAST.Type.create_TypeApp(_1_t, _2_typeArgs); + DAST._IResolvedTypeBase _source1 = (_0_resolved).dtor_kind; { - if (_source62.is_Class) { + if (_source1.is_Class) { { s = (this).Object(s); } - goto after_match9; + goto after_match1; } } { - if (_source62.is_Datatype) { + if (_source1.is_Datatype) { { - if ((this).IsRcWrapped((_1358_resolved).dtor_attributes)) { + if ((this).IsRcWrapped((_0_resolved).dtor_attributes)) { s = RAST.__default.Rc(s); } } - goto after_match9; + goto after_match1; } } { - if (_source62.is_Trait) { + if (_source1.is_Trait) { { - if (((_1358_resolved).dtor_path).Equals(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("_System"), Dafny.Sequence.UnicodeFromString("object")))) { + if (((_0_resolved).dtor_path).Equals(Dafny.Sequence>.FromElements(Dafny.Sequence.UnicodeFromString("_System"), Dafny.Sequence.UnicodeFromString("object")))) { s = ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any")); } if (!((genTypeContext).dtor_forTraitParents)) { s = (this).Object(RAST.Type.create_DynType(s)); } } - goto after_match9; + goto after_match1; } } { - DAST._IType _1363_t = _source62.dtor_baseType; - DAST._INewtypeRange _1364_range = _source62.dtor_range; - bool _1365_erased = _source62.dtor_erase; + DAST._IType _5_t = _source1.dtor_baseType; + DAST._INewtypeRange _6_range = _source1.dtor_range; + bool _7_erased = _source1.dtor_erase; { - if (_1365_erased) { - Std.Wrappers._IOption _source63 = DCOMP.COMP.NewtypeToRustType(_1363_t, _1364_range); + if (_7_erased) { + Std.Wrappers._IOption _source2 = DCOMP.COMP.NewtypeToRustType(_5_t, _6_range); { - if (_source63.is_Some) { - RAST._IType _1366_v = _source63.dtor_value; - s = _1366_v; - goto after_match10; + if (_source2.is_Some) { + RAST._IType _8_v = _source2.dtor_value; + s = _8_v; + goto after_match2; } } { } - after_match10: ; + after_match2: ; } } } - after_match9: ; + after_match1: ; } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Object) { + if (_source0.is_Object) { { s = ((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("any"))).MSel(Dafny.Sequence.UnicodeFromString("Any")); if (!((genTypeContext).dtor_forTraitParents)) { s = (this).Object(RAST.Type.create_DynType(s)); } } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Tuple) { - Dafny.ISequence _1367_types = _source61.dtor_Tuple_a0; + if (_source0.is_Tuple) { + Dafny.ISequence _9_types = _source0.dtor_Tuple_a0; { - Dafny.ISequence _1368_args; - _1368_args = Dafny.Sequence.FromElements(); - BigInteger _1369_i; - _1369_i = BigInteger.Zero; - while ((_1369_i) < (new BigInteger((_1367_types).Count))) { - RAST._IType _1370_generated; - RAST._IType _out88; - _out88 = (this).GenType((_1367_types).Select(_1369_i), Dafny.Helpers.Let(genTypeContext, _pat_let11_0 => Dafny.Helpers.Let(_pat_let11_0, _1371_dt__update__tmp_h1 => Dafny.Helpers.Let(false, _pat_let12_0 => Dafny.Helpers.Let(_pat_let12_0, _1372_dt__update_hforTraitParents_h1 => DCOMP.GenTypeContext.create((_1371_dt__update__tmp_h1).dtor_inBinding, (_1371_dt__update__tmp_h1).dtor_inFn, _1372_dt__update_hforTraitParents_h1)))))); - _1370_generated = _out88; - _1368_args = Dafny.Sequence.Concat(_1368_args, Dafny.Sequence.FromElements(_1370_generated)); - _1369_i = (_1369_i) + (BigInteger.One); + Dafny.ISequence _10_args; + _10_args = Dafny.Sequence.FromElements(); + BigInteger _11_i; + _11_i = BigInteger.Zero; + while ((_11_i) < (new BigInteger((_9_types).Count))) { + RAST._IType _12_generated; + RAST._IType _out2; + _out2 = (this).GenType((_9_types).Select(_11_i), Dafny.Helpers.Let(genTypeContext, _pat_let11_0 => Dafny.Helpers.Let(_pat_let11_0, _13_dt__update__tmp_h1 => Dafny.Helpers.Let(false, _pat_let12_0 => Dafny.Helpers.Let(_pat_let12_0, _14_dt__update_hforTraitParents_h1 => DCOMP.GenTypeContext.create((_13_dt__update__tmp_h1).dtor_inBinding, (_13_dt__update__tmp_h1).dtor_inFn, _14_dt__update_hforTraitParents_h1)))))); + _12_generated = _out2; + _10_args = Dafny.Sequence.Concat(_10_args, Dafny.Sequence.FromElements(_12_generated)); + _11_i = (_11_i) + (BigInteger.One); } - if ((new BigInteger((_1367_types).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) { - s = RAST.Type.create_TupleType(_1368_args); + if ((new BigInteger((_9_types).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) { + s = RAST.Type.create_TupleType(_10_args); } else { - s = RAST.__default.SystemTupleType(_1368_args); + s = RAST.__default.SystemTupleType(_10_args); } } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Array) { - DAST._IType _1373_element = _source61.dtor_element; - BigInteger _1374_dims = _source61.dtor_dims; + if (_source0.is_Array) { + DAST._IType _15_element = _source0.dtor_element; + BigInteger _16_dims = _source0.dtor_dims; { - if ((_1374_dims) > (new BigInteger(16))) { + if ((_16_dims) > (new BigInteger(16))) { s = RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("Array of dimensions greater than 16")); } else { - RAST._IType _1375_elem; - RAST._IType _out89; - _out89 = (this).GenType(_1373_element, Dafny.Helpers.Let(genTypeContext, _pat_let13_0 => Dafny.Helpers.Let(_pat_let13_0, _1376_dt__update__tmp_h2 => Dafny.Helpers.Let(false, _pat_let14_0 => Dafny.Helpers.Let(_pat_let14_0, _1377_dt__update_hforTraitParents_h2 => DCOMP.GenTypeContext.create((_1376_dt__update__tmp_h2).dtor_inBinding, (_1376_dt__update__tmp_h2).dtor_inFn, _1377_dt__update_hforTraitParents_h2)))))); - _1375_elem = _out89; - if ((_1374_dims) == (BigInteger.One)) { - s = RAST.Type.create_Array(_1375_elem, Std.Wrappers.Option>.create_None()); + RAST._IType _17_elem; + RAST._IType _out3; + _out3 = (this).GenType(_15_element, Dafny.Helpers.Let(genTypeContext, _pat_let13_0 => Dafny.Helpers.Let(_pat_let13_0, _18_dt__update__tmp_h2 => Dafny.Helpers.Let(false, _pat_let14_0 => Dafny.Helpers.Let(_pat_let14_0, _19_dt__update_hforTraitParents_h2 => DCOMP.GenTypeContext.create((_18_dt__update__tmp_h2).dtor_inBinding, (_18_dt__update__tmp_h2).dtor_inFn, _19_dt__update_hforTraitParents_h2)))))); + _17_elem = _out3; + if ((_16_dims) == (BigInteger.One)) { + s = RAST.Type.create_Array(_17_elem, Std.Wrappers.Option>.create_None()); s = (this).Object(s); } else { - Dafny.ISequence _1378_n; - _1378_n = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array"), Std.Strings.__default.OfNat(_1374_dims)); - s = ((RAST.__default.dafny__runtime__type).MSel(_1378_n)).Apply(Dafny.Sequence.FromElements(_1375_elem)); + Dafny.ISequence _20_n; + _20_n = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array"), Std.Strings.__default.OfNat(_16_dims)); + s = ((RAST.__default.dafny__runtime__type).MSel(_20_n)).Apply(Dafny.Sequence.FromElements(_17_elem)); s = (this).Object(s); } } } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Seq) { - DAST._IType _1379_element = _source61.dtor_element; + if (_source0.is_Seq) { + DAST._IType _21_element = _source0.dtor_element; { - RAST._IType _1380_elem; - RAST._IType _out90; - _out90 = (this).GenType(_1379_element, Dafny.Helpers.Let(genTypeContext, _pat_let15_0 => Dafny.Helpers.Let(_pat_let15_0, _1381_dt__update__tmp_h3 => Dafny.Helpers.Let(false, _pat_let16_0 => Dafny.Helpers.Let(_pat_let16_0, _1382_dt__update_hforTraitParents_h3 => DCOMP.GenTypeContext.create((_1381_dt__update__tmp_h3).dtor_inBinding, (_1381_dt__update__tmp_h3).dtor_inFn, _1382_dt__update_hforTraitParents_h3)))))); - _1380_elem = _out90; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence")), Dafny.Sequence.FromElements(_1380_elem)); + RAST._IType _22_elem; + RAST._IType _out4; + _out4 = (this).GenType(_21_element, Dafny.Helpers.Let(genTypeContext, _pat_let15_0 => Dafny.Helpers.Let(_pat_let15_0, _23_dt__update__tmp_h3 => Dafny.Helpers.Let(false, _pat_let16_0 => Dafny.Helpers.Let(_pat_let16_0, _24_dt__update_hforTraitParents_h3 => DCOMP.GenTypeContext.create((_23_dt__update__tmp_h3).dtor_inBinding, (_23_dt__update__tmp_h3).dtor_inFn, _24_dt__update_hforTraitParents_h3)))))); + _22_elem = _out4; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence")), Dafny.Sequence.FromElements(_22_elem)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Set) { - DAST._IType _1383_element = _source61.dtor_element; + if (_source0.is_Set) { + DAST._IType _25_element = _source0.dtor_element; { - RAST._IType _1384_elem; - RAST._IType _out91; - _out91 = (this).GenType(_1383_element, Dafny.Helpers.Let(genTypeContext, _pat_let17_0 => Dafny.Helpers.Let(_pat_let17_0, _1385_dt__update__tmp_h4 => Dafny.Helpers.Let(false, _pat_let18_0 => Dafny.Helpers.Let(_pat_let18_0, _1386_dt__update_hforTraitParents_h4 => DCOMP.GenTypeContext.create((_1385_dt__update__tmp_h4).dtor_inBinding, (_1385_dt__update__tmp_h4).dtor_inFn, _1386_dt__update_hforTraitParents_h4)))))); - _1384_elem = _out91; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Set")), Dafny.Sequence.FromElements(_1384_elem)); + RAST._IType _26_elem; + RAST._IType _out5; + _out5 = (this).GenType(_25_element, Dafny.Helpers.Let(genTypeContext, _pat_let17_0 => Dafny.Helpers.Let(_pat_let17_0, _27_dt__update__tmp_h4 => Dafny.Helpers.Let(false, _pat_let18_0 => Dafny.Helpers.Let(_pat_let18_0, _28_dt__update_hforTraitParents_h4 => DCOMP.GenTypeContext.create((_27_dt__update__tmp_h4).dtor_inBinding, (_27_dt__update__tmp_h4).dtor_inFn, _28_dt__update_hforTraitParents_h4)))))); + _26_elem = _out5; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Set")), Dafny.Sequence.FromElements(_26_elem)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Multiset) { - DAST._IType _1387_element = _source61.dtor_element; + if (_source0.is_Multiset) { + DAST._IType _29_element = _source0.dtor_element; { - RAST._IType _1388_elem; - RAST._IType _out92; - _out92 = (this).GenType(_1387_element, Dafny.Helpers.Let(genTypeContext, _pat_let19_0 => Dafny.Helpers.Let(_pat_let19_0, _1389_dt__update__tmp_h5 => Dafny.Helpers.Let(false, _pat_let20_0 => Dafny.Helpers.Let(_pat_let20_0, _1390_dt__update_hforTraitParents_h5 => DCOMP.GenTypeContext.create((_1389_dt__update__tmp_h5).dtor_inBinding, (_1389_dt__update__tmp_h5).dtor_inFn, _1390_dt__update_hforTraitParents_h5)))))); - _1388_elem = _out92; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Multiset")), Dafny.Sequence.FromElements(_1388_elem)); + RAST._IType _30_elem; + RAST._IType _out6; + _out6 = (this).GenType(_29_element, Dafny.Helpers.Let(genTypeContext, _pat_let19_0 => Dafny.Helpers.Let(_pat_let19_0, _31_dt__update__tmp_h5 => Dafny.Helpers.Let(false, _pat_let20_0 => Dafny.Helpers.Let(_pat_let20_0, _32_dt__update_hforTraitParents_h5 => DCOMP.GenTypeContext.create((_31_dt__update__tmp_h5).dtor_inBinding, (_31_dt__update__tmp_h5).dtor_inFn, _32_dt__update_hforTraitParents_h5)))))); + _30_elem = _out6; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Multiset")), Dafny.Sequence.FromElements(_30_elem)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Map) { - DAST._IType _1391_key = _source61.dtor_key; - DAST._IType _1392_value = _source61.dtor_value; + if (_source0.is_Map) { + DAST._IType _33_key = _source0.dtor_key; + DAST._IType _34_value = _source0.dtor_value; { - RAST._IType _1393_keyType; - RAST._IType _out93; - _out93 = (this).GenType(_1391_key, Dafny.Helpers.Let(genTypeContext, _pat_let21_0 => Dafny.Helpers.Let(_pat_let21_0, _1394_dt__update__tmp_h6 => Dafny.Helpers.Let(false, _pat_let22_0 => Dafny.Helpers.Let(_pat_let22_0, _1395_dt__update_hforTraitParents_h6 => DCOMP.GenTypeContext.create((_1394_dt__update__tmp_h6).dtor_inBinding, (_1394_dt__update__tmp_h6).dtor_inFn, _1395_dt__update_hforTraitParents_h6)))))); - _1393_keyType = _out93; - RAST._IType _1396_valueType; - RAST._IType _out94; - _out94 = (this).GenType(_1392_value, genTypeContext); - _1396_valueType = _out94; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Map")), Dafny.Sequence.FromElements(_1393_keyType, _1396_valueType)); + RAST._IType _35_keyType; + RAST._IType _out7; + _out7 = (this).GenType(_33_key, Dafny.Helpers.Let(genTypeContext, _pat_let21_0 => Dafny.Helpers.Let(_pat_let21_0, _36_dt__update__tmp_h6 => Dafny.Helpers.Let(false, _pat_let22_0 => Dafny.Helpers.Let(_pat_let22_0, _37_dt__update_hforTraitParents_h6 => DCOMP.GenTypeContext.create((_36_dt__update__tmp_h6).dtor_inBinding, (_36_dt__update__tmp_h6).dtor_inFn, _37_dt__update_hforTraitParents_h6)))))); + _35_keyType = _out7; + RAST._IType _38_valueType; + RAST._IType _out8; + _out8 = (this).GenType(_34_value, genTypeContext); + _38_valueType = _out8; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Map")), Dafny.Sequence.FromElements(_35_keyType, _38_valueType)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_MapBuilder) { - DAST._IType _1397_key = _source61.dtor_key; - DAST._IType _1398_value = _source61.dtor_value; + if (_source0.is_MapBuilder) { + DAST._IType _39_key = _source0.dtor_key; + DAST._IType _40_value = _source0.dtor_value; { - RAST._IType _1399_keyType; - RAST._IType _out95; - _out95 = (this).GenType(_1397_key, Dafny.Helpers.Let(genTypeContext, _pat_let23_0 => Dafny.Helpers.Let(_pat_let23_0, _1400_dt__update__tmp_h7 => Dafny.Helpers.Let(false, _pat_let24_0 => Dafny.Helpers.Let(_pat_let24_0, _1401_dt__update_hforTraitParents_h7 => DCOMP.GenTypeContext.create((_1400_dt__update__tmp_h7).dtor_inBinding, (_1400_dt__update__tmp_h7).dtor_inFn, _1401_dt__update_hforTraitParents_h7)))))); - _1399_keyType = _out95; - RAST._IType _1402_valueType; - RAST._IType _out96; - _out96 = (this).GenType(_1398_value, genTypeContext); - _1402_valueType = _out96; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder")), Dafny.Sequence.FromElements(_1399_keyType, _1402_valueType)); + RAST._IType _41_keyType; + RAST._IType _out9; + _out9 = (this).GenType(_39_key, Dafny.Helpers.Let(genTypeContext, _pat_let23_0 => Dafny.Helpers.Let(_pat_let23_0, _42_dt__update__tmp_h7 => Dafny.Helpers.Let(false, _pat_let24_0 => Dafny.Helpers.Let(_pat_let24_0, _43_dt__update_hforTraitParents_h7 => DCOMP.GenTypeContext.create((_42_dt__update__tmp_h7).dtor_inBinding, (_42_dt__update__tmp_h7).dtor_inFn, _43_dt__update_hforTraitParents_h7)))))); + _41_keyType = _out9; + RAST._IType _44_valueType; + RAST._IType _out10; + _out10 = (this).GenType(_40_value, genTypeContext); + _44_valueType = _out10; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder")), Dafny.Sequence.FromElements(_41_keyType, _44_valueType)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_SetBuilder) { - DAST._IType _1403_elem = _source61.dtor_element; + if (_source0.is_SetBuilder) { + DAST._IType _45_elem = _source0.dtor_element; { - RAST._IType _1404_elemType; - RAST._IType _out97; - _out97 = (this).GenType(_1403_elem, Dafny.Helpers.Let(genTypeContext, _pat_let25_0 => Dafny.Helpers.Let(_pat_let25_0, _1405_dt__update__tmp_h8 => Dafny.Helpers.Let(false, _pat_let26_0 => Dafny.Helpers.Let(_pat_let26_0, _1406_dt__update_hforTraitParents_h8 => DCOMP.GenTypeContext.create((_1405_dt__update__tmp_h8).dtor_inBinding, (_1405_dt__update__tmp_h8).dtor_inFn, _1406_dt__update_hforTraitParents_h8)))))); - _1404_elemType = _out97; - s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder")), Dafny.Sequence.FromElements(_1404_elemType)); + RAST._IType _46_elemType; + RAST._IType _out11; + _out11 = (this).GenType(_45_elem, Dafny.Helpers.Let(genTypeContext, _pat_let25_0 => Dafny.Helpers.Let(_pat_let25_0, _47_dt__update__tmp_h8 => Dafny.Helpers.Let(false, _pat_let26_0 => Dafny.Helpers.Let(_pat_let26_0, _48_dt__update_hforTraitParents_h8 => DCOMP.GenTypeContext.create((_47_dt__update__tmp_h8).dtor_inBinding, (_47_dt__update__tmp_h8).dtor_inFn, _48_dt__update_hforTraitParents_h8)))))); + _46_elemType = _out11; + s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder")), Dafny.Sequence.FromElements(_46_elemType)); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_Arrow) { - Dafny.ISequence _1407_args = _source61.dtor_args; - DAST._IType _1408_result = _source61.dtor_result; + if (_source0.is_Arrow) { + Dafny.ISequence _49_args = _source0.dtor_args; + DAST._IType _50_result = _source0.dtor_result; { - Dafny.ISequence _1409_argTypes; - _1409_argTypes = Dafny.Sequence.FromElements(); - BigInteger _1410_i; - _1410_i = BigInteger.Zero; - while ((_1410_i) < (new BigInteger((_1407_args).Count))) { - RAST._IType _1411_generated; - RAST._IType _out98; - _out98 = (this).GenType((_1407_args).Select(_1410_i), Dafny.Helpers.Let(genTypeContext, _pat_let27_0 => Dafny.Helpers.Let(_pat_let27_0, _1412_dt__update__tmp_h9 => Dafny.Helpers.Let(false, _pat_let28_0 => Dafny.Helpers.Let(_pat_let28_0, _1413_dt__update_hforTraitParents_h9 => Dafny.Helpers.Let(true, _pat_let29_0 => Dafny.Helpers.Let(_pat_let29_0, _1414_dt__update_hinFn_h0 => DCOMP.GenTypeContext.create((_1412_dt__update__tmp_h9).dtor_inBinding, _1414_dt__update_hinFn_h0, _1413_dt__update_hforTraitParents_h9)))))))); - _1411_generated = _out98; - _1409_argTypes = Dafny.Sequence.Concat(_1409_argTypes, Dafny.Sequence.FromElements(RAST.Type.create_Borrowed(_1411_generated))); - _1410_i = (_1410_i) + (BigInteger.One); + Dafny.ISequence _51_argTypes; + _51_argTypes = Dafny.Sequence.FromElements(); + BigInteger _52_i; + _52_i = BigInteger.Zero; + while ((_52_i) < (new BigInteger((_49_args).Count))) { + RAST._IType _53_generated; + RAST._IType _out12; + _out12 = (this).GenType((_49_args).Select(_52_i), Dafny.Helpers.Let(genTypeContext, _pat_let27_0 => Dafny.Helpers.Let(_pat_let27_0, _54_dt__update__tmp_h9 => Dafny.Helpers.Let(false, _pat_let28_0 => Dafny.Helpers.Let(_pat_let28_0, _55_dt__update_hforTraitParents_h9 => Dafny.Helpers.Let(true, _pat_let29_0 => Dafny.Helpers.Let(_pat_let29_0, _56_dt__update_hinFn_h0 => DCOMP.GenTypeContext.create((_54_dt__update__tmp_h9).dtor_inBinding, _56_dt__update_hinFn_h0, _55_dt__update_hforTraitParents_h9)))))))); + _53_generated = _out12; + _51_argTypes = Dafny.Sequence.Concat(_51_argTypes, Dafny.Sequence.FromElements(RAST.Type.create_Borrowed(_53_generated))); + _52_i = (_52_i) + (BigInteger.One); } - RAST._IType _1415_resultType; - RAST._IType _out99; - _out99 = (this).GenType(_1408_result, DCOMP.GenTypeContext.create(((genTypeContext).dtor_inFn) || ((genTypeContext).dtor_inBinding), false, false)); - _1415_resultType = _out99; - s = RAST.__default.Rc(RAST.Type.create_DynType(RAST.Type.create_FnType(_1409_argTypes, _1415_resultType))); + RAST._IType _57_resultType; + RAST._IType _out13; + _out13 = (this).GenType(_50_result, DCOMP.GenTypeContext.create(((genTypeContext).dtor_inFn) || ((genTypeContext).dtor_inBinding), false, false)); + _57_resultType = _out13; + s = RAST.__default.Rc(RAST.Type.create_DynType(RAST.Type.create_FnType(_51_argTypes, _57_resultType))); } - goto after_match8; + goto after_match0; } } { - if (_source61.is_TypeArg) { - Dafny.ISequence _h90 = _source61.dtor_TypeArg_a0; - Dafny.ISequence _1416_name = _h90; - s = RAST.Type.create_TIdentifier(DCOMP.__default.escapeName(_1416_name)); - goto after_match8; + if (_source0.is_TypeArg) { + Dafny.ISequence _h90 = _source0.dtor_TypeArg_a0; + Dafny.ISequence _58_name = _h90; + s = RAST.Type.create_TIdentifier(DCOMP.__default.escapeName(_58_name)); + goto after_match0; } } { - if (_source61.is_Primitive) { - DAST._IPrimitive _1417_p = _source61.dtor_Primitive_a0; + if (_source0.is_Primitive) { + DAST._IPrimitive _59_p = _source0.dtor_Primitive_a0; { - DAST._IPrimitive _source64 = _1417_p; + DAST._IPrimitive _source3 = _59_p; { - if (_source64.is_Int) { + if (_source3.is_Int) { s = (RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("DafnyInt")); - goto after_match11; + goto after_match3; } } { - if (_source64.is_Real) { + if (_source3.is_Real) { s = (RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("BigRational")); - goto after_match11; + goto after_match3; } } { - if (_source64.is_String) { + if (_source3.is_String) { s = RAST.Type.create_TypeApp((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence")), Dafny.Sequence.FromElements((RAST.__default.dafny__runtime__type).MSel((this).DafnyChar))); - goto after_match11; + goto after_match3; } } { - if (_source64.is_Bool) { + if (_source3.is_Bool) { s = RAST.Type.create_Bool(); - goto after_match11; + goto after_match3; } } { s = (RAST.__default.dafny__runtime__type).MSel((this).DafnyChar); } - after_match11: ; + after_match3: ; } - goto after_match8; + goto after_match0; } } { - Dafny.ISequence _1418_v = _source61.dtor_Passthrough_a0; - s = RAST.__default.RawType(_1418_v); + Dafny.ISequence _60_v = _source0.dtor_Passthrough_a0; + s = RAST.__default.RawType(_60_v); } - after_match8: ; + after_match0: ; return s; } public bool EnclosingIsTrait(DAST._IType tpe) { @@ -2095,274 +2098,274 @@ public void GenClassImplBody(Dafny.ISequence body, bool forTrait, traitBodies = Dafny.Map>, Dafny.ISequence>.Empty; s = Dafny.Sequence.FromElements(); traitBodies = Dafny.Map>, Dafny.ISequence>.FromElements(); - BigInteger _hi25 = new BigInteger((body).Count); - for (BigInteger _1419_i = BigInteger.Zero; _1419_i < _hi25; _1419_i++) { - DAST._IMethod _source65 = (body).Select(_1419_i); + BigInteger _hi0 = new BigInteger((body).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + DAST._IMethod _source0 = (body).Select(_0_i); { - DAST._IMethod _1420_m = _source65; + DAST._IMethod _1_m = _source0; { - Std.Wrappers._IOption>> _source66 = (_1420_m).dtor_overridingPath; + Std.Wrappers._IOption>> _source1 = (_1_m).dtor_overridingPath; { - if (_source66.is_Some) { - Dafny.ISequence> _1421_p = _source66.dtor_value; + if (_source1.is_Some) { + Dafny.ISequence> _2_p = _source1.dtor_value; { - Dafny.ISequence _1422_existing; - _1422_existing = Dafny.Sequence.FromElements(); - if ((traitBodies).Contains(_1421_p)) { - _1422_existing = Dafny.Map>, Dafny.ISequence>.Select(traitBodies,_1421_p); + Dafny.ISequence _3_existing; + _3_existing = Dafny.Sequence.FromElements(); + if ((traitBodies).Contains(_2_p)) { + _3_existing = Dafny.Map>, Dafny.ISequence>.Select(traitBodies,_2_p); } - if (((new BigInteger(((_1420_m).dtor_typeParams).Count)).Sign == 1) && ((this).EnclosingIsTrait(enclosingType))) { + if (((new BigInteger(((_1_m).dtor_typeParams).Count)).Sign == 1) && ((this).EnclosingIsTrait(enclosingType))) { (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("Error: Rust does not support method with generic type parameters in traits")); } - RAST._IImplMember _1423_genMethod; - RAST._IImplMember _out100; - _out100 = (this).GenMethod(_1420_m, true, enclosingType, enclosingTypeParams); - _1423_genMethod = _out100; - _1422_existing = Dafny.Sequence.Concat(_1422_existing, Dafny.Sequence.FromElements(_1423_genMethod)); - traitBodies = Dafny.Map>, Dafny.ISequence>.Merge(traitBodies, Dafny.Map>, Dafny.ISequence>.FromElements(new Dafny.Pair>, Dafny.ISequence>(_1421_p, _1422_existing))); + RAST._IImplMember _4_genMethod; + RAST._IImplMember _out0; + _out0 = (this).GenMethod(_1_m, true, enclosingType, enclosingTypeParams); + _4_genMethod = _out0; + _3_existing = Dafny.Sequence.Concat(_3_existing, Dafny.Sequence.FromElements(_4_genMethod)); + traitBodies = Dafny.Map>, Dafny.ISequence>.Merge(traitBodies, Dafny.Map>, Dafny.ISequence>.FromElements(new Dafny.Pair>, Dafny.ISequence>(_2_p, _3_existing))); } - goto after_match13; + goto after_match1; } } { { - RAST._IImplMember _1424_generated; - RAST._IImplMember _out101; - _out101 = (this).GenMethod(_1420_m, forTrait, enclosingType, enclosingTypeParams); - _1424_generated = _out101; - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_1424_generated)); + RAST._IImplMember _5_generated; + RAST._IImplMember _out1; + _out1 = (this).GenMethod(_1_m, forTrait, enclosingType, enclosingTypeParams); + _5_generated = _out1; + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(_5_generated)); } } - after_match13: ; + after_match1: ; } } - after_match12: ; + after_match0: ; } } public Dafny.ISequence GenParams(Dafny.ISequence @params) { Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.FromElements(); - BigInteger _hi26 = new BigInteger((@params).Count); - for (BigInteger _1425_i = BigInteger.Zero; _1425_i < _hi26; _1425_i++) { - DAST._IFormal _1426_param; - _1426_param = (@params).Select(_1425_i); - RAST._IType _1427_paramType; - RAST._IType _out102; - _out102 = (this).GenType((_1426_param).dtor_typ, DCOMP.GenTypeContext.@default()); - _1427_paramType = _out102; - if ((!((_1427_paramType).CanReadWithoutClone())) && (!((_1426_param).dtor_attributes).Contains(DCOMP.__default.AttributeOwned))) { - _1427_paramType = RAST.Type.create_Borrowed(_1427_paramType); - } - s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.Formal.create(DCOMP.__default.escapeName((_1426_param).dtor_name), _1427_paramType))); + BigInteger _hi0 = new BigInteger((@params).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + DAST._IFormal _1_param; + _1_param = (@params).Select(_0_i); + RAST._IType _2_paramType; + RAST._IType _out0; + _out0 = (this).GenType((_1_param).dtor_typ, DCOMP.GenTypeContext.@default()); + _2_paramType = _out0; + if ((!((_2_paramType).CanReadWithoutClone())) && (!((_1_param).dtor_attributes).Contains(DCOMP.__default.AttributeOwned))) { + _2_paramType = RAST.Type.create_Borrowed(_2_paramType); + } + s = Dafny.Sequence.Concat(s, Dafny.Sequence.FromElements(RAST.Formal.create(DCOMP.__default.escapeName((_1_param).dtor_name), _2_paramType))); } return s; } public RAST._IImplMember GenMethod(DAST._IMethod m, bool forTrait, DAST._IType enclosingType, Dafny.ISequence enclosingTypeParams) { RAST._IImplMember s = RAST.ImplMember.Default(); - Dafny.ISequence _1428_params; - Dafny.ISequence _out103; - _out103 = (this).GenParams((m).dtor_params); - _1428_params = _out103; - Dafny.ISequence> _1429_paramNames; - _1429_paramNames = Dafny.Sequence>.FromElements(); - Dafny.IMap,RAST._IType> _1430_paramTypes; - _1430_paramTypes = Dafny.Map, RAST._IType>.FromElements(); - BigInteger _hi27 = new BigInteger(((m).dtor_params).Count); - for (BigInteger _1431_paramI = BigInteger.Zero; _1431_paramI < _hi27; _1431_paramI++) { - DAST._IFormal _1432_dafny__formal; - _1432_dafny__formal = ((m).dtor_params).Select(_1431_paramI); - RAST._IFormal _1433_formal; - _1433_formal = (_1428_params).Select(_1431_paramI); - Dafny.ISequence _1434_name; - _1434_name = (_1433_formal).dtor_name; - _1429_paramNames = Dafny.Sequence>.Concat(_1429_paramNames, Dafny.Sequence>.FromElements(_1434_name)); - _1430_paramTypes = Dafny.Map, RAST._IType>.Update(_1430_paramTypes, _1434_name, (_1433_formal).dtor_tpe); - } - Dafny.ISequence _1435_fnName; - _1435_fnName = DCOMP.__default.escapeName((m).dtor_name); - DCOMP._ISelfInfo _1436_selfIdent; - _1436_selfIdent = DCOMP.SelfInfo.create_NoSelf(); + Dafny.ISequence _0_params; + Dafny.ISequence _out0; + _out0 = (this).GenParams((m).dtor_params); + _0_params = _out0; + Dafny.ISequence> _1_paramNames; + _1_paramNames = Dafny.Sequence>.FromElements(); + Dafny.IMap,RAST._IType> _2_paramTypes; + _2_paramTypes = Dafny.Map, RAST._IType>.FromElements(); + BigInteger _hi0 = new BigInteger(((m).dtor_params).Count); + for (BigInteger _3_paramI = BigInteger.Zero; _3_paramI < _hi0; _3_paramI++) { + DAST._IFormal _4_dafny__formal; + _4_dafny__formal = ((m).dtor_params).Select(_3_paramI); + RAST._IFormal _5_formal; + _5_formal = (_0_params).Select(_3_paramI); + Dafny.ISequence _6_name; + _6_name = (_5_formal).dtor_name; + _1_paramNames = Dafny.Sequence>.Concat(_1_paramNames, Dafny.Sequence>.FromElements(_6_name)); + _2_paramTypes = Dafny.Map, RAST._IType>.Update(_2_paramTypes, _6_name, (_5_formal).dtor_tpe); + } + Dafny.ISequence _7_fnName; + _7_fnName = DCOMP.__default.escapeName((m).dtor_name); + DCOMP._ISelfInfo _8_selfIdent; + _8_selfIdent = DCOMP.SelfInfo.create_NoSelf(); if (!((m).dtor_isStatic)) { - Dafny.ISequence _1437_selfId; - _1437_selfId = Dafny.Sequence.UnicodeFromString("self"); + Dafny.ISequence _9_selfId; + _9_selfId = Dafny.Sequence.UnicodeFromString("self"); if ((m).dtor_outVarsAreUninitFieldsToAssign) { - _1437_selfId = Dafny.Sequence.UnicodeFromString("this"); + _9_selfId = Dafny.Sequence.UnicodeFromString("this"); } - var _pat_let_tv2 = enclosingTypeParams; - DAST._IType _1438_instanceType; - DAST._IType _source67 = enclosingType; + var _pat_let_tv0 = enclosingTypeParams; + DAST._IType _10_instanceType; + DAST._IType _source0 = enclosingType; { - if (_source67.is_UserDefined) { - DAST._IResolvedType _1439_r = _source67.dtor_resolved; - _1438_instanceType = DAST.Type.create_UserDefined(Dafny.Helpers.Let(_1439_r, _pat_let30_0 => Dafny.Helpers.Let(_pat_let30_0, _1440_dt__update__tmp_h0 => Dafny.Helpers.Let, DAST._IResolvedType>(_pat_let_tv2, _pat_let31_0 => Dafny.Helpers.Let, DAST._IResolvedType>(_pat_let31_0, _1441_dt__update_htypeArgs_h0 => DAST.ResolvedType.create((_1440_dt__update__tmp_h0).dtor_path, _1441_dt__update_htypeArgs_h0, (_1440_dt__update__tmp_h0).dtor_kind, (_1440_dt__update__tmp_h0).dtor_attributes, (_1440_dt__update__tmp_h0).dtor_properMethods, (_1440_dt__update__tmp_h0).dtor_extendedTypes)))))); - goto after_match14; + if (_source0.is_UserDefined) { + DAST._IResolvedType _11_r = _source0.dtor_resolved; + _10_instanceType = DAST.Type.create_UserDefined(Dafny.Helpers.Let(_11_r, _pat_let30_0 => Dafny.Helpers.Let(_pat_let30_0, _12_dt__update__tmp_h0 => Dafny.Helpers.Let, DAST._IResolvedType>(_pat_let_tv0, _pat_let31_0 => Dafny.Helpers.Let, DAST._IResolvedType>(_pat_let31_0, _13_dt__update_htypeArgs_h0 => DAST.ResolvedType.create((_12_dt__update__tmp_h0).dtor_path, _13_dt__update_htypeArgs_h0, (_12_dt__update__tmp_h0).dtor_kind, (_12_dt__update__tmp_h0).dtor_attributes, (_12_dt__update__tmp_h0).dtor_properMethods, (_12_dt__update__tmp_h0).dtor_extendedTypes)))))); + goto after_match0; } } { - _1438_instanceType = enclosingType; + _10_instanceType = enclosingType; } - after_match14: ; + after_match0: ; if (forTrait) { - RAST._IFormal _1442_selfFormal; + RAST._IFormal _14_selfFormal; if ((m).dtor_wasFunction) { - _1442_selfFormal = RAST.Formal.selfBorrowed; + _14_selfFormal = RAST.Formal.selfBorrowed; } else { - _1442_selfFormal = RAST.Formal.selfBorrowedMut; + _14_selfFormal = RAST.Formal.selfBorrowedMut; } - _1428_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_1442_selfFormal), _1428_params); + _0_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_14_selfFormal), _0_params); } else { - RAST._IType _1443_tpe; - RAST._IType _out104; - _out104 = (this).GenType(_1438_instanceType, DCOMP.GenTypeContext.@default()); - _1443_tpe = _out104; - if ((_1437_selfId).Equals(Dafny.Sequence.UnicodeFromString("this"))) { - _1443_tpe = RAST.Type.create_Borrowed(_1443_tpe); - } else if ((_1437_selfId).Equals(Dafny.Sequence.UnicodeFromString("self"))) { - if ((_1443_tpe).IsObjectOrPointer()) { + RAST._IType _15_tpe; + RAST._IType _out1; + _out1 = (this).GenType(_10_instanceType, DCOMP.GenTypeContext.@default()); + _15_tpe = _out1; + if ((_9_selfId).Equals(Dafny.Sequence.UnicodeFromString("this"))) { + _15_tpe = RAST.Type.create_Borrowed(_15_tpe); + } else if ((_9_selfId).Equals(Dafny.Sequence.UnicodeFromString("self"))) { + if ((_15_tpe).IsObjectOrPointer()) { if ((m).dtor_wasFunction) { - _1443_tpe = RAST.__default.SelfBorrowed; + _15_tpe = RAST.__default.SelfBorrowed; } else { - _1443_tpe = RAST.__default.SelfBorrowedMut; + _15_tpe = RAST.__default.SelfBorrowedMut; } } else { if ((((enclosingType).is_UserDefined) && ((((enclosingType).dtor_resolved).dtor_kind).is_Datatype)) && ((this).IsRcWrapped(((enclosingType).dtor_resolved).dtor_attributes))) { - _1443_tpe = RAST.Type.create_Borrowed(RAST.__default.Rc(RAST.Type.create_SelfOwned())); + _15_tpe = RAST.Type.create_Borrowed(RAST.__default.Rc(RAST.Type.create_SelfOwned())); } else { - _1443_tpe = RAST.Type.create_Borrowed(RAST.Type.create_SelfOwned()); + _15_tpe = RAST.Type.create_Borrowed(RAST.Type.create_SelfOwned()); } } } - _1428_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.Formal.create(_1437_selfId, _1443_tpe)), _1428_params); + _0_params = Dafny.Sequence.Concat(Dafny.Sequence.FromElements(RAST.Formal.create(_9_selfId, _15_tpe)), _0_params); } - _1436_selfIdent = DCOMP.SelfInfo.create_ThisTyped(_1437_selfId, _1438_instanceType); + _8_selfIdent = DCOMP.SelfInfo.create_ThisTyped(_9_selfId, _10_instanceType); } - Dafny.ISequence _1444_retTypeArgs; - _1444_retTypeArgs = Dafny.Sequence.FromElements(); - BigInteger _1445_typeI; - _1445_typeI = BigInteger.Zero; - while ((_1445_typeI) < (new BigInteger(((m).dtor_outTypes).Count))) { - RAST._IType _1446_typeExpr; - RAST._IType _out105; - _out105 = (this).GenType(((m).dtor_outTypes).Select(_1445_typeI), DCOMP.GenTypeContext.@default()); - _1446_typeExpr = _out105; - _1444_retTypeArgs = Dafny.Sequence.Concat(_1444_retTypeArgs, Dafny.Sequence.FromElements(_1446_typeExpr)); - _1445_typeI = (_1445_typeI) + (BigInteger.One); + Dafny.ISequence _16_retTypeArgs; + _16_retTypeArgs = Dafny.Sequence.FromElements(); + BigInteger _17_typeI; + _17_typeI = BigInteger.Zero; + while ((_17_typeI) < (new BigInteger(((m).dtor_outTypes).Count))) { + RAST._IType _18_typeExpr; + RAST._IType _out2; + _out2 = (this).GenType(((m).dtor_outTypes).Select(_17_typeI), DCOMP.GenTypeContext.@default()); + _18_typeExpr = _out2; + _16_retTypeArgs = Dafny.Sequence.Concat(_16_retTypeArgs, Dafny.Sequence.FromElements(_18_typeExpr)); + _17_typeI = (_17_typeI) + (BigInteger.One); } - RAST._IVisibility _1447_visibility; + RAST._IVisibility _19_visibility; if (forTrait) { - _1447_visibility = RAST.Visibility.create_PRIV(); + _19_visibility = RAST.Visibility.create_PRIV(); } else { - _1447_visibility = RAST.Visibility.create_PUB(); - } - Dafny.ISequence _1448_typeParamsFiltered; - _1448_typeParamsFiltered = Dafny.Sequence.FromElements(); - BigInteger _hi28 = new BigInteger(((m).dtor_typeParams).Count); - for (BigInteger _1449_typeParamI = BigInteger.Zero; _1449_typeParamI < _hi28; _1449_typeParamI++) { - DAST._ITypeArgDecl _1450_typeParam; - _1450_typeParam = ((m).dtor_typeParams).Select(_1449_typeParamI); - if (!((enclosingTypeParams).Contains(DAST.Type.create_TypeArg((_1450_typeParam).dtor_name)))) { - _1448_typeParamsFiltered = Dafny.Sequence.Concat(_1448_typeParamsFiltered, Dafny.Sequence.FromElements(_1450_typeParam)); - } - } - Dafny.ISequence _1451_typeParams; - _1451_typeParams = Dafny.Sequence.FromElements(); - if ((new BigInteger((_1448_typeParamsFiltered).Count)).Sign == 1) { - BigInteger _hi29 = new BigInteger((_1448_typeParamsFiltered).Count); - for (BigInteger _1452_i = BigInteger.Zero; _1452_i < _hi29; _1452_i++) { - DAST._IType _1453_typeArg; - RAST._ITypeParamDecl _1454_rTypeParamDecl; - DAST._IType _out106; - RAST._ITypeParamDecl _out107; - (this).GenTypeParam((_1448_typeParamsFiltered).Select(_1452_i), out _out106, out _out107); - _1453_typeArg = _out106; - _1454_rTypeParamDecl = _out107; - RAST._ITypeParamDecl _1455_dt__update__tmp_h1 = _1454_rTypeParamDecl; - Dafny.ISequence _1456_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((_1454_rTypeParamDecl).dtor_constraints, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))); - _1454_rTypeParamDecl = RAST.TypeParamDecl.create((_1455_dt__update__tmp_h1).dtor_content, _1456_dt__update_hconstraints_h0); - _1451_typeParams = Dafny.Sequence.Concat(_1451_typeParams, Dafny.Sequence.FromElements(_1454_rTypeParamDecl)); - } - } - Std.Wrappers._IOption _1457_fBody = Std.Wrappers.Option.Default(); - DCOMP._IEnvironment _1458_env = DCOMP.Environment.Default(); - RAST._IExpr _1459_preBody; - _1459_preBody = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - Dafny.ISequence> _1460_preAssignNames; - _1460_preAssignNames = Dafny.Sequence>.FromElements(); - Dafny.IMap,RAST._IType> _1461_preAssignTypes; - _1461_preAssignTypes = Dafny.Map, RAST._IType>.FromElements(); + _19_visibility = RAST.Visibility.create_PUB(); + } + Dafny.ISequence _20_typeParamsFiltered; + _20_typeParamsFiltered = Dafny.Sequence.FromElements(); + BigInteger _hi1 = new BigInteger(((m).dtor_typeParams).Count); + for (BigInteger _21_typeParamI = BigInteger.Zero; _21_typeParamI < _hi1; _21_typeParamI++) { + DAST._ITypeArgDecl _22_typeParam; + _22_typeParam = ((m).dtor_typeParams).Select(_21_typeParamI); + if (!((enclosingTypeParams).Contains(DAST.Type.create_TypeArg((_22_typeParam).dtor_name)))) { + _20_typeParamsFiltered = Dafny.Sequence.Concat(_20_typeParamsFiltered, Dafny.Sequence.FromElements(_22_typeParam)); + } + } + Dafny.ISequence _23_typeParams; + _23_typeParams = Dafny.Sequence.FromElements(); + if ((new BigInteger((_20_typeParamsFiltered).Count)).Sign == 1) { + BigInteger _hi2 = new BigInteger((_20_typeParamsFiltered).Count); + for (BigInteger _24_i = BigInteger.Zero; _24_i < _hi2; _24_i++) { + DAST._IType _25_typeArg; + RAST._ITypeParamDecl _26_rTypeParamDecl; + DAST._IType _out3; + RAST._ITypeParamDecl _out4; + (this).GenTypeParam((_20_typeParamsFiltered).Select(_24_i), out _out3, out _out4); + _25_typeArg = _out3; + _26_rTypeParamDecl = _out4; + RAST._ITypeParamDecl _27_dt__update__tmp_h1 = _26_rTypeParamDecl; + Dafny.ISequence _28_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((_26_rTypeParamDecl).dtor_constraints, Dafny.Sequence.FromElements(((RAST.__default.std__type).MSel(Dafny.Sequence.UnicodeFromString("default"))).MSel(Dafny.Sequence.UnicodeFromString("Default")))); + _26_rTypeParamDecl = RAST.TypeParamDecl.create((_27_dt__update__tmp_h1).dtor_content, _28_dt__update_hconstraints_h0); + _23_typeParams = Dafny.Sequence.Concat(_23_typeParams, Dafny.Sequence.FromElements(_26_rTypeParamDecl)); + } + } + Std.Wrappers._IOption _29_fBody = Std.Wrappers.Option.Default(); + DCOMP._IEnvironment _30_env = DCOMP.Environment.Default(); + RAST._IExpr _31_preBody; + _31_preBody = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + Dafny.ISequence> _32_preAssignNames; + _32_preAssignNames = Dafny.Sequence>.FromElements(); + Dafny.IMap,RAST._IType> _33_preAssignTypes; + _33_preAssignTypes = Dafny.Map, RAST._IType>.FromElements(); if ((m).dtor_hasBody) { - Std.Wrappers._IOption>> _1462_earlyReturn; - _1462_earlyReturn = Std.Wrappers.Option>>.create_None(); - Std.Wrappers._IOption>> _source68 = (m).dtor_outVars; + Std.Wrappers._IOption>> _34_earlyReturn; + _34_earlyReturn = Std.Wrappers.Option>>.create_None(); + Std.Wrappers._IOption>> _source1 = (m).dtor_outVars; { - if (_source68.is_Some) { - Dafny.ISequence> _1463_outVars = _source68.dtor_value; + if (_source1.is_Some) { + Dafny.ISequence> _35_outVars = _source1.dtor_value; { if ((m).dtor_outVarsAreUninitFieldsToAssign) { - _1462_earlyReturn = Std.Wrappers.Option>>.create_Some(Dafny.Sequence>.FromElements()); - BigInteger _hi30 = new BigInteger((_1463_outVars).Count); - for (BigInteger _1464_outI = BigInteger.Zero; _1464_outI < _hi30; _1464_outI++) { - Dafny.ISequence _1465_outVar; - _1465_outVar = (_1463_outVars).Select(_1464_outI); - Dafny.ISequence _1466_outName; - _1466_outName = DCOMP.__default.escapeName((_1465_outVar)); - Dafny.ISequence _1467_tracker__name; - _1467_tracker__name = DCOMP.__default.AddAssignedPrefix(_1466_outName); - _1460_preAssignNames = Dafny.Sequence>.Concat(_1460_preAssignNames, Dafny.Sequence>.FromElements(_1467_tracker__name)); - _1461_preAssignTypes = Dafny.Map, RAST._IType>.Update(_1461_preAssignTypes, _1467_tracker__name, RAST.Type.create_Bool()); - _1459_preBody = (_1459_preBody).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1467_tracker__name, Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Std.Wrappers.Option.create_Some(RAST.Expr.create_LiteralBool(false)))); + _34_earlyReturn = Std.Wrappers.Option>>.create_Some(Dafny.Sequence>.FromElements()); + BigInteger _hi3 = new BigInteger((_35_outVars).Count); + for (BigInteger _36_outI = BigInteger.Zero; _36_outI < _hi3; _36_outI++) { + Dafny.ISequence _37_outVar; + _37_outVar = (_35_outVars).Select(_36_outI); + Dafny.ISequence _38_outName; + _38_outName = DCOMP.__default.escapeName((_37_outVar)); + Dafny.ISequence _39_tracker__name; + _39_tracker__name = DCOMP.__default.AddAssignedPrefix(_38_outName); + _32_preAssignNames = Dafny.Sequence>.Concat(_32_preAssignNames, Dafny.Sequence>.FromElements(_39_tracker__name)); + _33_preAssignTypes = Dafny.Map, RAST._IType>.Update(_33_preAssignTypes, _39_tracker__name, RAST.Type.create_Bool()); + _31_preBody = (_31_preBody).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _39_tracker__name, Std.Wrappers.Option.create_Some(RAST.Type.create_Bool()), Std.Wrappers.Option.create_Some(RAST.Expr.create_LiteralBool(false)))); } } else { - Dafny.ISequence> _1468_tupleArgs; - _1468_tupleArgs = Dafny.Sequence>.FromElements(); - BigInteger _hi31 = new BigInteger((_1463_outVars).Count); - for (BigInteger _1469_outI = BigInteger.Zero; _1469_outI < _hi31; _1469_outI++) { - Dafny.ISequence _1470_outVar; - _1470_outVar = (_1463_outVars).Select(_1469_outI); - RAST._IType _1471_outType; - RAST._IType _out108; - _out108 = (this).GenType(((m).dtor_outTypes).Select(_1469_outI), DCOMP.GenTypeContext.@default()); - _1471_outType = _out108; - Dafny.ISequence _1472_outName; - _1472_outName = DCOMP.__default.escapeName((_1470_outVar)); - _1429_paramNames = Dafny.Sequence>.Concat(_1429_paramNames, Dafny.Sequence>.FromElements(_1472_outName)); - RAST._IType _1473_outMaybeType; - if ((_1471_outType).CanReadWithoutClone()) { - _1473_outMaybeType = _1471_outType; + Dafny.ISequence> _40_tupleArgs; + _40_tupleArgs = Dafny.Sequence>.FromElements(); + BigInteger _hi4 = new BigInteger((_35_outVars).Count); + for (BigInteger _41_outI = BigInteger.Zero; _41_outI < _hi4; _41_outI++) { + Dafny.ISequence _42_outVar; + _42_outVar = (_35_outVars).Select(_41_outI); + RAST._IType _43_outType; + RAST._IType _out5; + _out5 = (this).GenType(((m).dtor_outTypes).Select(_41_outI), DCOMP.GenTypeContext.@default()); + _43_outType = _out5; + Dafny.ISequence _44_outName; + _44_outName = DCOMP.__default.escapeName((_42_outVar)); + _1_paramNames = Dafny.Sequence>.Concat(_1_paramNames, Dafny.Sequence>.FromElements(_44_outName)); + RAST._IType _45_outMaybeType; + if ((_43_outType).CanReadWithoutClone()) { + _45_outMaybeType = _43_outType; } else { - _1473_outMaybeType = RAST.__default.MaybePlaceboType(_1471_outType); + _45_outMaybeType = RAST.__default.MaybePlaceboType(_43_outType); } - _1430_paramTypes = Dafny.Map, RAST._IType>.Update(_1430_paramTypes, _1472_outName, _1473_outMaybeType); - _1468_tupleArgs = Dafny.Sequence>.Concat(_1468_tupleArgs, Dafny.Sequence>.FromElements(_1472_outName)); + _2_paramTypes = Dafny.Map, RAST._IType>.Update(_2_paramTypes, _44_outName, _45_outMaybeType); + _40_tupleArgs = Dafny.Sequence>.Concat(_40_tupleArgs, Dafny.Sequence>.FromElements(_44_outName)); } - _1462_earlyReturn = Std.Wrappers.Option>>.create_Some(_1468_tupleArgs); + _34_earlyReturn = Std.Wrappers.Option>>.create_Some(_40_tupleArgs); } } - goto after_match15; + goto after_match1; } } { } - after_match15: ; - _1458_env = DCOMP.Environment.create(Dafny.Sequence>.Concat(_1460_preAssignNames, _1429_paramNames), Dafny.Map, RAST._IType>.Merge(_1461_preAssignTypes, _1430_paramTypes)); - RAST._IExpr _1474_body; - Dafny.ISet> _1475___v69; - DCOMP._IEnvironment _1476___v70; - RAST._IExpr _out109; - Dafny.ISet> _out110; - DCOMP._IEnvironment _out111; - (this).GenStmts((m).dtor_body, _1436_selfIdent, _1458_env, true, _1462_earlyReturn, out _out109, out _out110, out _out111); - _1474_body = _out109; - _1475___v69 = _out110; - _1476___v70 = _out111; - _1457_fBody = Std.Wrappers.Option.create_Some((_1459_preBody).Then(_1474_body)); + after_match1: ; + _30_env = DCOMP.Environment.create(Dafny.Sequence>.Concat(_32_preAssignNames, _1_paramNames), Dafny.Map, RAST._IType>.Merge(_33_preAssignTypes, _2_paramTypes)); + RAST._IExpr _46_body; + Dafny.ISet> _47___v69; + DCOMP._IEnvironment _48___v70; + RAST._IExpr _out6; + Dafny.ISet> _out7; + DCOMP._IEnvironment _out8; + (this).GenStmts((m).dtor_body, _8_selfIdent, _30_env, true, _34_earlyReturn, out _out6, out _out7, out _out8); + _46_body = _out6; + _47___v69 = _out7; + _48___v70 = _out8; + _29_fBody = Std.Wrappers.Option.create_Some((_31_preBody).Then(_46_body)); } else { - _1458_env = DCOMP.Environment.create(_1429_paramNames, _1430_paramTypes); - _1457_fBody = Std.Wrappers.Option.create_None(); + _30_env = DCOMP.Environment.create(_1_paramNames, _2_paramTypes); + _29_fBody = Std.Wrappers.Option.create_None(); } - s = RAST.ImplMember.create_FnDecl(_1447_visibility, RAST.Fn.create(_1435_fnName, _1451_typeParams, _1428_params, Std.Wrappers.Option.create_Some((((new BigInteger((_1444_retTypeArgs).Count)) == (BigInteger.One)) ? ((_1444_retTypeArgs).Select(BigInteger.Zero)) : (RAST.Type.create_TupleType(_1444_retTypeArgs)))), Dafny.Sequence.UnicodeFromString(""), _1457_fBody)); + s = RAST.ImplMember.create_FnDecl(_19_visibility, RAST.Fn.create(_7_fnName, _23_typeParams, _0_params, Std.Wrappers.Option.create_Some((((new BigInteger((_16_retTypeArgs).Count)) == (BigInteger.One)) ? ((_16_retTypeArgs).Select(BigInteger.Zero)) : (RAST.Type.create_TupleType(_16_retTypeArgs)))), Dafny.Sequence.UnicodeFromString(""), _29_fBody)); return s; } public void GenStmts(Dafny.ISequence stmts, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, bool isLast, Std.Wrappers._IOption>> earlyReturn, out RAST._IExpr generated, out Dafny.ISet> readIdents, out DCOMP._IEnvironment newEnv) @@ -2371,80 +2374,80 @@ public void GenStmts(Dafny.ISequence stmts, DCOMP._ISelfInfo s readIdents = Dafny.Set>.Empty; newEnv = DCOMP.Environment.Default(); generated = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - Dafny.ISet> _1477_declarations; - _1477_declarations = Dafny.Set>.FromElements(); + Dafny.ISet> _0_declarations; + _0_declarations = Dafny.Set>.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1478_i; - _1478_i = BigInteger.Zero; + BigInteger _1_i; + _1_i = BigInteger.Zero; newEnv = env; - Dafny.ISequence _1479_stmts; - _1479_stmts = stmts; - while ((_1478_i) < (new BigInteger((_1479_stmts).Count))) { - DAST._IStatement _1480_stmt; - _1480_stmt = (_1479_stmts).Select(_1478_i); - DAST._IStatement _source69 = _1480_stmt; + Dafny.ISequence _2_stmts; + _2_stmts = stmts; + while ((_1_i) < (new BigInteger((_2_stmts).Count))) { + DAST._IStatement _3_stmt; + _3_stmt = (_2_stmts).Select(_1_i); + DAST._IStatement _source0 = _3_stmt; { - if (_source69.is_DeclareVar) { - Dafny.ISequence _1481_name = _source69.dtor_name; - DAST._IType _1482_optType = _source69.dtor_typ; - Std.Wrappers._IOption maybeValue0 = _source69.dtor_maybeValue; + if (_source0.is_DeclareVar) { + Dafny.ISequence _4_name = _source0.dtor_name; + DAST._IType _5_optType = _source0.dtor_typ; + Std.Wrappers._IOption maybeValue0 = _source0.dtor_maybeValue; if (maybeValue0.is_None) { - if (((_1478_i) + (BigInteger.One)) < (new BigInteger((_1479_stmts).Count))) { - DAST._IStatement _source70 = (_1479_stmts).Select((_1478_i) + (BigInteger.One)); + if (((_1_i) + (BigInteger.One)) < (new BigInteger((_2_stmts).Count))) { + DAST._IStatement _source1 = (_2_stmts).Select((_1_i) + (BigInteger.One)); { - if (_source70.is_Assign) { - DAST._IAssignLhs lhs0 = _source70.dtor_lhs; + if (_source1.is_Assign) { + DAST._IAssignLhs lhs0 = _source1.dtor_lhs; if (lhs0.is_Ident) { Dafny.ISequence ident0 = lhs0.dtor_ident; - Dafny.ISequence _1483_name2 = ident0; - DAST._IExpression _1484_rhs = _source70.dtor_value; - if (object.Equals(_1483_name2, _1481_name)) { - _1479_stmts = Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1479_stmts).Subsequence(BigInteger.Zero, _1478_i), Dafny.Sequence.FromElements(DAST.Statement.create_DeclareVar(_1481_name, _1482_optType, Std.Wrappers.Option.create_Some(_1484_rhs)))), (_1479_stmts).Drop((_1478_i) + (new BigInteger(2)))); - _1480_stmt = (_1479_stmts).Select(_1478_i); + Dafny.ISequence _6_name2 = ident0; + DAST._IExpression _7_rhs = _source1.dtor_value; + if (object.Equals(_6_name2, _4_name)) { + _2_stmts = Dafny.Sequence.Concat(Dafny.Sequence.Concat((_2_stmts).Subsequence(BigInteger.Zero, _1_i), Dafny.Sequence.FromElements(DAST.Statement.create_DeclareVar(_4_name, _5_optType, Std.Wrappers.Option.create_Some(_7_rhs)))), (_2_stmts).Drop((_1_i) + (new BigInteger(2)))); + _3_stmt = (_2_stmts).Select(_1_i); } - goto after_match17; + goto after_match1; } } } { } - after_match17: ; + after_match1: ; } - goto after_match16; + goto after_match0; } } } { } - after_match16: ; - RAST._IExpr _1485_stmtExpr; - Dafny.ISet> _1486_recIdents; - DCOMP._IEnvironment _1487_newEnv2; - RAST._IExpr _out112; - Dafny.ISet> _out113; - DCOMP._IEnvironment _out114; - (this).GenStmt(_1480_stmt, selfIdent, newEnv, (isLast) && ((_1478_i) == ((new BigInteger((_1479_stmts).Count)) - (BigInteger.One))), earlyReturn, out _out112, out _out113, out _out114); - _1485_stmtExpr = _out112; - _1486_recIdents = _out113; - _1487_newEnv2 = _out114; - newEnv = _1487_newEnv2; - DAST._IStatement _source71 = _1480_stmt; + after_match0: ; + RAST._IExpr _8_stmtExpr; + Dafny.ISet> _9_recIdents; + DCOMP._IEnvironment _10_newEnv2; + RAST._IExpr _out0; + Dafny.ISet> _out1; + DCOMP._IEnvironment _out2; + (this).GenStmt(_3_stmt, selfIdent, newEnv, (isLast) && ((_1_i) == ((new BigInteger((_2_stmts).Count)) - (BigInteger.One))), earlyReturn, out _out0, out _out1, out _out2); + _8_stmtExpr = _out0; + _9_recIdents = _out1; + _10_newEnv2 = _out2; + newEnv = _10_newEnv2; + DAST._IStatement _source2 = _3_stmt; { - if (_source71.is_DeclareVar) { - Dafny.ISequence _1488_name = _source71.dtor_name; + if (_source2.is_DeclareVar) { + Dafny.ISequence _11_name = _source2.dtor_name; { - _1477_declarations = Dafny.Set>.Union(_1477_declarations, Dafny.Set>.FromElements(DCOMP.__default.escapeName(_1488_name))); + _0_declarations = Dafny.Set>.Union(_0_declarations, Dafny.Set>.FromElements(DCOMP.__default.escapeName(_11_name))); } - goto after_match18; + goto after_match2; } } { } - after_match18: ; - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_1486_recIdents, _1477_declarations)); - generated = (generated).Then(_1485_stmtExpr); - _1478_i = (_1478_i) + (BigInteger.One); - if ((_1485_stmtExpr).is_Return) { + after_match2: ; + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_9_recIdents, _0_declarations)); + generated = (generated).Then(_8_stmtExpr); + _1_i = (_1_i) + (BigInteger.One); + if ((_8_stmtExpr).is_Return) { goto after_0; } continue_0: ; @@ -2458,487 +2461,487 @@ public void GenAssignLhs(DAST._IAssignLhs lhs, RAST._IExpr rhs, DCOMP._ISelfInfo readIdents = Dafny.Set>.Empty; newEnv = DCOMP.Environment.Default(); newEnv = env; - DAST._IAssignLhs _source72 = lhs; + DAST._IAssignLhs _source0 = lhs; { - if (_source72.is_Ident) { - Dafny.ISequence ident1 = _source72.dtor_ident; - Dafny.ISequence _1489_id = ident1; + if (_source0.is_Ident) { + Dafny.ISequence ident0 = _source0.dtor_ident; + Dafny.ISequence _0_id = ident0; { - Dafny.ISequence _1490_idRust; - _1490_idRust = DCOMP.__default.escapeName(_1489_id); - if (((env).IsBorrowed(_1490_idRust)) || ((env).IsBorrowedMut(_1490_idRust))) { - generated = RAST.__default.AssignVar(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*"), _1490_idRust), rhs); + Dafny.ISequence _1_idRust; + _1_idRust = DCOMP.__default.escapeName(_0_id); + if (((env).IsBorrowed(_1_idRust)) || ((env).IsBorrowedMut(_1_idRust))) { + generated = RAST.__default.AssignVar(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*"), _1_idRust), rhs); } else { - generated = RAST.__default.AssignVar(_1490_idRust, rhs); + generated = RAST.__default.AssignVar(_1_idRust, rhs); } - readIdents = Dafny.Set>.FromElements(_1490_idRust); + readIdents = Dafny.Set>.FromElements(_1_idRust); needsIIFE = false; } - goto after_match19; + goto after_match0; } } { - if (_source72.is_Select) { - DAST._IExpression _1491_on = _source72.dtor_expr; - Dafny.ISequence _1492_field = _source72.dtor_field; + if (_source0.is_Select) { + DAST._IExpression _2_on = _source0.dtor_expr; + Dafny.ISequence _3_field = _source0.dtor_field; { - Dafny.ISequence _1493_fieldName; - _1493_fieldName = DCOMP.__default.escapeName(_1492_field); - RAST._IExpr _1494_onExpr; - DCOMP._IOwnership _1495_onOwned; - Dafny.ISet> _1496_recIdents; - RAST._IExpr _out115; - DCOMP._IOwnership _out116; - Dafny.ISet> _out117; - (this).GenExpr(_1491_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out115, out _out116, out _out117); - _1494_onExpr = _out115; - _1495_onOwned = _out116; - _1496_recIdents = _out117; - RAST._IExpr _source73 = _1494_onExpr; + Dafny.ISequence _4_fieldName; + _4_fieldName = DCOMP.__default.escapeName(_3_field); + RAST._IExpr _5_onExpr; + DCOMP._IOwnership _6_onOwned; + Dafny.ISet> _7_recIdents; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExpr(_2_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out0, out _out1, out _out2); + _5_onExpr = _out0; + _6_onOwned = _out1; + _7_recIdents = _out2; + RAST._IExpr _source1 = _5_onExpr; { - bool disjunctiveMatch10 = false; - if (_source73.is_Call) { - RAST._IExpr obj2 = _source73.dtor_obj; - if (obj2.is_Select) { - RAST._IExpr obj3 = obj2.dtor_obj; - if (obj3.is_Identifier) { - Dafny.ISequence name11 = obj3.dtor_name; - if (object.Equals(name11, Dafny.Sequence.UnicodeFromString("this"))) { - Dafny.ISequence name12 = obj2.dtor_name; - if (object.Equals(name12, Dafny.Sequence.UnicodeFromString("clone"))) { - disjunctiveMatch10 = true; + bool disjunctiveMatch0 = false; + if (_source1.is_Call) { + RAST._IExpr obj0 = _source1.dtor_obj; + if (obj0.is_Select) { + RAST._IExpr obj1 = obj0.dtor_obj; + if (obj1.is_Identifier) { + Dafny.ISequence name0 = obj1.dtor_name; + if (object.Equals(name0, Dafny.Sequence.UnicodeFromString("this"))) { + Dafny.ISequence name1 = obj0.dtor_name; + if (object.Equals(name1, Dafny.Sequence.UnicodeFromString("clone"))) { + disjunctiveMatch0 = true; } } } } } - if (_source73.is_Identifier) { - Dafny.ISequence name13 = _source73.dtor_name; - if (object.Equals(name13, Dafny.Sequence.UnicodeFromString("this"))) { - disjunctiveMatch10 = true; + if (_source1.is_Identifier) { + Dafny.ISequence name2 = _source1.dtor_name; + if (object.Equals(name2, Dafny.Sequence.UnicodeFromString("this"))) { + disjunctiveMatch0 = true; } } - if (_source73.is_UnaryOp) { - Dafny.ISequence op14 = _source73.dtor_op1; - if (object.Equals(op14, Dafny.Sequence.UnicodeFromString("&"))) { - RAST._IExpr underlying4 = _source73.dtor_underlying; - if (underlying4.is_Identifier) { - Dafny.ISequence name14 = underlying4.dtor_name; - if (object.Equals(name14, Dafny.Sequence.UnicodeFromString("this"))) { - disjunctiveMatch10 = true; + if (_source1.is_UnaryOp) { + Dafny.ISequence op10 = _source1.dtor_op1; + if (object.Equals(op10, Dafny.Sequence.UnicodeFromString("&"))) { + RAST._IExpr underlying0 = _source1.dtor_underlying; + if (underlying0.is_Identifier) { + Dafny.ISequence name3 = underlying0.dtor_name; + if (object.Equals(name3, Dafny.Sequence.UnicodeFromString("this"))) { + disjunctiveMatch0 = true; } } } } - if (disjunctiveMatch10) { - Dafny.ISequence _1497_isAssignedVar; - _1497_isAssignedVar = DCOMP.__default.AddAssignedPrefix(_1493_fieldName); - if (((newEnv).dtor_names).Contains(_1497_isAssignedVar)) { - generated = ((RAST.__default.dafny__runtime).MSel((this).update__field__uninit__macro)).Apply(Dafny.Sequence.FromElements((this).thisInConstructor, RAST.Expr.create_Identifier(_1493_fieldName), RAST.Expr.create_Identifier(_1497_isAssignedVar), rhs)); - newEnv = (newEnv).RemoveAssigned(_1497_isAssignedVar); + if (disjunctiveMatch0) { + Dafny.ISequence _8_isAssignedVar; + _8_isAssignedVar = DCOMP.__default.AddAssignedPrefix(_4_fieldName); + if (((newEnv).dtor_names).Contains(_8_isAssignedVar)) { + generated = ((RAST.__default.dafny__runtime).MSel((this).update__field__uninit__macro)).Apply(Dafny.Sequence.FromElements((this).thisInConstructor, RAST.Expr.create_Identifier(_4_fieldName), RAST.Expr.create_Identifier(_8_isAssignedVar), rhs)); + newEnv = (newEnv).RemoveAssigned(_8_isAssignedVar); } else { - (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Unespected field to assign whose isAssignedVar is not in the environment: "), _1497_isAssignedVar)); - generated = RAST.__default.AssignMember(RAST.Expr.create_RawExpr((this.error).dtor_value), _1493_fieldName, rhs); + (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Unespected field to assign whose isAssignedVar is not in the environment: "), _8_isAssignedVar)); + generated = RAST.__default.AssignMember(RAST.Expr.create_RawExpr((this.error).dtor_value), _4_fieldName, rhs); } - goto after_match20; + goto after_match1; } } { - if (!object.Equals(_1494_onExpr, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("self")))) { - _1494_onExpr = ((this).modify__macro).Apply1(_1494_onExpr); + if (!object.Equals(_5_onExpr, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("self")))) { + _5_onExpr = ((this).modify__macro).Apply1(_5_onExpr); } - generated = RAST.__default.AssignMember(_1494_onExpr, _1493_fieldName, rhs); + generated = RAST.__default.AssignMember(_5_onExpr, _4_fieldName, rhs); } - after_match20: ; - readIdents = _1496_recIdents; + after_match1: ; + readIdents = _7_recIdents; needsIIFE = false; } - goto after_match19; + goto after_match0; } } { - DAST._IExpression _1498_on = _source72.dtor_expr; - Dafny.ISequence _1499_indices = _source72.dtor_indices; + DAST._IExpression _9_on = _source0.dtor_expr; + Dafny.ISequence _10_indices = _source0.dtor_indices; { - RAST._IExpr _1500_onExpr; - DCOMP._IOwnership _1501_onOwned; - Dafny.ISet> _1502_recIdents; - RAST._IExpr _out118; - DCOMP._IOwnership _out119; - Dafny.ISet> _out120; - (this).GenExpr(_1498_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out118, out _out119, out _out120); - _1500_onExpr = _out118; - _1501_onOwned = _out119; - _1502_recIdents = _out120; - readIdents = _1502_recIdents; - _1500_onExpr = ((this).modify__macro).Apply1(_1500_onExpr); - RAST._IExpr _1503_r; - _1503_r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - Dafny.ISequence _1504_indicesExpr; - _1504_indicesExpr = Dafny.Sequence.FromElements(); - BigInteger _hi32 = new BigInteger((_1499_indices).Count); - for (BigInteger _1505_i = BigInteger.Zero; _1505_i < _hi32; _1505_i++) { - RAST._IExpr _1506_idx; - DCOMP._IOwnership _1507___v79; - Dafny.ISet> _1508_recIdentsIdx; - RAST._IExpr _out121; - DCOMP._IOwnership _out122; - Dafny.ISet> _out123; - (this).GenExpr((_1499_indices).Select(_1505_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out121, out _out122, out _out123); - _1506_idx = _out121; - _1507___v79 = _out122; - _1508_recIdentsIdx = _out123; - Dafny.ISequence _1509_varName; - _1509_varName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("__idx"), Std.Strings.__default.OfNat(_1505_i)); - _1504_indicesExpr = Dafny.Sequence.Concat(_1504_indicesExpr, Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(_1509_varName))); - _1503_r = (_1503_r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _1509_varName, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.__default.IntoUsize(_1506_idx)))); - readIdents = Dafny.Set>.Union(readIdents, _1508_recIdentsIdx); - } - if ((new BigInteger((_1499_indices).Count)) > (BigInteger.One)) { - _1500_onExpr = (_1500_onExpr).Sel(Dafny.Sequence.UnicodeFromString("data")); - } - RAST._IExpr _1510_rhs; - _1510_rhs = rhs; - var _pat_let_tv3 = env; - if (((_1500_onExpr).IsLhsIdentifier()) && (Dafny.Helpers.Let, bool>((_1500_onExpr).LhsIdentifierName(), _pat_let32_0 => Dafny.Helpers.Let, bool>(_pat_let32_0, _1511_name => (true) && (Dafny.Helpers.Let, bool>((_pat_let_tv3).GetType(_1511_name), _pat_let33_0 => Dafny.Helpers.Let, bool>(_pat_let33_0, _1512_tpe => ((_1512_tpe).is_Some) && (((_1512_tpe).dtor_value).IsUninitArray())))))))) { - _1510_rhs = RAST.__default.MaybeUninitNew(_1510_rhs); - } - generated = (_1503_r).Then(RAST.Expr.create_Assign(Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_Index(_1500_onExpr, _1504_indicesExpr)), _1510_rhs)); + RAST._IExpr _11_onExpr; + DCOMP._IOwnership _12_onOwned; + Dafny.ISet> _13_recIdents; + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + Dafny.ISet> _out5; + (this).GenExpr(_9_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out3, out _out4, out _out5); + _11_onExpr = _out3; + _12_onOwned = _out4; + _13_recIdents = _out5; + readIdents = _13_recIdents; + _11_onExpr = ((this).modify__macro).Apply1(_11_onExpr); + RAST._IExpr _14_r; + _14_r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + Dafny.ISequence _15_indicesExpr; + _15_indicesExpr = Dafny.Sequence.FromElements(); + BigInteger _hi0 = new BigInteger((_10_indices).Count); + for (BigInteger _16_i = BigInteger.Zero; _16_i < _hi0; _16_i++) { + RAST._IExpr _17_idx; + DCOMP._IOwnership _18___v79; + Dafny.ISet> _19_recIdentsIdx; + RAST._IExpr _out6; + DCOMP._IOwnership _out7; + Dafny.ISet> _out8; + (this).GenExpr((_10_indices).Select(_16_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out6, out _out7, out _out8); + _17_idx = _out6; + _18___v79 = _out7; + _19_recIdentsIdx = _out8; + Dafny.ISequence _20_varName; + _20_varName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("__idx"), Std.Strings.__default.OfNat(_16_i)); + _15_indicesExpr = Dafny.Sequence.Concat(_15_indicesExpr, Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(_20_varName))); + _14_r = (_14_r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _20_varName, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.__default.IntoUsize(_17_idx)))); + readIdents = Dafny.Set>.Union(readIdents, _19_recIdentsIdx); + } + if ((new BigInteger((_10_indices).Count)) > (BigInteger.One)) { + _11_onExpr = (_11_onExpr).Sel(Dafny.Sequence.UnicodeFromString("data")); + } + RAST._IExpr _21_rhs; + _21_rhs = rhs; + var _pat_let_tv0 = env; + if (((_11_onExpr).IsLhsIdentifier()) && (Dafny.Helpers.Let, bool>((_11_onExpr).LhsIdentifierName(), _pat_let32_0 => Dafny.Helpers.Let, bool>(_pat_let32_0, _22_name => (true) && (Dafny.Helpers.Let, bool>((_pat_let_tv0).GetType(_22_name), _pat_let33_0 => Dafny.Helpers.Let, bool>(_pat_let33_0, _23_tpe => ((_23_tpe).is_Some) && (((_23_tpe).dtor_value).IsUninitArray())))))))) { + _21_rhs = RAST.__default.MaybeUninitNew(_21_rhs); + } + generated = (_14_r).Then(RAST.Expr.create_Assign(Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_Index(_11_onExpr, _15_indicesExpr)), _21_rhs)); needsIIFE = true; } } - after_match19: ; + after_match0: ; } public void GenStmt(DAST._IStatement stmt, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, bool isLast, Std.Wrappers._IOption>> earlyReturn, out RAST._IExpr generated, out Dafny.ISet> readIdents, out DCOMP._IEnvironment newEnv) { generated = RAST.Expr.Default(); readIdents = Dafny.Set>.Empty; newEnv = DCOMP.Environment.Default(); - DAST._IStatement _source74 = stmt; + DAST._IStatement _source0 = stmt; { - if (_source74.is_ConstructorNewSeparator) { - Dafny.ISequence _1513_fields = _source74.dtor_fields; + if (_source0.is_ConstructorNewSeparator) { + Dafny.ISequence _0_fields = _source0.dtor_fields; { generated = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); readIdents = Dafny.Set>.FromElements(); newEnv = env; - BigInteger _hi33 = new BigInteger((_1513_fields).Count); - for (BigInteger _1514_i = BigInteger.Zero; _1514_i < _hi33; _1514_i++) { - DAST._IFormal _1515_field; - _1515_field = (_1513_fields).Select(_1514_i); - Dafny.ISequence _1516_fieldName; - _1516_fieldName = DCOMP.__default.escapeName((_1515_field).dtor_name); - RAST._IType _1517_fieldTyp; - RAST._IType _out124; - _out124 = (this).GenType((_1515_field).dtor_typ, DCOMP.GenTypeContext.@default()); - _1517_fieldTyp = _out124; - Dafny.ISequence _1518_isAssignedVar; - _1518_isAssignedVar = DCOMP.__default.AddAssignedPrefix(_1516_fieldName); - if (((newEnv).dtor_names).Contains(_1518_isAssignedVar)) { - RAST._IExpr _1519_rhs; - DCOMP._IOwnership _1520___v80; - Dafny.ISet> _1521___v81; - RAST._IExpr _out125; - DCOMP._IOwnership _out126; - Dafny.ISet> _out127; - (this).GenExpr(DAST.Expression.create_InitializationValue((_1515_field).dtor_typ), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out125, out _out126, out _out127); - _1519_rhs = _out125; - _1520___v80 = _out126; - _1521___v81 = _out127; - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_1518_isAssignedVar)); - generated = (generated).Then(((RAST.__default.dafny__runtime).MSel((this).update__field__if__uninit__macro)).Apply(Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("this")), RAST.Expr.create_Identifier(_1516_fieldName), RAST.Expr.create_Identifier(_1518_isAssignedVar), _1519_rhs))); - newEnv = (newEnv).RemoveAssigned(_1518_isAssignedVar); + BigInteger _hi0 = new BigInteger((_0_fields).Count); + for (BigInteger _1_i = BigInteger.Zero; _1_i < _hi0; _1_i++) { + DAST._IFormal _2_field; + _2_field = (_0_fields).Select(_1_i); + Dafny.ISequence _3_fieldName; + _3_fieldName = DCOMP.__default.escapeName((_2_field).dtor_name); + RAST._IType _4_fieldTyp; + RAST._IType _out0; + _out0 = (this).GenType((_2_field).dtor_typ, DCOMP.GenTypeContext.@default()); + _4_fieldTyp = _out0; + Dafny.ISequence _5_isAssignedVar; + _5_isAssignedVar = DCOMP.__default.AddAssignedPrefix(_3_fieldName); + if (((newEnv).dtor_names).Contains(_5_isAssignedVar)) { + RAST._IExpr _6_rhs; + DCOMP._IOwnership _7___v80; + Dafny.ISet> _8___v81; + RAST._IExpr _out1; + DCOMP._IOwnership _out2; + Dafny.ISet> _out3; + (this).GenExpr(DAST.Expression.create_InitializationValue((_2_field).dtor_typ), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out1, out _out2, out _out3); + _6_rhs = _out1; + _7___v80 = _out2; + _8___v81 = _out3; + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_5_isAssignedVar)); + generated = (generated).Then(((RAST.__default.dafny__runtime).MSel((this).update__field__if__uninit__macro)).Apply(Dafny.Sequence.FromElements(RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("this")), RAST.Expr.create_Identifier(_3_fieldName), RAST.Expr.create_Identifier(_5_isAssignedVar), _6_rhs))); + newEnv = (newEnv).RemoveAssigned(_5_isAssignedVar); } } } - goto after_match21; + goto after_match0; } } { - if (_source74.is_DeclareVar) { - Dafny.ISequence _1522_name = _source74.dtor_name; - DAST._IType _1523_typ = _source74.dtor_typ; - Std.Wrappers._IOption maybeValue1 = _source74.dtor_maybeValue; - if (maybeValue1.is_Some) { - DAST._IExpression _1524_expression = maybeValue1.dtor_value; + if (_source0.is_DeclareVar) { + Dafny.ISequence _9_name = _source0.dtor_name; + DAST._IType _10_typ = _source0.dtor_typ; + Std.Wrappers._IOption maybeValue0 = _source0.dtor_maybeValue; + if (maybeValue0.is_Some) { + DAST._IExpression _11_expression = maybeValue0.dtor_value; { - RAST._IType _1525_tpe; - RAST._IType _out128; - _out128 = (this).GenType(_1523_typ, DCOMP.GenTypeContext.InBinding()); - _1525_tpe = _out128; - Dafny.ISequence _1526_varName; - _1526_varName = DCOMP.__default.escapeName(_1522_name); - bool _1527_hasCopySemantics; - _1527_hasCopySemantics = (_1525_tpe).CanReadWithoutClone(); - if (((_1524_expression).is_InitializationValue) && (!(_1527_hasCopySemantics))) { - generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1526_varName, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MaybePlacebo"))).ApplyType1(_1525_tpe)).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()))); + RAST._IType _12_tpe; + RAST._IType _out4; + _out4 = (this).GenType(_10_typ, DCOMP.GenTypeContext.InBinding()); + _12_tpe = _out4; + Dafny.ISequence _13_varName; + _13_varName = DCOMP.__default.escapeName(_9_name); + bool _14_hasCopySemantics; + _14_hasCopySemantics = (_12_tpe).CanReadWithoutClone(); + if (((_11_expression).is_InitializationValue) && (!(_14_hasCopySemantics))) { + generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _13_varName, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MaybePlacebo"))).ApplyType1(_12_tpe)).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()))); readIdents = Dafny.Set>.FromElements(); - newEnv = (env).AddAssigned(_1526_varName, RAST.__default.MaybePlaceboType(_1525_tpe)); + newEnv = (env).AddAssigned(_13_varName, RAST.__default.MaybePlaceboType(_12_tpe)); } else { - RAST._IExpr _1528_expr = RAST.Expr.Default(); - Dafny.ISet> _1529_recIdents = Dafny.Set>.Empty; - if (((_1524_expression).is_InitializationValue) && ((_1525_tpe).IsObjectOrPointer())) { - _1528_expr = (_1525_tpe).ToNullExpr(); - _1529_recIdents = Dafny.Set>.FromElements(); + RAST._IExpr _15_expr = RAST.Expr.Default(); + Dafny.ISet> _16_recIdents = Dafny.Set>.Empty; + if (((_11_expression).is_InitializationValue) && ((_12_tpe).IsObjectOrPointer())) { + _15_expr = (_12_tpe).ToNullExpr(); + _16_recIdents = Dafny.Set>.FromElements(); } else { - DCOMP._IOwnership _1530_exprOwnership = DCOMP.Ownership.Default(); - RAST._IExpr _out129; - DCOMP._IOwnership _out130; - Dafny.ISet> _out131; - (this).GenExpr(_1524_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out129, out _out130, out _out131); - _1528_expr = _out129; - _1530_exprOwnership = _out130; - _1529_recIdents = _out131; + DCOMP._IOwnership _17_exprOwnership = DCOMP.Ownership.Default(); + RAST._IExpr _out5; + DCOMP._IOwnership _out6; + Dafny.ISet> _out7; + (this).GenExpr(_11_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out5, out _out6, out _out7); + _15_expr = _out5; + _17_exprOwnership = _out6; + _16_recIdents = _out7; } - readIdents = _1529_recIdents; - if ((_1524_expression).is_NewUninitArray) { - _1525_tpe = (_1525_tpe).TypeAtInitialization(); + readIdents = _16_recIdents; + if ((_11_expression).is_NewUninitArray) { + _12_tpe = (_12_tpe).TypeAtInitialization(); } else { - _1525_tpe = _1525_tpe; + _12_tpe = _12_tpe; } - generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), DCOMP.__default.escapeName(_1522_name), Std.Wrappers.Option.create_Some(_1525_tpe), Std.Wrappers.Option.create_Some(_1528_expr)); - newEnv = (env).AddAssigned(DCOMP.__default.escapeName(_1522_name), _1525_tpe); + generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), DCOMP.__default.escapeName(_9_name), Std.Wrappers.Option.create_Some(_12_tpe), Std.Wrappers.Option.create_Some(_15_expr)); + newEnv = (env).AddAssigned(DCOMP.__default.escapeName(_9_name), _12_tpe); } } - goto after_match21; + goto after_match0; } } } { - if (_source74.is_DeclareVar) { - Dafny.ISequence _1531_name = _source74.dtor_name; - DAST._IType _1532_typ = _source74.dtor_typ; - Std.Wrappers._IOption maybeValue2 = _source74.dtor_maybeValue; - if (maybeValue2.is_None) { + if (_source0.is_DeclareVar) { + Dafny.ISequence _18_name = _source0.dtor_name; + DAST._IType _19_typ = _source0.dtor_typ; + Std.Wrappers._IOption maybeValue1 = _source0.dtor_maybeValue; + if (maybeValue1.is_None) { { - DAST._IStatement _1533_newStmt; - _1533_newStmt = DAST.Statement.create_DeclareVar(_1531_name, _1532_typ, Std.Wrappers.Option.create_Some(DAST.Expression.create_InitializationValue(_1532_typ))); - RAST._IExpr _out132; - Dafny.ISet> _out133; - DCOMP._IEnvironment _out134; - (this).GenStmt(_1533_newStmt, selfIdent, env, isLast, earlyReturn, out _out132, out _out133, out _out134); - generated = _out132; - readIdents = _out133; - newEnv = _out134; + DAST._IStatement _20_newStmt; + _20_newStmt = DAST.Statement.create_DeclareVar(_18_name, _19_typ, Std.Wrappers.Option.create_Some(DAST.Expression.create_InitializationValue(_19_typ))); + RAST._IExpr _out8; + Dafny.ISet> _out9; + DCOMP._IEnvironment _out10; + (this).GenStmt(_20_newStmt, selfIdent, env, isLast, earlyReturn, out _out8, out _out9, out _out10); + generated = _out8; + readIdents = _out9; + newEnv = _out10; } - goto after_match21; + goto after_match0; } } } { - if (_source74.is_Assign) { - DAST._IAssignLhs _1534_lhs = _source74.dtor_lhs; - DAST._IExpression _1535_expression = _source74.dtor_value; + if (_source0.is_Assign) { + DAST._IAssignLhs _21_lhs = _source0.dtor_lhs; + DAST._IExpression _22_expression = _source0.dtor_value; { - RAST._IExpr _1536_exprGen; - DCOMP._IOwnership _1537___v82; - Dafny.ISet> _1538_exprIdents; - RAST._IExpr _out135; - DCOMP._IOwnership _out136; - Dafny.ISet> _out137; - (this).GenExpr(_1535_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out135, out _out136, out _out137); - _1536_exprGen = _out135; - _1537___v82 = _out136; - _1538_exprIdents = _out137; - if ((_1534_lhs).is_Ident) { - Dafny.ISequence _1539_rustId; - _1539_rustId = DCOMP.__default.escapeName(((_1534_lhs).dtor_ident)); - Std.Wrappers._IOption _1540_tpe; - _1540_tpe = (env).GetType(_1539_rustId); - if (((_1540_tpe).is_Some) && ((((_1540_tpe).dtor_value).ExtractMaybePlacebo()).is_Some)) { - _1536_exprGen = RAST.__default.MaybePlacebo(_1536_exprGen); + RAST._IExpr _23_exprGen; + DCOMP._IOwnership _24___v82; + Dafny.ISet> _25_exprIdents; + RAST._IExpr _out11; + DCOMP._IOwnership _out12; + Dafny.ISet> _out13; + (this).GenExpr(_22_expression, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out11, out _out12, out _out13); + _23_exprGen = _out11; + _24___v82 = _out12; + _25_exprIdents = _out13; + if ((_21_lhs).is_Ident) { + Dafny.ISequence _26_rustId; + _26_rustId = DCOMP.__default.escapeName(((_21_lhs).dtor_ident)); + Std.Wrappers._IOption _27_tpe; + _27_tpe = (env).GetType(_26_rustId); + if (((_27_tpe).is_Some) && ((((_27_tpe).dtor_value).ExtractMaybePlacebo()).is_Some)) { + _23_exprGen = RAST.__default.MaybePlacebo(_23_exprGen); } } - if (((_1534_lhs).is_Index) && (((_1534_lhs).dtor_expr).is_Ident)) { - Dafny.ISequence _1541_rustId; - _1541_rustId = DCOMP.__default.escapeName(((_1534_lhs).dtor_expr).dtor_name); - Std.Wrappers._IOption _1542_tpe; - _1542_tpe = (env).GetType(_1541_rustId); - if (((_1542_tpe).is_Some) && ((((_1542_tpe).dtor_value).ExtractMaybeUninitArrayElement()).is_Some)) { - _1536_exprGen = RAST.__default.MaybeUninitNew(_1536_exprGen); + if (((_21_lhs).is_Index) && (((_21_lhs).dtor_expr).is_Ident)) { + Dafny.ISequence _28_rustId; + _28_rustId = DCOMP.__default.escapeName(((_21_lhs).dtor_expr).dtor_name); + Std.Wrappers._IOption _29_tpe; + _29_tpe = (env).GetType(_28_rustId); + if (((_29_tpe).is_Some) && ((((_29_tpe).dtor_value).ExtractMaybeUninitArrayElement()).is_Some)) { + _23_exprGen = RAST.__default.MaybeUninitNew(_23_exprGen); } } - RAST._IExpr _1543_lhsGen; - bool _1544_needsIIFE; - Dafny.ISet> _1545_recIdents; - DCOMP._IEnvironment _1546_resEnv; - RAST._IExpr _out138; - bool _out139; - Dafny.ISet> _out140; - DCOMP._IEnvironment _out141; - (this).GenAssignLhs(_1534_lhs, _1536_exprGen, selfIdent, env, out _out138, out _out139, out _out140, out _out141); - _1543_lhsGen = _out138; - _1544_needsIIFE = _out139; - _1545_recIdents = _out140; - _1546_resEnv = _out141; - generated = _1543_lhsGen; - newEnv = _1546_resEnv; - if (_1544_needsIIFE) { + RAST._IExpr _30_lhsGen; + bool _31_needsIIFE; + Dafny.ISet> _32_recIdents; + DCOMP._IEnvironment _33_resEnv; + RAST._IExpr _out14; + bool _out15; + Dafny.ISet> _out16; + DCOMP._IEnvironment _out17; + (this).GenAssignLhs(_21_lhs, _23_exprGen, selfIdent, env, out _out14, out _out15, out _out16, out _out17); + _30_lhsGen = _out14; + _31_needsIIFE = _out15; + _32_recIdents = _out16; + _33_resEnv = _out17; + generated = _30_lhsGen; + newEnv = _33_resEnv; + if (_31_needsIIFE) { generated = RAST.Expr.create_Block(generated); } - readIdents = Dafny.Set>.Union(_1545_recIdents, _1538_exprIdents); + readIdents = Dafny.Set>.Union(_32_recIdents, _25_exprIdents); } - goto after_match21; + goto after_match0; } } { - if (_source74.is_If) { - DAST._IExpression _1547_cond = _source74.dtor_cond; - Dafny.ISequence _1548_thnDafny = _source74.dtor_thn; - Dafny.ISequence _1549_elsDafny = _source74.dtor_els; + if (_source0.is_If) { + DAST._IExpression _34_cond = _source0.dtor_cond; + Dafny.ISequence _35_thnDafny = _source0.dtor_thn; + Dafny.ISequence _36_elsDafny = _source0.dtor_els; { - RAST._IExpr _1550_cond; - DCOMP._IOwnership _1551___v83; - Dafny.ISet> _1552_recIdents; - RAST._IExpr _out142; - DCOMP._IOwnership _out143; - Dafny.ISet> _out144; - (this).GenExpr(_1547_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out142, out _out143, out _out144); - _1550_cond = _out142; - _1551___v83 = _out143; - _1552_recIdents = _out144; - Dafny.ISequence _1553_condString; - _1553_condString = (_1550_cond)._ToString(DCOMP.__default.IND); - readIdents = _1552_recIdents; - RAST._IExpr _1554_thn; - Dafny.ISet> _1555_thnIdents; - DCOMP._IEnvironment _1556_thnEnv; - RAST._IExpr _out145; - Dafny.ISet> _out146; - DCOMP._IEnvironment _out147; - (this).GenStmts(_1548_thnDafny, selfIdent, env, isLast, earlyReturn, out _out145, out _out146, out _out147); - _1554_thn = _out145; - _1555_thnIdents = _out146; - _1556_thnEnv = _out147; - readIdents = Dafny.Set>.Union(readIdents, _1555_thnIdents); - RAST._IExpr _1557_els; - Dafny.ISet> _1558_elsIdents; - DCOMP._IEnvironment _1559_elsEnv; - RAST._IExpr _out148; - Dafny.ISet> _out149; - DCOMP._IEnvironment _out150; - (this).GenStmts(_1549_elsDafny, selfIdent, env, isLast, earlyReturn, out _out148, out _out149, out _out150); - _1557_els = _out148; - _1558_elsIdents = _out149; - _1559_elsEnv = _out150; - readIdents = Dafny.Set>.Union(readIdents, _1558_elsIdents); + RAST._IExpr _37_cond; + DCOMP._IOwnership _38___v83; + Dafny.ISet> _39_recIdents; + RAST._IExpr _out18; + DCOMP._IOwnership _out19; + Dafny.ISet> _out20; + (this).GenExpr(_34_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out18, out _out19, out _out20); + _37_cond = _out18; + _38___v83 = _out19; + _39_recIdents = _out20; + Dafny.ISequence _40_condString; + _40_condString = (_37_cond)._ToString(DCOMP.__default.IND); + readIdents = _39_recIdents; + RAST._IExpr _41_thn; + Dafny.ISet> _42_thnIdents; + DCOMP._IEnvironment _43_thnEnv; + RAST._IExpr _out21; + Dafny.ISet> _out22; + DCOMP._IEnvironment _out23; + (this).GenStmts(_35_thnDafny, selfIdent, env, isLast, earlyReturn, out _out21, out _out22, out _out23); + _41_thn = _out21; + _42_thnIdents = _out22; + _43_thnEnv = _out23; + readIdents = Dafny.Set>.Union(readIdents, _42_thnIdents); + RAST._IExpr _44_els; + Dafny.ISet> _45_elsIdents; + DCOMP._IEnvironment _46_elsEnv; + RAST._IExpr _out24; + Dafny.ISet> _out25; + DCOMP._IEnvironment _out26; + (this).GenStmts(_36_elsDafny, selfIdent, env, isLast, earlyReturn, out _out24, out _out25, out _out26); + _44_els = _out24; + _45_elsIdents = _out25; + _46_elsEnv = _out26; + readIdents = Dafny.Set>.Union(readIdents, _45_elsIdents); newEnv = env; - generated = RAST.Expr.create_IfExpr(_1550_cond, _1554_thn, _1557_els); + generated = RAST.Expr.create_IfExpr(_37_cond, _41_thn, _44_els); } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Labeled) { - Dafny.ISequence _1560_lbl = _source74.dtor_lbl; - Dafny.ISequence _1561_body = _source74.dtor_body; + if (_source0.is_Labeled) { + Dafny.ISequence _47_lbl = _source0.dtor_lbl; + Dafny.ISequence _48_body = _source0.dtor_body; { - RAST._IExpr _1562_body; - Dafny.ISet> _1563_bodyIdents; - DCOMP._IEnvironment _1564_env2; - RAST._IExpr _out151; - Dafny.ISet> _out152; - DCOMP._IEnvironment _out153; - (this).GenStmts(_1561_body, selfIdent, env, isLast, earlyReturn, out _out151, out _out152, out _out153); - _1562_body = _out151; - _1563_bodyIdents = _out152; - _1564_env2 = _out153; - readIdents = _1563_bodyIdents; - generated = RAST.Expr.create_Labelled(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1560_lbl), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), RAST.Expr.create_StmtExpr(_1562_body, RAST.Expr.create_Break(Std.Wrappers.Option>.create_None())))); + RAST._IExpr _49_body; + Dafny.ISet> _50_bodyIdents; + DCOMP._IEnvironment _51_env2; + RAST._IExpr _out27; + Dafny.ISet> _out28; + DCOMP._IEnvironment _out29; + (this).GenStmts(_48_body, selfIdent, env, isLast, earlyReturn, out _out27, out _out28, out _out29); + _49_body = _out27; + _50_bodyIdents = _out28; + _51_env2 = _out29; + readIdents = _50_bodyIdents; + generated = RAST.Expr.create_Labelled(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _47_lbl), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), RAST.Expr.create_StmtExpr(_49_body, RAST.Expr.create_Break(Std.Wrappers.Option>.create_None())))); newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_While) { - DAST._IExpression _1565_cond = _source74.dtor_cond; - Dafny.ISequence _1566_body = _source74.dtor_body; + if (_source0.is_While) { + DAST._IExpression _52_cond = _source0.dtor_cond; + Dafny.ISequence _53_body = _source0.dtor_body; { - RAST._IExpr _1567_cond; - DCOMP._IOwnership _1568___v84; - Dafny.ISet> _1569_recIdents; - RAST._IExpr _out154; - DCOMP._IOwnership _out155; - Dafny.ISet> _out156; - (this).GenExpr(_1565_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out154, out _out155, out _out156); - _1567_cond = _out154; - _1568___v84 = _out155; - _1569_recIdents = _out156; - readIdents = _1569_recIdents; - RAST._IExpr _1570_bodyExpr; - Dafny.ISet> _1571_bodyIdents; - DCOMP._IEnvironment _1572_bodyEnv; - RAST._IExpr _out157; - Dafny.ISet> _out158; - DCOMP._IEnvironment _out159; - (this).GenStmts(_1566_body, selfIdent, env, false, earlyReturn, out _out157, out _out158, out _out159); - _1570_bodyExpr = _out157; - _1571_bodyIdents = _out158; - _1572_bodyEnv = _out159; + RAST._IExpr _54_cond; + DCOMP._IOwnership _55___v84; + Dafny.ISet> _56_recIdents; + RAST._IExpr _out30; + DCOMP._IOwnership _out31; + Dafny.ISet> _out32; + (this).GenExpr(_52_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out30, out _out31, out _out32); + _54_cond = _out30; + _55___v84 = _out31; + _56_recIdents = _out32; + readIdents = _56_recIdents; + RAST._IExpr _57_bodyExpr; + Dafny.ISet> _58_bodyIdents; + DCOMP._IEnvironment _59_bodyEnv; + RAST._IExpr _out33; + Dafny.ISet> _out34; + DCOMP._IEnvironment _out35; + (this).GenStmts(_53_body, selfIdent, env, false, earlyReturn, out _out33, out _out34, out _out35); + _57_bodyExpr = _out33; + _58_bodyIdents = _out34; + _59_bodyEnv = _out35; newEnv = env; - readIdents = Dafny.Set>.Union(readIdents, _1571_bodyIdents); - generated = RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(_1567_cond), _1570_bodyExpr); + readIdents = Dafny.Set>.Union(readIdents, _58_bodyIdents); + generated = RAST.Expr.create_Loop(Std.Wrappers.Option.create_Some(_54_cond), _57_bodyExpr); } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Foreach) { - Dafny.ISequence _1573_boundName = _source74.dtor_boundName; - DAST._IType _1574_boundType = _source74.dtor_boundType; - DAST._IExpression _1575_overExpr = _source74.dtor_over; - Dafny.ISequence _1576_body = _source74.dtor_body; + if (_source0.is_Foreach) { + Dafny.ISequence _60_boundName = _source0.dtor_boundName; + DAST._IType _61_boundType = _source0.dtor_boundType; + DAST._IExpression _62_overExpr = _source0.dtor_over; + Dafny.ISequence _63_body = _source0.dtor_body; { - RAST._IExpr _1577_over; - DCOMP._IOwnership _1578___v85; - Dafny.ISet> _1579_recIdents; - RAST._IExpr _out160; - DCOMP._IOwnership _out161; - Dafny.ISet> _out162; - (this).GenExpr(_1575_overExpr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out160, out _out161, out _out162); - _1577_over = _out160; - _1578___v85 = _out161; - _1579_recIdents = _out162; - if (((_1575_overExpr).is_MapBoundedPool) || ((_1575_overExpr).is_SetBoundedPool)) { - _1577_over = ((_1577_over).Sel(Dafny.Sequence.UnicodeFromString("cloned"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _64_over; + DCOMP._IOwnership _65___v85; + Dafny.ISet> _66_recIdents; + RAST._IExpr _out36; + DCOMP._IOwnership _out37; + Dafny.ISet> _out38; + (this).GenExpr(_62_overExpr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out36, out _out37, out _out38); + _64_over = _out36; + _65___v85 = _out37; + _66_recIdents = _out38; + if (((_62_overExpr).is_MapBoundedPool) || ((_62_overExpr).is_SetBoundedPool)) { + _64_over = ((_64_over).Sel(Dafny.Sequence.UnicodeFromString("cloned"))).Apply(Dafny.Sequence.FromElements()); } - RAST._IType _1580_boundTpe; - RAST._IType _out163; - _out163 = (this).GenType(_1574_boundType, DCOMP.GenTypeContext.@default()); - _1580_boundTpe = _out163; - readIdents = _1579_recIdents; - Dafny.ISequence _1581_boundRName; - _1581_boundRName = DCOMP.__default.escapeName(_1573_boundName); - RAST._IExpr _1582_bodyExpr; - Dafny.ISet> _1583_bodyIdents; - DCOMP._IEnvironment _1584_bodyEnv; - RAST._IExpr _out164; - Dafny.ISet> _out165; - DCOMP._IEnvironment _out166; - (this).GenStmts(_1576_body, selfIdent, (env).AddAssigned(_1581_boundRName, _1580_boundTpe), false, earlyReturn, out _out164, out _out165, out _out166); - _1582_bodyExpr = _out164; - _1583_bodyIdents = _out165; - _1584_bodyEnv = _out166; - readIdents = Dafny.Set>.Difference(Dafny.Set>.Union(readIdents, _1583_bodyIdents), Dafny.Set>.FromElements(_1581_boundRName)); + RAST._IType _67_boundTpe; + RAST._IType _out39; + _out39 = (this).GenType(_61_boundType, DCOMP.GenTypeContext.@default()); + _67_boundTpe = _out39; + readIdents = _66_recIdents; + Dafny.ISequence _68_boundRName; + _68_boundRName = DCOMP.__default.escapeName(_60_boundName); + RAST._IExpr _69_bodyExpr; + Dafny.ISet> _70_bodyIdents; + DCOMP._IEnvironment _71_bodyEnv; + RAST._IExpr _out40; + Dafny.ISet> _out41; + DCOMP._IEnvironment _out42; + (this).GenStmts(_63_body, selfIdent, (env).AddAssigned(_68_boundRName, _67_boundTpe), false, earlyReturn, out _out40, out _out41, out _out42); + _69_bodyExpr = _out40; + _70_bodyIdents = _out41; + _71_bodyEnv = _out42; + readIdents = Dafny.Set>.Difference(Dafny.Set>.Union(readIdents, _70_bodyIdents), Dafny.Set>.FromElements(_68_boundRName)); newEnv = env; - generated = RAST.Expr.create_For(_1581_boundRName, _1577_over, _1582_bodyExpr); + generated = RAST.Expr.create_For(_68_boundRName, _64_over, _69_bodyExpr); } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Break) { - Std.Wrappers._IOption> _1585_toLabel = _source74.dtor_toLabel; + if (_source0.is_Break) { + Std.Wrappers._IOption> _72_toLabel = _source0.dtor_toLabel; { - Std.Wrappers._IOption> _source75 = _1585_toLabel; + Std.Wrappers._IOption> _source1 = _72_toLabel; { - if (_source75.is_Some) { - Dafny.ISequence _1586_lbl = _source75.dtor_value; + if (_source1.is_Some) { + Dafny.ISequence _73_lbl = _source1.dtor_value; { - generated = RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _1586_lbl))); + generated = RAST.Expr.create_Break(Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("label_"), _73_lbl))); } - goto after_match22; + goto after_match1; } } { @@ -2946,411 +2949,411 @@ public void GenStmt(DAST._IStatement stmt, DCOMP._ISelfInfo selfIdent, DCOMP._IE generated = RAST.Expr.create_Break(Std.Wrappers.Option>.create_None()); } } - after_match22: ; + after_match1: ; readIdents = Dafny.Set>.FromElements(); newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_TailRecursive) { - Dafny.ISequence _1587_body = _source74.dtor_body; + if (_source0.is_TailRecursive) { + Dafny.ISequence _74_body = _source0.dtor_body; { generated = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); if (!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) { - RAST._IExpr _1588_selfClone; - DCOMP._IOwnership _1589___v86; - Dafny.ISet> _1590___v87; - RAST._IExpr _out167; - DCOMP._IOwnership _out168; - Dafny.ISet> _out169; - (this).GenIdent((selfIdent).dtor_rSelfName, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out167, out _out168, out _out169); - _1588_selfClone = _out167; - _1589___v86 = _out168; - _1590___v87 = _out169; - generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_1588_selfClone))); + RAST._IExpr _75_selfClone; + DCOMP._IOwnership _76___v86; + Dafny.ISet> _77___v87; + RAST._IExpr _out43; + DCOMP._IOwnership _out44; + Dafny.ISet> _out45; + (this).GenIdent((selfIdent).dtor_rSelfName, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out43, out _out44, out _out45); + _75_selfClone = _out43; + _76___v86 = _out44; + _77___v87 = _out45; + generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_75_selfClone))); } newEnv = env; - RAST._IExpr _1591_loopBegin; - _1591_loopBegin = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - BigInteger _hi34 = new BigInteger(((env).dtor_names).Count); - for (BigInteger _1592_paramI = BigInteger.Zero; _1592_paramI < _hi34; _1592_paramI++) { - Dafny.ISequence _1593_param; - _1593_param = ((env).dtor_names).Select(_1592_paramI); - RAST._IExpr _1594_paramInit; - DCOMP._IOwnership _1595___v88; - Dafny.ISet> _1596___v89; - RAST._IExpr _out170; - DCOMP._IOwnership _out171; - Dafny.ISet> _out172; - (this).GenIdent(_1593_param, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out170, out _out171, out _out172); - _1594_paramInit = _out170; - _1595___v88 = _out171; - _1596___v89 = _out172; - Dafny.ISequence _1597_recVar; - _1597_recVar = Dafny.Sequence.Concat(DCOMP.COMP.TailRecursionPrefix, Std.Strings.__default.OfNat(_1592_paramI)); - generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _1597_recVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_1594_paramInit))); - if (((env).dtor_types).Contains(_1593_param)) { - RAST._IType _1598_declaredType; - _1598_declaredType = (Dafny.Map, RAST._IType>.Select((env).dtor_types,_1593_param)).ToOwned(); - newEnv = (newEnv).AddAssigned(_1593_param, _1598_declaredType); - newEnv = (newEnv).AddAssigned(_1597_recVar, _1598_declaredType); + RAST._IExpr _78_loopBegin; + _78_loopBegin = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + BigInteger _hi1 = new BigInteger(((env).dtor_names).Count); + for (BigInteger _79_paramI = BigInteger.Zero; _79_paramI < _hi1; _79_paramI++) { + Dafny.ISequence _80_param; + _80_param = ((env).dtor_names).Select(_79_paramI); + RAST._IExpr _81_paramInit; + DCOMP._IOwnership _82___v88; + Dafny.ISet> _83___v89; + RAST._IExpr _out46; + DCOMP._IOwnership _out47; + Dafny.ISet> _out48; + (this).GenIdent(_80_param, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out46, out _out47, out _out48); + _81_paramInit = _out46; + _82___v88 = _out47; + _83___v89 = _out48; + Dafny.ISequence _84_recVar; + _84_recVar = Dafny.Sequence.Concat(DCOMP.COMP.TailRecursionPrefix, Std.Strings.__default.OfNat(_79_paramI)); + generated = (generated).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _84_recVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_81_paramInit))); + if (((env).dtor_types).Contains(_80_param)) { + RAST._IType _85_declaredType; + _85_declaredType = (Dafny.Map, RAST._IType>.Select((env).dtor_types,_80_param)).ToOwned(); + newEnv = (newEnv).AddAssigned(_80_param, _85_declaredType); + newEnv = (newEnv).AddAssigned(_84_recVar, _85_declaredType); } - _1591_loopBegin = (_1591_loopBegin).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _1593_param, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(_1597_recVar)))); + _78_loopBegin = (_78_loopBegin).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _80_param, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(RAST.Expr.create_Identifier(_84_recVar)))); } - RAST._IExpr _1599_bodyExpr; - Dafny.ISet> _1600_bodyIdents; - DCOMP._IEnvironment _1601_bodyEnv; - RAST._IExpr _out173; - Dafny.ISet> _out174; - DCOMP._IEnvironment _out175; - (this).GenStmts(_1587_body, ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) ? (DCOMP.SelfInfo.create_ThisTyped(Dafny.Sequence.UnicodeFromString("_this"), (selfIdent).dtor_dafnyType)) : (DCOMP.SelfInfo.create_NoSelf())), newEnv, false, earlyReturn, out _out173, out _out174, out _out175); - _1599_bodyExpr = _out173; - _1600_bodyIdents = _out174; - _1601_bodyEnv = _out175; - readIdents = _1600_bodyIdents; - generated = (generated).Then(RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("TAIL_CALL_START"), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), (_1591_loopBegin).Then(_1599_bodyExpr)))); + RAST._IExpr _86_bodyExpr; + Dafny.ISet> _87_bodyIdents; + DCOMP._IEnvironment _88_bodyEnv; + RAST._IExpr _out49; + Dafny.ISet> _out50; + DCOMP._IEnvironment _out51; + (this).GenStmts(_74_body, ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) ? (DCOMP.SelfInfo.create_ThisTyped(Dafny.Sequence.UnicodeFromString("_this"), (selfIdent).dtor_dafnyType)) : (DCOMP.SelfInfo.create_NoSelf())), newEnv, false, earlyReturn, out _out49, out _out50, out _out51); + _86_bodyExpr = _out49; + _87_bodyIdents = _out50; + _88_bodyEnv = _out51; + readIdents = _87_bodyIdents; + generated = (generated).Then(RAST.Expr.create_Labelled(Dafny.Sequence.UnicodeFromString("TAIL_CALL_START"), RAST.Expr.create_Loop(Std.Wrappers.Option.create_None(), (_78_loopBegin).Then(_86_bodyExpr)))); } - goto after_match21; + goto after_match0; } } { - if (_source74.is_JumpTailCallStart) { + if (_source0.is_JumpTailCallStart) { { generated = RAST.Expr.create_Continue(Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("TAIL_CALL_START"))); readIdents = Dafny.Set>.FromElements(); newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Call) { - DAST._IExpression _1602_on = _source74.dtor_on; - DAST._ICallName _1603_name = _source74.dtor_callName; - Dafny.ISequence _1604_typeArgs = _source74.dtor_typeArgs; - Dafny.ISequence _1605_args = _source74.dtor_args; - Std.Wrappers._IOption>> _1606_maybeOutVars = _source74.dtor_outs; + if (_source0.is_Call) { + DAST._IExpression _89_on = _source0.dtor_on; + DAST._ICallName _90_name = _source0.dtor_callName; + Dafny.ISequence _91_typeArgs = _source0.dtor_typeArgs; + Dafny.ISequence _92_args = _source0.dtor_args; + Std.Wrappers._IOption>> _93_maybeOutVars = _source0.dtor_outs; { - Dafny.ISequence _1607_argExprs; - Dafny.ISet> _1608_recIdents; - Dafny.ISequence _1609_typeExprs; - Std.Wrappers._IOption _1610_fullNameQualifier; - Dafny.ISequence _out176; - Dafny.ISet> _out177; - Dafny.ISequence _out178; - Std.Wrappers._IOption _out179; - (this).GenArgs(selfIdent, _1603_name, _1604_typeArgs, _1605_args, env, out _out176, out _out177, out _out178, out _out179); - _1607_argExprs = _out176; - _1608_recIdents = _out177; - _1609_typeExprs = _out178; - _1610_fullNameQualifier = _out179; - readIdents = _1608_recIdents; - Std.Wrappers._IOption _source76 = _1610_fullNameQualifier; + Dafny.ISequence _94_argExprs; + Dafny.ISet> _95_recIdents; + Dafny.ISequence _96_typeExprs; + Std.Wrappers._IOption _97_fullNameQualifier; + Dafny.ISequence _out52; + Dafny.ISet> _out53; + Dafny.ISequence _out54; + Std.Wrappers._IOption _out55; + (this).GenArgs(selfIdent, _90_name, _91_typeArgs, _92_args, env, out _out52, out _out53, out _out54, out _out55); + _94_argExprs = _out52; + _95_recIdents = _out53; + _96_typeExprs = _out54; + _97_fullNameQualifier = _out55; + readIdents = _95_recIdents; + Std.Wrappers._IOption _source2 = _97_fullNameQualifier; { - if (_source76.is_Some) { - DAST._IResolvedType value9 = _source76.dtor_value; - Dafny.ISequence> _1611_path = value9.dtor_path; - Dafny.ISequence _1612_onTypeArgs = value9.dtor_typeArgs; - DAST._IResolvedTypeBase _1613_base = value9.dtor_kind; - RAST._IExpr _1614_fullPath; - RAST._IExpr _out180; - _out180 = DCOMP.COMP.GenPathExpr(_1611_path); - _1614_fullPath = _out180; - Dafny.ISequence _1615_onTypeExprs; - Dafny.ISequence _out181; - _out181 = (this).GenTypeArgs(_1612_onTypeArgs, DCOMP.GenTypeContext.@default()); - _1615_onTypeExprs = _out181; - RAST._IExpr _1616_onExpr = RAST.Expr.Default(); - DCOMP._IOwnership _1617_recOwnership = DCOMP.Ownership.Default(); - Dafny.ISet> _1618_recIdents = Dafny.Set>.Empty; - if (((_1613_base).is_Trait) || ((_1613_base).is_Class)) { - RAST._IExpr _out182; - DCOMP._IOwnership _out183; - Dafny.ISet> _out184; - (this).GenExpr(_1602_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out182, out _out183, out _out184); - _1616_onExpr = _out182; - _1617_recOwnership = _out183; - _1618_recIdents = _out184; - _1616_onExpr = ((this).modify__macro).Apply1(_1616_onExpr); - readIdents = Dafny.Set>.Union(readIdents, _1618_recIdents); + if (_source2.is_Some) { + DAST._IResolvedType value0 = _source2.dtor_value; + Dafny.ISequence> _98_path = value0.dtor_path; + Dafny.ISequence _99_onTypeArgs = value0.dtor_typeArgs; + DAST._IResolvedTypeBase _100_base = value0.dtor_kind; + RAST._IExpr _101_fullPath; + RAST._IExpr _out56; + _out56 = DCOMP.COMP.GenPathExpr(_98_path); + _101_fullPath = _out56; + Dafny.ISequence _102_onTypeExprs; + Dafny.ISequence _out57; + _out57 = (this).GenTypeArgs(_99_onTypeArgs, DCOMP.GenTypeContext.@default()); + _102_onTypeExprs = _out57; + RAST._IExpr _103_onExpr = RAST.Expr.Default(); + DCOMP._IOwnership _104_recOwnership = DCOMP.Ownership.Default(); + Dafny.ISet> _105_recIdents = Dafny.Set>.Empty; + if (((_100_base).is_Trait) || ((_100_base).is_Class)) { + RAST._IExpr _out58; + DCOMP._IOwnership _out59; + Dafny.ISet> _out60; + (this).GenExpr(_89_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out58, out _out59, out _out60); + _103_onExpr = _out58; + _104_recOwnership = _out59; + _105_recIdents = _out60; + _103_onExpr = ((this).modify__macro).Apply1(_103_onExpr); + readIdents = Dafny.Set>.Union(readIdents, _105_recIdents); } else { - RAST._IExpr _out185; - DCOMP._IOwnership _out186; - Dafny.ISet> _out187; - (this).GenExpr(_1602_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowedMut(), out _out185, out _out186, out _out187); - _1616_onExpr = _out185; - _1617_recOwnership = _out186; - _1618_recIdents = _out187; - readIdents = Dafny.Set>.Union(readIdents, _1618_recIdents); + RAST._IExpr _out61; + DCOMP._IOwnership _out62; + Dafny.ISet> _out63; + (this).GenExpr(_89_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowedMut(), out _out61, out _out62, out _out63); + _103_onExpr = _out61; + _104_recOwnership = _out62; + _105_recIdents = _out63; + readIdents = Dafny.Set>.Union(readIdents, _105_recIdents); } - generated = ((((_1614_fullPath).ApplyType(_1615_onTypeExprs)).MSel(DCOMP.__default.escapeName((_1603_name).dtor_name))).ApplyType(_1609_typeExprs)).Apply(Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_1616_onExpr), _1607_argExprs)); - goto after_match23; + generated = ((((_101_fullPath).ApplyType(_102_onTypeExprs)).MSel(DCOMP.__default.escapeName((_90_name).dtor_name))).ApplyType(_96_typeExprs)).Apply(Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_103_onExpr), _94_argExprs)); + goto after_match2; } } { - RAST._IExpr _1619_onExpr; - DCOMP._IOwnership _1620___v94; - Dafny.ISet> _1621_enclosingIdents; - RAST._IExpr _out188; - DCOMP._IOwnership _out189; - Dafny.ISet> _out190; - (this).GenExpr(_1602_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out188, out _out189, out _out190); - _1619_onExpr = _out188; - _1620___v94 = _out189; - _1621_enclosingIdents = _out190; - readIdents = Dafny.Set>.Union(readIdents, _1621_enclosingIdents); - Dafny.ISequence _1622_renderedName; - DAST._ICallName _source77 = _1603_name; + RAST._IExpr _106_onExpr; + DCOMP._IOwnership _107___v94; + Dafny.ISet> _108_enclosingIdents; + RAST._IExpr _out64; + DCOMP._IOwnership _out65; + Dafny.ISet> _out66; + (this).GenExpr(_89_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out64, out _out65, out _out66); + _106_onExpr = _out64; + _107___v94 = _out65; + _108_enclosingIdents = _out66; + readIdents = Dafny.Set>.Union(readIdents, _108_enclosingIdents); + Dafny.ISequence _109_renderedName; + DAST._ICallName _source3 = _90_name; { - if (_source77.is_CallName) { - Dafny.ISequence _1623_name = _source77.dtor_name; - _1622_renderedName = DCOMP.__default.escapeName(_1623_name); - goto after_match24; + if (_source3.is_CallName) { + Dafny.ISequence _110_name = _source3.dtor_name; + _109_renderedName = DCOMP.__default.escapeName(_110_name); + goto after_match3; } } { - bool disjunctiveMatch11 = false; - if (_source77.is_MapBuilderAdd) { - disjunctiveMatch11 = true; + bool disjunctiveMatch0 = false; + if (_source3.is_MapBuilderAdd) { + disjunctiveMatch0 = true; } - if (_source77.is_SetBuilderAdd) { - disjunctiveMatch11 = true; + if (_source3.is_SetBuilderAdd) { + disjunctiveMatch0 = true; } - if (disjunctiveMatch11) { - _1622_renderedName = Dafny.Sequence.UnicodeFromString("add"); - goto after_match24; + if (disjunctiveMatch0) { + _109_renderedName = Dafny.Sequence.UnicodeFromString("add"); + goto after_match3; } } { - _1622_renderedName = Dafny.Sequence.UnicodeFromString("build"); + _109_renderedName = Dafny.Sequence.UnicodeFromString("build"); } - after_match24: ; - DAST._IExpression _source78 = _1602_on; + after_match3: ; + DAST._IExpression _source4 = _89_on; { - if (_source78.is_Companion) { + if (_source4.is_Companion) { { - _1619_onExpr = (_1619_onExpr).MSel(_1622_renderedName); + _106_onExpr = (_106_onExpr).MSel(_109_renderedName); } - goto after_match25; + goto after_match4; } } { { - if (!object.Equals(_1619_onExpr, RAST.__default.self)) { - DAST._ICallName _source79 = _1603_name; + if (!object.Equals(_106_onExpr, RAST.__default.self)) { + DAST._ICallName _source5 = _90_name; { - if (_source79.is_CallName) { - Std.Wrappers._IOption onType0 = _source79.dtor_onType; + if (_source5.is_CallName) { + Std.Wrappers._IOption onType0 = _source5.dtor_onType; if (onType0.is_Some) { - DAST._IType _1624_tpe = onType0.dtor_value; - RAST._IType _1625_typ; - RAST._IType _out191; - _out191 = (this).GenType(_1624_tpe, DCOMP.GenTypeContext.@default()); - _1625_typ = _out191; - if (((_1625_typ).IsObjectOrPointer()) && (!object.Equals(_1619_onExpr, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("self"))))) { - _1619_onExpr = ((this).modify__macro).Apply1(_1619_onExpr); + DAST._IType _111_tpe = onType0.dtor_value; + RAST._IType _112_typ; + RAST._IType _out67; + _out67 = (this).GenType(_111_tpe, DCOMP.GenTypeContext.@default()); + _112_typ = _out67; + if (((_112_typ).IsObjectOrPointer()) && (!object.Equals(_106_onExpr, RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("self"))))) { + _106_onExpr = ((this).modify__macro).Apply1(_106_onExpr); } - goto after_match26; + goto after_match5; } } } { } - after_match26: ; + after_match5: ; } - _1619_onExpr = (_1619_onExpr).Sel(_1622_renderedName); + _106_onExpr = (_106_onExpr).Sel(_109_renderedName); } } - after_match25: ; - generated = ((_1619_onExpr).ApplyType(_1609_typeExprs)).Apply(_1607_argExprs); + after_match4: ; + generated = ((_106_onExpr).ApplyType(_96_typeExprs)).Apply(_94_argExprs); } - after_match23: ; - if (((_1606_maybeOutVars).is_Some) && ((new BigInteger(((_1606_maybeOutVars).dtor_value).Count)) == (BigInteger.One))) { - Dafny.ISequence _1626_outVar; - _1626_outVar = DCOMP.__default.escapeName((((_1606_maybeOutVars).dtor_value).Select(BigInteger.Zero))); - if (!((env).CanReadWithoutClone(_1626_outVar))) { + after_match2: ; + if (((_93_maybeOutVars).is_Some) && ((new BigInteger(((_93_maybeOutVars).dtor_value).Count)) == (BigInteger.One))) { + Dafny.ISequence _113_outVar; + _113_outVar = DCOMP.__default.escapeName((((_93_maybeOutVars).dtor_value).Select(BigInteger.Zero))); + if (!((env).CanReadWithoutClone(_113_outVar))) { generated = RAST.__default.MaybePlacebo(generated); } - generated = RAST.__default.AssignVar(_1626_outVar, generated); - } else if (((_1606_maybeOutVars).is_None) || ((new BigInteger(((_1606_maybeOutVars).dtor_value).Count)).Sign == 0)) { + generated = RAST.__default.AssignVar(_113_outVar, generated); + } else if (((_93_maybeOutVars).is_None) || ((new BigInteger(((_93_maybeOutVars).dtor_value).Count)).Sign == 0)) { } else { - Dafny.ISequence _1627_tmpVar; - _1627_tmpVar = Dafny.Sequence.UnicodeFromString("_x"); - RAST._IExpr _1628_tmpId; - _1628_tmpId = RAST.Expr.create_Identifier(_1627_tmpVar); - generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _1627_tmpVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(generated)); - Dafny.ISequence> _1629_outVars; - _1629_outVars = (_1606_maybeOutVars).dtor_value; - BigInteger _hi35 = new BigInteger((_1629_outVars).Count); - for (BigInteger _1630_outI = BigInteger.Zero; _1630_outI < _hi35; _1630_outI++) { - Dafny.ISequence _1631_outVar; - _1631_outVar = DCOMP.__default.escapeName(((_1629_outVars).Select(_1630_outI))); - RAST._IExpr _1632_rhs; - _1632_rhs = (_1628_tmpId).Sel(Std.Strings.__default.OfNat(_1630_outI)); - if (!((env).CanReadWithoutClone(_1631_outVar))) { - _1632_rhs = RAST.__default.MaybePlacebo(_1632_rhs); + Dafny.ISequence _114_tmpVar; + _114_tmpVar = Dafny.Sequence.UnicodeFromString("_x"); + RAST._IExpr _115_tmpId; + _115_tmpId = RAST.Expr.create_Identifier(_114_tmpVar); + generated = RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), _114_tmpVar, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(generated)); + Dafny.ISequence> _116_outVars; + _116_outVars = (_93_maybeOutVars).dtor_value; + BigInteger _hi2 = new BigInteger((_116_outVars).Count); + for (BigInteger _117_outI = BigInteger.Zero; _117_outI < _hi2; _117_outI++) { + Dafny.ISequence _118_outVar; + _118_outVar = DCOMP.__default.escapeName(((_116_outVars).Select(_117_outI))); + RAST._IExpr _119_rhs; + _119_rhs = (_115_tmpId).Sel(Std.Strings.__default.OfNat(_117_outI)); + if (!((env).CanReadWithoutClone(_118_outVar))) { + _119_rhs = RAST.__default.MaybePlacebo(_119_rhs); } - generated = (generated).Then(RAST.__default.AssignVar(_1631_outVar, _1632_rhs)); + generated = (generated).Then(RAST.__default.AssignVar(_118_outVar, _119_rhs)); } } newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Return) { - DAST._IExpression _1633_exprDafny = _source74.dtor_expr; + if (_source0.is_Return) { + DAST._IExpression _120_exprDafny = _source0.dtor_expr; { - RAST._IExpr _1634_expr; - DCOMP._IOwnership _1635___v105; - Dafny.ISet> _1636_recIdents; - RAST._IExpr _out192; - DCOMP._IOwnership _out193; - Dafny.ISet> _out194; - (this).GenExpr(_1633_exprDafny, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out192, out _out193, out _out194); - _1634_expr = _out192; - _1635___v105 = _out193; - _1636_recIdents = _out194; - readIdents = _1636_recIdents; + RAST._IExpr _121_expr; + DCOMP._IOwnership _122___v105; + Dafny.ISet> _123_recIdents; + RAST._IExpr _out68; + DCOMP._IOwnership _out69; + Dafny.ISet> _out70; + (this).GenExpr(_120_exprDafny, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out68, out _out69, out _out70); + _121_expr = _out68; + _122___v105 = _out69; + _123_recIdents = _out70; + readIdents = _123_recIdents; if (isLast) { - generated = _1634_expr; + generated = _121_expr; } else { - generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(_1634_expr)); + generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(_121_expr)); } newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_EarlyReturn) { + if (_source0.is_EarlyReturn) { { - Std.Wrappers._IOption>> _source80 = earlyReturn; + Std.Wrappers._IOption>> _source6 = earlyReturn; { - if (_source80.is_None) { + if (_source6.is_None) { generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_None()); - goto after_match27; + goto after_match6; } } { - Dafny.ISequence> _1637_rustIdents = _source80.dtor_value; - Dafny.ISequence _1638_tupleArgs; - _1638_tupleArgs = Dafny.Sequence.FromElements(); - BigInteger _hi36 = new BigInteger((_1637_rustIdents).Count); - for (BigInteger _1639_i = BigInteger.Zero; _1639_i < _hi36; _1639_i++) { - RAST._IExpr _1640_rIdent; - DCOMP._IOwnership _1641___v106; - Dafny.ISet> _1642___v107; - RAST._IExpr _out195; - DCOMP._IOwnership _out196; - Dafny.ISet> _out197; - (this).GenIdent((_1637_rustIdents).Select(_1639_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out195, out _out196, out _out197); - _1640_rIdent = _out195; - _1641___v106 = _out196; - _1642___v107 = _out197; - _1638_tupleArgs = Dafny.Sequence.Concat(_1638_tupleArgs, Dafny.Sequence.FromElements(_1640_rIdent)); + Dafny.ISequence> _124_rustIdents = _source6.dtor_value; + Dafny.ISequence _125_tupleArgs; + _125_tupleArgs = Dafny.Sequence.FromElements(); + BigInteger _hi3 = new BigInteger((_124_rustIdents).Count); + for (BigInteger _126_i = BigInteger.Zero; _126_i < _hi3; _126_i++) { + RAST._IExpr _127_rIdent; + DCOMP._IOwnership _128___v106; + Dafny.ISet> _129___v107; + RAST._IExpr _out71; + DCOMP._IOwnership _out72; + Dafny.ISet> _out73; + (this).GenIdent((_124_rustIdents).Select(_126_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out71, out _out72, out _out73); + _127_rIdent = _out71; + _128___v106 = _out72; + _129___v107 = _out73; + _125_tupleArgs = Dafny.Sequence.Concat(_125_tupleArgs, Dafny.Sequence.FromElements(_127_rIdent)); } - if ((new BigInteger((_1638_tupleArgs).Count)) == (BigInteger.One)) { - generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some((_1638_tupleArgs).Select(BigInteger.Zero))); + if ((new BigInteger((_125_tupleArgs).Count)) == (BigInteger.One)) { + generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some((_125_tupleArgs).Select(BigInteger.Zero))); } else { - generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Tuple(_1638_tupleArgs))); + generated = RAST.Expr.create_Return(Std.Wrappers.Option.create_Some(RAST.Expr.create_Tuple(_125_tupleArgs))); } } - after_match27: ; + after_match6: ; readIdents = Dafny.Set>.FromElements(); newEnv = env; } - goto after_match21; + goto after_match0; } } { - if (_source74.is_Halt) { + if (_source0.is_Halt) { { generated = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("panic!"))).Apply1(RAST.Expr.create_LiteralString(Dafny.Sequence.UnicodeFromString("Halt"), false, false)); readIdents = Dafny.Set>.FromElements(); newEnv = env; } - goto after_match21; + goto after_match0; } } { - DAST._IExpression _1643_e = _source74.dtor_Print_a0; + DAST._IExpression _130_e = _source0.dtor_Print_a0; { - RAST._IExpr _1644_printedExpr; - DCOMP._IOwnership _1645_recOwnership; - Dafny.ISet> _1646_recIdents; - RAST._IExpr _out198; - DCOMP._IOwnership _out199; - Dafny.ISet> _out200; - (this).GenExpr(_1643_e, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out198, out _out199, out _out200); - _1644_printedExpr = _out198; - _1645_recOwnership = _out199; - _1646_recIdents = _out200; - 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(_1644_printedExpr))); - readIdents = _1646_recIdents; + RAST._IExpr _131_printedExpr; + DCOMP._IOwnership _132_recOwnership; + Dafny.ISet> _133_recIdents; + RAST._IExpr _out74; + DCOMP._IOwnership _out75; + Dafny.ISet> _out76; + (this).GenExpr(_130_e, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out74, out _out75, out _out76); + _131_printedExpr = _out74; + _132_recOwnership = _out75; + _133_recIdents = _out76; + 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(_131_printedExpr))); + readIdents = _133_recIdents; newEnv = env; } } - after_match21: ; + after_match0: ; } public static Std.Wrappers._IOption NewtypeToRustType(DAST._IType @base, DAST._INewtypeRange range) { - DAST._INewtypeRange _source81 = range; + DAST._INewtypeRange _source0 = range; { - if (_source81.is_NoRange) { + if (_source0.is_NoRange) { return Std.Wrappers.Option.create_None(); } } { - if (_source81.is_U8) { + if (_source0.is_U8) { return Std.Wrappers.Option.create_Some(RAST.Type.create_U8()); } } { - if (_source81.is_U16) { + if (_source0.is_U16) { return Std.Wrappers.Option.create_Some(RAST.Type.create_U16()); } } { - if (_source81.is_U32) { + if (_source0.is_U32) { return Std.Wrappers.Option.create_Some(RAST.Type.create_U32()); } } { - if (_source81.is_U64) { + if (_source0.is_U64) { return Std.Wrappers.Option.create_Some(RAST.Type.create_U64()); } } { - if (_source81.is_U128) { + if (_source0.is_U128) { return Std.Wrappers.Option.create_Some(RAST.Type.create_U128()); } } { - if (_source81.is_I8) { + if (_source0.is_I8) { return Std.Wrappers.Option.create_Some(RAST.Type.create_I8()); } } { - if (_source81.is_I16) { + if (_source0.is_I16) { return Std.Wrappers.Option.create_Some(RAST.Type.create_I16()); } } { - if (_source81.is_I32) { + if (_source0.is_I32) { return Std.Wrappers.Option.create_Some(RAST.Type.create_I32()); } } { - if (_source81.is_I64) { + if (_source0.is_I64) { return Std.Wrappers.Option.create_Some(RAST.Type.create_I64()); } } { - if (_source81.is_I128) { + if (_source0.is_I128) { return Std.Wrappers.Option.create_Some(RAST.Type.create_I128()); } } @@ -3386,18 +3389,18 @@ public void FromOwnership(RAST._IExpr r, DCOMP._IOwnership ownership, DCOMP._IOw return ; } if (object.Equals(ownership, DCOMP.Ownership.create_OwnershipOwned())) { - RAST._IExpr _out201; - DCOMP._IOwnership _out202; - (this).FromOwned(r, expectedOwnership, out _out201, out _out202); - @out = _out201; - resultingOwnership = _out202; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + (this).FromOwned(r, expectedOwnership, out _out0, out _out1); + @out = _out0; + resultingOwnership = _out1; return ; } else if (object.Equals(ownership, DCOMP.Ownership.create_OwnershipOwnedBox())) { - RAST._IExpr _out203; - DCOMP._IOwnership _out204; - (this).FromOwned(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("*"), r, DAST.Format.UnaryOpFormat.create_NoFormat()), expectedOwnership, out _out203, out _out204); - @out = _out203; - resultingOwnership = _out204; + RAST._IExpr _out2; + DCOMP._IOwnership _out3; + (this).FromOwned(RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("*"), r, DAST.Format.UnaryOpFormat.create_NoFormat()), expectedOwnership, out _out2, out _out3); + @out = _out2; + resultingOwnership = _out3; } else if ((object.Equals(ownership, DCOMP.Ownership.create_OwnershipBorrowed())) || (object.Equals(ownership, DCOMP.Ownership.create_OwnershipBorrowedMut()))) { if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwned())) { resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); @@ -3427,593 +3430,593 @@ public void GenExprLiteral(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOM r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _source82 = e; + DAST._IExpression _source0 = e; { - if (_source82.is_Literal) { - DAST._ILiteral _h170 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h170 = _source0.dtor_Literal_a0; if (_h170.is_BoolLiteral) { - bool _1647_b = _h170.dtor_BoolLiteral_a0; + bool _0_b = _h170.dtor_BoolLiteral_a0; { - RAST._IExpr _out205; - DCOMP._IOwnership _out206; - (this).FromOwned(RAST.Expr.create_LiteralBool(_1647_b), expectedOwnership, out _out205, out _out206); - r = _out205; - resultingOwnership = _out206; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + (this).FromOwned(RAST.Expr.create_LiteralBool(_0_b), expectedOwnership, out _out0, out _out1); + r = _out0; + resultingOwnership = _out1; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - if (_source82.is_Literal) { - DAST._ILiteral _h171 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h171 = _source0.dtor_Literal_a0; if (_h171.is_IntLiteral) { - Dafny.ISequence _1648_i = _h171.dtor_IntLiteral_a0; - DAST._IType _1649_t = _h171.dtor_IntLiteral_a1; + Dafny.ISequence _1_i = _h171.dtor_IntLiteral_a0; + DAST._IType _2_t = _h171.dtor_IntLiteral_a1; { - DAST._IType _source83 = _1649_t; + DAST._IType _source1 = _2_t; { - if (_source83.is_Primitive) { - DAST._IPrimitive _h70 = _source83.dtor_Primitive_a0; + if (_source1.is_Primitive) { + DAST._IPrimitive _h70 = _source1.dtor_Primitive_a0; if (_h70.is_Int) { { - if ((new BigInteger((_1648_i).Count)) <= (new BigInteger(4))) { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralInt(_1648_i)); + if ((new BigInteger((_1_i).Count)) <= (new BigInteger(4))) { + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralInt(_1_i)); } else { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralString(_1648_i, true, false)); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(RAST.Expr.create_LiteralString(_1_i, true, false)); } } - goto after_match29; + goto after_match1; } } } { - DAST._IType _1650_o = _source83; + DAST._IType _3_o = _source1; { - RAST._IType _1651_genType; - RAST._IType _out207; - _out207 = (this).GenType(_1650_o, DCOMP.GenTypeContext.@default()); - _1651_genType = _out207; - r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(_1648_i), _1651_genType); + RAST._IType _4_genType; + RAST._IType _out2; + _out2 = (this).GenType(_3_o, DCOMP.GenTypeContext.@default()); + _4_genType = _out2; + r = RAST.Expr.create_TypeAscription(RAST.Expr.create_RawExpr(_1_i), _4_genType); } } - after_match29: ; - RAST._IExpr _out208; - DCOMP._IOwnership _out209; - (this).FromOwned(r, expectedOwnership, out _out208, out _out209); - r = _out208; - resultingOwnership = _out209; + after_match1: ; + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + (this).FromOwned(r, expectedOwnership, out _out3, out _out4); + r = _out3; + resultingOwnership = _out4; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - if (_source82.is_Literal) { - DAST._ILiteral _h172 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h172 = _source0.dtor_Literal_a0; if (_h172.is_DecLiteral) { - Dafny.ISequence _1652_n = _h172.dtor_DecLiteral_a0; - Dafny.ISequence _1653_d = _h172.dtor_DecLiteral_a1; - DAST._IType _1654_t = _h172.dtor_DecLiteral_a2; + Dafny.ISequence _5_n = _h172.dtor_DecLiteral_a0; + Dafny.ISequence _6_d = _h172.dtor_DecLiteral_a1; + DAST._IType _7_t = _h172.dtor_DecLiteral_a2; { - DAST._IType _source84 = _1654_t; + DAST._IType _source2 = _7_t; { - if (_source84.is_Primitive) { - DAST._IPrimitive _h71 = _source84.dtor_Primitive_a0; + if (_source2.is_Primitive) { + DAST._IPrimitive _h71 = _source2.dtor_Primitive_a0; if (_h71.is_Real) { { - 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\""), _1652_n), Dafny.Sequence.UnicodeFromString("\", 10).unwrap(), ::dafny_runtime::BigInt::parse_bytes(b\"")), _1653_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\""), _5_n), Dafny.Sequence.UnicodeFromString("\", 10).unwrap(), ::dafny_runtime::BigInt::parse_bytes(b\"")), _6_d), Dafny.Sequence.UnicodeFromString("\", 10).unwrap())")))); } - goto after_match30; + goto after_match2; } } } { - DAST._IType _1655_o = _source84; + DAST._IType _8_o = _source2; { - RAST._IType _1656_genType; - RAST._IType _out210; - _out210 = (this).GenType(_1655_o, DCOMP.GenTypeContext.@default()); - _1656_genType = _out210; - 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("("), _1652_n), Dafny.Sequence.UnicodeFromString(".0 / ")), _1653_d), Dafny.Sequence.UnicodeFromString(".0")), Dafny.Sequence.UnicodeFromString(")"))), _1656_genType); + RAST._IType _9_genType; + RAST._IType _out5; + _out5 = (this).GenType(_8_o, DCOMP.GenTypeContext.@default()); + _9_genType = _out5; + 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("("), _5_n), Dafny.Sequence.UnicodeFromString(".0 / ")), _6_d), Dafny.Sequence.UnicodeFromString(".0")), Dafny.Sequence.UnicodeFromString(")"))), _9_genType); } } - after_match30: ; - RAST._IExpr _out211; - DCOMP._IOwnership _out212; - (this).FromOwned(r, expectedOwnership, out _out211, out _out212); - r = _out211; - resultingOwnership = _out212; + after_match2: ; + RAST._IExpr _out6; + DCOMP._IOwnership _out7; + (this).FromOwned(r, expectedOwnership, out _out6, out _out7); + r = _out6; + resultingOwnership = _out7; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - if (_source82.is_Literal) { - DAST._ILiteral _h173 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h173 = _source0.dtor_Literal_a0; if (_h173.is_StringLiteral) { - Dafny.ISequence _1657_l = _h173.dtor_StringLiteral_a0; - bool _1658_verbatim = _h173.dtor_verbatim; + Dafny.ISequence _10_l = _h173.dtor_StringLiteral_a0; + bool _11_verbatim = _h173.dtor_verbatim; { - r = ((RAST.__default.dafny__runtime).MSel((this).string__of)).Apply1(RAST.Expr.create_LiteralString(_1657_l, false, _1658_verbatim)); - RAST._IExpr _out213; - DCOMP._IOwnership _out214; - (this).FromOwned(r, expectedOwnership, out _out213, out _out214); - r = _out213; - resultingOwnership = _out214; + r = ((RAST.__default.dafny__runtime).MSel((this).string__of)).Apply1(RAST.Expr.create_LiteralString(_10_l, false, _11_verbatim)); + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + (this).FromOwned(r, expectedOwnership, out _out8, out _out9); + r = _out8; + resultingOwnership = _out9; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - if (_source82.is_Literal) { - DAST._ILiteral _h174 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h174 = _source0.dtor_Literal_a0; if (_h174.is_CharLiteralUTF16) { - BigInteger _1659_c = _h174.dtor_CharLiteralUTF16_a0; + BigInteger _12_c = _h174.dtor_CharLiteralUTF16_a0; { - r = RAST.Expr.create_LiteralInt(Std.Strings.__default.OfNat(_1659_c)); + r = RAST.Expr.create_LiteralInt(Std.Strings.__default.OfNat(_12_c)); r = RAST.Expr.create_TypeAscription(r, RAST.Type.create_U16()); r = ((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(r); - RAST._IExpr _out215; - DCOMP._IOwnership _out216; - (this).FromOwned(r, expectedOwnership, out _out215, out _out216); - r = _out215; - resultingOwnership = _out216; + RAST._IExpr _out10; + DCOMP._IOwnership _out11; + (this).FromOwned(r, expectedOwnership, out _out10, out _out11); + r = _out10; + resultingOwnership = _out11; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - if (_source82.is_Literal) { - DAST._ILiteral _h175 = _source82.dtor_Literal_a0; + if (_source0.is_Literal) { + DAST._ILiteral _h175 = _source0.dtor_Literal_a0; if (_h175.is_CharLiteral) { - Dafny.Rune _1660_c = _h175.dtor_CharLiteral_a0; + Dafny.Rune _13_c = _h175.dtor_CharLiteral_a0; { - r = RAST.Expr.create_LiteralInt(Std.Strings.__default.OfNat(new BigInteger((_1660_c).Value))); + r = RAST.Expr.create_LiteralInt(Std.Strings.__default.OfNat(new BigInteger((_13_c).Value))); if (!((this).UnicodeChars)) { r = RAST.Expr.create_TypeAscription(r, RAST.Type.create_U16()); } else { r = (((((((RAST.__default.@global).MSel(Dafny.Sequence.UnicodeFromString("std"))).MSel(Dafny.Sequence.UnicodeFromString("primitive"))).MSel(Dafny.Sequence.UnicodeFromString("char"))).MSel(Dafny.Sequence.UnicodeFromString("from_u32"))).Apply1(r)).Sel(Dafny.Sequence.UnicodeFromString("unwrap"))).Apply(Dafny.Sequence.FromElements()); } r = ((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(r); - RAST._IExpr _out217; - DCOMP._IOwnership _out218; - (this).FromOwned(r, expectedOwnership, out _out217, out _out218); - r = _out217; - resultingOwnership = _out218; + RAST._IExpr _out12; + DCOMP._IOwnership _out13; + (this).FromOwned(r, expectedOwnership, out _out12, out _out13); + r = _out12; + resultingOwnership = _out13; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match28; + goto after_match0; } } } { - DAST._ILiteral _h176 = _source82.dtor_Literal_a0; - DAST._IType _1661_tpe = _h176.dtor_Null_a0; + DAST._ILiteral _h176 = _source0.dtor_Literal_a0; + DAST._IType _14_tpe = _h176.dtor_Null_a0; { - RAST._IType _1662_tpeGen; - RAST._IType _out219; - _out219 = (this).GenType(_1661_tpe, DCOMP.GenTypeContext.@default()); - _1662_tpeGen = _out219; + RAST._IType _15_tpeGen; + RAST._IType _out14; + _out14 = (this).GenType(_14_tpe, DCOMP.GenTypeContext.@default()); + _15_tpeGen = _out14; if (((this).ObjectType).is_RawPointers) { r = ((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("ptr"))).MSel(Dafny.Sequence.UnicodeFromString("null")); } else { - r = RAST.Expr.create_TypeAscription(((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("Object"))).Apply1(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("None"))), _1662_tpeGen); + r = RAST.Expr.create_TypeAscription(((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("Object"))).Apply1(RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("None"))), _15_tpeGen); } - RAST._IExpr _out220; - DCOMP._IOwnership _out221; - (this).FromOwned(r, expectedOwnership, out _out220, out _out221); - r = _out220; - resultingOwnership = _out221; + RAST._IExpr _out15; + DCOMP._IOwnership _out16; + (this).FromOwned(r, expectedOwnership, out _out15, out _out16); + r = _out15; + resultingOwnership = _out16; readIdents = Dafny.Set>.FromElements(); return ; } } - after_match28: ; + after_match0: ; } public void GenExprBinary(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) { r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _let_tmp_rhs54 = e; - DAST._IBinOp _1663_op = _let_tmp_rhs54.dtor_op; - DAST._IExpression _1664_lExpr = _let_tmp_rhs54.dtor_left; - DAST._IExpression _1665_rExpr = _let_tmp_rhs54.dtor_right; - DAST.Format._IBinaryOpFormat _1666_format = _let_tmp_rhs54.dtor_format2; - bool _1667_becomesLeftCallsRight; - DAST._IBinOp _source85 = _1663_op; + DAST._IExpression _let_tmp_rhs0 = e; + DAST._IBinOp _0_op = _let_tmp_rhs0.dtor_op; + DAST._IExpression _1_lExpr = _let_tmp_rhs0.dtor_left; + DAST._IExpression _2_rExpr = _let_tmp_rhs0.dtor_right; + DAST.Format._IBinaryOpFormat _3_format = _let_tmp_rhs0.dtor_format2; + bool _4_becomesLeftCallsRight; + DAST._IBinOp _source0 = _0_op; { - bool disjunctiveMatch12 = false; - if (_source85.is_SetMerge) { - disjunctiveMatch12 = true; + bool disjunctiveMatch0 = false; + if (_source0.is_SetMerge) { + disjunctiveMatch0 = true; } - if (_source85.is_SetSubtraction) { - disjunctiveMatch12 = true; + if (_source0.is_SetSubtraction) { + disjunctiveMatch0 = true; } - if (_source85.is_SetIntersection) { - disjunctiveMatch12 = true; + if (_source0.is_SetIntersection) { + disjunctiveMatch0 = true; } - if (_source85.is_SetDisjoint) { - disjunctiveMatch12 = true; + if (_source0.is_SetDisjoint) { + disjunctiveMatch0 = true; } - if (_source85.is_MapMerge) { - disjunctiveMatch12 = true; + if (_source0.is_MapMerge) { + disjunctiveMatch0 = true; } - if (_source85.is_MapSubtraction) { - disjunctiveMatch12 = true; + if (_source0.is_MapSubtraction) { + disjunctiveMatch0 = true; } - if (_source85.is_MultisetMerge) { - disjunctiveMatch12 = true; + if (_source0.is_MultisetMerge) { + disjunctiveMatch0 = true; } - if (_source85.is_MultisetSubtraction) { - disjunctiveMatch12 = true; + if (_source0.is_MultisetSubtraction) { + disjunctiveMatch0 = true; } - if (_source85.is_MultisetIntersection) { - disjunctiveMatch12 = true; + if (_source0.is_MultisetIntersection) { + disjunctiveMatch0 = true; } - if (_source85.is_MultisetDisjoint) { - disjunctiveMatch12 = true; + if (_source0.is_MultisetDisjoint) { + disjunctiveMatch0 = true; } - if (_source85.is_Concat) { - disjunctiveMatch12 = true; + if (_source0.is_Concat) { + disjunctiveMatch0 = true; } - if (disjunctiveMatch12) { - _1667_becomesLeftCallsRight = true; - goto after_match31; + if (disjunctiveMatch0) { + _4_becomesLeftCallsRight = true; + goto after_match0; } } { - _1667_becomesLeftCallsRight = false; + _4_becomesLeftCallsRight = false; } - after_match31: ; - bool _1668_becomesRightCallsLeft; - DAST._IBinOp _source86 = _1663_op; + after_match0: ; + bool _5_becomesRightCallsLeft; + DAST._IBinOp _source1 = _0_op; { - if (_source86.is_In) { - _1668_becomesRightCallsLeft = true; - goto after_match32; + if (_source1.is_In) { + _5_becomesRightCallsLeft = true; + goto after_match1; } } { - _1668_becomesRightCallsLeft = false; + _5_becomesRightCallsLeft = false; } - after_match32: ; - bool _1669_becomesCallLeftRight; - DAST._IBinOp _source87 = _1663_op; + after_match1: ; + bool _6_becomesCallLeftRight; + DAST._IBinOp _source2 = _0_op; { - if (_source87.is_Eq) { - bool referential0 = _source87.dtor_referential; + if (_source2.is_Eq) { + bool referential0 = _source2.dtor_referential; if ((referential0) == (true)) { - _1669_becomesCallLeftRight = false; - goto after_match33; + _6_becomesCallLeftRight = false; + goto after_match2; } } } { - if (_source87.is_SetMerge) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_SetMerge) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_SetSubtraction) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_SetSubtraction) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_SetIntersection) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_SetIntersection) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_SetDisjoint) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_SetDisjoint) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MapMerge) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MapMerge) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MapSubtraction) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MapSubtraction) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MultisetMerge) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MultisetMerge) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MultisetSubtraction) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MultisetSubtraction) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MultisetIntersection) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MultisetIntersection) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_MultisetDisjoint) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_MultisetDisjoint) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - if (_source87.is_Concat) { - _1669_becomesCallLeftRight = true; - goto after_match33; + if (_source2.is_Concat) { + _6_becomesCallLeftRight = true; + goto after_match2; } } { - _1669_becomesCallLeftRight = false; + _6_becomesCallLeftRight = false; } - after_match33: ; - DCOMP._IOwnership _1670_expectedLeftOwnership; - if (_1667_becomesLeftCallsRight) { - _1670_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipAutoBorrowed(); - } else if ((_1668_becomesRightCallsLeft) || (_1669_becomesCallLeftRight)) { - _1670_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); + after_match2: ; + DCOMP._IOwnership _7_expectedLeftOwnership; + if (_4_becomesLeftCallsRight) { + _7_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipAutoBorrowed(); + } else if ((_5_becomesRightCallsLeft) || (_6_becomesCallLeftRight)) { + _7_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else { - _1670_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipOwned(); + _7_expectedLeftOwnership = DCOMP.Ownership.create_OwnershipOwned(); } - DCOMP._IOwnership _1671_expectedRightOwnership; - if ((_1667_becomesLeftCallsRight) || (_1669_becomesCallLeftRight)) { - _1671_expectedRightOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); - } else if (_1668_becomesRightCallsLeft) { - _1671_expectedRightOwnership = DCOMP.Ownership.create_OwnershipAutoBorrowed(); + DCOMP._IOwnership _8_expectedRightOwnership; + if ((_4_becomesLeftCallsRight) || (_6_becomesCallLeftRight)) { + _8_expectedRightOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); + } else if (_5_becomesRightCallsLeft) { + _8_expectedRightOwnership = DCOMP.Ownership.create_OwnershipAutoBorrowed(); } else { - _1671_expectedRightOwnership = DCOMP.Ownership.create_OwnershipOwned(); - } - RAST._IExpr _1672_left; - DCOMP._IOwnership _1673___v112; - Dafny.ISet> _1674_recIdentsL; - RAST._IExpr _out222; - DCOMP._IOwnership _out223; - Dafny.ISet> _out224; - (this).GenExpr(_1664_lExpr, selfIdent, env, _1670_expectedLeftOwnership, out _out222, out _out223, out _out224); - _1672_left = _out222; - _1673___v112 = _out223; - _1674_recIdentsL = _out224; - RAST._IExpr _1675_right; - DCOMP._IOwnership _1676___v113; - Dafny.ISet> _1677_recIdentsR; - RAST._IExpr _out225; - DCOMP._IOwnership _out226; - Dafny.ISet> _out227; - (this).GenExpr(_1665_rExpr, selfIdent, env, _1671_expectedRightOwnership, out _out225, out _out226, out _out227); - _1675_right = _out225; - _1676___v113 = _out226; - _1677_recIdentsR = _out227; - DAST._IBinOp _source88 = _1663_op; - { - if (_source88.is_In) { + _8_expectedRightOwnership = DCOMP.Ownership.create_OwnershipOwned(); + } + RAST._IExpr _9_left; + DCOMP._IOwnership _10___v112; + Dafny.ISet> _11_recIdentsL; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExpr(_1_lExpr, selfIdent, env, _7_expectedLeftOwnership, out _out0, out _out1, out _out2); + _9_left = _out0; + _10___v112 = _out1; + _11_recIdentsL = _out2; + RAST._IExpr _12_right; + DCOMP._IOwnership _13___v113; + Dafny.ISet> _14_recIdentsR; + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + Dafny.ISet> _out5; + (this).GenExpr(_2_rExpr, selfIdent, env, _8_expectedRightOwnership, out _out3, out _out4, out _out5); + _12_right = _out3; + _13___v113 = _out4; + _14_recIdentsR = _out5; + DAST._IBinOp _source3 = _0_op; + { + if (_source3.is_In) { { - r = ((_1675_right).Sel(Dafny.Sequence.UnicodeFromString("contains"))).Apply1(_1672_left); + r = ((_12_right).Sel(Dafny.Sequence.UnicodeFromString("contains"))).Apply1(_9_left); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_SeqProperPrefix) { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1672_left, _1675_right, _1666_format); - goto after_match34; + if (_source3.is_SeqProperPrefix) { + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _9_left, _12_right, _3_format); + goto after_match3; } } { - if (_source88.is_SeqPrefix) { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1672_left, _1675_right, _1666_format); - goto after_match34; + if (_source3.is_SeqPrefix) { + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _9_left, _12_right, _3_format); + goto after_match3; } } { - if (_source88.is_SetMerge) { + if (_source3.is_SetMerge) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_SetSubtraction) { + if (_source3.is_SetSubtraction) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_SetIntersection) { + if (_source3.is_SetIntersection) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_Subset) { + if (_source3.is_Subset) { { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1672_left, _1675_right, _1666_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _9_left, _12_right, _3_format); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_ProperSubset) { + if (_source3.is_ProperSubset) { { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1672_left, _1675_right, _1666_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _9_left, _12_right, _3_format); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_SetDisjoint) { + if (_source3.is_SetDisjoint) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MapMerge) { + if (_source3.is_MapMerge) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MapSubtraction) { + if (_source3.is_MapSubtraction) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MultisetMerge) { + if (_source3.is_MultisetMerge) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("merge"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MultisetSubtraction) { + if (_source3.is_MultisetSubtraction) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("subtract"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MultisetIntersection) { + if (_source3.is_MultisetIntersection) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("intersect"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_Submultiset) { + if (_source3.is_Submultiset) { { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _1672_left, _1675_right, _1666_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _9_left, _12_right, _3_format); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_ProperSubmultiset) { + if (_source3.is_ProperSubmultiset) { { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _1672_left, _1675_right, _1666_format); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<"), _9_left, _12_right, _3_format); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_MultisetDisjoint) { + if (_source3.is_MultisetDisjoint) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("disjoint"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { - if (_source88.is_Concat) { + if (_source3.is_Concat) { { - r = ((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("concat"))).Apply1(_1675_right); + r = ((_9_left).Sel(Dafny.Sequence.UnicodeFromString("concat"))).Apply1(_12_right); } - goto after_match34; + goto after_match3; } } { { - if ((DCOMP.COMP.OpTable).Contains(_1663_op)) { - r = RAST.Expr.create_BinaryOp(Dafny.Map>.Select(DCOMP.COMP.OpTable,_1663_op), _1672_left, _1675_right, _1666_format); + if ((DCOMP.COMP.OpTable).Contains(_0_op)) { + r = RAST.Expr.create_BinaryOp(Dafny.Map>.Select(DCOMP.COMP.OpTable,_0_op), _9_left, _12_right, _3_format); } else { - DAST._IBinOp _source89 = _1663_op; + DAST._IBinOp _source4 = _0_op; { - if (_source89.is_Eq) { - bool _1678_referential = _source89.dtor_referential; + if (_source4.is_Eq) { + bool _15_referential = _source4.dtor_referential; { - if (_1678_referential) { + if (_15_referential) { if (((this).ObjectType).is_RawPointers) { (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("Cannot compare raw pointers yet - need to wrap them with a structure to ensure they are compared properly")); r = RAST.Expr.create_RawExpr((this.error).dtor_value); } else { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1672_left, _1675_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _9_left, _12_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } else { - if (((_1665_rExpr).is_SeqValue) && ((new BigInteger(((_1665_rExpr).dtor_elements).Count)).Sign == 0)) { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), ((((_1672_left).Sel(Dafny.Sequence.UnicodeFromString("to_array"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0")), DAST.Format.BinaryOpFormat.create_NoFormat()); - } else if (((_1664_lExpr).is_SeqValue) && ((new BigInteger(((_1664_lExpr).dtor_elements).Count)).Sign == 0)) { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0")), ((((_1675_right).Sel(Dafny.Sequence.UnicodeFromString("to_array"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()), DAST.Format.BinaryOpFormat.create_NoFormat()); + if (((_2_rExpr).is_SeqValue) && ((new BigInteger(((_2_rExpr).dtor_elements).Count)).Sign == 0)) { + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), ((((_9_left).Sel(Dafny.Sequence.UnicodeFromString("to_array"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0")), DAST.Format.BinaryOpFormat.create_NoFormat()); + } else if (((_1_lExpr).is_SeqValue) && ((new BigInteger(((_1_lExpr).dtor_elements).Count)).Sign == 0)) { + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), RAST.Expr.create_LiteralInt(Dafny.Sequence.UnicodeFromString("0")), ((((_12_right).Sel(Dafny.Sequence.UnicodeFromString("to_array"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()), DAST.Format.BinaryOpFormat.create_NoFormat()); } else { - r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _1672_left, _1675_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + r = RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=="), _9_left, _12_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } - goto after_match35; + goto after_match4; } } { - if (_source89.is_EuclidianDiv) { + if (_source4.is_EuclidianDiv) { { - r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_division"))).Apply(Dafny.Sequence.FromElements(_1672_left, _1675_right)); + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_division"))).Apply(Dafny.Sequence.FromElements(_9_left, _12_right)); } - goto after_match35; + goto after_match4; } } { - if (_source89.is_EuclidianMod) { + if (_source4.is_EuclidianMod) { { - r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_modulo"))).Apply(Dafny.Sequence.FromElements(_1672_left, _1675_right)); + r = (RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("::dafny_runtime::euclidian_modulo"))).Apply(Dafny.Sequence.FromElements(_9_left, _12_right)); } - goto after_match35; + goto after_match4; } } { - Dafny.ISequence _1679_op = _source89.dtor_Passthrough_a0; + Dafny.ISequence _16_op = _source4.dtor_Passthrough_a0; { - r = RAST.Expr.create_BinaryOp(_1679_op, _1672_left, _1675_right, _1666_format); + r = RAST.Expr.create_BinaryOp(_16_op, _9_left, _12_right, _3_format); } } - after_match35: ; + after_match4: ; } } } - after_match34: ; - RAST._IExpr _out228; - DCOMP._IOwnership _out229; - (this).FromOwned(r, expectedOwnership, out _out228, out _out229); - r = _out228; - resultingOwnership = _out229; - readIdents = Dafny.Set>.Union(_1674_recIdentsL, _1677_recIdentsR); + after_match3: ; + RAST._IExpr _out6; + DCOMP._IOwnership _out7; + (this).FromOwned(r, expectedOwnership, out _out6, out _out7); + r = _out6; + resultingOwnership = _out7; + readIdents = Dafny.Set>.Union(_11_recIdentsL, _14_recIdentsR); return ; } public void GenExprConvertToNewtype(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) @@ -4021,134 +4024,134 @@ public void GenExprConvertToNewtype(DAST._IExpression e, DCOMP._ISelfInfo selfId r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _let_tmp_rhs55 = e; - DAST._IExpression _1680_expr = _let_tmp_rhs55.dtor_value; - DAST._IType _1681_fromTpe = _let_tmp_rhs55.dtor_from; - DAST._IType _1682_toTpe = _let_tmp_rhs55.dtor_typ; - DAST._IType _let_tmp_rhs56 = _1682_toTpe; - DAST._IResolvedType _let_tmp_rhs57 = _let_tmp_rhs56.dtor_resolved; - Dafny.ISequence> _1683_path = _let_tmp_rhs57.dtor_path; - Dafny.ISequence _1684_typeArgs = _let_tmp_rhs57.dtor_typeArgs; - DAST._IResolvedTypeBase _let_tmp_rhs58 = _let_tmp_rhs57.dtor_kind; - DAST._IType _1685_b = _let_tmp_rhs58.dtor_baseType; - DAST._INewtypeRange _1686_range = _let_tmp_rhs58.dtor_range; - bool _1687_erase = _let_tmp_rhs58.dtor_erase; - Dafny.ISequence _1688___v115 = _let_tmp_rhs57.dtor_attributes; - Dafny.ISequence> _1689___v116 = _let_tmp_rhs57.dtor_properMethods; - Dafny.ISequence _1690___v117 = _let_tmp_rhs57.dtor_extendedTypes; - Std.Wrappers._IOption _1691_nativeToType; - _1691_nativeToType = DCOMP.COMP.NewtypeToRustType(_1685_b, _1686_range); - if (object.Equals(_1681_fromTpe, _1685_b)) { - RAST._IExpr _1692_recursiveGen; - DCOMP._IOwnership _1693_recOwned; - Dafny.ISet> _1694_recIdents; - RAST._IExpr _out230; - DCOMP._IOwnership _out231; - Dafny.ISet> _out232; - (this).GenExpr(_1680_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out230, out _out231, out _out232); - _1692_recursiveGen = _out230; - _1693_recOwned = _out231; - _1694_recIdents = _out232; - readIdents = _1694_recIdents; - Std.Wrappers._IOption _source90 = _1691_nativeToType; + DAST._IExpression _let_tmp_rhs0 = e; + DAST._IExpression _0_expr = _let_tmp_rhs0.dtor_value; + DAST._IType _1_fromTpe = _let_tmp_rhs0.dtor_from; + DAST._IType _2_toTpe = _let_tmp_rhs0.dtor_typ; + DAST._IType _let_tmp_rhs1 = _2_toTpe; + DAST._IResolvedType _let_tmp_rhs2 = _let_tmp_rhs1.dtor_resolved; + Dafny.ISequence> _3_path = _let_tmp_rhs2.dtor_path; + Dafny.ISequence _4_typeArgs = _let_tmp_rhs2.dtor_typeArgs; + DAST._IResolvedTypeBase _let_tmp_rhs3 = _let_tmp_rhs2.dtor_kind; + DAST._IType _5_b = _let_tmp_rhs3.dtor_baseType; + DAST._INewtypeRange _6_range = _let_tmp_rhs3.dtor_range; + bool _7_erase = _let_tmp_rhs3.dtor_erase; + Dafny.ISequence _8___v115 = _let_tmp_rhs2.dtor_attributes; + Dafny.ISequence> _9___v116 = _let_tmp_rhs2.dtor_properMethods; + Dafny.ISequence _10___v117 = _let_tmp_rhs2.dtor_extendedTypes; + Std.Wrappers._IOption _11_nativeToType; + _11_nativeToType = DCOMP.COMP.NewtypeToRustType(_5_b, _6_range); + if (object.Equals(_1_fromTpe, _5_b)) { + RAST._IExpr _12_recursiveGen; + DCOMP._IOwnership _13_recOwned; + Dafny.ISet> _14_recIdents; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out0, out _out1, out _out2); + _12_recursiveGen = _out0; + _13_recOwned = _out1; + _14_recIdents = _out2; + readIdents = _14_recIdents; + Std.Wrappers._IOption _source0 = _11_nativeToType; { - if (_source90.is_Some) { - RAST._IType _1695_v = _source90.dtor_value; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("truncate!"))).Apply(Dafny.Sequence.FromElements(_1692_recursiveGen, RAST.Expr.create_ExprFromType(_1695_v))); - RAST._IExpr _out233; - DCOMP._IOwnership _out234; - (this).FromOwned(r, expectedOwnership, out _out233, out _out234); - r = _out233; - resultingOwnership = _out234; - goto after_match36; + if (_source0.is_Some) { + RAST._IType _15_v = _source0.dtor_value; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("truncate!"))).Apply(Dafny.Sequence.FromElements(_12_recursiveGen, RAST.Expr.create_ExprFromType(_15_v))); + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + (this).FromOwned(r, expectedOwnership, out _out3, out _out4); + r = _out3; + resultingOwnership = _out4; + goto after_match0; } } { - if (_1687_erase) { - r = _1692_recursiveGen; + if (_7_erase) { + r = _12_recursiveGen; } else { - RAST._IType _1696_rhsType; - RAST._IType _out235; - _out235 = (this).GenType(_1682_toTpe, DCOMP.GenTypeContext.InBinding()); - _1696_rhsType = _out235; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1696_rhsType)._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("(")), (_1692_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); - } - RAST._IExpr _out236; - DCOMP._IOwnership _out237; - (this).FromOwnership(r, _1693_recOwned, expectedOwnership, out _out236, out _out237); - r = _out236; - resultingOwnership = _out237; - } - after_match36: ; + RAST._IType _16_rhsType; + RAST._IType _out5; + _out5 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.InBinding()); + _16_rhsType = _out5; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_16_rhsType)._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("(")), (_12_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + } + RAST._IExpr _out6; + DCOMP._IOwnership _out7; + (this).FromOwnership(r, _13_recOwned, expectedOwnership, out _out6, out _out7); + r = _out6; + resultingOwnership = _out7; + } + after_match0: ; } else { - if ((_1691_nativeToType).is_Some) { - DAST._IType _source91 = _1681_fromTpe; + if ((_11_nativeToType).is_Some) { + DAST._IType _source1 = _1_fromTpe; { - if (_source91.is_UserDefined) { - DAST._IResolvedType resolved1 = _source91.dtor_resolved; - DAST._IResolvedTypeBase kind1 = resolved1.dtor_kind; - if (kind1.is_Newtype) { - DAST._IType _1697_b0 = kind1.dtor_baseType; - DAST._INewtypeRange _1698_range0 = kind1.dtor_range; - bool _1699_erase0 = kind1.dtor_erase; - Dafny.ISequence _1700_attributes0 = resolved1.dtor_attributes; + if (_source1.is_UserDefined) { + DAST._IResolvedType resolved0 = _source1.dtor_resolved; + DAST._IResolvedTypeBase kind0 = resolved0.dtor_kind; + if (kind0.is_Newtype) { + DAST._IType _17_b0 = kind0.dtor_baseType; + DAST._INewtypeRange _18_range0 = kind0.dtor_range; + bool _19_erase0 = kind0.dtor_erase; + Dafny.ISequence _20_attributes0 = resolved0.dtor_attributes; { - Std.Wrappers._IOption _1701_nativeFromType; - _1701_nativeFromType = DCOMP.COMP.NewtypeToRustType(_1697_b0, _1698_range0); - if ((_1701_nativeFromType).is_Some) { - RAST._IExpr _1702_recursiveGen; - DCOMP._IOwnership _1703_recOwned; - Dafny.ISet> _1704_recIdents; - RAST._IExpr _out238; - DCOMP._IOwnership _out239; - Dafny.ISet> _out240; - (this).GenExpr(_1680_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out238, out _out239, out _out240); - _1702_recursiveGen = _out238; - _1703_recOwned = _out239; - _1704_recIdents = _out240; - RAST._IExpr _out241; - DCOMP._IOwnership _out242; - (this).FromOwnership(RAST.Expr.create_TypeAscription(_1702_recursiveGen, (_1691_nativeToType).dtor_value), _1703_recOwned, expectedOwnership, out _out241, out _out242); - r = _out241; - resultingOwnership = _out242; - readIdents = _1704_recIdents; + Std.Wrappers._IOption _21_nativeFromType; + _21_nativeFromType = DCOMP.COMP.NewtypeToRustType(_17_b0, _18_range0); + if ((_21_nativeFromType).is_Some) { + RAST._IExpr _22_recursiveGen; + DCOMP._IOwnership _23_recOwned; + Dafny.ISet> _24_recIdents; + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + Dafny.ISet> _out10; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out8, out _out9, out _out10); + _22_recursiveGen = _out8; + _23_recOwned = _out9; + _24_recIdents = _out10; + RAST._IExpr _out11; + DCOMP._IOwnership _out12; + (this).FromOwnership(RAST.Expr.create_TypeAscription(_22_recursiveGen, (_11_nativeToType).dtor_value), _23_recOwned, expectedOwnership, out _out11, out _out12); + r = _out11; + resultingOwnership = _out12; + readIdents = _24_recIdents; return ; } } - goto after_match37; + goto after_match1; } } } { } - after_match37: ; - if (object.Equals(_1681_fromTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { - RAST._IExpr _1705_recursiveGen; - DCOMP._IOwnership _1706_recOwned; - Dafny.ISet> _1707_recIdents; - RAST._IExpr _out243; - DCOMP._IOwnership _out244; - Dafny.ISet> _out245; - (this).GenExpr(_1680_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out243, out _out244, out _out245); - _1705_recursiveGen = _out243; - _1706_recOwned = _out244; - _1707_recIdents = _out245; - RAST._IExpr _out246; - DCOMP._IOwnership _out247; - (this).FromOwnership(RAST.Expr.create_TypeAscription((_1705_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")), (_1691_nativeToType).dtor_value), _1706_recOwned, expectedOwnership, out _out246, out _out247); - r = _out246; - resultingOwnership = _out247; - readIdents = _1707_recIdents; + after_match1: ; + if (object.Equals(_1_fromTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { + RAST._IExpr _25_recursiveGen; + DCOMP._IOwnership _26_recOwned; + Dafny.ISet> _27_recIdents; + RAST._IExpr _out13; + DCOMP._IOwnership _out14; + Dafny.ISet> _out15; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out13, out _out14, out _out15); + _25_recursiveGen = _out13; + _26_recOwned = _out14; + _27_recIdents = _out15; + RAST._IExpr _out16; + DCOMP._IOwnership _out17; + (this).FromOwnership(RAST.Expr.create_TypeAscription((_25_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")), (_11_nativeToType).dtor_value), _26_recOwned, expectedOwnership, out _out16, out _out17); + r = _out16; + resultingOwnership = _out17; + readIdents = _27_recIdents; return ; } } - RAST._IExpr _out248; - DCOMP._IOwnership _out249; - Dafny.ISet> _out250; - (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1680_expr, _1681_fromTpe, _1685_b), _1685_b, _1682_toTpe), selfIdent, env, expectedOwnership, out _out248, out _out249, out _out250); - r = _out248; - resultingOwnership = _out249; - readIdents = _out250; + RAST._IExpr _out18; + DCOMP._IOwnership _out19; + Dafny.ISet> _out20; + (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_0_expr, _1_fromTpe, _5_b), _5_b, _2_toTpe), selfIdent, env, expectedOwnership, out _out18, out _out19, out _out20); + r = _out18; + resultingOwnership = _out19; + readIdents = _out20; } } public void GenExprConvertFromNewtype(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) @@ -4156,94 +4159,94 @@ public void GenExprConvertFromNewtype(DAST._IExpression e, DCOMP._ISelfInfo self r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _let_tmp_rhs59 = e; - DAST._IExpression _1708_expr = _let_tmp_rhs59.dtor_value; - DAST._IType _1709_fromTpe = _let_tmp_rhs59.dtor_from; - DAST._IType _1710_toTpe = _let_tmp_rhs59.dtor_typ; - DAST._IType _let_tmp_rhs60 = _1709_fromTpe; - DAST._IResolvedType _let_tmp_rhs61 = _let_tmp_rhs60.dtor_resolved; - Dafny.ISequence> _1711___v123 = _let_tmp_rhs61.dtor_path; - Dafny.ISequence _1712___v124 = _let_tmp_rhs61.dtor_typeArgs; - DAST._IResolvedTypeBase _let_tmp_rhs62 = _let_tmp_rhs61.dtor_kind; - DAST._IType _1713_b = _let_tmp_rhs62.dtor_baseType; - DAST._INewtypeRange _1714_range = _let_tmp_rhs62.dtor_range; - bool _1715_erase = _let_tmp_rhs62.dtor_erase; - Dafny.ISequence _1716_attributes = _let_tmp_rhs61.dtor_attributes; - Dafny.ISequence> _1717___v125 = _let_tmp_rhs61.dtor_properMethods; - Dafny.ISequence _1718___v126 = _let_tmp_rhs61.dtor_extendedTypes; - Std.Wrappers._IOption _1719_nativeFromType; - _1719_nativeFromType = DCOMP.COMP.NewtypeToRustType(_1713_b, _1714_range); - if (object.Equals(_1713_b, _1710_toTpe)) { - RAST._IExpr _1720_recursiveGen; - DCOMP._IOwnership _1721_recOwned; - Dafny.ISet> _1722_recIdents; - RAST._IExpr _out251; - DCOMP._IOwnership _out252; - Dafny.ISet> _out253; - (this).GenExpr(_1708_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out251, out _out252, out _out253); - _1720_recursiveGen = _out251; - _1721_recOwned = _out252; - _1722_recIdents = _out253; - readIdents = _1722_recIdents; - Std.Wrappers._IOption _source92 = _1719_nativeFromType; + DAST._IExpression _let_tmp_rhs0 = e; + DAST._IExpression _0_expr = _let_tmp_rhs0.dtor_value; + DAST._IType _1_fromTpe = _let_tmp_rhs0.dtor_from; + DAST._IType _2_toTpe = _let_tmp_rhs0.dtor_typ; + DAST._IType _let_tmp_rhs1 = _1_fromTpe; + DAST._IResolvedType _let_tmp_rhs2 = _let_tmp_rhs1.dtor_resolved; + Dafny.ISequence> _3___v123 = _let_tmp_rhs2.dtor_path; + Dafny.ISequence _4___v124 = _let_tmp_rhs2.dtor_typeArgs; + DAST._IResolvedTypeBase _let_tmp_rhs3 = _let_tmp_rhs2.dtor_kind; + DAST._IType _5_b = _let_tmp_rhs3.dtor_baseType; + DAST._INewtypeRange _6_range = _let_tmp_rhs3.dtor_range; + bool _7_erase = _let_tmp_rhs3.dtor_erase; + Dafny.ISequence _8_attributes = _let_tmp_rhs2.dtor_attributes; + Dafny.ISequence> _9___v125 = _let_tmp_rhs2.dtor_properMethods; + Dafny.ISequence _10___v126 = _let_tmp_rhs2.dtor_extendedTypes; + Std.Wrappers._IOption _11_nativeFromType; + _11_nativeFromType = DCOMP.COMP.NewtypeToRustType(_5_b, _6_range); + if (object.Equals(_5_b, _2_toTpe)) { + RAST._IExpr _12_recursiveGen; + DCOMP._IOwnership _13_recOwned; + Dafny.ISet> _14_recIdents; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out0, out _out1, out _out2); + _12_recursiveGen = _out0; + _13_recOwned = _out1; + _14_recIdents = _out2; + readIdents = _14_recIdents; + Std.Wrappers._IOption _source0 = _11_nativeFromType; { - if (_source92.is_Some) { - RAST._IType _1723_v = _source92.dtor_value; - RAST._IType _1724_toTpeRust; - RAST._IType _out254; - _out254 = (this).GenType(_1710_toTpe, DCOMP.GenTypeContext.@default()); - _1724_toTpeRust = _out254; - r = (((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("Into"))).ApplyType(Dafny.Sequence.FromElements(_1724_toTpeRust))).MSel(Dafny.Sequence.UnicodeFromString("into"))).Apply(Dafny.Sequence.FromElements(_1720_recursiveGen)); - RAST._IExpr _out255; - DCOMP._IOwnership _out256; - (this).FromOwned(r, expectedOwnership, out _out255, out _out256); - r = _out255; - resultingOwnership = _out256; - goto after_match38; + if (_source0.is_Some) { + RAST._IType _15_v = _source0.dtor_value; + RAST._IType _16_toTpeRust; + RAST._IType _out3; + _out3 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.@default()); + _16_toTpeRust = _out3; + r = (((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("Into"))).ApplyType(Dafny.Sequence.FromElements(_16_toTpeRust))).MSel(Dafny.Sequence.UnicodeFromString("into"))).Apply(Dafny.Sequence.FromElements(_12_recursiveGen)); + RAST._IExpr _out4; + DCOMP._IOwnership _out5; + (this).FromOwned(r, expectedOwnership, out _out4, out _out5); + r = _out4; + resultingOwnership = _out5; + goto after_match0; } } { - if (_1715_erase) { - r = _1720_recursiveGen; + if (_7_erase) { + r = _12_recursiveGen; } else { - r = (_1720_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")); + r = (_12_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0")); } - RAST._IExpr _out257; - DCOMP._IOwnership _out258; - (this).FromOwnership(r, _1721_recOwned, expectedOwnership, out _out257, out _out258); - r = _out257; - resultingOwnership = _out258; + RAST._IExpr _out6; + DCOMP._IOwnership _out7; + (this).FromOwnership(r, _13_recOwned, expectedOwnership, out _out6, out _out7); + r = _out6; + resultingOwnership = _out7; } - after_match38: ; + after_match0: ; } else { - if ((_1719_nativeFromType).is_Some) { - if (object.Equals(_1710_toTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { - RAST._IExpr _1725_recursiveGen; - DCOMP._IOwnership _1726_recOwned; - Dafny.ISet> _1727_recIdents; - RAST._IExpr _out259; - DCOMP._IOwnership _out260; - Dafny.ISet> _out261; - (this).GenExpr(_1708_expr, selfIdent, env, expectedOwnership, out _out259, out _out260, out _out261); - _1725_recursiveGen = _out259; - _1726_recOwned = _out260; - _1727_recIdents = _out261; - RAST._IExpr _out262; - DCOMP._IOwnership _out263; - (this).FromOwnership(((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(RAST.Expr.create_TypeAscription(_1725_recursiveGen, (this).DafnyCharUnderlying)), _1726_recOwned, expectedOwnership, out _out262, out _out263); - r = _out262; - resultingOwnership = _out263; - readIdents = _1727_recIdents; + if ((_11_nativeFromType).is_Some) { + if (object.Equals(_2_toTpe, DAST.Type.create_Primitive(DAST.Primitive.create_Char()))) { + RAST._IExpr _17_recursiveGen; + DCOMP._IOwnership _18_recOwned; + Dafny.ISet> _19_recIdents; + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + Dafny.ISet> _out10; + (this).GenExpr(_0_expr, selfIdent, env, expectedOwnership, out _out8, out _out9, out _out10); + _17_recursiveGen = _out8; + _18_recOwned = _out9; + _19_recIdents = _out10; + RAST._IExpr _out11; + DCOMP._IOwnership _out12; + (this).FromOwnership(((RAST.__default.dafny__runtime).MSel((this).DafnyChar)).Apply1(RAST.Expr.create_TypeAscription(_17_recursiveGen, (this).DafnyCharUnderlying)), _18_recOwned, expectedOwnership, out _out11, out _out12); + r = _out11; + resultingOwnership = _out12; + readIdents = _19_recIdents; return ; } } - RAST._IExpr _out264; - DCOMP._IOwnership _out265; - Dafny.ISet> _out266; - (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_1708_expr, _1709_fromTpe, _1713_b), _1713_b, _1710_toTpe), selfIdent, env, expectedOwnership, out _out264, out _out265, out _out266); - r = _out264; - resultingOwnership = _out265; - readIdents = _out266; + RAST._IExpr _out13; + DCOMP._IOwnership _out14; + Dafny.ISet> _out15; + (this).GenExpr(DAST.Expression.create_Convert(DAST.Expression.create_Convert(_0_expr, _1_fromTpe, _5_b), _5_b, _2_toTpe), selfIdent, env, expectedOwnership, out _out13, out _out14, out _out15); + r = _out13; + resultingOwnership = _out14; + readIdents = _out15; } } public bool IsBuiltinCollection(DAST._IType typ) { @@ -4264,17 +4267,17 @@ public bool SameTypesButDifferentTypeParameters(DAST._IType fromType, RAST._ITyp if ((new BigInteger((xs).Count)).Sign == 0) { return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__T>.FromElements()); } else { - Std.Wrappers._IResult<__T, __E> _1728_valueOrError0 = (xs).Select(BigInteger.Zero); - if ((_1728_valueOrError0).IsFailure()) { - return (_1728_valueOrError0).PropagateFailure>(); + Std.Wrappers._IResult<__T, __E> _0_valueOrError0 = (xs).Select(BigInteger.Zero); + if ((_0_valueOrError0).IsFailure()) { + return (_0_valueOrError0).PropagateFailure>(); } else { - __T _1729_head = (_1728_valueOrError0).Extract(); - Std.Wrappers._IResult, __E> _1730_valueOrError1 = (this).SeqResultToResultSeq<__T, __E>((xs).Drop(BigInteger.One)); - if ((_1730_valueOrError1).IsFailure()) { - return (_1730_valueOrError1).PropagateFailure>(); + __T _1_head = (_0_valueOrError0).Extract(); + Std.Wrappers._IResult, __E> _2_valueOrError1 = (this).SeqResultToResultSeq<__T, __E>((xs).Drop(BigInteger.One)); + if ((_2_valueOrError1).IsFailure()) { + return (_2_valueOrError1).PropagateFailure>(); } else { - Dafny.ISequence<__T> _1731_tail = (_1730_valueOrError1).Extract(); - return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__T>.Concat(Dafny.Sequence<__T>.FromElements(_1729_head), _1731_tail)); + Dafny.ISequence<__T> _3_tail = (_2_valueOrError1).Extract(); + return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__T>.Concat(Dafny.Sequence<__T>.FromElements(_1_head), _3_tail)); } } } @@ -4287,69 +4290,69 @@ public bool SameTypesButDifferentTypeParameters(DAST._IType fromType, RAST._ITyp if (!(((toTpe).ObjectOrPointerUnderlying()).is_DynType)) { return Std.Wrappers.Result,RAST._IExpr>>>.create_Failure(_System.Tuple5,RAST._IExpr>>.create(fromType, fromTpe, toType, toTpe, typeParams)); } else { - RAST._IType _1732_fromTpeUnderlying = (fromTpe).ObjectOrPointerUnderlying(); - RAST._IType _1733_toTpeUnderlying = (toTpe).ObjectOrPointerUnderlying(); - return Std.Wrappers.Result,RAST._IExpr>>>.create_Success((((RAST.__default.dafny__runtime).MSel((this).upcast)).ApplyType(Dafny.Sequence.FromElements(_1732_fromTpeUnderlying, _1733_toTpeUnderlying))).Apply(Dafny.Sequence.FromElements())); + RAST._IType _0_fromTpeUnderlying = (fromTpe).ObjectOrPointerUnderlying(); + RAST._IType _1_toTpeUnderlying = (toTpe).ObjectOrPointerUnderlying(); + return Std.Wrappers.Result,RAST._IExpr>>>.create_Success((((RAST.__default.dafny__runtime).MSel((this).upcast)).ApplyType(Dafny.Sequence.FromElements(_0_fromTpeUnderlying, _1_toTpeUnderlying))).Apply(Dafny.Sequence.FromElements())); } } else if ((typeParams).Contains(_System.Tuple2.create(fromTpe, toTpe))) { return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(Dafny.Map<_System._ITuple2, RAST._IExpr>.Select(typeParams,_System.Tuple2.create(fromTpe, toTpe))); } else if (((fromTpe).IsRc()) && ((toTpe).IsRc())) { - Std.Wrappers._IResult,RAST._IExpr>>> _1734_valueOrError0 = (this).UpcastConversionLambda(fromType, (fromTpe).RcUnderlying(), toType, (toTpe).RcUnderlying(), typeParams); - if ((_1734_valueOrError0).IsFailure()) { - return (_1734_valueOrError0).PropagateFailure(); + Std.Wrappers._IResult,RAST._IExpr>>> _2_valueOrError0 = (this).UpcastConversionLambda(fromType, (fromTpe).RcUnderlying(), toType, (toTpe).RcUnderlying(), typeParams); + if ((_2_valueOrError0).IsFailure()) { + return (_2_valueOrError0).PropagateFailure(); } else { - RAST._IExpr _1735_lambda = (_1734_valueOrError0).Extract(); + RAST._IExpr _3_lambda = (_2_valueOrError0).Extract(); if ((fromType).is_Arrow) { - return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(_1735_lambda); + return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(_3_lambda); } else { - return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("rc_coerce"))).Apply1(_1735_lambda)); + return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("rc_coerce"))).Apply1(_3_lambda)); } } } else if ((this).SameTypesButDifferentTypeParameters(fromType, fromTpe, toType, toTpe)) { - Std.Wrappers._IResult, _System._ITuple5,RAST._IExpr>>> _1736_valueOrError1 = (this).SeqResultToResultSeq,RAST._IExpr>>>(((System.Func,RAST._IExpr>>>>>) (() => { + Std.Wrappers._IResult, _System._ITuple5,RAST._IExpr>>> _4_valueOrError1 = (this).SeqResultToResultSeq,RAST._IExpr>>>(((System.Func,RAST._IExpr>>>>>) (() => { BigInteger dim12 = new BigInteger(((fromTpe).dtor_arguments).Count); var arr12 = new Std.Wrappers._IResult,RAST._IExpr>>>[Dafny.Helpers.ToIntChecked(dim12, "array size exceeds memory limit")]; for (int i12 = 0; i12 < dim12; i12++) { - var _1737_i = (BigInteger) i12; - arr12[(int)(_1737_i)] = (this).UpcastConversionLambda((((fromType).dtor_resolved).dtor_typeArgs).Select(_1737_i), ((fromTpe).dtor_arguments).Select(_1737_i), (((toType).dtor_resolved).dtor_typeArgs).Select(_1737_i), ((toTpe).dtor_arguments).Select(_1737_i), typeParams); + var _5_i = (BigInteger) i12; + arr12[(int)(_5_i)] = (this).UpcastConversionLambda((((fromType).dtor_resolved).dtor_typeArgs).Select(_5_i), ((fromTpe).dtor_arguments).Select(_5_i), (((toType).dtor_resolved).dtor_typeArgs).Select(_5_i), ((toTpe).dtor_arguments).Select(_5_i), typeParams); } return Dafny.Sequence,RAST._IExpr>>>>.FromArray(arr12); }))()); - if ((_1736_valueOrError1).IsFailure()) { - return (_1736_valueOrError1).PropagateFailure(); + if ((_4_valueOrError1).IsFailure()) { + return (_4_valueOrError1).PropagateFailure(); } else { - Dafny.ISequence _1738_lambdas = (_1736_valueOrError1).Extract(); + Dafny.ISequence _6_lambdas = (_4_valueOrError1).Extract(); return Std.Wrappers.Result,RAST._IExpr>>>.create_Success((((RAST.Expr.create_ExprFromType((fromTpe).dtor_baseName)).ApplyType(((System.Func>) (() => { BigInteger dim13 = new BigInteger(((fromTpe).dtor_arguments).Count); var arr13 = new RAST._IType[Dafny.Helpers.ToIntChecked(dim13, "array size exceeds memory limit")]; for (int i13 = 0; i13 < dim13; i13++) { - var _1739_i = (BigInteger) i13; - arr13[(int)(_1739_i)] = ((fromTpe).dtor_arguments).Select(_1739_i); + var _7_i = (BigInteger) i13; + arr13[(int)(_7_i)] = ((fromTpe).dtor_arguments).Select(_7_i); } return Dafny.Sequence.FromArray(arr13); -}))())).MSel(Dafny.Sequence.UnicodeFromString("coerce"))).Apply(_1738_lambdas)); +}))())).MSel(Dafny.Sequence.UnicodeFromString("coerce"))).Apply(_6_lambdas)); } } else if (((((fromTpe).IsBuiltinCollection()) && ((toTpe).IsBuiltinCollection())) && ((this).IsBuiltinCollection(fromType))) && ((this).IsBuiltinCollection(toType))) { - RAST._IType _1740_newFromTpe = (fromTpe).GetBuiltinCollectionElement(); - RAST._IType _1741_newToTpe = (toTpe).GetBuiltinCollectionElement(); - DAST._IType _1742_newFromType = (this).GetBuiltinCollectionElement(fromType); - DAST._IType _1743_newToType = (this).GetBuiltinCollectionElement(toType); - Std.Wrappers._IResult,RAST._IExpr>>> _1744_valueOrError2 = (this).UpcastConversionLambda(_1742_newFromType, _1740_newFromTpe, _1743_newToType, _1741_newToTpe, typeParams); - if ((_1744_valueOrError2).IsFailure()) { - return (_1744_valueOrError2).PropagateFailure(); + RAST._IType _8_newFromTpe = (fromTpe).GetBuiltinCollectionElement(); + RAST._IType _9_newToTpe = (toTpe).GetBuiltinCollectionElement(); + DAST._IType _10_newFromType = (this).GetBuiltinCollectionElement(fromType); + DAST._IType _11_newToType = (this).GetBuiltinCollectionElement(toType); + Std.Wrappers._IResult,RAST._IExpr>>> _12_valueOrError2 = (this).UpcastConversionLambda(_10_newFromType, _8_newFromTpe, _11_newToType, _9_newToTpe, typeParams); + if ((_12_valueOrError2).IsFailure()) { + return (_12_valueOrError2).PropagateFailure(); } else { - RAST._IExpr _1745_coerceArg = (_1744_valueOrError2).Extract(); - RAST._IExpr _1746_collectionType = (RAST.__default.dafny__runtime).MSel(((fromTpe).dtor_baseName).dtor_name); - RAST._IExpr _1747_baseType = (((((fromTpe).dtor_baseName).dtor_name).Equals(Dafny.Sequence.UnicodeFromString("Map"))) ? ((_1746_collectionType).ApplyType(Dafny.Sequence.FromElements(((fromTpe).dtor_arguments).Select(BigInteger.Zero), _1740_newFromTpe))) : ((_1746_collectionType).ApplyType(Dafny.Sequence.FromElements(_1740_newFromTpe)))); - return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(((_1747_baseType).MSel(Dafny.Sequence.UnicodeFromString("coerce"))).Apply1(_1745_coerceArg)); + RAST._IExpr _13_coerceArg = (_12_valueOrError2).Extract(); + RAST._IExpr _14_collectionType = (RAST.__default.dafny__runtime).MSel(((fromTpe).dtor_baseName).dtor_name); + RAST._IExpr _15_baseType = (((((fromTpe).dtor_baseName).dtor_name).Equals(Dafny.Sequence.UnicodeFromString("Map"))) ? ((_14_collectionType).ApplyType(Dafny.Sequence.FromElements(((fromTpe).dtor_arguments).Select(BigInteger.Zero), _8_newFromTpe))) : ((_14_collectionType).ApplyType(Dafny.Sequence.FromElements(_8_newFromTpe)))); + return Std.Wrappers.Result,RAST._IExpr>>>.create_Success(((_15_baseType).MSel(Dafny.Sequence.UnicodeFromString("coerce"))).Apply1(_13_coerceArg)); } } else if ((((((((((fromTpe).is_DynType) && (((fromTpe).dtor_underlying).is_FnType)) && ((toTpe).is_DynType)) && (((toTpe).dtor_underlying).is_FnType)) && ((((fromTpe).dtor_underlying).dtor_arguments).Equals(((toTpe).dtor_underlying).dtor_arguments))) && ((fromType).is_Arrow)) && ((toType).is_Arrow)) && ((new BigInteger((((fromTpe).dtor_underlying).dtor_arguments).Count)) == (BigInteger.One))) && (((((fromTpe).dtor_underlying).dtor_arguments).Select(BigInteger.Zero)).is_Borrowed)) { - Std.Wrappers._IResult,RAST._IExpr>>> _1748_valueOrError3 = (this).UpcastConversionLambda((fromType).dtor_result, ((fromTpe).dtor_underlying).dtor_returnType, (toType).dtor_result, ((toTpe).dtor_underlying).dtor_returnType, typeParams); - if ((_1748_valueOrError3).IsFailure()) { - return (_1748_valueOrError3).PropagateFailure(); + Std.Wrappers._IResult,RAST._IExpr>>> _16_valueOrError3 = (this).UpcastConversionLambda((fromType).dtor_result, ((fromTpe).dtor_underlying).dtor_returnType, (toType).dtor_result, ((toTpe).dtor_underlying).dtor_returnType, typeParams); + if ((_16_valueOrError3).IsFailure()) { + return (_16_valueOrError3).PropagateFailure(); } else { - RAST._IExpr _1749_lambda = (_1748_valueOrError3).Extract(); - return Std.Wrappers.Result,RAST._IExpr>>>.create_Success((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("fn1_coerce"))).ApplyType(Dafny.Sequence.FromElements(((((fromTpe).dtor_underlying).dtor_arguments).Select(BigInteger.Zero)).dtor_underlying, ((fromTpe).dtor_underlying).dtor_returnType, ((toTpe).dtor_underlying).dtor_returnType))).Apply1(_1749_lambda)); + RAST._IExpr _17_lambda = (_16_valueOrError3).Extract(); + return Std.Wrappers.Result,RAST._IExpr>>>.create_Success((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("fn1_coerce"))).ApplyType(Dafny.Sequence.FromElements(((((fromTpe).dtor_underlying).dtor_arguments).Select(BigInteger.Zero)).dtor_underlying, ((fromTpe).dtor_underlying).dtor_returnType, ((toTpe).dtor_underlying).dtor_returnType))).Apply1(_17_lambda)); } } else { return Std.Wrappers.Result,RAST._IExpr>>>.create_Failure(_System.Tuple5,RAST._IExpr>>.create(fromType, fromTpe, toType, toTpe, typeParams)); @@ -4368,87 +4371,87 @@ public void GenExprConvertOther(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _let_tmp_rhs63 = e; - DAST._IExpression _1750_expr = _let_tmp_rhs63.dtor_value; - DAST._IType _1751_fromTpe = _let_tmp_rhs63.dtor_from; - DAST._IType _1752_toTpe = _let_tmp_rhs63.dtor_typ; - RAST._IType _1753_fromTpeGen; - RAST._IType _out267; - _out267 = (this).GenType(_1751_fromTpe, DCOMP.GenTypeContext.InBinding()); - _1753_fromTpeGen = _out267; - RAST._IType _1754_toTpeGen; - RAST._IType _out268; - _out268 = (this).GenType(_1752_toTpe, DCOMP.GenTypeContext.InBinding()); - _1754_toTpeGen = _out268; - Std.Wrappers._IResult,RAST._IExpr>>> _1755_upcastConverter; - _1755_upcastConverter = (this).UpcastConversionLambda(_1751_fromTpe, _1753_fromTpeGen, _1752_toTpe, _1754_toTpeGen, Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements()); - if ((_1755_upcastConverter).is_Success) { - RAST._IExpr _1756_conversionLambda; - _1756_conversionLambda = (_1755_upcastConverter).dtor_value; - RAST._IExpr _1757_recursiveGen; - DCOMP._IOwnership _1758_recOwned; - Dafny.ISet> _1759_recIdents; - RAST._IExpr _out269; - DCOMP._IOwnership _out270; - Dafny.ISet> _out271; - (this).GenExpr(_1750_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out269, out _out270, out _out271); - _1757_recursiveGen = _out269; - _1758_recOwned = _out270; - _1759_recIdents = _out271; - readIdents = _1759_recIdents; - r = (_1756_conversionLambda).Apply1(_1757_recursiveGen); - RAST._IExpr _out272; - DCOMP._IOwnership _out273; - (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out272, out _out273); - r = _out272; - resultingOwnership = _out273; - } else if ((this).IsDowncastConversion(_1753_fromTpeGen, _1754_toTpeGen)) { - RAST._IExpr _1760_recursiveGen; - DCOMP._IOwnership _1761_recOwned; - Dafny.ISet> _1762_recIdents; - RAST._IExpr _out274; - DCOMP._IOwnership _out275; - Dafny.ISet> _out276; - (this).GenExpr(_1750_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out274, out _out275, out _out276); - _1760_recursiveGen = _out274; - _1761_recOwned = _out275; - _1762_recIdents = _out276; - readIdents = _1762_recIdents; - _1754_toTpeGen = (_1754_toTpeGen).ObjectOrPointerUnderlying(); - r = ((RAST.__default.dafny__runtime).MSel((this).downcast)).Apply(Dafny.Sequence.FromElements(_1760_recursiveGen, RAST.Expr.create_ExprFromType(_1754_toTpeGen))); - RAST._IExpr _out277; - DCOMP._IOwnership _out278; - (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out277, out _out278); - r = _out277; - resultingOwnership = _out278; + DAST._IExpression _let_tmp_rhs0 = e; + DAST._IExpression _0_expr = _let_tmp_rhs0.dtor_value; + DAST._IType _1_fromTpe = _let_tmp_rhs0.dtor_from; + DAST._IType _2_toTpe = _let_tmp_rhs0.dtor_typ; + RAST._IType _3_fromTpeGen; + RAST._IType _out0; + _out0 = (this).GenType(_1_fromTpe, DCOMP.GenTypeContext.InBinding()); + _3_fromTpeGen = _out0; + RAST._IType _4_toTpeGen; + RAST._IType _out1; + _out1 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.InBinding()); + _4_toTpeGen = _out1; + Std.Wrappers._IResult,RAST._IExpr>>> _5_upcastConverter; + _5_upcastConverter = (this).UpcastConversionLambda(_1_fromTpe, _3_fromTpeGen, _2_toTpe, _4_toTpeGen, Dafny.Map<_System._ITuple2, RAST._IExpr>.FromElements()); + if ((_5_upcastConverter).is_Success) { + RAST._IExpr _6_conversionLambda; + _6_conversionLambda = (_5_upcastConverter).dtor_value; + RAST._IExpr _7_recursiveGen; + DCOMP._IOwnership _8_recOwned; + Dafny.ISet> _9_recIdents; + RAST._IExpr _out2; + DCOMP._IOwnership _out3; + Dafny.ISet> _out4; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out2, out _out3, out _out4); + _7_recursiveGen = _out2; + _8_recOwned = _out3; + _9_recIdents = _out4; + readIdents = _9_recIdents; + r = (_6_conversionLambda).Apply1(_7_recursiveGen); + RAST._IExpr _out5; + DCOMP._IOwnership _out6; + (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out5, out _out6); + r = _out5; + resultingOwnership = _out6; + } else if ((this).IsDowncastConversion(_3_fromTpeGen, _4_toTpeGen)) { + RAST._IExpr _10_recursiveGen; + DCOMP._IOwnership _11_recOwned; + Dafny.ISet> _12_recIdents; + RAST._IExpr _out7; + DCOMP._IOwnership _out8; + Dafny.ISet> _out9; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out7, out _out8, out _out9); + _10_recursiveGen = _out7; + _11_recOwned = _out8; + _12_recIdents = _out9; + readIdents = _12_recIdents; + _4_toTpeGen = (_4_toTpeGen).ObjectOrPointerUnderlying(); + r = ((RAST.__default.dafny__runtime).MSel((this).downcast)).Apply(Dafny.Sequence.FromElements(_10_recursiveGen, RAST.Expr.create_ExprFromType(_4_toTpeGen))); + RAST._IExpr _out10; + DCOMP._IOwnership _out11; + (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out10, out _out11); + r = _out10; + resultingOwnership = _out11; } else { - RAST._IExpr _1763_recursiveGen; - DCOMP._IOwnership _1764_recOwned; - Dafny.ISet> _1765_recIdents; - RAST._IExpr _out279; - DCOMP._IOwnership _out280; - Dafny.ISet> _out281; - (this).GenExpr(_1750_expr, selfIdent, env, expectedOwnership, out _out279, out _out280, out _out281); - _1763_recursiveGen = _out279; - _1764_recOwned = _out280; - _1765_recIdents = _out281; - readIdents = _1765_recIdents; - Std.Wrappers._IResult,RAST._IExpr>>> _let_tmp_rhs64 = _1755_upcastConverter; - _System._ITuple5,RAST._IExpr>> _let_tmp_rhs65 = _let_tmp_rhs64.dtor_error; - DAST._IType _1766_fromType = _let_tmp_rhs65.dtor__0; - RAST._IType _1767_fromTpeGen = _let_tmp_rhs65.dtor__1; - DAST._IType _1768_toType = _let_tmp_rhs65.dtor__2; - RAST._IType _1769_toTpeGen = _let_tmp_rhs65.dtor__3; - Dafny.IMap<_System._ITuple2,RAST._IExpr> _1770_m = _let_tmp_rhs65.dtor__4; - Dafny.ISequence _1771_msg; - _1771_msg = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("/* Coercion from "), (_1767_fromTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" to ")), (_1769_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" not yet implemented */")); - (this).error = Std.Wrappers.Option>.create_Some(_1771_msg); - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat((_1763_recursiveGen)._ToString(DCOMP.__default.IND), _1771_msg)); - RAST._IExpr _out282; - DCOMP._IOwnership _out283; - (this).FromOwnership(r, _1764_recOwned, expectedOwnership, out _out282, out _out283); - r = _out282; - resultingOwnership = _out283; + RAST._IExpr _13_recursiveGen; + DCOMP._IOwnership _14_recOwned; + Dafny.ISet> _15_recIdents; + RAST._IExpr _out12; + DCOMP._IOwnership _out13; + Dafny.ISet> _out14; + (this).GenExpr(_0_expr, selfIdent, env, expectedOwnership, out _out12, out _out13, out _out14); + _13_recursiveGen = _out12; + _14_recOwned = _out13; + _15_recIdents = _out14; + readIdents = _15_recIdents; + Std.Wrappers._IResult,RAST._IExpr>>> _let_tmp_rhs1 = _5_upcastConverter; + _System._ITuple5,RAST._IExpr>> _let_tmp_rhs2 = _let_tmp_rhs1.dtor_error; + DAST._IType _16_fromType = _let_tmp_rhs2.dtor__0; + RAST._IType _17_fromTpeGen = _let_tmp_rhs2.dtor__1; + DAST._IType _18_toType = _let_tmp_rhs2.dtor__2; + RAST._IType _19_toTpeGen = _let_tmp_rhs2.dtor__3; + Dafny.IMap<_System._ITuple2,RAST._IExpr> _20_m = _let_tmp_rhs2.dtor__4; + Dafny.ISequence _21_msg; + _21_msg = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("/* Coercion from "), (_17_fromTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" to ")), (_19_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" not yet implemented */")); + (this).error = Std.Wrappers.Option>.create_Some(_21_msg); + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat((_13_recursiveGen)._ToString(DCOMP.__default.IND), _21_msg)); + RAST._IExpr _out15; + DCOMP._IOwnership _out16; + (this).FromOwnership(r, _14_recOwned, expectedOwnership, out _out15, out _out16); + r = _out15; + resultingOwnership = _out16; } } public void GenExprConvert(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnvironment env, DCOMP._IOwnership expectedOwnership, out RAST._IExpr r, out DCOMP._IOwnership resultingOwnership, out Dafny.ISet> readIdents) @@ -4456,334 +4459,334 @@ public void GenExprConvert(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOM r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _let_tmp_rhs66 = e; - DAST._IExpression _1772_expr = _let_tmp_rhs66.dtor_value; - DAST._IType _1773_fromTpe = _let_tmp_rhs66.dtor_from; - DAST._IType _1774_toTpe = _let_tmp_rhs66.dtor_typ; - if (object.Equals(_1773_fromTpe, _1774_toTpe)) { - RAST._IExpr _1775_recursiveGen; - DCOMP._IOwnership _1776_recOwned; - Dafny.ISet> _1777_recIdents; - RAST._IExpr _out284; - DCOMP._IOwnership _out285; - Dafny.ISet> _out286; - (this).GenExpr(_1772_expr, selfIdent, env, expectedOwnership, out _out284, out _out285, out _out286); - _1775_recursiveGen = _out284; - _1776_recOwned = _out285; - _1777_recIdents = _out286; - r = _1775_recursiveGen; - RAST._IExpr _out287; - DCOMP._IOwnership _out288; - (this).FromOwnership(r, _1776_recOwned, expectedOwnership, out _out287, out _out288); - r = _out287; - resultingOwnership = _out288; - readIdents = _1777_recIdents; + DAST._IExpression _let_tmp_rhs0 = e; + DAST._IExpression _0_expr = _let_tmp_rhs0.dtor_value; + DAST._IType _1_fromTpe = _let_tmp_rhs0.dtor_from; + DAST._IType _2_toTpe = _let_tmp_rhs0.dtor_typ; + if (object.Equals(_1_fromTpe, _2_toTpe)) { + RAST._IExpr _3_recursiveGen; + DCOMP._IOwnership _4_recOwned; + Dafny.ISet> _5_recIdents; + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExpr(_0_expr, selfIdent, env, expectedOwnership, out _out0, out _out1, out _out2); + _3_recursiveGen = _out0; + _4_recOwned = _out1; + _5_recIdents = _out2; + r = _3_recursiveGen; + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + (this).FromOwnership(r, _4_recOwned, expectedOwnership, out _out3, out _out4); + r = _out3; + resultingOwnership = _out4; + readIdents = _5_recIdents; } else { - _System._ITuple2 _source93 = _System.Tuple2.create(_1773_fromTpe, _1774_toTpe); + _System._ITuple2 _source0 = _System.Tuple2.create(_1_fromTpe, _2_toTpe); { - DAST._IType _10 = _source93.dtor__1; + DAST._IType _10 = _source0.dtor__1; if (_10.is_UserDefined) { - DAST._IResolvedType resolved2 = _10.dtor_resolved; - DAST._IResolvedTypeBase kind2 = resolved2.dtor_kind; - if (kind2.is_Newtype) { - DAST._IType _1778_b = kind2.dtor_baseType; - DAST._INewtypeRange _1779_range = kind2.dtor_range; - bool _1780_erase = kind2.dtor_erase; - Dafny.ISequence _1781_attributes = resolved2.dtor_attributes; + DAST._IResolvedType resolved0 = _10.dtor_resolved; + DAST._IResolvedTypeBase kind0 = resolved0.dtor_kind; + if (kind0.is_Newtype) { + DAST._IType _6_b = kind0.dtor_baseType; + DAST._INewtypeRange _7_range = kind0.dtor_range; + bool _8_erase = kind0.dtor_erase; + Dafny.ISequence _9_attributes = resolved0.dtor_attributes; { - RAST._IExpr _out289; - DCOMP._IOwnership _out290; - Dafny.ISet> _out291; - (this).GenExprConvertToNewtype(e, selfIdent, env, expectedOwnership, out _out289, out _out290, out _out291); - r = _out289; - resultingOwnership = _out290; - readIdents = _out291; + RAST._IExpr _out5; + DCOMP._IOwnership _out6; + Dafny.ISet> _out7; + (this).GenExprConvertToNewtype(e, selfIdent, env, expectedOwnership, out _out5, out _out6, out _out7); + r = _out5; + resultingOwnership = _out6; + readIdents = _out7; } - goto after_match39; + goto after_match0; } } } { - DAST._IType _00 = _source93.dtor__0; + DAST._IType _00 = _source0.dtor__0; if (_00.is_UserDefined) { - DAST._IResolvedType resolved3 = _00.dtor_resolved; - DAST._IResolvedTypeBase kind3 = resolved3.dtor_kind; - if (kind3.is_Newtype) { - DAST._IType _1782_b = kind3.dtor_baseType; - DAST._INewtypeRange _1783_range = kind3.dtor_range; - bool _1784_erase = kind3.dtor_erase; - Dafny.ISequence _1785_attributes = resolved3.dtor_attributes; + DAST._IResolvedType resolved1 = _00.dtor_resolved; + DAST._IResolvedTypeBase kind1 = resolved1.dtor_kind; + if (kind1.is_Newtype) { + DAST._IType _10_b = kind1.dtor_baseType; + DAST._INewtypeRange _11_range = kind1.dtor_range; + bool _12_erase = kind1.dtor_erase; + Dafny.ISequence _13_attributes = resolved1.dtor_attributes; { - RAST._IExpr _out292; - DCOMP._IOwnership _out293; - Dafny.ISet> _out294; - (this).GenExprConvertFromNewtype(e, selfIdent, env, expectedOwnership, out _out292, out _out293, out _out294); - r = _out292; - resultingOwnership = _out293; - readIdents = _out294; + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + Dafny.ISet> _out10; + (this).GenExprConvertFromNewtype(e, selfIdent, env, expectedOwnership, out _out8, out _out9, out _out10); + r = _out8; + resultingOwnership = _out9; + readIdents = _out10; } - goto after_match39; + goto after_match0; } } } { - DAST._IType _01 = _source93.dtor__0; + DAST._IType _01 = _source0.dtor__0; if (_01.is_Primitive) { - DAST._IPrimitive _h72 = _01.dtor_Primitive_a0; - if (_h72.is_Int) { - DAST._IType _11 = _source93.dtor__1; + DAST._IPrimitive _h70 = _01.dtor_Primitive_a0; + if (_h70.is_Int) { + DAST._IType _11 = _source0.dtor__1; if (_11.is_Primitive) { - DAST._IPrimitive _h73 = _11.dtor_Primitive_a0; - if (_h73.is_Real) { + DAST._IPrimitive _h71 = _11.dtor_Primitive_a0; + if (_h71.is_Real) { { - RAST._IExpr _1786_recursiveGen; - DCOMP._IOwnership _1787___v137; - Dafny.ISet> _1788_recIdents; - RAST._IExpr _out295; - DCOMP._IOwnership _out296; - Dafny.ISet> _out297; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out295, out _out296, out _out297); - _1786_recursiveGen = _out295; - _1787___v137 = _out296; - _1788_recIdents = _out297; - r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::from_integer("), (_1786_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))); - RAST._IExpr _out298; - DCOMP._IOwnership _out299; - (this).FromOwned(r, expectedOwnership, out _out298, out _out299); - r = _out298; - resultingOwnership = _out299; - readIdents = _1788_recIdents; + RAST._IExpr _14_recursiveGen; + DCOMP._IOwnership _15___v137; + Dafny.ISet> _16_recIdents; + RAST._IExpr _out11; + DCOMP._IOwnership _out12; + Dafny.ISet> _out13; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out11, out _out12, out _out13); + _14_recursiveGen = _out11; + _15___v137 = _out12; + _16_recIdents = _out13; + r = RAST.__default.RcNew(RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::BigRational::from_integer("), (_14_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")")))); + RAST._IExpr _out14; + DCOMP._IOwnership _out15; + (this).FromOwned(r, expectedOwnership, out _out14, out _out15); + r = _out14; + resultingOwnership = _out15; + readIdents = _16_recIdents; } - goto after_match39; + goto after_match0; } } } } } { - DAST._IType _02 = _source93.dtor__0; + DAST._IType _02 = _source0.dtor__0; if (_02.is_Primitive) { - DAST._IPrimitive _h74 = _02.dtor_Primitive_a0; - if (_h74.is_Real) { - DAST._IType _12 = _source93.dtor__1; + DAST._IPrimitive _h72 = _02.dtor_Primitive_a0; + if (_h72.is_Real) { + DAST._IType _12 = _source0.dtor__1; if (_12.is_Primitive) { - DAST._IPrimitive _h75 = _12.dtor_Primitive_a0; - if (_h75.is_Int) { + DAST._IPrimitive _h73 = _12.dtor_Primitive_a0; + if (_h73.is_Int) { { - RAST._IExpr _1789_recursiveGen; - DCOMP._IOwnership _1790___v138; - Dafny.ISet> _1791_recIdents; - RAST._IExpr _out300; - DCOMP._IOwnership _out301; - Dafny.ISet> _out302; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out300, out _out301, out _out302); - _1789_recursiveGen = _out300; - _1790___v138 = _out301; - _1791_recIdents = _out302; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::dafny_rational_to_int("), (_1789_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); - RAST._IExpr _out303; - DCOMP._IOwnership _out304; - (this).FromOwned(r, expectedOwnership, out _out303, out _out304); - r = _out303; - resultingOwnership = _out304; - readIdents = _1791_recIdents; + RAST._IExpr _17_recursiveGen; + DCOMP._IOwnership _18___v138; + Dafny.ISet> _19_recIdents; + RAST._IExpr _out16; + DCOMP._IOwnership _out17; + Dafny.ISet> _out18; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out16, out _out17, out _out18); + _17_recursiveGen = _out16; + _18___v138 = _out17; + _19_recIdents = _out18; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::dafny_rational_to_int("), (_17_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + RAST._IExpr _out19; + DCOMP._IOwnership _out20; + (this).FromOwned(r, expectedOwnership, out _out19, out _out20); + r = _out19; + resultingOwnership = _out20; + readIdents = _19_recIdents; } - goto after_match39; + goto after_match0; } } } } } { - DAST._IType _03 = _source93.dtor__0; + DAST._IType _03 = _source0.dtor__0; if (_03.is_Primitive) { - DAST._IPrimitive _h76 = _03.dtor_Primitive_a0; - if (_h76.is_Int) { - DAST._IType _13 = _source93.dtor__1; + DAST._IPrimitive _h74 = _03.dtor_Primitive_a0; + if (_h74.is_Int) { + DAST._IType _13 = _source0.dtor__1; if (_13.is_Passthrough) { { - RAST._IType _1792_rhsType; - RAST._IType _out305; - _out305 = (this).GenType(_1774_toTpe, DCOMP.GenTypeContext.InBinding()); - _1792_rhsType = _out305; - RAST._IExpr _1793_recursiveGen; - DCOMP._IOwnership _1794___v140; - Dafny.ISet> _1795_recIdents; - RAST._IExpr _out306; - DCOMP._IOwnership _out307; - Dafny.ISet> _out308; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out306, out _out307, out _out308); - _1793_recursiveGen = _out306; - _1794___v140 = _out307; - _1795_recIdents = _out308; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1792_rhsType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_1793_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()"))); - RAST._IExpr _out309; - DCOMP._IOwnership _out310; - (this).FromOwned(r, expectedOwnership, out _out309, out _out310); - r = _out309; - resultingOwnership = _out310; - readIdents = _1795_recIdents; + RAST._IType _20_rhsType; + RAST._IType _out21; + _out21 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.InBinding()); + _20_rhsType = _out21; + RAST._IExpr _21_recursiveGen; + DCOMP._IOwnership _22___v140; + Dafny.ISet> _23_recIdents; + RAST._IExpr _out22; + DCOMP._IOwnership _out23; + Dafny.ISet> _out24; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out22, out _out23, out _out24); + _21_recursiveGen = _out22; + _22___v140 = _out23; + _23_recIdents = _out24; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_20_rhsType)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_21_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap()"))); + RAST._IExpr _out25; + DCOMP._IOwnership _out26; + (this).FromOwned(r, expectedOwnership, out _out25, out _out26); + r = _out25; + resultingOwnership = _out26; + readIdents = _23_recIdents; } - goto after_match39; + goto after_match0; } } } } { - DAST._IType _04 = _source93.dtor__0; + DAST._IType _04 = _source0.dtor__0; if (_04.is_Passthrough) { - DAST._IType _14 = _source93.dtor__1; + DAST._IType _14 = _source0.dtor__1; if (_14.is_Primitive) { - DAST._IPrimitive _h77 = _14.dtor_Primitive_a0; - if (_h77.is_Int) { + DAST._IPrimitive _h75 = _14.dtor_Primitive_a0; + if (_h75.is_Int) { { - RAST._IType _1796_rhsType; - RAST._IType _out311; - _out311 = (this).GenType(_1773_fromTpe, DCOMP.GenTypeContext.InBinding()); - _1796_rhsType = _out311; - RAST._IExpr _1797_recursiveGen; - DCOMP._IOwnership _1798___v142; - Dafny.ISet> _1799_recIdents; - RAST._IExpr _out312; - DCOMP._IOwnership _out313; - Dafny.ISet> _out314; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out312, out _out313, out _out314); - _1797_recursiveGen = _out312; - _1798___v142 = _out313; - _1799_recIdents = _out314; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyInt::new(::std::rc::Rc::new(::dafny_runtime::BigInt::from("), (_1797_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")))"))); - RAST._IExpr _out315; - DCOMP._IOwnership _out316; - (this).FromOwned(r, expectedOwnership, out _out315, out _out316); - r = _out315; - resultingOwnership = _out316; - readIdents = _1799_recIdents; + RAST._IType _24_rhsType; + RAST._IType _out27; + _out27 = (this).GenType(_1_fromTpe, DCOMP.GenTypeContext.InBinding()); + _24_rhsType = _out27; + RAST._IExpr _25_recursiveGen; + DCOMP._IOwnership _26___v142; + Dafny.ISet> _27_recIdents; + RAST._IExpr _out28; + DCOMP._IOwnership _out29; + Dafny.ISet> _out30; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out28, out _out29, out _out30); + _25_recursiveGen = _out28; + _26___v142 = _out29; + _27_recIdents = _out30; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::DafnyInt::new(::std::rc::Rc::new(::dafny_runtime::BigInt::from("), (_25_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")))"))); + RAST._IExpr _out31; + DCOMP._IOwnership _out32; + (this).FromOwned(r, expectedOwnership, out _out31, out _out32); + r = _out31; + resultingOwnership = _out32; + readIdents = _27_recIdents; } - goto after_match39; + goto after_match0; } } } } { - DAST._IType _05 = _source93.dtor__0; + DAST._IType _05 = _source0.dtor__0; if (_05.is_Primitive) { - DAST._IPrimitive _h78 = _05.dtor_Primitive_a0; - if (_h78.is_Int) { - DAST._IType _15 = _source93.dtor__1; + DAST._IPrimitive _h76 = _05.dtor_Primitive_a0; + if (_h76.is_Int) { + DAST._IType _15 = _source0.dtor__1; if (_15.is_Primitive) { - DAST._IPrimitive _h79 = _15.dtor_Primitive_a0; - if (_h79.is_Char) { + DAST._IPrimitive _h77 = _15.dtor_Primitive_a0; + if (_h77.is_Char) { { - RAST._IType _1800_rhsType; - RAST._IType _out317; - _out317 = (this).GenType(_1774_toTpe, DCOMP.GenTypeContext.InBinding()); - _1800_rhsType = _out317; - RAST._IExpr _1801_recursiveGen; - DCOMP._IOwnership _1802___v143; - Dafny.ISet> _1803_recIdents; - RAST._IExpr _out318; - DCOMP._IOwnership _out319; - Dafny.ISet> _out320; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out318, out _out319, out _out320); - _1801_recursiveGen = _out318; - _1802___v143 = _out319; - _1803_recIdents = _out320; - 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.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::"), (this).DafnyChar), Dafny.Sequence.UnicodeFromString("(")), (((this).UnicodeChars) ? (Dafny.Sequence.UnicodeFromString("char::from_u32(.UnicodeFromString(".UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_1801_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap())")), (((this).UnicodeChars) ? (Dafny.Sequence.UnicodeFromString(".unwrap())")) : (Dafny.Sequence.UnicodeFromString(""))))); - RAST._IExpr _out321; - DCOMP._IOwnership _out322; - (this).FromOwned(r, expectedOwnership, out _out321, out _out322); - r = _out321; - resultingOwnership = _out322; - readIdents = _1803_recIdents; + RAST._IType _28_rhsType; + RAST._IType _out33; + _out33 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.InBinding()); + _28_rhsType = _out33; + RAST._IExpr _29_recursiveGen; + DCOMP._IOwnership _30___v143; + Dafny.ISet> _31_recIdents; + RAST._IExpr _out34; + DCOMP._IOwnership _out35; + Dafny.ISet> _out36; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out34, out _out35, out _out36); + _29_recursiveGen = _out34; + _30___v143 = _out35; + _31_recIdents = _out36; + 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.Concat(Dafny.Sequence.UnicodeFromString("::dafny_runtime::"), (this).DafnyChar), Dafny.Sequence.UnicodeFromString("(")), (((this).UnicodeChars) ? (Dafny.Sequence.UnicodeFromString("char::from_u32(.UnicodeFromString(".UnicodeFromString(" as ::dafny_runtime::NumCast>::from(")), (_29_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").unwrap())")), (((this).UnicodeChars) ? (Dafny.Sequence.UnicodeFromString(".unwrap())")) : (Dafny.Sequence.UnicodeFromString(""))))); + RAST._IExpr _out37; + DCOMP._IOwnership _out38; + (this).FromOwned(r, expectedOwnership, out _out37, out _out38); + r = _out37; + resultingOwnership = _out38; + readIdents = _31_recIdents; } - goto after_match39; + goto after_match0; } } } } } { - DAST._IType _06 = _source93.dtor__0; + DAST._IType _06 = _source0.dtor__0; if (_06.is_Primitive) { - DAST._IPrimitive _h710 = _06.dtor_Primitive_a0; - if (_h710.is_Char) { - DAST._IType _16 = _source93.dtor__1; + DAST._IPrimitive _h78 = _06.dtor_Primitive_a0; + if (_h78.is_Char) { + DAST._IType _16 = _source0.dtor__1; if (_16.is_Primitive) { - DAST._IPrimitive _h711 = _16.dtor_Primitive_a0; - if (_h711.is_Int) { + DAST._IPrimitive _h79 = _16.dtor_Primitive_a0; + if (_h79.is_Int) { { - RAST._IType _1804_rhsType; - RAST._IType _out323; - _out323 = (this).GenType(_1773_fromTpe, DCOMP.GenTypeContext.InBinding()); - _1804_rhsType = _out323; - RAST._IExpr _1805_recursiveGen; - DCOMP._IOwnership _1806___v144; - Dafny.ISet> _1807_recIdents; - RAST._IExpr _out324; - DCOMP._IOwnership _out325; - Dafny.ISet> _out326; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out324, out _out325, out _out326); - _1805_recursiveGen = _out324; - _1806___v144 = _out325; - _1807_recIdents = _out326; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1((_1805_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0"))); - RAST._IExpr _out327; - DCOMP._IOwnership _out328; - (this).FromOwned(r, expectedOwnership, out _out327, out _out328); - r = _out327; - resultingOwnership = _out328; - readIdents = _1807_recIdents; + RAST._IType _32_rhsType; + RAST._IType _out39; + _out39 = (this).GenType(_1_fromTpe, DCOMP.GenTypeContext.InBinding()); + _32_rhsType = _out39; + RAST._IExpr _33_recursiveGen; + DCOMP._IOwnership _34___v144; + Dafny.ISet> _35_recIdents; + RAST._IExpr _out40; + DCOMP._IOwnership _out41; + Dafny.ISet> _out42; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out40, out _out41, out _out42); + _33_recursiveGen = _out40; + _34___v144 = _out41; + _35_recIdents = _out42; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1((_33_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("0"))); + RAST._IExpr _out43; + DCOMP._IOwnership _out44; + (this).FromOwned(r, expectedOwnership, out _out43, out _out44); + r = _out43; + resultingOwnership = _out44; + readIdents = _35_recIdents; } - goto after_match39; + goto after_match0; } } } } } { - DAST._IType _07 = _source93.dtor__0; + DAST._IType _07 = _source0.dtor__0; if (_07.is_Passthrough) { - DAST._IType _17 = _source93.dtor__1; + DAST._IType _17 = _source0.dtor__1; if (_17.is_Passthrough) { { - RAST._IExpr _1808_recursiveGen; - DCOMP._IOwnership _1809___v147; - Dafny.ISet> _1810_recIdents; - RAST._IExpr _out329; - DCOMP._IOwnership _out330; - Dafny.ISet> _out331; - (this).GenExpr(_1772_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out329, out _out330, out _out331); - _1808_recursiveGen = _out329; - _1809___v147 = _out330; - _1810_recIdents = _out331; - RAST._IType _1811_toTpeGen; - RAST._IType _out332; - _out332 = (this).GenType(_1774_toTpe, DCOMP.GenTypeContext.InBinding()); - _1811_toTpeGen = _out332; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(("), (_1808_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(") as ")), (_1811_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); - RAST._IExpr _out333; - DCOMP._IOwnership _out334; - (this).FromOwned(r, expectedOwnership, out _out333, out _out334); - r = _out333; - resultingOwnership = _out334; - readIdents = _1810_recIdents; + RAST._IExpr _36_recursiveGen; + DCOMP._IOwnership _37___v147; + Dafny.ISet> _38_recIdents; + RAST._IExpr _out45; + DCOMP._IOwnership _out46; + Dafny.ISet> _out47; + (this).GenExpr(_0_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out45, out _out46, out _out47); + _36_recursiveGen = _out45; + _37___v147 = _out46; + _38_recIdents = _out47; + RAST._IType _39_toTpeGen; + RAST._IType _out48; + _out48 = (this).GenType(_2_toTpe, DCOMP.GenTypeContext.InBinding()); + _39_toTpeGen = _out48; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("(("), (_36_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(") as ")), (_39_toTpeGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")"))); + RAST._IExpr _out49; + DCOMP._IOwnership _out50; + (this).FromOwned(r, expectedOwnership, out _out49, out _out50); + r = _out49; + resultingOwnership = _out50; + readIdents = _38_recIdents; } - goto after_match39; + goto after_match0; } } } { { - RAST._IExpr _out335; - DCOMP._IOwnership _out336; - Dafny.ISet> _out337; - (this).GenExprConvertOther(e, selfIdent, env, expectedOwnership, out _out335, out _out336, out _out337); - r = _out335; - resultingOwnership = _out336; - readIdents = _out337; + RAST._IExpr _out51; + DCOMP._IOwnership _out52; + Dafny.ISet> _out53; + (this).GenExprConvertOther(e, selfIdent, env, expectedOwnership, out _out51, out _out52, out _out53); + r = _out51; + resultingOwnership = _out52; + readIdents = _out53; } } - after_match39: ; + after_match0: ; } return ; } @@ -4793,26 +4796,26 @@ public void GenIdent(Dafny.ISequence rName, DCOMP._ISelfInfo selfIde resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; r = RAST.Expr.create_Identifier(rName); - Std.Wrappers._IOption _1812_tpe; - _1812_tpe = (env).GetType(rName); - Std.Wrappers._IOption _1813_placeboOpt; - if ((_1812_tpe).is_Some) { - _1813_placeboOpt = ((_1812_tpe).dtor_value).ExtractMaybePlacebo(); + Std.Wrappers._IOption _0_tpe; + _0_tpe = (env).GetType(rName); + Std.Wrappers._IOption _1_placeboOpt; + if ((_0_tpe).is_Some) { + _1_placeboOpt = ((_0_tpe).dtor_value).ExtractMaybePlacebo(); } else { - _1813_placeboOpt = Std.Wrappers.Option.create_None(); + _1_placeboOpt = Std.Wrappers.Option.create_None(); } - bool _1814_currentlyBorrowed; - _1814_currentlyBorrowed = (env).IsBorrowed(rName); - bool _1815_noNeedOfClone; - _1815_noNeedOfClone = (env).CanReadWithoutClone(rName); - if ((_1813_placeboOpt).is_Some) { + bool _2_currentlyBorrowed; + _2_currentlyBorrowed = (env).IsBorrowed(rName); + bool _3_noNeedOfClone; + _3_noNeedOfClone = (env).CanReadWithoutClone(rName); + if ((_1_placeboOpt).is_Some) { r = ((r).Sel(Dafny.Sequence.UnicodeFromString("read"))).Apply(Dafny.Sequence.FromElements()); - _1814_currentlyBorrowed = false; - _1815_noNeedOfClone = true; - _1812_tpe = Std.Wrappers.Option.create_Some((_1813_placeboOpt).dtor_value); + _2_currentlyBorrowed = false; + _3_noNeedOfClone = true; + _0_tpe = Std.Wrappers.Option.create_Some((_1_placeboOpt).dtor_value); } if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipAutoBorrowed())) { - if (_1814_currentlyBorrowed) { + if (_2_currentlyBorrowed) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else { resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); @@ -4821,7 +4824,7 @@ public void GenIdent(Dafny.ISequence rName, DCOMP._ISelfInfo selfIde if ((rName).Equals(Dafny.Sequence.UnicodeFromString("self"))) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowedMut(); } else { - if (((_1812_tpe).is_Some) && (((_1812_tpe).dtor_value).IsObjectOrPointer())) { + if (((_0_tpe).is_Some) && (((_0_tpe).dtor_value).IsObjectOrPointer())) { r = ((this).modify__macro).Apply1(r); } else { r = RAST.__default.BorrowMut(r); @@ -4829,40 +4832,40 @@ public void GenIdent(Dafny.ISequence rName, DCOMP._ISelfInfo selfIde } resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowedMut(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwned())) { - bool _1816_needObjectFromRef; - _1816_needObjectFromRef = ((((selfIdent).is_ThisTyped) && ((selfIdent).IsSelf())) && (((selfIdent).dtor_rSelfName).Equals(rName))) && (((System.Func)(() => { - DAST._IType _source94 = (selfIdent).dtor_dafnyType; + bool _4_needObjectFromRef; + _4_needObjectFromRef = ((((selfIdent).is_ThisTyped) && ((selfIdent).IsSelf())) && (((selfIdent).dtor_rSelfName).Equals(rName))) && (((System.Func)(() => { + DAST._IType _source0 = (selfIdent).dtor_dafnyType; { - if (_source94.is_UserDefined) { - DAST._IResolvedType resolved4 = _source94.dtor_resolved; - DAST._IResolvedTypeBase _1817_base = resolved4.dtor_kind; - Dafny.ISequence _1818_attributes = resolved4.dtor_attributes; - return ((_1817_base).is_Class) || ((_1817_base).is_Trait); + if (_source0.is_UserDefined) { + DAST._IResolvedType resolved0 = _source0.dtor_resolved; + DAST._IResolvedTypeBase _5_base = resolved0.dtor_kind; + Dafny.ISequence _6_attributes = resolved0.dtor_attributes; + return ((_5_base).is_Class) || ((_5_base).is_Trait); } } { return false; } }))()); - if (_1816_needObjectFromRef) { + if (_4_needObjectFromRef) { r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("Object"))).ApplyType(Dafny.Sequence.FromElements(RAST.__default.RawType(Dafny.Sequence.UnicodeFromString("_"))))).MSel(Dafny.Sequence.UnicodeFromString("from_ref"))).Apply(Dafny.Sequence.FromElements(r)); } else { - if (!(_1815_noNeedOfClone)) { + if (!(_3_noNeedOfClone)) { r = (r).Clone(); } } resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwnedBox())) { - if (!(_1815_noNeedOfClone)) { + if (!(_3_noNeedOfClone)) { r = (r).Clone(); } r = RAST.__default.BoxNew(r); resultingOwnership = DCOMP.Ownership.create_OwnershipOwnedBox(); - } else if (_1814_currentlyBorrowed) { + } else if (_2_currentlyBorrowed) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else { if (!(rName).Equals(Dafny.Sequence.UnicodeFromString("self"))) { - if (((_1812_tpe).is_Some) && (((_1812_tpe).dtor_value).IsPointer())) { + if (((_0_tpe).is_Some) && (((_0_tpe).dtor_value).IsPointer())) { r = ((this).read__macro).Apply1(r); } else { r = RAST.__default.Borrow(r); @@ -4874,9 +4877,9 @@ public void GenIdent(Dafny.ISequence rName, DCOMP._ISelfInfo selfIde return ; } public bool HasExternAttributeRenamingModule(Dafny.ISequence attributes) { - return Dafny.Helpers.Id, bool>>((_1819_attributes) => Dafny.Helpers.Quantifier((_1819_attributes).UniqueElements, false, (((_exists_var_1) => { - DAST._IAttribute _1820_attribute = (DAST._IAttribute)_exists_var_1; - return ((_1819_attributes).Contains(_1820_attribute)) && ((((_1820_attribute).dtor_name).Equals(Dafny.Sequence.UnicodeFromString("extern"))) && ((new BigInteger(((_1820_attribute).dtor_args).Count)) == (new BigInteger(2)))); + return Dafny.Helpers.Id, bool>>((_0_attributes) => Dafny.Helpers.Quantifier((_0_attributes).UniqueElements, false, (((_exists_var_0) => { + DAST._IAttribute _1_attribute = (DAST._IAttribute)_exists_var_0; + return ((_0_attributes).Contains(_1_attribute)) && ((((_1_attribute).dtor_name).Equals(Dafny.Sequence.UnicodeFromString("extern"))) && ((new BigInteger(((_1_attribute).dtor_args).Count)) == (new BigInteger(2)))); }))))(attributes); } public void GenArgs(DCOMP._ISelfInfo selfIdent, DAST._ICallName name, Dafny.ISequence typeArgs, Dafny.ISequence args, DCOMP._IEnvironment env, out Dafny.ISequence argExprs, out Dafny.ISet> readIdents, out Dafny.ISequence typeExprs, out Std.Wrappers._IOption fullNameQualifier) @@ -4887,59 +4890,59 @@ public void GenArgs(DCOMP._ISelfInfo selfIdent, DAST._ICallName name, Dafny.ISeq fullNameQualifier = Std.Wrappers.Option.Default(); argExprs = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _hi37 = new BigInteger((args).Count); - for (BigInteger _1821_i = BigInteger.Zero; _1821_i < _hi37; _1821_i++) { - DCOMP._IOwnership _1822_argOwnership; - _1822_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); - if (((name).is_CallName) && ((_1821_i) < (new BigInteger((((name).dtor_signature)).Count)))) { - RAST._IType _1823_tpe; - RAST._IType _out338; - _out338 = (this).GenType(((((name).dtor_signature)).Select(_1821_i)).dtor_typ, DCOMP.GenTypeContext.@default()); - _1823_tpe = _out338; - if ((_1823_tpe).CanReadWithoutClone()) { - _1822_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); - } - } - RAST._IExpr _1824_argExpr; - DCOMP._IOwnership _1825___v154; - Dafny.ISet> _1826_argIdents; - RAST._IExpr _out339; - DCOMP._IOwnership _out340; - Dafny.ISet> _out341; - (this).GenExpr((args).Select(_1821_i), selfIdent, env, _1822_argOwnership, out _out339, out _out340, out _out341); - _1824_argExpr = _out339; - _1825___v154 = _out340; - _1826_argIdents = _out341; - argExprs = Dafny.Sequence.Concat(argExprs, Dafny.Sequence.FromElements(_1824_argExpr)); - readIdents = Dafny.Set>.Union(readIdents, _1826_argIdents); + BigInteger _hi0 = new BigInteger((args).Count); + for (BigInteger _0_i = BigInteger.Zero; _0_i < _hi0; _0_i++) { + DCOMP._IOwnership _1_argOwnership; + _1_argOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); + if (((name).is_CallName) && ((_0_i) < (new BigInteger((((name).dtor_signature)).Count)))) { + RAST._IType _2_tpe; + RAST._IType _out0; + _out0 = (this).GenType(((((name).dtor_signature)).Select(_0_i)).dtor_typ, DCOMP.GenTypeContext.@default()); + _2_tpe = _out0; + if ((_2_tpe).CanReadWithoutClone()) { + _1_argOwnership = DCOMP.Ownership.create_OwnershipOwned(); + } + } + RAST._IExpr _3_argExpr; + DCOMP._IOwnership _4___v154; + Dafny.ISet> _5_argIdents; + RAST._IExpr _out1; + DCOMP._IOwnership _out2; + Dafny.ISet> _out3; + (this).GenExpr((args).Select(_0_i), selfIdent, env, _1_argOwnership, out _out1, out _out2, out _out3); + _3_argExpr = _out1; + _4___v154 = _out2; + _5_argIdents = _out3; + argExprs = Dafny.Sequence.Concat(argExprs, Dafny.Sequence.FromElements(_3_argExpr)); + readIdents = Dafny.Set>.Union(readIdents, _5_argIdents); } typeExprs = Dafny.Sequence.FromElements(); - BigInteger _hi38 = new BigInteger((typeArgs).Count); - for (BigInteger _1827_typeI = BigInteger.Zero; _1827_typeI < _hi38; _1827_typeI++) { - RAST._IType _1828_typeExpr; - RAST._IType _out342; - _out342 = (this).GenType((typeArgs).Select(_1827_typeI), DCOMP.GenTypeContext.@default()); - _1828_typeExpr = _out342; - typeExprs = Dafny.Sequence.Concat(typeExprs, Dafny.Sequence.FromElements(_1828_typeExpr)); - } - DAST._ICallName _source95 = name; - { - if (_source95.is_CallName) { - Dafny.ISequence _1829_nameIdent = _source95.dtor_name; - Std.Wrappers._IOption onType1 = _source95.dtor_onType; - if (onType1.is_Some) { - DAST._IType value10 = onType1.dtor_value; - if (value10.is_UserDefined) { - DAST._IResolvedType _1830_resolvedType = value10.dtor_resolved; - if ((((_1830_resolvedType).dtor_kind).is_Trait) || (Dafny.Helpers.Id, bool>>((_1831_resolvedType, _1832_nameIdent) => Dafny.Helpers.Quantifier>(((_1831_resolvedType).dtor_properMethods).UniqueElements, true, (((_forall_var_8) => { - Dafny.ISequence _1833_m = (Dafny.ISequence)_forall_var_8; - return !(((_1831_resolvedType).dtor_properMethods).Contains(_1833_m)) || (!object.Equals((_1833_m), _1832_nameIdent)); - }))))(_1830_resolvedType, _1829_nameIdent))) { - fullNameQualifier = Std.Wrappers.Option.create_Some(Std.Wrappers.Option.GetOr(DCOMP.__default.TraitTypeContainingMethod(_1830_resolvedType, (_1829_nameIdent)), _1830_resolvedType)); + BigInteger _hi1 = new BigInteger((typeArgs).Count); + for (BigInteger _6_typeI = BigInteger.Zero; _6_typeI < _hi1; _6_typeI++) { + RAST._IType _7_typeExpr; + RAST._IType _out4; + _out4 = (this).GenType((typeArgs).Select(_6_typeI), DCOMP.GenTypeContext.@default()); + _7_typeExpr = _out4; + typeExprs = Dafny.Sequence.Concat(typeExprs, Dafny.Sequence.FromElements(_7_typeExpr)); + } + DAST._ICallName _source0 = name; + { + if (_source0.is_CallName) { + Dafny.ISequence _8_nameIdent = _source0.dtor_name; + Std.Wrappers._IOption onType0 = _source0.dtor_onType; + if (onType0.is_Some) { + DAST._IType value0 = onType0.dtor_value; + if (value0.is_UserDefined) { + DAST._IResolvedType _9_resolvedType = value0.dtor_resolved; + if ((((_9_resolvedType).dtor_kind).is_Trait) || (Dafny.Helpers.Id, bool>>((_10_resolvedType, _11_nameIdent) => Dafny.Helpers.Quantifier>(((_10_resolvedType).dtor_properMethods).UniqueElements, true, (((_forall_var_0) => { + Dafny.ISequence _12_m = (Dafny.ISequence)_forall_var_0; + return !(((_10_resolvedType).dtor_properMethods).Contains(_12_m)) || (!object.Equals((_12_m), _11_nameIdent)); + }))))(_9_resolvedType, _8_nameIdent))) { + fullNameQualifier = Std.Wrappers.Option.create_Some(Std.Wrappers.Option.GetOr(DCOMP.__default.TraitTypeContainingMethod(_9_resolvedType, (_8_nameIdent)), _9_resolvedType)); } else { fullNameQualifier = Std.Wrappers.Option.create_None(); } - goto after_match40; + goto after_match0; } } } @@ -4947,7 +4950,7 @@ public void GenArgs(DCOMP._ISelfInfo selfIdent, DAST._ICallName name, Dafny.ISeq { fullNameQualifier = Std.Wrappers.Option.create_None(); } - after_match40: ; + after_match0: ; if ((((((fullNameQualifier).is_Some) && ((selfIdent).is_ThisTyped)) && (((selfIdent).dtor_dafnyType).is_UserDefined)) && ((this).IsSameResolvedType(((selfIdent).dtor_dafnyType).dtor_resolved, (fullNameQualifier).dtor_value))) && (!((this).HasExternAttributeRenamingModule(((fullNameQualifier).dtor_value).dtor_attributes)))) { fullNameQualifier = Std.Wrappers.Option.create_None(); } @@ -4957,1192 +4960,1192 @@ public void GenExpr(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnv r = RAST.Expr.Default(); resultingOwnership = DCOMP.Ownership.Default(); readIdents = Dafny.Set>.Empty; - DAST._IExpression _source96 = e; + DAST._IExpression _source0 = e; { - if (_source96.is_Literal) { - RAST._IExpr _out343; - DCOMP._IOwnership _out344; - Dafny.ISet> _out345; - (this).GenExprLiteral(e, selfIdent, env, expectedOwnership, out _out343, out _out344, out _out345); - r = _out343; - resultingOwnership = _out344; - readIdents = _out345; - goto after_match41; + if (_source0.is_Literal) { + RAST._IExpr _out0; + DCOMP._IOwnership _out1; + Dafny.ISet> _out2; + (this).GenExprLiteral(e, selfIdent, env, expectedOwnership, out _out0, out _out1, out _out2); + r = _out0; + resultingOwnership = _out1; + readIdents = _out2; + goto after_match0; } } { - if (_source96.is_Ident) { - Dafny.ISequence _1834_name = _source96.dtor_name; + if (_source0.is_Ident) { + Dafny.ISequence _0_name = _source0.dtor_name; { - RAST._IExpr _out346; - DCOMP._IOwnership _out347; - Dafny.ISet> _out348; - (this).GenIdent(DCOMP.__default.escapeName(_1834_name), selfIdent, env, expectedOwnership, out _out346, out _out347, out _out348); - r = _out346; - resultingOwnership = _out347; - readIdents = _out348; + RAST._IExpr _out3; + DCOMP._IOwnership _out4; + Dafny.ISet> _out5; + (this).GenIdent(DCOMP.__default.escapeName(_0_name), selfIdent, env, expectedOwnership, out _out3, out _out4, out _out5); + r = _out3; + resultingOwnership = _out4; + readIdents = _out5; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Companion) { - Dafny.ISequence> _1835_path = _source96.dtor_Companion_a0; - Dafny.ISequence _1836_typeArgs = _source96.dtor_typeArgs; + if (_source0.is_Companion) { + Dafny.ISequence> _1_path = _source0.dtor_Companion_a0; + Dafny.ISequence _2_typeArgs = _source0.dtor_typeArgs; { - RAST._IExpr _out349; - _out349 = DCOMP.COMP.GenPathExpr(_1835_path); - r = _out349; - if ((new BigInteger((_1836_typeArgs).Count)).Sign == 1) { - Dafny.ISequence _1837_typeExprs; - _1837_typeExprs = Dafny.Sequence.FromElements(); - BigInteger _hi39 = new BigInteger((_1836_typeArgs).Count); - for (BigInteger _1838_i = BigInteger.Zero; _1838_i < _hi39; _1838_i++) { - RAST._IType _1839_typeExpr; - RAST._IType _out350; - _out350 = (this).GenType((_1836_typeArgs).Select(_1838_i), DCOMP.GenTypeContext.@default()); - _1839_typeExpr = _out350; - _1837_typeExprs = Dafny.Sequence.Concat(_1837_typeExprs, Dafny.Sequence.FromElements(_1839_typeExpr)); + RAST._IExpr _out6; + _out6 = DCOMP.COMP.GenPathExpr(_1_path); + r = _out6; + if ((new BigInteger((_2_typeArgs).Count)).Sign == 1) { + Dafny.ISequence _3_typeExprs; + _3_typeExprs = Dafny.Sequence.FromElements(); + BigInteger _hi0 = new BigInteger((_2_typeArgs).Count); + for (BigInteger _4_i = BigInteger.Zero; _4_i < _hi0; _4_i++) { + RAST._IType _5_typeExpr; + RAST._IType _out7; + _out7 = (this).GenType((_2_typeArgs).Select(_4_i), DCOMP.GenTypeContext.@default()); + _5_typeExpr = _out7; + _3_typeExprs = Dafny.Sequence.Concat(_3_typeExprs, Dafny.Sequence.FromElements(_5_typeExpr)); } - r = (r).ApplyType(_1837_typeExprs); + r = (r).ApplyType(_3_typeExprs); } if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipBorrowed())) { resultingOwnership = DCOMP.Ownership.create_OwnershipBorrowed(); } else if (object.Equals(expectedOwnership, DCOMP.Ownership.create_OwnershipOwned())) { resultingOwnership = DCOMP.Ownership.create_OwnershipOwned(); } else { - RAST._IExpr _out351; - DCOMP._IOwnership _out352; - (this).FromOwned(r, expectedOwnership, out _out351, out _out352); - r = _out351; - resultingOwnership = _out352; + RAST._IExpr _out8; + DCOMP._IOwnership _out9; + (this).FromOwned(r, expectedOwnership, out _out8, out _out9); + r = _out8; + resultingOwnership = _out9; } readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_InitializationValue) { - DAST._IType _1840_typ = _source96.dtor_typ; + if (_source0.is_InitializationValue) { + DAST._IType _6_typ = _source0.dtor_typ; { - RAST._IType _1841_typExpr; - RAST._IType _out353; - _out353 = (this).GenType(_1840_typ, DCOMP.GenTypeContext.@default()); - _1841_typExpr = _out353; - if ((_1841_typExpr).IsObjectOrPointer()) { - r = (_1841_typExpr).ToNullExpr(); + RAST._IType _7_typExpr; + RAST._IType _out10; + _out10 = (this).GenType(_6_typ, DCOMP.GenTypeContext.@default()); + _7_typExpr = _out10; + if ((_7_typExpr).IsObjectOrPointer()) { + r = (_7_typExpr).ToNullExpr(); } else { - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_1841_typExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as std::default::Default>::default()"))); + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), (_7_typExpr)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(" as std::default::Default>::default()"))); } - RAST._IExpr _out354; - DCOMP._IOwnership _out355; - (this).FromOwned(r, expectedOwnership, out _out354, out _out355); - r = _out354; - resultingOwnership = _out355; + RAST._IExpr _out11; + DCOMP._IOwnership _out12; + (this).FromOwned(r, expectedOwnership, out _out11, out _out12); + r = _out11; + resultingOwnership = _out12; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Tuple) { - Dafny.ISequence _1842_values = _source96.dtor_Tuple_a0; + if (_source0.is_Tuple) { + Dafny.ISequence _8_values = _source0.dtor_Tuple_a0; { - Dafny.ISequence _1843_exprs; - _1843_exprs = Dafny.Sequence.FromElements(); + Dafny.ISequence _9_exprs; + _9_exprs = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _hi40 = new BigInteger((_1842_values).Count); - for (BigInteger _1844_i = BigInteger.Zero; _1844_i < _hi40; _1844_i++) { - RAST._IExpr _1845_recursiveGen; - DCOMP._IOwnership _1846___v159; - Dafny.ISet> _1847_recIdents; - RAST._IExpr _out356; - DCOMP._IOwnership _out357; - Dafny.ISet> _out358; - (this).GenExpr((_1842_values).Select(_1844_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out356, out _out357, out _out358); - _1845_recursiveGen = _out356; - _1846___v159 = _out357; - _1847_recIdents = _out358; - _1843_exprs = Dafny.Sequence.Concat(_1843_exprs, Dafny.Sequence.FromElements(_1845_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1847_recIdents); + BigInteger _hi1 = new BigInteger((_8_values).Count); + for (BigInteger _10_i = BigInteger.Zero; _10_i < _hi1; _10_i++) { + RAST._IExpr _11_recursiveGen; + DCOMP._IOwnership _12___v159; + Dafny.ISet> _13_recIdents; + RAST._IExpr _out13; + DCOMP._IOwnership _out14; + Dafny.ISet> _out15; + (this).GenExpr((_8_values).Select(_10_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out13, out _out14, out _out15); + _11_recursiveGen = _out13; + _12___v159 = _out14; + _13_recIdents = _out15; + _9_exprs = Dafny.Sequence.Concat(_9_exprs, Dafny.Sequence.FromElements(_11_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _13_recIdents); } - if ((new BigInteger((_1842_values).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) { - r = RAST.Expr.create_Tuple(_1843_exprs); + if ((new BigInteger((_8_values).Count)) <= (RAST.__default.MAX__TUPLE__SIZE)) { + r = RAST.Expr.create_Tuple(_9_exprs); } else { - r = RAST.__default.SystemTuple(_1843_exprs); + r = RAST.__default.SystemTuple(_9_exprs); } - RAST._IExpr _out359; - DCOMP._IOwnership _out360; - (this).FromOwned(r, expectedOwnership, out _out359, out _out360); - r = _out359; - resultingOwnership = _out360; + RAST._IExpr _out16; + DCOMP._IOwnership _out17; + (this).FromOwned(r, expectedOwnership, out _out16, out _out17); + r = _out16; + resultingOwnership = _out17; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_New) { - Dafny.ISequence> _1848_path = _source96.dtor_path; - Dafny.ISequence _1849_typeArgs = _source96.dtor_typeArgs; - Dafny.ISequence _1850_args = _source96.dtor_args; + if (_source0.is_New) { + Dafny.ISequence> _14_path = _source0.dtor_path; + Dafny.ISequence _15_typeArgs = _source0.dtor_typeArgs; + Dafny.ISequence _16_args = _source0.dtor_args; { - RAST._IExpr _out361; - _out361 = DCOMP.COMP.GenPathExpr(_1848_path); - r = _out361; - if ((new BigInteger((_1849_typeArgs).Count)).Sign == 1) { - Dafny.ISequence _1851_typeExprs; - _1851_typeExprs = Dafny.Sequence.FromElements(); - BigInteger _hi41 = new BigInteger((_1849_typeArgs).Count); - for (BigInteger _1852_i = BigInteger.Zero; _1852_i < _hi41; _1852_i++) { - RAST._IType _1853_typeExpr; - RAST._IType _out362; - _out362 = (this).GenType((_1849_typeArgs).Select(_1852_i), DCOMP.GenTypeContext.@default()); - _1853_typeExpr = _out362; - _1851_typeExprs = Dafny.Sequence.Concat(_1851_typeExprs, Dafny.Sequence.FromElements(_1853_typeExpr)); + RAST._IExpr _out18; + _out18 = DCOMP.COMP.GenPathExpr(_14_path); + r = _out18; + if ((new BigInteger((_15_typeArgs).Count)).Sign == 1) { + Dafny.ISequence _17_typeExprs; + _17_typeExprs = Dafny.Sequence.FromElements(); + BigInteger _hi2 = new BigInteger((_15_typeArgs).Count); + for (BigInteger _18_i = BigInteger.Zero; _18_i < _hi2; _18_i++) { + RAST._IType _19_typeExpr; + RAST._IType _out19; + _out19 = (this).GenType((_15_typeArgs).Select(_18_i), DCOMP.GenTypeContext.@default()); + _19_typeExpr = _out19; + _17_typeExprs = Dafny.Sequence.Concat(_17_typeExprs, Dafny.Sequence.FromElements(_19_typeExpr)); } - r = (r).ApplyType(_1851_typeExprs); + r = (r).ApplyType(_17_typeExprs); } r = (r).MSel((this).allocate__fn); readIdents = Dafny.Set>.FromElements(); - Dafny.ISequence _1854_arguments; - _1854_arguments = Dafny.Sequence.FromElements(); - BigInteger _hi42 = new BigInteger((_1850_args).Count); - for (BigInteger _1855_i = BigInteger.Zero; _1855_i < _hi42; _1855_i++) { - RAST._IExpr _1856_recursiveGen; - DCOMP._IOwnership _1857___v160; - Dafny.ISet> _1858_recIdents; - RAST._IExpr _out363; - DCOMP._IOwnership _out364; - Dafny.ISet> _out365; - (this).GenExpr((_1850_args).Select(_1855_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out363, out _out364, out _out365); - _1856_recursiveGen = _out363; - _1857___v160 = _out364; - _1858_recIdents = _out365; - _1854_arguments = Dafny.Sequence.Concat(_1854_arguments, Dafny.Sequence.FromElements(_1856_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1858_recIdents); + Dafny.ISequence _20_arguments; + _20_arguments = Dafny.Sequence.FromElements(); + BigInteger _hi3 = new BigInteger((_16_args).Count); + for (BigInteger _21_i = BigInteger.Zero; _21_i < _hi3; _21_i++) { + RAST._IExpr _22_recursiveGen; + DCOMP._IOwnership _23___v160; + Dafny.ISet> _24_recIdents; + RAST._IExpr _out20; + DCOMP._IOwnership _out21; + Dafny.ISet> _out22; + (this).GenExpr((_16_args).Select(_21_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out20, out _out21, out _out22); + _22_recursiveGen = _out20; + _23___v160 = _out21; + _24_recIdents = _out22; + _20_arguments = Dafny.Sequence.Concat(_20_arguments, Dafny.Sequence.FromElements(_22_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _24_recIdents); } - r = (r).Apply(_1854_arguments); - RAST._IExpr _out366; - DCOMP._IOwnership _out367; - (this).FromOwned(r, expectedOwnership, out _out366, out _out367); - r = _out366; - resultingOwnership = _out367; + r = (r).Apply(_20_arguments); + RAST._IExpr _out23; + DCOMP._IOwnership _out24; + (this).FromOwned(r, expectedOwnership, out _out23, out _out24); + r = _out23; + resultingOwnership = _out24; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_NewUninitArray) { - Dafny.ISequence _1859_dims = _source96.dtor_dims; - DAST._IType _1860_typ = _source96.dtor_typ; + if (_source0.is_NewUninitArray) { + Dafny.ISequence _25_dims = _source0.dtor_dims; + DAST._IType _26_typ = _source0.dtor_typ; { - if ((new BigInteger(16)) < (new BigInteger((_1859_dims).Count))) { - Dafny.ISequence _1861_msg; - _1861_msg = Dafny.Sequence.UnicodeFromString("Unsupported: Creation of arrays of more than 16 dimensions"); + if ((new BigInteger(16)) < (new BigInteger((_25_dims).Count))) { + Dafny.ISequence _27_msg; + _27_msg = Dafny.Sequence.UnicodeFromString("Unsupported: Creation of arrays of more than 16 dimensions"); if ((this.error).is_None) { - (this).error = Std.Wrappers.Option>.create_Some(_1861_msg); + (this).error = Std.Wrappers.Option>.create_Some(_27_msg); } - r = RAST.Expr.create_RawExpr(_1861_msg); + r = RAST.Expr.create_RawExpr(_27_msg); readIdents = Dafny.Set>.FromElements(); } else { r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - RAST._IType _1862_typeGen; - RAST._IType _out368; - _out368 = (this).GenType(_1860_typ, DCOMP.GenTypeContext.@default()); - _1862_typeGen = _out368; + RAST._IType _28_typeGen; + RAST._IType _out25; + _out25 = (this).GenType(_26_typ, DCOMP.GenTypeContext.@default()); + _28_typeGen = _out25; readIdents = Dafny.Set>.FromElements(); - Dafny.ISequence _1863_dimExprs; - _1863_dimExprs = Dafny.Sequence.FromElements(); - BigInteger _hi43 = new BigInteger((_1859_dims).Count); - for (BigInteger _1864_i = BigInteger.Zero; _1864_i < _hi43; _1864_i++) { - RAST._IExpr _1865_recursiveGen; - DCOMP._IOwnership _1866___v161; - Dafny.ISet> _1867_recIdents; - RAST._IExpr _out369; - DCOMP._IOwnership _out370; - Dafny.ISet> _out371; - (this).GenExpr((_1859_dims).Select(_1864_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out369, out _out370, out _out371); - _1865_recursiveGen = _out369; - _1866___v161 = _out370; - _1867_recIdents = _out371; - _1863_dimExprs = Dafny.Sequence.Concat(_1863_dimExprs, Dafny.Sequence.FromElements(RAST.__default.IntoUsize(_1865_recursiveGen))); - readIdents = Dafny.Set>.Union(readIdents, _1867_recIdents); + Dafny.ISequence _29_dimExprs; + _29_dimExprs = Dafny.Sequence.FromElements(); + BigInteger _hi4 = new BigInteger((_25_dims).Count); + for (BigInteger _30_i = BigInteger.Zero; _30_i < _hi4; _30_i++) { + RAST._IExpr _31_recursiveGen; + DCOMP._IOwnership _32___v161; + Dafny.ISet> _33_recIdents; + RAST._IExpr _out26; + DCOMP._IOwnership _out27; + Dafny.ISet> _out28; + (this).GenExpr((_25_dims).Select(_30_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out26, out _out27, out _out28); + _31_recursiveGen = _out26; + _32___v161 = _out27; + _33_recIdents = _out28; + _29_dimExprs = Dafny.Sequence.Concat(_29_dimExprs, Dafny.Sequence.FromElements(RAST.__default.IntoUsize(_31_recursiveGen))); + readIdents = Dafny.Set>.Union(readIdents, _33_recIdents); } - if ((new BigInteger((_1859_dims).Count)) > (BigInteger.One)) { - Dafny.ISequence _1868_class__name; - _1868_class__name = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array"), Std.Strings.__default.OfNat(new BigInteger((_1859_dims).Count))); - r = ((((RAST.__default.dafny__runtime).MSel(_1868_class__name)).ApplyType(Dafny.Sequence.FromElements(_1862_typeGen))).MSel((this).placebos__usize)).Apply(_1863_dimExprs); + if ((new BigInteger((_25_dims).Count)) > (BigInteger.One)) { + Dafny.ISequence _34_class__name; + _34_class__name = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array"), Std.Strings.__default.OfNat(new BigInteger((_25_dims).Count))); + r = ((((RAST.__default.dafny__runtime).MSel(_34_class__name)).ApplyType(Dafny.Sequence.FromElements(_28_typeGen))).MSel((this).placebos__usize)).Apply(_29_dimExprs); } else { - r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("array"))).MSel((this).placebos__usize)).ApplyType(Dafny.Sequence.FromElements(_1862_typeGen))).Apply(_1863_dimExprs); + r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("array"))).MSel((this).placebos__usize)).ApplyType(Dafny.Sequence.FromElements(_28_typeGen))).Apply(_29_dimExprs); } } - RAST._IExpr _out372; - DCOMP._IOwnership _out373; - (this).FromOwned(r, expectedOwnership, out _out372, out _out373); - r = _out372; - resultingOwnership = _out373; + RAST._IExpr _out29; + DCOMP._IOwnership _out30; + (this).FromOwned(r, expectedOwnership, out _out29, out _out30); + r = _out29; + resultingOwnership = _out30; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_ArrayIndexToInt) { - DAST._IExpression _1869_underlying = _source96.dtor_value; + if (_source0.is_ArrayIndexToInt) { + DAST._IExpression _35_underlying = _source0.dtor_value; { - RAST._IExpr _1870_recursiveGen; - DCOMP._IOwnership _1871___v162; - Dafny.ISet> _1872_recIdents; - RAST._IExpr _out374; - DCOMP._IOwnership _out375; - Dafny.ISet> _out376; - (this).GenExpr(_1869_underlying, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out374, out _out375, out _out376); - _1870_recursiveGen = _out374; - _1871___v162 = _out375; - _1872_recIdents = _out376; - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(_1870_recursiveGen); - readIdents = _1872_recIdents; - RAST._IExpr _out377; - DCOMP._IOwnership _out378; - (this).FromOwned(r, expectedOwnership, out _out377, out _out378); - r = _out377; - resultingOwnership = _out378; - } - goto after_match41; - } - } - { - if (_source96.is_FinalizeNewArray) { - DAST._IExpression _1873_underlying = _source96.dtor_value; - DAST._IType _1874_typ = _source96.dtor_typ; + RAST._IExpr _36_recursiveGen; + DCOMP._IOwnership _37___v162; + Dafny.ISet> _38_recIdents; + RAST._IExpr _out31; + DCOMP._IOwnership _out32; + Dafny.ISet> _out33; + (this).GenExpr(_35_underlying, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out31, out _out32, out _out33); + _36_recursiveGen = _out31; + _37___v162 = _out32; + _38_recIdents = _out33; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(_36_recursiveGen); + readIdents = _38_recIdents; + RAST._IExpr _out34; + DCOMP._IOwnership _out35; + (this).FromOwned(r, expectedOwnership, out _out34, out _out35); + r = _out34; + resultingOwnership = _out35; + } + goto after_match0; + } + } + { + if (_source0.is_FinalizeNewArray) { + DAST._IExpression _39_underlying = _source0.dtor_value; + DAST._IType _40_typ = _source0.dtor_typ; { - RAST._IType _1875_tpe; - RAST._IType _out379; - _out379 = (this).GenType(_1874_typ, DCOMP.GenTypeContext.@default()); - _1875_tpe = _out379; - RAST._IExpr _1876_recursiveGen; - DCOMP._IOwnership _1877___v163; - Dafny.ISet> _1878_recIdents; - RAST._IExpr _out380; - DCOMP._IOwnership _out381; - Dafny.ISet> _out382; - (this).GenExpr(_1873_underlying, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out380, out _out381, out _out382); - _1876_recursiveGen = _out380; - _1877___v163 = _out381; - _1878_recIdents = _out382; - readIdents = _1878_recIdents; - if ((_1875_tpe).IsObjectOrPointer()) { - RAST._IType _1879_t; - _1879_t = (_1875_tpe).ObjectOrPointerUnderlying(); - if ((_1879_t).is_Array) { - r = (((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("array"))).MSel((this).array__construct)).Apply1(_1876_recursiveGen); - } else if ((_1879_t).IsMultiArray()) { - Dafny.ISequence _1880_c; - _1880_c = (_1879_t).MultiArrayClass(); - r = (((RAST.__default.dafny__runtime).MSel(_1880_c)).MSel((this).array__construct)).Apply1(_1876_recursiveGen); + RAST._IType _41_tpe; + RAST._IType _out36; + _out36 = (this).GenType(_40_typ, DCOMP.GenTypeContext.@default()); + _41_tpe = _out36; + RAST._IExpr _42_recursiveGen; + DCOMP._IOwnership _43___v163; + Dafny.ISet> _44_recIdents; + RAST._IExpr _out37; + DCOMP._IOwnership _out38; + Dafny.ISet> _out39; + (this).GenExpr(_39_underlying, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out37, out _out38, out _out39); + _42_recursiveGen = _out37; + _43___v163 = _out38; + _44_recIdents = _out39; + readIdents = _44_recIdents; + if ((_41_tpe).IsObjectOrPointer()) { + RAST._IType _45_t; + _45_t = (_41_tpe).ObjectOrPointerUnderlying(); + if ((_45_t).is_Array) { + r = (((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("array"))).MSel((this).array__construct)).Apply1(_42_recursiveGen); + } else if ((_45_t).IsMultiArray()) { + Dafny.ISequence _46_c; + _46_c = (_45_t).MultiArrayClass(); + r = (((RAST.__default.dafny__runtime).MSel(_46_c)).MSel((this).array__construct)).Apply1(_42_recursiveGen); } else { - (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Finalize New Array with a pointer or object type to something that is not an array or a multi array: "), (_1875_tpe)._ToString(DCOMP.__default.IND))); + (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Finalize New Array with a pointer or object type to something that is not an array or a multi array: "), (_41_tpe)._ToString(DCOMP.__default.IND))); r = RAST.Expr.create_RawExpr((this.error).dtor_value); } } else { - (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Finalize New Array with a type that is not a pointer or an object: "), (_1875_tpe)._ToString(DCOMP.__default.IND))); + (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Finalize New Array with a type that is not a pointer or an object: "), (_41_tpe)._ToString(DCOMP.__default.IND))); r = RAST.Expr.create_RawExpr((this.error).dtor_value); } - RAST._IExpr _out383; - DCOMP._IOwnership _out384; - (this).FromOwned(r, expectedOwnership, out _out383, out _out384); - r = _out383; - resultingOwnership = _out384; + RAST._IExpr _out40; + DCOMP._IOwnership _out41; + (this).FromOwned(r, expectedOwnership, out _out40, out _out41); + r = _out40; + resultingOwnership = _out41; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_DatatypeValue) { - DAST._IResolvedType _1881_datatypeType = _source96.dtor_datatypeType; - Dafny.ISequence _1882_typeArgs = _source96.dtor_typeArgs; - Dafny.ISequence _1883_variant = _source96.dtor_variant; - bool _1884_isCo = _source96.dtor_isCo; - Dafny.ISequence<_System._ITuple2, DAST._IExpression>> _1885_values = _source96.dtor_contents; + if (_source0.is_DatatypeValue) { + DAST._IResolvedType _47_datatypeType = _source0.dtor_datatypeType; + Dafny.ISequence _48_typeArgs = _source0.dtor_typeArgs; + Dafny.ISequence _49_variant = _source0.dtor_variant; + bool _50_isCo = _source0.dtor_isCo; + Dafny.ISequence<_System._ITuple2, DAST._IExpression>> _51_values = _source0.dtor_contents; { - RAST._IExpr _out385; - _out385 = DCOMP.COMP.GenPathExpr((_1881_datatypeType).dtor_path); - r = _out385; - Dafny.ISequence _1886_genTypeArgs; - _1886_genTypeArgs = Dafny.Sequence.FromElements(); - BigInteger _hi44 = new BigInteger((_1882_typeArgs).Count); - for (BigInteger _1887_i = BigInteger.Zero; _1887_i < _hi44; _1887_i++) { - RAST._IType _1888_typeExpr; - RAST._IType _out386; - _out386 = (this).GenType((_1882_typeArgs).Select(_1887_i), DCOMP.GenTypeContext.@default()); - _1888_typeExpr = _out386; - _1886_genTypeArgs = Dafny.Sequence.Concat(_1886_genTypeArgs, Dafny.Sequence.FromElements(_1888_typeExpr)); + RAST._IExpr _out42; + _out42 = DCOMP.COMP.GenPathExpr((_47_datatypeType).dtor_path); + r = _out42; + Dafny.ISequence _52_genTypeArgs; + _52_genTypeArgs = Dafny.Sequence.FromElements(); + BigInteger _hi5 = new BigInteger((_48_typeArgs).Count); + for (BigInteger _53_i = BigInteger.Zero; _53_i < _hi5; _53_i++) { + RAST._IType _54_typeExpr; + RAST._IType _out43; + _out43 = (this).GenType((_48_typeArgs).Select(_53_i), DCOMP.GenTypeContext.@default()); + _54_typeExpr = _out43; + _52_genTypeArgs = Dafny.Sequence.Concat(_52_genTypeArgs, Dafny.Sequence.FromElements(_54_typeExpr)); } - if ((new BigInteger((_1882_typeArgs).Count)).Sign == 1) { - r = (r).ApplyType(_1886_genTypeArgs); + if ((new BigInteger((_48_typeArgs).Count)).Sign == 1) { + r = (r).ApplyType(_52_genTypeArgs); } - r = (r).MSel(DCOMP.__default.escapeName(_1883_variant)); + r = (r).MSel(DCOMP.__default.escapeName(_49_variant)); readIdents = Dafny.Set>.FromElements(); - Dafny.ISequence _1889_assignments; - _1889_assignments = Dafny.Sequence.FromElements(); - BigInteger _hi45 = new BigInteger((_1885_values).Count); - for (BigInteger _1890_i = BigInteger.Zero; _1890_i < _hi45; _1890_i++) { - _System._ITuple2, DAST._IExpression> _let_tmp_rhs67 = (_1885_values).Select(_1890_i); - Dafny.ISequence _1891_name = _let_tmp_rhs67.dtor__0; - DAST._IExpression _1892_value = _let_tmp_rhs67.dtor__1; - if (_1884_isCo) { - RAST._IExpr _1893_recursiveGen; - DCOMP._IOwnership _1894___v164; - Dafny.ISet> _1895_recIdents; - RAST._IExpr _out387; - DCOMP._IOwnership _out388; - Dafny.ISet> _out389; - (this).GenExpr(_1892_value, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out387, out _out388, out _out389); - _1893_recursiveGen = _out387; - _1894___v164 = _out388; - _1895_recIdents = _out389; - readIdents = Dafny.Set>.Union(readIdents, _1895_recIdents); - Dafny.ISequence _1896_allReadCloned; - _1896_allReadCloned = Dafny.Sequence.UnicodeFromString(""); - while (!(_1895_recIdents).Equals(Dafny.Set>.FromElements())) { - Dafny.ISequence _1897_next; - foreach (Dafny.ISequence _assign_such_that_2 in (_1895_recIdents).Elements) { - _1897_next = (Dafny.ISequence)_assign_such_that_2; - if ((_1895_recIdents).Contains(_1897_next)) { - goto after__ASSIGN_SUCH_THAT_2; + Dafny.ISequence _55_assignments; + _55_assignments = Dafny.Sequence.FromElements(); + BigInteger _hi6 = new BigInteger((_51_values).Count); + for (BigInteger _56_i = BigInteger.Zero; _56_i < _hi6; _56_i++) { + _System._ITuple2, DAST._IExpression> _let_tmp_rhs0 = (_51_values).Select(_56_i); + Dafny.ISequence _57_name = _let_tmp_rhs0.dtor__0; + DAST._IExpression _58_value = _let_tmp_rhs0.dtor__1; + if (_50_isCo) { + RAST._IExpr _59_recursiveGen; + DCOMP._IOwnership _60___v164; + Dafny.ISet> _61_recIdents; + RAST._IExpr _out44; + DCOMP._IOwnership _out45; + Dafny.ISet> _out46; + (this).GenExpr(_58_value, selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out44, out _out45, out _out46); + _59_recursiveGen = _out44; + _60___v164 = _out45; + _61_recIdents = _out46; + readIdents = Dafny.Set>.Union(readIdents, _61_recIdents); + Dafny.ISequence _62_allReadCloned; + _62_allReadCloned = Dafny.Sequence.UnicodeFromString(""); + while (!(_61_recIdents).Equals(Dafny.Set>.FromElements())) { + Dafny.ISequence _63_next; + foreach (Dafny.ISequence _assign_such_that_0 in (_61_recIdents).Elements) { + _63_next = (Dafny.ISequence)_assign_such_that_0; + if ((_61_recIdents).Contains(_63_next)) { + goto after__ASSIGN_SUCH_THAT_0; } } throw new System.Exception("assign-such-that search produced no value (line 4410)"); - after__ASSIGN_SUCH_THAT_2: ; - _1896_allReadCloned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1896_allReadCloned, Dafny.Sequence.UnicodeFromString("let ")), _1897_next), Dafny.Sequence.UnicodeFromString(" = ")), _1897_next), Dafny.Sequence.UnicodeFromString(".clone();\n")); - _1895_recIdents = Dafny.Set>.Difference(_1895_recIdents, Dafny.Set>.FromElements(_1897_next)); + after__ASSIGN_SUCH_THAT_0: ; + _62_allReadCloned = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_62_allReadCloned, Dafny.Sequence.UnicodeFromString("let ")), _63_next), Dafny.Sequence.UnicodeFromString(" = ")), _63_next), Dafny.Sequence.UnicodeFromString(".clone();\n")); + _61_recIdents = Dafny.Set>.Difference(_61_recIdents, Dafny.Set>.FromElements(_63_next)); } - Dafny.ISequence _1898_wasAssigned; - _1898_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"), _1896_allReadCloned), Dafny.Sequence.UnicodeFromString("move || (")), (_1893_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")})))")); - _1889_assignments = Dafny.Sequence.Concat(_1889_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeIdent(_1891_name), RAST.Expr.create_RawExpr(_1898_wasAssigned)))); + Dafny.ISequence _64_wasAssigned; + _64_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"), _62_allReadCloned), Dafny.Sequence.UnicodeFromString("move || (")), (_59_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(")})))")); + _55_assignments = Dafny.Sequence.Concat(_55_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeIdent(_57_name), RAST.Expr.create_RawExpr(_64_wasAssigned)))); } else { - RAST._IExpr _1899_recursiveGen; - DCOMP._IOwnership _1900___v165; - Dafny.ISet> _1901_recIdents; - RAST._IExpr _out390; - DCOMP._IOwnership _out391; - Dafny.ISet> _out392; - (this).GenExpr(_1892_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out390, out _out391, out _out392); - _1899_recursiveGen = _out390; - _1900___v165 = _out391; - _1901_recIdents = _out392; - _1889_assignments = Dafny.Sequence.Concat(_1889_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeIdent(_1891_name), _1899_recursiveGen))); - readIdents = Dafny.Set>.Union(readIdents, _1901_recIdents); + RAST._IExpr _65_recursiveGen; + DCOMP._IOwnership _66___v165; + Dafny.ISet> _67_recIdents; + RAST._IExpr _out47; + DCOMP._IOwnership _out48; + Dafny.ISet> _out49; + (this).GenExpr(_58_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out47, out _out48, out _out49); + _65_recursiveGen = _out47; + _66___v165 = _out48; + _67_recIdents = _out49; + _55_assignments = Dafny.Sequence.Concat(_55_assignments, Dafny.Sequence.FromElements(RAST.AssignIdentifier.create(DCOMP.__default.escapeIdent(_57_name), _65_recursiveGen))); + readIdents = Dafny.Set>.Union(readIdents, _67_recIdents); } } - r = RAST.Expr.create_StructBuild(r, _1889_assignments); - if ((this).IsRcWrapped((_1881_datatypeType).dtor_attributes)) { + r = RAST.Expr.create_StructBuild(r, _55_assignments); + if ((this).IsRcWrapped((_47_datatypeType).dtor_attributes)) { r = RAST.__default.RcNew(r); } - RAST._IExpr _out393; - DCOMP._IOwnership _out394; - (this).FromOwned(r, expectedOwnership, out _out393, out _out394); - r = _out393; - resultingOwnership = _out394; + RAST._IExpr _out50; + DCOMP._IOwnership _out51; + (this).FromOwned(r, expectedOwnership, out _out50, out _out51); + r = _out50; + resultingOwnership = _out51; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Convert) { + if (_source0.is_Convert) { { - RAST._IExpr _out395; - DCOMP._IOwnership _out396; - Dafny.ISet> _out397; - (this).GenExprConvert(e, selfIdent, env, expectedOwnership, out _out395, out _out396, out _out397); - r = _out395; - resultingOwnership = _out396; - readIdents = _out397; + RAST._IExpr _out52; + DCOMP._IOwnership _out53; + Dafny.ISet> _out54; + (this).GenExprConvert(e, selfIdent, env, expectedOwnership, out _out52, out _out53, out _out54); + r = _out52; + resultingOwnership = _out53; + readIdents = _out54; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SeqConstruct) { - DAST._IExpression _1902_length = _source96.dtor_length; - DAST._IExpression _1903_expr = _source96.dtor_elem; + if (_source0.is_SeqConstruct) { + DAST._IExpression _68_length = _source0.dtor_length; + DAST._IExpression _69_expr = _source0.dtor_elem; { - RAST._IExpr _1904_recursiveGen; - DCOMP._IOwnership _1905___v169; - Dafny.ISet> _1906_recIdents; - RAST._IExpr _out398; - DCOMP._IOwnership _out399; - Dafny.ISet> _out400; - (this).GenExpr(_1903_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out398, out _out399, out _out400); - _1904_recursiveGen = _out398; - _1905___v169 = _out399; - _1906_recIdents = _out400; - RAST._IExpr _1907_lengthGen; - DCOMP._IOwnership _1908___v170; - Dafny.ISet> _1909_lengthIdents; - RAST._IExpr _out401; - DCOMP._IOwnership _out402; - Dafny.ISet> _out403; - (this).GenExpr(_1902_length, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out401, out _out402, out _out403); - _1907_lengthGen = _out401; - _1908___v170 = _out402; - _1909_lengthIdents = _out403; - r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\nlet _initializer = "), (_1904_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n::dafny_runtime::integer_range(::dafny_runtime::Zero::zero(), ")), (_1907_lengthGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").map(|i| _initializer(&i)).collect::<::dafny_runtime::Sequence<_>>()\n}"))); - readIdents = Dafny.Set>.Union(_1906_recIdents, _1909_lengthIdents); - RAST._IExpr _out404; - DCOMP._IOwnership _out405; - (this).FromOwned(r, expectedOwnership, out _out404, out _out405); - r = _out404; - resultingOwnership = _out405; + RAST._IExpr _70_recursiveGen; + DCOMP._IOwnership _71___v169; + Dafny.ISet> _72_recIdents; + RAST._IExpr _out55; + DCOMP._IOwnership _out56; + Dafny.ISet> _out57; + (this).GenExpr(_69_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out55, out _out56, out _out57); + _70_recursiveGen = _out55; + _71___v169 = _out56; + _72_recIdents = _out57; + RAST._IExpr _73_lengthGen; + DCOMP._IOwnership _74___v170; + Dafny.ISet> _75_lengthIdents; + RAST._IExpr _out58; + DCOMP._IOwnership _out59; + Dafny.ISet> _out60; + (this).GenExpr(_68_length, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out58, out _out59, out _out60); + _73_lengthGen = _out58; + _74___v170 = _out59; + _75_lengthIdents = _out60; + r = RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\nlet _initializer = "), (_70_recursiveGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(";\n::dafny_runtime::integer_range(::dafny_runtime::Zero::zero(), ")), (_73_lengthGen)._ToString(DCOMP.__default.IND)), Dafny.Sequence.UnicodeFromString(").map(|i| _initializer(&i)).collect::<::dafny_runtime::Sequence<_>>()\n}"))); + readIdents = Dafny.Set>.Union(_72_recIdents, _75_lengthIdents); + RAST._IExpr _out61; + DCOMP._IOwnership _out62; + (this).FromOwned(r, expectedOwnership, out _out61, out _out62); + r = _out61; + resultingOwnership = _out62; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SeqValue) { - Dafny.ISequence _1910_exprs = _source96.dtor_elements; - DAST._IType _1911_typ = _source96.dtor_typ; + if (_source0.is_SeqValue) { + Dafny.ISequence _76_exprs = _source0.dtor_elements; + DAST._IType _77_typ = _source0.dtor_typ; { readIdents = Dafny.Set>.FromElements(); - RAST._IType _1912_genTpe; - RAST._IType _out406; - _out406 = (this).GenType(_1911_typ, DCOMP.GenTypeContext.@default()); - _1912_genTpe = _out406; - BigInteger _1913_i; - _1913_i = BigInteger.Zero; - Dafny.ISequence _1914_args; - _1914_args = Dafny.Sequence.FromElements(); - while ((_1913_i) < (new BigInteger((_1910_exprs).Count))) { - RAST._IExpr _1915_recursiveGen; - DCOMP._IOwnership _1916___v171; - Dafny.ISet> _1917_recIdents; - RAST._IExpr _out407; - DCOMP._IOwnership _out408; - Dafny.ISet> _out409; - (this).GenExpr((_1910_exprs).Select(_1913_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out407, out _out408, out _out409); - _1915_recursiveGen = _out407; - _1916___v171 = _out408; - _1917_recIdents = _out409; - readIdents = Dafny.Set>.Union(readIdents, _1917_recIdents); - _1914_args = Dafny.Sequence.Concat(_1914_args, Dafny.Sequence.FromElements(_1915_recursiveGen)); - _1913_i = (_1913_i) + (BigInteger.One); + RAST._IType _78_genTpe; + RAST._IType _out63; + _out63 = (this).GenType(_77_typ, DCOMP.GenTypeContext.@default()); + _78_genTpe = _out63; + BigInteger _79_i; + _79_i = BigInteger.Zero; + Dafny.ISequence _80_args; + _80_args = Dafny.Sequence.FromElements(); + while ((_79_i) < (new BigInteger((_76_exprs).Count))) { + RAST._IExpr _81_recursiveGen; + DCOMP._IOwnership _82___v171; + Dafny.ISet> _83_recIdents; + RAST._IExpr _out64; + DCOMP._IOwnership _out65; + Dafny.ISet> _out66; + (this).GenExpr((_76_exprs).Select(_79_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out64, out _out65, out _out66); + _81_recursiveGen = _out64; + _82___v171 = _out65; + _83_recIdents = _out66; + readIdents = Dafny.Set>.Union(readIdents, _83_recIdents); + _80_args = Dafny.Sequence.Concat(_80_args, Dafny.Sequence.FromElements(_81_recursiveGen)); + _79_i = (_79_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("seq!"))).Apply(_1914_args); - if ((new BigInteger((_1914_args).Count)).Sign == 0) { - r = RAST.Expr.create_TypeAscription(r, ((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence"))).Apply1(_1912_genTpe)); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("seq!"))).Apply(_80_args); + if ((new BigInteger((_80_args).Count)).Sign == 0) { + r = RAST.Expr.create_TypeAscription(r, ((RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("Sequence"))).Apply1(_78_genTpe)); } - RAST._IExpr _out410; - DCOMP._IOwnership _out411; - (this).FromOwned(r, expectedOwnership, out _out410, out _out411); - r = _out410; - resultingOwnership = _out411; + RAST._IExpr _out67; + DCOMP._IOwnership _out68; + (this).FromOwned(r, expectedOwnership, out _out67, out _out68); + r = _out67; + resultingOwnership = _out68; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SetValue) { - Dafny.ISequence _1918_exprs = _source96.dtor_elements; + if (_source0.is_SetValue) { + Dafny.ISequence _84_exprs = _source0.dtor_elements; { - Dafny.ISequence _1919_generatedValues; - _1919_generatedValues = Dafny.Sequence.FromElements(); + Dafny.ISequence _85_generatedValues; + _85_generatedValues = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1920_i; - _1920_i = BigInteger.Zero; - while ((_1920_i) < (new BigInteger((_1918_exprs).Count))) { - RAST._IExpr _1921_recursiveGen; - DCOMP._IOwnership _1922___v172; - Dafny.ISet> _1923_recIdents; - RAST._IExpr _out412; - DCOMP._IOwnership _out413; - Dafny.ISet> _out414; - (this).GenExpr((_1918_exprs).Select(_1920_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out412, out _out413, out _out414); - _1921_recursiveGen = _out412; - _1922___v172 = _out413; - _1923_recIdents = _out414; - _1919_generatedValues = Dafny.Sequence.Concat(_1919_generatedValues, Dafny.Sequence.FromElements(_1921_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1923_recIdents); - _1920_i = (_1920_i) + (BigInteger.One); + BigInteger _86_i; + _86_i = BigInteger.Zero; + while ((_86_i) < (new BigInteger((_84_exprs).Count))) { + RAST._IExpr _87_recursiveGen; + DCOMP._IOwnership _88___v172; + Dafny.ISet> _89_recIdents; + RAST._IExpr _out69; + DCOMP._IOwnership _out70; + Dafny.ISet> _out71; + (this).GenExpr((_84_exprs).Select(_86_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out69, out _out70, out _out71); + _87_recursiveGen = _out69; + _88___v172 = _out70; + _89_recIdents = _out71; + _85_generatedValues = Dafny.Sequence.Concat(_85_generatedValues, Dafny.Sequence.FromElements(_87_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _89_recIdents); + _86_i = (_86_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("set!"))).Apply(_1919_generatedValues); - RAST._IExpr _out415; - DCOMP._IOwnership _out416; - (this).FromOwned(r, expectedOwnership, out _out415, out _out416); - r = _out415; - resultingOwnership = _out416; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("set!"))).Apply(_85_generatedValues); + RAST._IExpr _out72; + DCOMP._IOwnership _out73; + (this).FromOwned(r, expectedOwnership, out _out72, out _out73); + r = _out72; + resultingOwnership = _out73; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MultisetValue) { - Dafny.ISequence _1924_exprs = _source96.dtor_elements; + if (_source0.is_MultisetValue) { + Dafny.ISequence _90_exprs = _source0.dtor_elements; { - Dafny.ISequence _1925_generatedValues; - _1925_generatedValues = Dafny.Sequence.FromElements(); + Dafny.ISequence _91_generatedValues; + _91_generatedValues = Dafny.Sequence.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1926_i; - _1926_i = BigInteger.Zero; - while ((_1926_i) < (new BigInteger((_1924_exprs).Count))) { - RAST._IExpr _1927_recursiveGen; - DCOMP._IOwnership _1928___v173; - Dafny.ISet> _1929_recIdents; - RAST._IExpr _out417; - DCOMP._IOwnership _out418; - Dafny.ISet> _out419; - (this).GenExpr((_1924_exprs).Select(_1926_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out417, out _out418, out _out419); - _1927_recursiveGen = _out417; - _1928___v173 = _out418; - _1929_recIdents = _out419; - _1925_generatedValues = Dafny.Sequence.Concat(_1925_generatedValues, Dafny.Sequence.FromElements(_1927_recursiveGen)); - readIdents = Dafny.Set>.Union(readIdents, _1929_recIdents); - _1926_i = (_1926_i) + (BigInteger.One); + BigInteger _92_i; + _92_i = BigInteger.Zero; + while ((_92_i) < (new BigInteger((_90_exprs).Count))) { + RAST._IExpr _93_recursiveGen; + DCOMP._IOwnership _94___v173; + Dafny.ISet> _95_recIdents; + RAST._IExpr _out74; + DCOMP._IOwnership _out75; + Dafny.ISet> _out76; + (this).GenExpr((_90_exprs).Select(_92_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out74, out _out75, out _out76); + _93_recursiveGen = _out74; + _94___v173 = _out75; + _95_recIdents = _out76; + _91_generatedValues = Dafny.Sequence.Concat(_91_generatedValues, Dafny.Sequence.FromElements(_93_recursiveGen)); + readIdents = Dafny.Set>.Union(readIdents, _95_recIdents); + _92_i = (_92_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("multiset!"))).Apply(_1925_generatedValues); - RAST._IExpr _out420; - DCOMP._IOwnership _out421; - (this).FromOwned(r, expectedOwnership, out _out420, out _out421); - r = _out420; - resultingOwnership = _out421; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("multiset!"))).Apply(_91_generatedValues); + RAST._IExpr _out77; + DCOMP._IOwnership _out78; + (this).FromOwned(r, expectedOwnership, out _out77, out _out78); + r = _out77; + resultingOwnership = _out78; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_ToMultiset) { - DAST._IExpression _1930_expr = _source96.dtor_ToMultiset_a0; + if (_source0.is_ToMultiset) { + DAST._IExpression _96_expr = _source0.dtor_ToMultiset_a0; { - RAST._IExpr _1931_recursiveGen; - DCOMP._IOwnership _1932___v174; - Dafny.ISet> _1933_recIdents; - RAST._IExpr _out422; - DCOMP._IOwnership _out423; - Dafny.ISet> _out424; - (this).GenExpr(_1930_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out422, out _out423, out _out424); - _1931_recursiveGen = _out422; - _1932___v174 = _out423; - _1933_recIdents = _out424; - r = ((_1931_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("as_dafny_multiset"))).Apply(Dafny.Sequence.FromElements()); - readIdents = _1933_recIdents; - RAST._IExpr _out425; - DCOMP._IOwnership _out426; - (this).FromOwned(r, expectedOwnership, out _out425, out _out426); - r = _out425; - resultingOwnership = _out426; + RAST._IExpr _97_recursiveGen; + DCOMP._IOwnership _98___v174; + Dafny.ISet> _99_recIdents; + RAST._IExpr _out79; + DCOMP._IOwnership _out80; + Dafny.ISet> _out81; + (this).GenExpr(_96_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out79, out _out80, out _out81); + _97_recursiveGen = _out79; + _98___v174 = _out80; + _99_recIdents = _out81; + r = ((_97_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("as_dafny_multiset"))).Apply(Dafny.Sequence.FromElements()); + readIdents = _99_recIdents; + RAST._IExpr _out82; + DCOMP._IOwnership _out83; + (this).FromOwned(r, expectedOwnership, out _out82, out _out83); + r = _out82; + resultingOwnership = _out83; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapValue) { - Dafny.ISequence<_System._ITuple2> _1934_mapElems = _source96.dtor_mapElems; + if (_source0.is_MapValue) { + Dafny.ISequence<_System._ITuple2> _100_mapElems = _source0.dtor_mapElems; { - Dafny.ISequence<_System._ITuple2> _1935_generatedValues; - _1935_generatedValues = Dafny.Sequence<_System._ITuple2>.FromElements(); + Dafny.ISequence<_System._ITuple2> _101_generatedValues; + _101_generatedValues = Dafny.Sequence<_System._ITuple2>.FromElements(); readIdents = Dafny.Set>.FromElements(); - BigInteger _1936_i; - _1936_i = BigInteger.Zero; - while ((_1936_i) < (new BigInteger((_1934_mapElems).Count))) { - RAST._IExpr _1937_recursiveGenKey; - DCOMP._IOwnership _1938___v175; - Dafny.ISet> _1939_recIdentsKey; - RAST._IExpr _out427; - DCOMP._IOwnership _out428; - Dafny.ISet> _out429; - (this).GenExpr(((_1934_mapElems).Select(_1936_i)).dtor__0, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out427, out _out428, out _out429); - _1937_recursiveGenKey = _out427; - _1938___v175 = _out428; - _1939_recIdentsKey = _out429; - RAST._IExpr _1940_recursiveGenValue; - DCOMP._IOwnership _1941___v176; - Dafny.ISet> _1942_recIdentsValue; - RAST._IExpr _out430; - DCOMP._IOwnership _out431; - Dafny.ISet> _out432; - (this).GenExpr(((_1934_mapElems).Select(_1936_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out430, out _out431, out _out432); - _1940_recursiveGenValue = _out430; - _1941___v176 = _out431; - _1942_recIdentsValue = _out432; - _1935_generatedValues = Dafny.Sequence<_System._ITuple2>.Concat(_1935_generatedValues, Dafny.Sequence<_System._ITuple2>.FromElements(_System.Tuple2.create(_1937_recursiveGenKey, _1940_recursiveGenValue))); - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(readIdents, _1939_recIdentsKey), _1942_recIdentsValue); - _1936_i = (_1936_i) + (BigInteger.One); + BigInteger _102_i; + _102_i = BigInteger.Zero; + while ((_102_i) < (new BigInteger((_100_mapElems).Count))) { + RAST._IExpr _103_recursiveGenKey; + DCOMP._IOwnership _104___v175; + Dafny.ISet> _105_recIdentsKey; + RAST._IExpr _out84; + DCOMP._IOwnership _out85; + Dafny.ISet> _out86; + (this).GenExpr(((_100_mapElems).Select(_102_i)).dtor__0, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out84, out _out85, out _out86); + _103_recursiveGenKey = _out84; + _104___v175 = _out85; + _105_recIdentsKey = _out86; + RAST._IExpr _106_recursiveGenValue; + DCOMP._IOwnership _107___v176; + Dafny.ISet> _108_recIdentsValue; + RAST._IExpr _out87; + DCOMP._IOwnership _out88; + Dafny.ISet> _out89; + (this).GenExpr(((_100_mapElems).Select(_102_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out87, out _out88, out _out89); + _106_recursiveGenValue = _out87; + _107___v176 = _out88; + _108_recIdentsValue = _out89; + _101_generatedValues = Dafny.Sequence<_System._ITuple2>.Concat(_101_generatedValues, Dafny.Sequence<_System._ITuple2>.FromElements(_System.Tuple2.create(_103_recursiveGenKey, _106_recursiveGenValue))); + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(readIdents, _105_recIdentsKey), _108_recIdentsValue); + _102_i = (_102_i) + (BigInteger.One); } - _1936_i = BigInteger.Zero; - Dafny.ISequence _1943_arguments; - _1943_arguments = Dafny.Sequence.FromElements(); - while ((_1936_i) < (new BigInteger((_1935_generatedValues).Count))) { - RAST._IExpr _1944_genKey; - _1944_genKey = ((_1935_generatedValues).Select(_1936_i)).dtor__0; - RAST._IExpr _1945_genValue; - _1945_genValue = ((_1935_generatedValues).Select(_1936_i)).dtor__1; - _1943_arguments = Dafny.Sequence.Concat(_1943_arguments, Dafny.Sequence.FromElements(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=>"), _1944_genKey, _1945_genValue, DAST.Format.BinaryOpFormat.create_NoFormat()))); - _1936_i = (_1936_i) + (BigInteger.One); + _102_i = BigInteger.Zero; + Dafny.ISequence _109_arguments; + _109_arguments = Dafny.Sequence.FromElements(); + while ((_102_i) < (new BigInteger((_101_generatedValues).Count))) { + RAST._IExpr _110_genKey; + _110_genKey = ((_101_generatedValues).Select(_102_i)).dtor__0; + RAST._IExpr _111_genValue; + _111_genValue = ((_101_generatedValues).Select(_102_i)).dtor__1; + _109_arguments = Dafny.Sequence.Concat(_109_arguments, Dafny.Sequence.FromElements(RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("=>"), _110_genKey, _111_genValue, DAST.Format.BinaryOpFormat.create_NoFormat()))); + _102_i = (_102_i) + (BigInteger.One); } - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("map!"))).Apply(_1943_arguments); - RAST._IExpr _out433; - DCOMP._IOwnership _out434; - (this).FromOwned(r, expectedOwnership, out _out433, out _out434); - r = _out433; - resultingOwnership = _out434; + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("map!"))).Apply(_109_arguments); + RAST._IExpr _out90; + DCOMP._IOwnership _out91; + (this).FromOwned(r, expectedOwnership, out _out90, out _out91); + r = _out90; + resultingOwnership = _out91; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SeqUpdate) { - DAST._IExpression _1946_expr = _source96.dtor_expr; - DAST._IExpression _1947_index = _source96.dtor_indexExpr; - DAST._IExpression _1948_value = _source96.dtor_value; + if (_source0.is_SeqUpdate) { + DAST._IExpression _112_expr = _source0.dtor_expr; + DAST._IExpression _113_index = _source0.dtor_indexExpr; + DAST._IExpression _114_value = _source0.dtor_value; { - RAST._IExpr _1949_exprR; - DCOMP._IOwnership _1950___v177; - Dafny.ISet> _1951_exprIdents; - RAST._IExpr _out435; - DCOMP._IOwnership _out436; - Dafny.ISet> _out437; - (this).GenExpr(_1946_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out435, out _out436, out _out437); - _1949_exprR = _out435; - _1950___v177 = _out436; - _1951_exprIdents = _out437; - RAST._IExpr _1952_indexR; - DCOMP._IOwnership _1953_indexOwnership; - Dafny.ISet> _1954_indexIdents; - RAST._IExpr _out438; - DCOMP._IOwnership _out439; - Dafny.ISet> _out440; - (this).GenExpr(_1947_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out438, out _out439, out _out440); - _1952_indexR = _out438; - _1953_indexOwnership = _out439; - _1954_indexIdents = _out440; - RAST._IExpr _1955_valueR; - DCOMP._IOwnership _1956_valueOwnership; - Dafny.ISet> _1957_valueIdents; - RAST._IExpr _out441; - DCOMP._IOwnership _out442; - Dafny.ISet> _out443; - (this).GenExpr(_1948_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out441, out _out442, out _out443); - _1955_valueR = _out441; - _1956_valueOwnership = _out442; - _1957_valueIdents = _out443; - r = ((_1949_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1952_indexR, _1955_valueR)); - RAST._IExpr _out444; - DCOMP._IOwnership _out445; - (this).FromOwned(r, expectedOwnership, out _out444, out _out445); - r = _out444; - resultingOwnership = _out445; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1951_exprIdents, _1954_indexIdents), _1957_valueIdents); + RAST._IExpr _115_exprR; + DCOMP._IOwnership _116___v177; + Dafny.ISet> _117_exprIdents; + RAST._IExpr _out92; + DCOMP._IOwnership _out93; + Dafny.ISet> _out94; + (this).GenExpr(_112_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out92, out _out93, out _out94); + _115_exprR = _out92; + _116___v177 = _out93; + _117_exprIdents = _out94; + RAST._IExpr _118_indexR; + DCOMP._IOwnership _119_indexOwnership; + Dafny.ISet> _120_indexIdents; + RAST._IExpr _out95; + DCOMP._IOwnership _out96; + Dafny.ISet> _out97; + (this).GenExpr(_113_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out95, out _out96, out _out97); + _118_indexR = _out95; + _119_indexOwnership = _out96; + _120_indexIdents = _out97; + RAST._IExpr _121_valueR; + DCOMP._IOwnership _122_valueOwnership; + Dafny.ISet> _123_valueIdents; + RAST._IExpr _out98; + DCOMP._IOwnership _out99; + Dafny.ISet> _out100; + (this).GenExpr(_114_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out98, out _out99, out _out100); + _121_valueR = _out98; + _122_valueOwnership = _out99; + _123_valueIdents = _out100; + r = ((_115_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_118_indexR, _121_valueR)); + RAST._IExpr _out101; + DCOMP._IOwnership _out102; + (this).FromOwned(r, expectedOwnership, out _out101, out _out102); + r = _out101; + resultingOwnership = _out102; + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_117_exprIdents, _120_indexIdents), _123_valueIdents); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapUpdate) { - DAST._IExpression _1958_expr = _source96.dtor_expr; - DAST._IExpression _1959_index = _source96.dtor_indexExpr; - DAST._IExpression _1960_value = _source96.dtor_value; + if (_source0.is_MapUpdate) { + DAST._IExpression _124_expr = _source0.dtor_expr; + DAST._IExpression _125_index = _source0.dtor_indexExpr; + DAST._IExpression _126_value = _source0.dtor_value; { - RAST._IExpr _1961_exprR; - DCOMP._IOwnership _1962___v178; - Dafny.ISet> _1963_exprIdents; - RAST._IExpr _out446; - DCOMP._IOwnership _out447; - Dafny.ISet> _out448; - (this).GenExpr(_1958_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out446, out _out447, out _out448); - _1961_exprR = _out446; - _1962___v178 = _out447; - _1963_exprIdents = _out448; - RAST._IExpr _1964_indexR; - DCOMP._IOwnership _1965_indexOwnership; - Dafny.ISet> _1966_indexIdents; - RAST._IExpr _out449; - DCOMP._IOwnership _out450; - Dafny.ISet> _out451; - (this).GenExpr(_1959_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out449, out _out450, out _out451); - _1964_indexR = _out449; - _1965_indexOwnership = _out450; - _1966_indexIdents = _out451; - RAST._IExpr _1967_valueR; - DCOMP._IOwnership _1968_valueOwnership; - Dafny.ISet> _1969_valueIdents; - RAST._IExpr _out452; - DCOMP._IOwnership _out453; - Dafny.ISet> _out454; - (this).GenExpr(_1960_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out452, out _out453, out _out454); - _1967_valueR = _out452; - _1968_valueOwnership = _out453; - _1969_valueIdents = _out454; - r = ((_1961_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_1964_indexR, _1967_valueR)); - RAST._IExpr _out455; - DCOMP._IOwnership _out456; - (this).FromOwned(r, expectedOwnership, out _out455, out _out456); - r = _out455; - resultingOwnership = _out456; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1963_exprIdents, _1966_indexIdents), _1969_valueIdents); + RAST._IExpr _127_exprR; + DCOMP._IOwnership _128___v178; + Dafny.ISet> _129_exprIdents; + RAST._IExpr _out103; + DCOMP._IOwnership _out104; + Dafny.ISet> _out105; + (this).GenExpr(_124_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out103, out _out104, out _out105); + _127_exprR = _out103; + _128___v178 = _out104; + _129_exprIdents = _out105; + RAST._IExpr _130_indexR; + DCOMP._IOwnership _131_indexOwnership; + Dafny.ISet> _132_indexIdents; + RAST._IExpr _out106; + DCOMP._IOwnership _out107; + Dafny.ISet> _out108; + (this).GenExpr(_125_index, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out106, out _out107, out _out108); + _130_indexR = _out106; + _131_indexOwnership = _out107; + _132_indexIdents = _out108; + RAST._IExpr _133_valueR; + DCOMP._IOwnership _134_valueOwnership; + Dafny.ISet> _135_valueIdents; + RAST._IExpr _out109; + DCOMP._IOwnership _out110; + Dafny.ISet> _out111; + (this).GenExpr(_126_value, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out109, out _out110, out _out111); + _133_valueR = _out109; + _134_valueOwnership = _out110; + _135_valueIdents = _out111; + r = ((_127_exprR).Sel(Dafny.Sequence.UnicodeFromString("update_index"))).Apply(Dafny.Sequence.FromElements(_130_indexR, _133_valueR)); + RAST._IExpr _out112; + DCOMP._IOwnership _out113; + (this).FromOwned(r, expectedOwnership, out _out112, out _out113); + r = _out112; + resultingOwnership = _out113; + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_129_exprIdents, _132_indexIdents), _135_valueIdents); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_This) { + if (_source0.is_This) { { - DCOMP._ISelfInfo _source97 = selfIdent; + DCOMP._ISelfInfo _source1 = selfIdent; { - if (_source97.is_ThisTyped) { - Dafny.ISequence _1970_id = _source97.dtor_rSelfName; - DAST._IType _1971_dafnyType = _source97.dtor_dafnyType; + if (_source1.is_ThisTyped) { + Dafny.ISequence _136_id = _source1.dtor_rSelfName; + DAST._IType _137_dafnyType = _source1.dtor_dafnyType; { - RAST._IExpr _out457; - DCOMP._IOwnership _out458; - Dafny.ISet> _out459; - (this).GenIdent(_1970_id, selfIdent, env, expectedOwnership, out _out457, out _out458, out _out459); - r = _out457; - resultingOwnership = _out458; - readIdents = _out459; + RAST._IExpr _out114; + DCOMP._IOwnership _out115; + Dafny.ISet> _out116; + (this).GenIdent(_136_id, selfIdent, env, expectedOwnership, out _out114, out _out115, out _out116); + r = _out114; + resultingOwnership = _out115; + readIdents = _out116; } - goto after_match42; + goto after_match1; } } { - DCOMP._ISelfInfo _1972_None = _source97; + DCOMP._ISelfInfo _138_None = _source1; { r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("panic!(\"this outside of a method\")")); - RAST._IExpr _out460; - DCOMP._IOwnership _out461; - (this).FromOwned(r, expectedOwnership, out _out460, out _out461); - r = _out460; - resultingOwnership = _out461; + RAST._IExpr _out117; + DCOMP._IOwnership _out118; + (this).FromOwned(r, expectedOwnership, out _out117, out _out118); + r = _out117; + resultingOwnership = _out118; readIdents = Dafny.Set>.FromElements(); } } - after_match42: ; + after_match1: ; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Ite) { - DAST._IExpression _1973_cond = _source96.dtor_cond; - DAST._IExpression _1974_t = _source96.dtor_thn; - DAST._IExpression _1975_f = _source96.dtor_els; + if (_source0.is_Ite) { + DAST._IExpression _139_cond = _source0.dtor_cond; + DAST._IExpression _140_t = _source0.dtor_thn; + DAST._IExpression _141_f = _source0.dtor_els; { - RAST._IExpr _1976_cond; - DCOMP._IOwnership _1977___v179; - Dafny.ISet> _1978_recIdentsCond; - RAST._IExpr _out462; - DCOMP._IOwnership _out463; - Dafny.ISet> _out464; - (this).GenExpr(_1973_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out462, out _out463, out _out464); - _1976_cond = _out462; - _1977___v179 = _out463; - _1978_recIdentsCond = _out464; - RAST._IExpr _1979_fExpr; - DCOMP._IOwnership _1980_fOwned; - Dafny.ISet> _1981_recIdentsF; - RAST._IExpr _out465; - DCOMP._IOwnership _out466; - Dafny.ISet> _out467; - (this).GenExpr(_1975_f, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out465, out _out466, out _out467); - _1979_fExpr = _out465; - _1980_fOwned = _out466; - _1981_recIdentsF = _out467; - RAST._IExpr _1982_tExpr; - DCOMP._IOwnership _1983___v180; - Dafny.ISet> _1984_recIdentsT; - RAST._IExpr _out468; - DCOMP._IOwnership _out469; - Dafny.ISet> _out470; - (this).GenExpr(_1974_t, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out468, out _out469, out _out470); - _1982_tExpr = _out468; - _1983___v180 = _out469; - _1984_recIdentsT = _out470; - r = RAST.Expr.create_IfExpr(_1976_cond, _1982_tExpr, _1979_fExpr); - RAST._IExpr _out471; - DCOMP._IOwnership _out472; - (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out471, out _out472); - r = _out471; - resultingOwnership = _out472; - readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_1978_recIdentsCond, _1984_recIdentsT), _1981_recIdentsF); + RAST._IExpr _142_cond; + DCOMP._IOwnership _143___v179; + Dafny.ISet> _144_recIdentsCond; + RAST._IExpr _out119; + DCOMP._IOwnership _out120; + Dafny.ISet> _out121; + (this).GenExpr(_139_cond, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out119, out _out120, out _out121); + _142_cond = _out119; + _143___v179 = _out120; + _144_recIdentsCond = _out121; + RAST._IExpr _145_fExpr; + DCOMP._IOwnership _146_fOwned; + Dafny.ISet> _147_recIdentsF; + RAST._IExpr _out122; + DCOMP._IOwnership _out123; + Dafny.ISet> _out124; + (this).GenExpr(_141_f, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out122, out _out123, out _out124); + _145_fExpr = _out122; + _146_fOwned = _out123; + _147_recIdentsF = _out124; + RAST._IExpr _148_tExpr; + DCOMP._IOwnership _149___v180; + Dafny.ISet> _150_recIdentsT; + RAST._IExpr _out125; + DCOMP._IOwnership _out126; + Dafny.ISet> _out127; + (this).GenExpr(_140_t, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out125, out _out126, out _out127); + _148_tExpr = _out125; + _149___v180 = _out126; + _150_recIdentsT = _out127; + r = RAST.Expr.create_IfExpr(_142_cond, _148_tExpr, _145_fExpr); + RAST._IExpr _out128; + DCOMP._IOwnership _out129; + (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out128, out _out129); + r = _out128; + resultingOwnership = _out129; + readIdents = Dafny.Set>.Union(Dafny.Set>.Union(_144_recIdentsCond, _150_recIdentsT), _147_recIdentsF); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_UnOp) { - DAST._IUnaryOp unOp0 = _source96.dtor_unOp; + if (_source0.is_UnOp) { + DAST._IUnaryOp unOp0 = _source0.dtor_unOp; if (unOp0.is_Not) { - DAST._IExpression _1985_e = _source96.dtor_expr; - DAST.Format._IUnaryOpFormat _1986_format = _source96.dtor_format1; + DAST._IExpression _151_e = _source0.dtor_expr; + DAST.Format._IUnaryOpFormat _152_format = _source0.dtor_format1; { - RAST._IExpr _1987_recursiveGen; - DCOMP._IOwnership _1988___v181; - Dafny.ISet> _1989_recIdents; - RAST._IExpr _out473; - DCOMP._IOwnership _out474; - Dafny.ISet> _out475; - (this).GenExpr(_1985_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out473, out _out474, out _out475); - _1987_recursiveGen = _out473; - _1988___v181 = _out474; - _1989_recIdents = _out475; - r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _1987_recursiveGen, _1986_format); - RAST._IExpr _out476; - DCOMP._IOwnership _out477; - (this).FromOwned(r, expectedOwnership, out _out476, out _out477); - r = _out476; - resultingOwnership = _out477; - readIdents = _1989_recIdents; + RAST._IExpr _153_recursiveGen; + DCOMP._IOwnership _154___v181; + Dafny.ISet> _155_recIdents; + RAST._IExpr _out130; + DCOMP._IOwnership _out131; + Dafny.ISet> _out132; + (this).GenExpr(_151_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out130, out _out131, out _out132); + _153_recursiveGen = _out130; + _154___v181 = _out131; + _155_recIdents = _out132; + r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("!"), _153_recursiveGen, _152_format); + RAST._IExpr _out133; + DCOMP._IOwnership _out134; + (this).FromOwned(r, expectedOwnership, out _out133, out _out134); + r = _out133; + resultingOwnership = _out134; + readIdents = _155_recIdents; return ; } - goto after_match41; + goto after_match0; } } } { - if (_source96.is_UnOp) { - DAST._IUnaryOp unOp1 = _source96.dtor_unOp; + if (_source0.is_UnOp) { + DAST._IUnaryOp unOp1 = _source0.dtor_unOp; if (unOp1.is_BitwiseNot) { - DAST._IExpression _1990_e = _source96.dtor_expr; - DAST.Format._IUnaryOpFormat _1991_format = _source96.dtor_format1; + DAST._IExpression _156_e = _source0.dtor_expr; + DAST.Format._IUnaryOpFormat _157_format = _source0.dtor_format1; { - RAST._IExpr _1992_recursiveGen; - DCOMP._IOwnership _1993___v182; - Dafny.ISet> _1994_recIdents; - RAST._IExpr _out478; - DCOMP._IOwnership _out479; - Dafny.ISet> _out480; - (this).GenExpr(_1990_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out478, out _out479, out _out480); - _1992_recursiveGen = _out478; - _1993___v182 = _out479; - _1994_recIdents = _out480; - r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("~"), _1992_recursiveGen, _1991_format); - RAST._IExpr _out481; - DCOMP._IOwnership _out482; - (this).FromOwned(r, expectedOwnership, out _out481, out _out482); - r = _out481; - resultingOwnership = _out482; - readIdents = _1994_recIdents; + RAST._IExpr _158_recursiveGen; + DCOMP._IOwnership _159___v182; + Dafny.ISet> _160_recIdents; + RAST._IExpr _out135; + DCOMP._IOwnership _out136; + Dafny.ISet> _out137; + (this).GenExpr(_156_e, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out135, out _out136, out _out137); + _158_recursiveGen = _out135; + _159___v182 = _out136; + _160_recIdents = _out137; + r = RAST.Expr.create_UnaryOp(Dafny.Sequence.UnicodeFromString("~"), _158_recursiveGen, _157_format); + RAST._IExpr _out138; + DCOMP._IOwnership _out139; + (this).FromOwned(r, expectedOwnership, out _out138, out _out139); + r = _out138; + resultingOwnership = _out139; + readIdents = _160_recIdents; return ; } - goto after_match41; + goto after_match0; } } } { - if (_source96.is_UnOp) { - DAST._IUnaryOp unOp2 = _source96.dtor_unOp; + if (_source0.is_UnOp) { + DAST._IUnaryOp unOp2 = _source0.dtor_unOp; if (unOp2.is_Cardinality) { - DAST._IExpression _1995_e = _source96.dtor_expr; - DAST.Format._IUnaryOpFormat _1996_format = _source96.dtor_format1; + DAST._IExpression _161_e = _source0.dtor_expr; + DAST.Format._IUnaryOpFormat _162_format = _source0.dtor_format1; { - RAST._IExpr _1997_recursiveGen; - DCOMP._IOwnership _1998_recOwned; - Dafny.ISet> _1999_recIdents; - RAST._IExpr _out483; - DCOMP._IOwnership _out484; - Dafny.ISet> _out485; - (this).GenExpr(_1995_e, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out483, out _out484, out _out485); - _1997_recursiveGen = _out483; - _1998_recOwned = _out484; - _1999_recIdents = _out485; - r = ((_1997_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("cardinality"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out486; - DCOMP._IOwnership _out487; - (this).FromOwned(r, expectedOwnership, out _out486, out _out487); - r = _out486; - resultingOwnership = _out487; - readIdents = _1999_recIdents; + RAST._IExpr _163_recursiveGen; + DCOMP._IOwnership _164_recOwned; + Dafny.ISet> _165_recIdents; + RAST._IExpr _out140; + DCOMP._IOwnership _out141; + Dafny.ISet> _out142; + (this).GenExpr(_161_e, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out140, out _out141, out _out142); + _163_recursiveGen = _out140; + _164_recOwned = _out141; + _165_recIdents = _out142; + r = ((_163_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("cardinality"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out143; + DCOMP._IOwnership _out144; + (this).FromOwned(r, expectedOwnership, out _out143, out _out144); + r = _out143; + resultingOwnership = _out144; + readIdents = _165_recIdents; return ; } - goto after_match41; + goto after_match0; } } } { - if (_source96.is_BinOp) { - RAST._IExpr _out488; - DCOMP._IOwnership _out489; - Dafny.ISet> _out490; - (this).GenExprBinary(e, selfIdent, env, expectedOwnership, out _out488, out _out489, out _out490); - r = _out488; - resultingOwnership = _out489; - readIdents = _out490; - goto after_match41; + if (_source0.is_BinOp) { + RAST._IExpr _out145; + DCOMP._IOwnership _out146; + Dafny.ISet> _out147; + (this).GenExprBinary(e, selfIdent, env, expectedOwnership, out _out145, out _out146, out _out147); + r = _out145; + resultingOwnership = _out146; + readIdents = _out147; + goto after_match0; } } { - if (_source96.is_ArrayLen) { - DAST._IExpression _2000_expr = _source96.dtor_expr; - DAST._IType _2001_exprType = _source96.dtor_exprType; - BigInteger _2002_dim = _source96.dtor_dim; - bool _2003_native = _source96.dtor_native; + if (_source0.is_ArrayLen) { + DAST._IExpression _166_expr = _source0.dtor_expr; + DAST._IType _167_exprType = _source0.dtor_exprType; + BigInteger _168_dim = _source0.dtor_dim; + bool _169_native = _source0.dtor_native; { - RAST._IExpr _2004_recursiveGen; - DCOMP._IOwnership _2005___v187; - Dafny.ISet> _2006_recIdents; - RAST._IExpr _out491; - DCOMP._IOwnership _out492; - Dafny.ISet> _out493; - (this).GenExpr(_2000_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out491, out _out492, out _out493); - _2004_recursiveGen = _out491; - _2005___v187 = _out492; - _2006_recIdents = _out493; - RAST._IType _2007_arrayType; - RAST._IType _out494; - _out494 = (this).GenType(_2001_exprType, DCOMP.GenTypeContext.@default()); - _2007_arrayType = _out494; - if (!((_2007_arrayType).IsObjectOrPointer())) { - Dafny.ISequence _2008_msg; - _2008_msg = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array length of something not an array but "), (_2007_arrayType)._ToString(DCOMP.__default.IND)); - (this).error = Std.Wrappers.Option>.create_Some(_2008_msg); - r = RAST.Expr.create_RawExpr(_2008_msg); + RAST._IExpr _170_recursiveGen; + DCOMP._IOwnership _171___v187; + Dafny.ISet> _172_recIdents; + RAST._IExpr _out148; + DCOMP._IOwnership _out149; + Dafny.ISet> _out150; + (this).GenExpr(_166_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out148, out _out149, out _out150); + _170_recursiveGen = _out148; + _171___v187 = _out149; + _172_recIdents = _out150; + RAST._IType _173_arrayType; + RAST._IType _out151; + _out151 = (this).GenType(_167_exprType, DCOMP.GenTypeContext.@default()); + _173_arrayType = _out151; + if (!((_173_arrayType).IsObjectOrPointer())) { + Dafny.ISequence _174_msg; + _174_msg = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("Array length of something not an array but "), (_173_arrayType)._ToString(DCOMP.__default.IND)); + (this).error = Std.Wrappers.Option>.create_Some(_174_msg); + r = RAST.Expr.create_RawExpr(_174_msg); } else { - RAST._IType _2009_underlying; - _2009_underlying = (_2007_arrayType).ObjectOrPointerUnderlying(); - if (((_2002_dim).Sign == 0) && ((_2009_underlying).is_Array)) { - r = ((((this).read__macro).Apply1(_2004_recursiveGen)).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()); + RAST._IType _175_underlying; + _175_underlying = (_173_arrayType).ObjectOrPointerUnderlying(); + if (((_168_dim).Sign == 0) && ((_175_underlying).is_Array)) { + r = ((((this).read__macro).Apply1(_170_recursiveGen)).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()); } else { - if ((_2002_dim).Sign == 0) { - r = (((((this).read__macro).Apply1(_2004_recursiveGen)).Sel(Dafny.Sequence.UnicodeFromString("data"))).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()); + if ((_168_dim).Sign == 0) { + r = (((((this).read__macro).Apply1(_170_recursiveGen)).Sel(Dafny.Sequence.UnicodeFromString("data"))).Sel(Dafny.Sequence.UnicodeFromString("len"))).Apply(Dafny.Sequence.FromElements()); } else { - r = ((((this).read__macro).Apply1(_2004_recursiveGen)).Sel(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("length"), Std.Strings.__default.OfNat(_2002_dim)), Dafny.Sequence.UnicodeFromString("_usize")))).Apply(Dafny.Sequence.FromElements()); + r = ((((this).read__macro).Apply1(_170_recursiveGen)).Sel(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("length"), Std.Strings.__default.OfNat(_168_dim)), Dafny.Sequence.UnicodeFromString("_usize")))).Apply(Dafny.Sequence.FromElements()); } } - if (!(_2003_native)) { + if (!(_169_native)) { r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("int!"))).Apply1(r); } } - RAST._IExpr _out495; - DCOMP._IOwnership _out496; - (this).FromOwned(r, expectedOwnership, out _out495, out _out496); - r = _out495; - resultingOwnership = _out496; - readIdents = _2006_recIdents; + RAST._IExpr _out152; + DCOMP._IOwnership _out153; + (this).FromOwned(r, expectedOwnership, out _out152, out _out153); + r = _out152; + resultingOwnership = _out153; + readIdents = _172_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapKeys) { - DAST._IExpression _2010_expr = _source96.dtor_expr; + if (_source0.is_MapKeys) { + DAST._IExpression _176_expr = _source0.dtor_expr; { - RAST._IExpr _2011_recursiveGen; - DCOMP._IOwnership _2012___v188; - Dafny.ISet> _2013_recIdents; - RAST._IExpr _out497; - DCOMP._IOwnership _out498; - Dafny.ISet> _out499; - (this).GenExpr(_2010_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out497, out _out498, out _out499); - _2011_recursiveGen = _out497; - _2012___v188 = _out498; - _2013_recIdents = _out499; - readIdents = _2013_recIdents; - r = ((_2011_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out500; - DCOMP._IOwnership _out501; - (this).FromOwned(r, expectedOwnership, out _out500, out _out501); - r = _out500; - resultingOwnership = _out501; + RAST._IExpr _177_recursiveGen; + DCOMP._IOwnership _178___v188; + Dafny.ISet> _179_recIdents; + RAST._IExpr _out154; + DCOMP._IOwnership _out155; + Dafny.ISet> _out156; + (this).GenExpr(_176_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out154, out _out155, out _out156); + _177_recursiveGen = _out154; + _178___v188 = _out155; + _179_recIdents = _out156; + readIdents = _179_recIdents; + r = ((_177_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out157; + DCOMP._IOwnership _out158; + (this).FromOwned(r, expectedOwnership, out _out157, out _out158); + r = _out157; + resultingOwnership = _out158; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapValues) { - DAST._IExpression _2014_expr = _source96.dtor_expr; + if (_source0.is_MapValues) { + DAST._IExpression _180_expr = _source0.dtor_expr; { - RAST._IExpr _2015_recursiveGen; - DCOMP._IOwnership _2016___v189; - Dafny.ISet> _2017_recIdents; - RAST._IExpr _out502; - DCOMP._IOwnership _out503; - Dafny.ISet> _out504; - (this).GenExpr(_2014_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out502, out _out503, out _out504); - _2015_recursiveGen = _out502; - _2016___v189 = _out503; - _2017_recIdents = _out504; - readIdents = _2017_recIdents; - r = ((_2015_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("values"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out505; - DCOMP._IOwnership _out506; - (this).FromOwned(r, expectedOwnership, out _out505, out _out506); - r = _out505; - resultingOwnership = _out506; + RAST._IExpr _181_recursiveGen; + DCOMP._IOwnership _182___v189; + Dafny.ISet> _183_recIdents; + RAST._IExpr _out159; + DCOMP._IOwnership _out160; + Dafny.ISet> _out161; + (this).GenExpr(_180_expr, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out159, out _out160, out _out161); + _181_recursiveGen = _out159; + _182___v189 = _out160; + _183_recIdents = _out161; + readIdents = _183_recIdents; + r = ((_181_recursiveGen).Sel(Dafny.Sequence.UnicodeFromString("values"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out162; + DCOMP._IOwnership _out163; + (this).FromOwned(r, expectedOwnership, out _out162, out _out163); + r = _out162; + resultingOwnership = _out163; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SelectFn) { - DAST._IExpression _2018_on = _source96.dtor_expr; - Dafny.ISequence _2019_field = _source96.dtor_field; - bool _2020_isDatatype = _source96.dtor_onDatatype; - bool _2021_isStatic = _source96.dtor_isStatic; - BigInteger _2022_arity = _source96.dtor_arity; + if (_source0.is_SelectFn) { + DAST._IExpression _184_on = _source0.dtor_expr; + Dafny.ISequence _185_field = _source0.dtor_field; + bool _186_isDatatype = _source0.dtor_onDatatype; + bool _187_isStatic = _source0.dtor_isStatic; + BigInteger _188_arity = _source0.dtor_arity; { - RAST._IExpr _2023_onExpr; - DCOMP._IOwnership _2024_onOwned; - Dafny.ISet> _2025_recIdents; - RAST._IExpr _out507; - DCOMP._IOwnership _out508; - Dafny.ISet> _out509; - (this).GenExpr(_2018_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out507, out _out508, out _out509); - _2023_onExpr = _out507; - _2024_onOwned = _out508; - _2025_recIdents = _out509; - Dafny.ISequence _2026_s = Dafny.Sequence.Empty; - Dafny.ISequence _2027_onString; - _2027_onString = (_2023_onExpr)._ToString(DCOMP.__default.IND); - if (_2021_isStatic) { - _2026_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_2027_onString, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName(_2019_field)); + RAST._IExpr _189_onExpr; + DCOMP._IOwnership _190_onOwned; + Dafny.ISet> _191_recIdents; + RAST._IExpr _out164; + DCOMP._IOwnership _out165; + Dafny.ISet> _out166; + (this).GenExpr(_184_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out164, out _out165, out _out166); + _189_onExpr = _out164; + _190_onOwned = _out165; + _191_recIdents = _out166; + Dafny.ISequence _192_s = Dafny.Sequence.Empty; + Dafny.ISequence _193_onString; + _193_onString = (_189_onExpr)._ToString(DCOMP.__default.IND); + if (_187_isStatic) { + _192_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_193_onString, Dafny.Sequence.UnicodeFromString("::")), DCOMP.__default.escapeName(_185_field)); } else { - _2026_s = Dafny.Sequence.UnicodeFromString("{\n"); - _2026_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_2026_s, Dafny.Sequence.UnicodeFromString("let callTarget = (")), _2027_onString), ((object.Equals(_2024_onOwned, DCOMP.Ownership.create_OwnershipOwned())) ? (Dafny.Sequence.UnicodeFromString(")")) : (Dafny.Sequence.UnicodeFromString(").clone()")))), Dafny.Sequence.UnicodeFromString(";\n")); - Dafny.ISequence _2028_args; - _2028_args = Dafny.Sequence.UnicodeFromString(""); - BigInteger _2029_i; - _2029_i = BigInteger.Zero; - while ((_2029_i) < (_2022_arity)) { - if ((_2029_i).Sign == 1) { - _2028_args = Dafny.Sequence.Concat(_2028_args, Dafny.Sequence.UnicodeFromString(", ")); + _192_s = Dafny.Sequence.UnicodeFromString("{\n"); + _192_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_192_s, Dafny.Sequence.UnicodeFromString("let callTarget = (")), _193_onString), ((object.Equals(_190_onOwned, DCOMP.Ownership.create_OwnershipOwned())) ? (Dafny.Sequence.UnicodeFromString(")")) : (Dafny.Sequence.UnicodeFromString(").clone()")))), Dafny.Sequence.UnicodeFromString(";\n")); + Dafny.ISequence _194_args; + _194_args = Dafny.Sequence.UnicodeFromString(""); + BigInteger _195_i; + _195_i = BigInteger.Zero; + while ((_195_i) < (_188_arity)) { + if ((_195_i).Sign == 1) { + _194_args = Dafny.Sequence.Concat(_194_args, Dafny.Sequence.UnicodeFromString(", ")); } - _2028_args = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_2028_args, Dafny.Sequence.UnicodeFromString("arg")), Std.Strings.__default.OfNat(_2029_i)); - _2029_i = (_2029_i) + (BigInteger.One); + _194_args = Dafny.Sequence.Concat(Dafny.Sequence.Concat(_194_args, Dafny.Sequence.UnicodeFromString("arg")), Std.Strings.__default.OfNat(_195_i)); + _195_i = (_195_i) + (BigInteger.One); } - _2026_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_2026_s, Dafny.Sequence.UnicodeFromString("move |")), _2028_args), Dafny.Sequence.UnicodeFromString("| {\n")); - _2026_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_2026_s, Dafny.Sequence.UnicodeFromString("callTarget.")), DCOMP.__default.escapeName(_2019_field)), Dafny.Sequence.UnicodeFromString("(")), _2028_args), Dafny.Sequence.UnicodeFromString(")\n")); - _2026_s = Dafny.Sequence.Concat(_2026_s, Dafny.Sequence.UnicodeFromString("}\n")); - _2026_s = Dafny.Sequence.Concat(_2026_s, Dafny.Sequence.UnicodeFromString("}")); + _192_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_192_s, Dafny.Sequence.UnicodeFromString("move |")), _194_args), Dafny.Sequence.UnicodeFromString("| {\n")); + _192_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_192_s, Dafny.Sequence.UnicodeFromString("callTarget.")), DCOMP.__default.escapeName(_185_field)), Dafny.Sequence.UnicodeFromString("(")), _194_args), Dafny.Sequence.UnicodeFromString(")\n")); + _192_s = Dafny.Sequence.Concat(_192_s, Dafny.Sequence.UnicodeFromString("}\n")); + _192_s = Dafny.Sequence.Concat(_192_s, Dafny.Sequence.UnicodeFromString("}")); } - Dafny.ISequence _2030_typeShape; - _2030_typeShape = Dafny.Sequence.UnicodeFromString("dyn ::std::ops::Fn("); - BigInteger _2031_i; - _2031_i = BigInteger.Zero; - while ((_2031_i) < (_2022_arity)) { - if ((_2031_i).Sign == 1) { - _2030_typeShape = Dafny.Sequence.Concat(_2030_typeShape, Dafny.Sequence.UnicodeFromString(", ")); + Dafny.ISequence _196_typeShape; + _196_typeShape = Dafny.Sequence.UnicodeFromString("dyn ::std::ops::Fn("); + BigInteger _197_i; + _197_i = BigInteger.Zero; + while ((_197_i) < (_188_arity)) { + if ((_197_i).Sign == 1) { + _196_typeShape = Dafny.Sequence.Concat(_196_typeShape, Dafny.Sequence.UnicodeFromString(", ")); } - _2030_typeShape = Dafny.Sequence.Concat(_2030_typeShape, Dafny.Sequence.UnicodeFromString("&_")); - _2031_i = (_2031_i) + (BigInteger.One); + _196_typeShape = Dafny.Sequence.Concat(_196_typeShape, Dafny.Sequence.UnicodeFromString("&_")); + _197_i = (_197_i) + (BigInteger.One); } - _2030_typeShape = Dafny.Sequence.Concat(_2030_typeShape, Dafny.Sequence.UnicodeFromString(") -> _")); - _2026_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new("), _2026_s), Dafny.Sequence.UnicodeFromString(") as ::std::rc::Rc<")), _2030_typeShape), Dafny.Sequence.UnicodeFromString(">")); - r = RAST.Expr.create_RawExpr(_2026_s); - RAST._IExpr _out510; - DCOMP._IOwnership _out511; - (this).FromOwned(r, expectedOwnership, out _out510, out _out511); - r = _out510; - resultingOwnership = _out511; - readIdents = _2025_recIdents; + _196_typeShape = Dafny.Sequence.Concat(_196_typeShape, Dafny.Sequence.UnicodeFromString(") -> _")); + _192_s = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::rc::Rc::new("), _192_s), Dafny.Sequence.UnicodeFromString(") as ::std::rc::Rc<")), _196_typeShape), Dafny.Sequence.UnicodeFromString(">")); + r = RAST.Expr.create_RawExpr(_192_s); + RAST._IExpr _out167; + DCOMP._IOwnership _out168; + (this).FromOwned(r, expectedOwnership, out _out167, out _out168); + r = _out167; + resultingOwnership = _out168; + readIdents = _191_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Select) { - DAST._IExpression expr0 = _source96.dtor_expr; + if (_source0.is_Select) { + DAST._IExpression expr0 = _source0.dtor_expr; if (expr0.is_Companion) { - Dafny.ISequence> _2032_c = expr0.dtor_Companion_a0; - Dafny.ISequence _2033_typeArgs = expr0.dtor_typeArgs; - Dafny.ISequence _2034_field = _source96.dtor_field; - bool _2035_isConstant = _source96.dtor_isConstant; - bool _2036_isDatatype = _source96.dtor_onDatatype; - DAST._IType _2037_fieldType = _source96.dtor_fieldType; + Dafny.ISequence> _198_c = expr0.dtor_Companion_a0; + Dafny.ISequence _199_typeArgs = expr0.dtor_typeArgs; + Dafny.ISequence _200_field = _source0.dtor_field; + bool _201_isConstant = _source0.dtor_isConstant; + bool _202_isDatatype = _source0.dtor_onDatatype; + DAST._IType _203_fieldType = _source0.dtor_fieldType; { - RAST._IExpr _2038_onExpr; - DCOMP._IOwnership _2039_onOwned; - Dafny.ISet> _2040_recIdents; - RAST._IExpr _out512; - DCOMP._IOwnership _out513; - Dafny.ISet> _out514; - (this).GenExpr(DAST.Expression.create_Companion(_2032_c, _2033_typeArgs), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out512, out _out513, out _out514); - _2038_onExpr = _out512; - _2039_onOwned = _out513; - _2040_recIdents = _out514; - r = ((_2038_onExpr).MSel(DCOMP.__default.escapeName(_2034_field))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out515; - DCOMP._IOwnership _out516; - (this).FromOwned(r, expectedOwnership, out _out515, out _out516); - r = _out515; - resultingOwnership = _out516; - readIdents = _2040_recIdents; + RAST._IExpr _204_onExpr; + DCOMP._IOwnership _205_onOwned; + Dafny.ISet> _206_recIdents; + RAST._IExpr _out169; + DCOMP._IOwnership _out170; + Dafny.ISet> _out171; + (this).GenExpr(DAST.Expression.create_Companion(_198_c, _199_typeArgs), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out169, out _out170, out _out171); + _204_onExpr = _out169; + _205_onOwned = _out170; + _206_recIdents = _out171; + r = ((_204_onExpr).MSel(DCOMP.__default.escapeName(_200_field))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out172; + DCOMP._IOwnership _out173; + (this).FromOwned(r, expectedOwnership, out _out172, out _out173); + r = _out172; + resultingOwnership = _out173; + readIdents = _206_recIdents; return ; } - goto after_match41; + goto after_match0; } } } { - if (_source96.is_Select) { - DAST._IExpression _2041_on = _source96.dtor_expr; - Dafny.ISequence _2042_field = _source96.dtor_field; - bool _2043_isConstant = _source96.dtor_isConstant; - bool _2044_isDatatype = _source96.dtor_onDatatype; - DAST._IType _2045_fieldType = _source96.dtor_fieldType; + if (_source0.is_Select) { + DAST._IExpression _207_on = _source0.dtor_expr; + Dafny.ISequence _208_field = _source0.dtor_field; + bool _209_isConstant = _source0.dtor_isConstant; + bool _210_isDatatype = _source0.dtor_onDatatype; + DAST._IType _211_fieldType = _source0.dtor_fieldType; { - if (_2044_isDatatype) { - RAST._IExpr _2046_onExpr; - DCOMP._IOwnership _2047_onOwned; - Dafny.ISet> _2048_recIdents; - RAST._IExpr _out517; - DCOMP._IOwnership _out518; - Dafny.ISet> _out519; - (this).GenExpr(_2041_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out517, out _out518, out _out519); - _2046_onExpr = _out517; - _2047_onOwned = _out518; - _2048_recIdents = _out519; - r = ((_2046_onExpr).Sel(DCOMP.__default.escapeName(_2042_field))).Apply(Dafny.Sequence.FromElements()); - RAST._IType _2049_typ; - RAST._IType _out520; - _out520 = (this).GenType(_2045_fieldType, DCOMP.GenTypeContext.@default()); - _2049_typ = _out520; - RAST._IExpr _out521; - DCOMP._IOwnership _out522; - (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipBorrowed(), expectedOwnership, out _out521, out _out522); - r = _out521; - resultingOwnership = _out522; - readIdents = _2048_recIdents; + if (_210_isDatatype) { + RAST._IExpr _212_onExpr; + DCOMP._IOwnership _213_onOwned; + Dafny.ISet> _214_recIdents; + RAST._IExpr _out174; + DCOMP._IOwnership _out175; + Dafny.ISet> _out176; + (this).GenExpr(_207_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out174, out _out175, out _out176); + _212_onExpr = _out174; + _213_onOwned = _out175; + _214_recIdents = _out176; + r = ((_212_onExpr).Sel(DCOMP.__default.escapeName(_208_field))).Apply(Dafny.Sequence.FromElements()); + RAST._IType _215_typ; + RAST._IType _out177; + _out177 = (this).GenType(_211_fieldType, DCOMP.GenTypeContext.@default()); + _215_typ = _out177; + RAST._IExpr _out178; + DCOMP._IOwnership _out179; + (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipBorrowed(), expectedOwnership, out _out178, out _out179); + r = _out178; + resultingOwnership = _out179; + readIdents = _214_recIdents; } else { - RAST._IExpr _2050_onExpr; - DCOMP._IOwnership _2051_onOwned; - Dafny.ISet> _2052_recIdents; - RAST._IExpr _out523; - DCOMP._IOwnership _out524; - Dafny.ISet> _out525; - (this).GenExpr(_2041_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out523, out _out524, out _out525); - _2050_onExpr = _out523; - _2051_onOwned = _out524; - _2052_recIdents = _out525; - r = _2050_onExpr; - if (!object.Equals(_2050_onExpr, RAST.__default.self)) { - RAST._IExpr _source98 = _2050_onExpr; + RAST._IExpr _216_onExpr; + DCOMP._IOwnership _217_onOwned; + Dafny.ISet> _218_recIdents; + RAST._IExpr _out180; + DCOMP._IOwnership _out181; + Dafny.ISet> _out182; + (this).GenExpr(_207_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out180, out _out181, out _out182); + _216_onExpr = _out180; + _217_onOwned = _out181; + _218_recIdents = _out182; + r = _216_onExpr; + if (!object.Equals(_216_onExpr, RAST.__default.self)) { + RAST._IExpr _source2 = _216_onExpr; { - if (_source98.is_UnaryOp) { - Dafny.ISequence op15 = _source98.dtor_op1; - if (object.Equals(op15, Dafny.Sequence.UnicodeFromString("&"))) { - RAST._IExpr underlying5 = _source98.dtor_underlying; - if (underlying5.is_Identifier) { - Dafny.ISequence name15 = underlying5.dtor_name; - if (object.Equals(name15, Dafny.Sequence.UnicodeFromString("this"))) { + if (_source2.is_UnaryOp) { + Dafny.ISequence op10 = _source2.dtor_op1; + if (object.Equals(op10, Dafny.Sequence.UnicodeFromString("&"))) { + RAST._IExpr underlying0 = _source2.dtor_underlying; + if (underlying0.is_Identifier) { + Dafny.ISequence name0 = underlying0.dtor_name; + if (object.Equals(name0, Dafny.Sequence.UnicodeFromString("this"))) { r = RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("this")); - goto after_match43; + goto after_match2; } } } @@ -6150,989 +6153,989 @@ public void GenExpr(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnv } { } - after_match43: ; + after_match2: ; if (((this).ObjectType).is_RcMut) { r = (r).Clone(); } r = ((this).read__macro).Apply1(r); } - r = (r).Sel(DCOMP.__default.escapeName(_2042_field)); - if (_2043_isConstant) { + r = (r).Sel(DCOMP.__default.escapeName(_208_field)); + if (_209_isConstant) { r = (r).Apply(Dafny.Sequence.FromElements()); } r = (r).Clone(); - RAST._IExpr _out526; - DCOMP._IOwnership _out527; - (this).FromOwned(r, expectedOwnership, out _out526, out _out527); - r = _out526; - resultingOwnership = _out527; - readIdents = _2052_recIdents; + RAST._IExpr _out183; + DCOMP._IOwnership _out184; + (this).FromOwned(r, expectedOwnership, out _out183, out _out184); + r = _out183; + resultingOwnership = _out184; + readIdents = _218_recIdents; } return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Index) { - DAST._IExpression _2053_on = _source96.dtor_expr; - DAST._ICollKind _2054_collKind = _source96.dtor_collKind; - Dafny.ISequence _2055_indices = _source96.dtor_indices; + if (_source0.is_Index) { + DAST._IExpression _219_on = _source0.dtor_expr; + DAST._ICollKind _220_collKind = _source0.dtor_collKind; + Dafny.ISequence _221_indices = _source0.dtor_indices; { - RAST._IExpr _2056_onExpr; - DCOMP._IOwnership _2057_onOwned; - Dafny.ISet> _2058_recIdents; - RAST._IExpr _out528; - DCOMP._IOwnership _out529; - Dafny.ISet> _out530; - (this).GenExpr(_2053_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out528, out _out529, out _out530); - _2056_onExpr = _out528; - _2057_onOwned = _out529; - _2058_recIdents = _out530; - readIdents = _2058_recIdents; - r = _2056_onExpr; - bool _2059_hadArray; - _2059_hadArray = false; - if (object.Equals(_2054_collKind, DAST.CollKind.create_Array())) { + RAST._IExpr _222_onExpr; + DCOMP._IOwnership _223_onOwned; + Dafny.ISet> _224_recIdents; + RAST._IExpr _out185; + DCOMP._IOwnership _out186; + Dafny.ISet> _out187; + (this).GenExpr(_219_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out185, out _out186, out _out187); + _222_onExpr = _out185; + _223_onOwned = _out186; + _224_recIdents = _out187; + readIdents = _224_recIdents; + r = _222_onExpr; + bool _225_hadArray; + _225_hadArray = false; + if (object.Equals(_220_collKind, DAST.CollKind.create_Array())) { r = ((this).read__macro).Apply1(r); - _2059_hadArray = true; - if ((new BigInteger((_2055_indices).Count)) > (BigInteger.One)) { + _225_hadArray = true; + if ((new BigInteger((_221_indices).Count)) > (BigInteger.One)) { r = (r).Sel(Dafny.Sequence.UnicodeFromString("data")); } } - BigInteger _hi46 = new BigInteger((_2055_indices).Count); - for (BigInteger _2060_i = BigInteger.Zero; _2060_i < _hi46; _2060_i++) { - if (object.Equals(_2054_collKind, DAST.CollKind.create_Array())) { - RAST._IExpr _2061_idx; - DCOMP._IOwnership _2062_idxOwned; - Dafny.ISet> _2063_recIdentsIdx; - RAST._IExpr _out531; - DCOMP._IOwnership _out532; - Dafny.ISet> _out533; - (this).GenExpr((_2055_indices).Select(_2060_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out531, out _out532, out _out533); - _2061_idx = _out531; - _2062_idxOwned = _out532; - _2063_recIdentsIdx = _out533; - _2061_idx = RAST.__default.IntoUsize(_2061_idx); - r = RAST.Expr.create_SelectIndex(r, _2061_idx); - readIdents = Dafny.Set>.Union(readIdents, _2063_recIdentsIdx); + BigInteger _hi7 = new BigInteger((_221_indices).Count); + for (BigInteger _226_i = BigInteger.Zero; _226_i < _hi7; _226_i++) { + if (object.Equals(_220_collKind, DAST.CollKind.create_Array())) { + RAST._IExpr _227_idx; + DCOMP._IOwnership _228_idxOwned; + Dafny.ISet> _229_recIdentsIdx; + RAST._IExpr _out188; + DCOMP._IOwnership _out189; + Dafny.ISet> _out190; + (this).GenExpr((_221_indices).Select(_226_i), selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out188, out _out189, out _out190); + _227_idx = _out188; + _228_idxOwned = _out189; + _229_recIdentsIdx = _out190; + _227_idx = RAST.__default.IntoUsize(_227_idx); + r = RAST.Expr.create_SelectIndex(r, _227_idx); + readIdents = Dafny.Set>.Union(readIdents, _229_recIdentsIdx); } else { - RAST._IExpr _2064_idx; - DCOMP._IOwnership _2065_idxOwned; - Dafny.ISet> _2066_recIdentsIdx; - RAST._IExpr _out534; - DCOMP._IOwnership _out535; - Dafny.ISet> _out536; - (this).GenExpr((_2055_indices).Select(_2060_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out534, out _out535, out _out536); - _2064_idx = _out534; - _2065_idxOwned = _out535; - _2066_recIdentsIdx = _out536; - r = ((r).Sel(Dafny.Sequence.UnicodeFromString("get"))).Apply1(_2064_idx); - readIdents = Dafny.Set>.Union(readIdents, _2066_recIdentsIdx); + RAST._IExpr _230_idx; + DCOMP._IOwnership _231_idxOwned; + Dafny.ISet> _232_recIdentsIdx; + RAST._IExpr _out191; + DCOMP._IOwnership _out192; + Dafny.ISet> _out193; + (this).GenExpr((_221_indices).Select(_226_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out191, out _out192, out _out193); + _230_idx = _out191; + _231_idxOwned = _out192; + _232_recIdentsIdx = _out193; + r = ((r).Sel(Dafny.Sequence.UnicodeFromString("get"))).Apply1(_230_idx); + readIdents = Dafny.Set>.Union(readIdents, _232_recIdentsIdx); } } - if (_2059_hadArray) { + if (_225_hadArray) { r = (r).Clone(); } - RAST._IExpr _out537; - DCOMP._IOwnership _out538; - (this).FromOwned(r, expectedOwnership, out _out537, out _out538); - r = _out537; - resultingOwnership = _out538; + RAST._IExpr _out194; + DCOMP._IOwnership _out195; + (this).FromOwned(r, expectedOwnership, out _out194, out _out195); + r = _out194; + resultingOwnership = _out195; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_IndexRange) { - DAST._IExpression _2067_on = _source96.dtor_expr; - bool _2068_isArray = _source96.dtor_isArray; - Std.Wrappers._IOption _2069_low = _source96.dtor_low; - Std.Wrappers._IOption _2070_high = _source96.dtor_high; + if (_source0.is_IndexRange) { + DAST._IExpression _233_on = _source0.dtor_expr; + bool _234_isArray = _source0.dtor_isArray; + Std.Wrappers._IOption _235_low = _source0.dtor_low; + Std.Wrappers._IOption _236_high = _source0.dtor_high; { - RAST._IExpr _2071_onExpr; - DCOMP._IOwnership _2072_onOwned; - Dafny.ISet> _2073_recIdents; - RAST._IExpr _out539; - DCOMP._IOwnership _out540; - Dafny.ISet> _out541; - (this).GenExpr(_2067_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out539, out _out540, out _out541); - _2071_onExpr = _out539; - _2072_onOwned = _out540; - _2073_recIdents = _out541; - readIdents = _2073_recIdents; - Dafny.ISequence _2074_methodName; - if ((_2069_low).is_Some) { - if ((_2070_high).is_Some) { - _2074_methodName = Dafny.Sequence.UnicodeFromString("slice"); + RAST._IExpr _237_onExpr; + DCOMP._IOwnership _238_onOwned; + Dafny.ISet> _239_recIdents; + RAST._IExpr _out196; + DCOMP._IOwnership _out197; + Dafny.ISet> _out198; + (this).GenExpr(_233_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out196, out _out197, out _out198); + _237_onExpr = _out196; + _238_onOwned = _out197; + _239_recIdents = _out198; + readIdents = _239_recIdents; + Dafny.ISequence _240_methodName; + if ((_235_low).is_Some) { + if ((_236_high).is_Some) { + _240_methodName = Dafny.Sequence.UnicodeFromString("slice"); } else { - _2074_methodName = Dafny.Sequence.UnicodeFromString("drop"); + _240_methodName = Dafny.Sequence.UnicodeFromString("drop"); } - } else if ((_2070_high).is_Some) { - _2074_methodName = Dafny.Sequence.UnicodeFromString("take"); + } else if ((_236_high).is_Some) { + _240_methodName = Dafny.Sequence.UnicodeFromString("take"); } else { - _2074_methodName = Dafny.Sequence.UnicodeFromString(""); + _240_methodName = Dafny.Sequence.UnicodeFromString(""); } - Dafny.ISequence _2075_arguments; - _2075_arguments = Dafny.Sequence.FromElements(); - Std.Wrappers._IOption _source99 = _2069_low; + Dafny.ISequence _241_arguments; + _241_arguments = Dafny.Sequence.FromElements(); + Std.Wrappers._IOption _source3 = _235_low; { - if (_source99.is_Some) { - DAST._IExpression _2076_l = _source99.dtor_value; + if (_source3.is_Some) { + DAST._IExpression _242_l = _source3.dtor_value; { - RAST._IExpr _2077_lExpr; - DCOMP._IOwnership _2078___v192; - Dafny.ISet> _2079_recIdentsL; - RAST._IExpr _out542; - DCOMP._IOwnership _out543; - Dafny.ISet> _out544; - (this).GenExpr(_2076_l, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out542, out _out543, out _out544); - _2077_lExpr = _out542; - _2078___v192 = _out543; - _2079_recIdentsL = _out544; - _2075_arguments = Dafny.Sequence.Concat(_2075_arguments, Dafny.Sequence.FromElements(_2077_lExpr)); - readIdents = Dafny.Set>.Union(readIdents, _2079_recIdentsL); + RAST._IExpr _243_lExpr; + DCOMP._IOwnership _244___v192; + Dafny.ISet> _245_recIdentsL; + RAST._IExpr _out199; + DCOMP._IOwnership _out200; + Dafny.ISet> _out201; + (this).GenExpr(_242_l, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out199, out _out200, out _out201); + _243_lExpr = _out199; + _244___v192 = _out200; + _245_recIdentsL = _out201; + _241_arguments = Dafny.Sequence.Concat(_241_arguments, Dafny.Sequence.FromElements(_243_lExpr)); + readIdents = Dafny.Set>.Union(readIdents, _245_recIdentsL); } - goto after_match44; + goto after_match3; } } { } - after_match44: ; - Std.Wrappers._IOption _source100 = _2070_high; + after_match3: ; + Std.Wrappers._IOption _source4 = _236_high; { - if (_source100.is_Some) { - DAST._IExpression _2080_h = _source100.dtor_value; + if (_source4.is_Some) { + DAST._IExpression _246_h = _source4.dtor_value; { - RAST._IExpr _2081_hExpr; - DCOMP._IOwnership _2082___v193; - Dafny.ISet> _2083_recIdentsH; - RAST._IExpr _out545; - DCOMP._IOwnership _out546; - Dafny.ISet> _out547; - (this).GenExpr(_2080_h, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out545, out _out546, out _out547); - _2081_hExpr = _out545; - _2082___v193 = _out546; - _2083_recIdentsH = _out547; - _2075_arguments = Dafny.Sequence.Concat(_2075_arguments, Dafny.Sequence.FromElements(_2081_hExpr)); - readIdents = Dafny.Set>.Union(readIdents, _2083_recIdentsH); + RAST._IExpr _247_hExpr; + DCOMP._IOwnership _248___v193; + Dafny.ISet> _249_recIdentsH; + RAST._IExpr _out202; + DCOMP._IOwnership _out203; + Dafny.ISet> _out204; + (this).GenExpr(_246_h, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out202, out _out203, out _out204); + _247_hExpr = _out202; + _248___v193 = _out203; + _249_recIdentsH = _out204; + _241_arguments = Dafny.Sequence.Concat(_241_arguments, Dafny.Sequence.FromElements(_247_hExpr)); + readIdents = Dafny.Set>.Union(readIdents, _249_recIdentsH); } - goto after_match45; + goto after_match4; } } { } - after_match45: ; - r = _2071_onExpr; - if (_2068_isArray) { - if (!(_2074_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { - _2074_methodName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _2074_methodName); + after_match4: ; + r = _237_onExpr; + if (_234_isArray) { + if (!(_240_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { + _240_methodName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _240_methodName); } - r = ((RAST.__default.dafny__runtime__Sequence).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("from_array"), _2074_methodName))).Apply(_2075_arguments); + r = ((RAST.__default.dafny__runtime__Sequence).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("from_array"), _240_methodName))).Apply(_241_arguments); } else { - if (!(_2074_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { - r = ((r).Sel(_2074_methodName)).Apply(_2075_arguments); + if (!(_240_methodName).Equals(Dafny.Sequence.UnicodeFromString(""))) { + r = ((r).Sel(_240_methodName)).Apply(_241_arguments); } } - RAST._IExpr _out548; - DCOMP._IOwnership _out549; - (this).FromOwned(r, expectedOwnership, out _out548, out _out549); - r = _out548; - resultingOwnership = _out549; + RAST._IExpr _out205; + DCOMP._IOwnership _out206; + (this).FromOwned(r, expectedOwnership, out _out205, out _out206); + r = _out205; + resultingOwnership = _out206; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_TupleSelect) { - DAST._IExpression _2084_on = _source96.dtor_expr; - BigInteger _2085_idx = _source96.dtor_index; - DAST._IType _2086_fieldType = _source96.dtor_fieldType; + if (_source0.is_TupleSelect) { + DAST._IExpression _250_on = _source0.dtor_expr; + BigInteger _251_idx = _source0.dtor_index; + DAST._IType _252_fieldType = _source0.dtor_fieldType; { - RAST._IExpr _2087_onExpr; - DCOMP._IOwnership _2088_onOwnership; - Dafny.ISet> _2089_recIdents; - RAST._IExpr _out550; - DCOMP._IOwnership _out551; - Dafny.ISet> _out552; - (this).GenExpr(_2084_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out550, out _out551, out _out552); - _2087_onExpr = _out550; - _2088_onOwnership = _out551; - _2089_recIdents = _out552; - Dafny.ISequence _2090_selName; - _2090_selName = Std.Strings.__default.OfNat(_2085_idx); - DAST._IType _source101 = _2086_fieldType; + RAST._IExpr _253_onExpr; + DCOMP._IOwnership _254_onOwnership; + Dafny.ISet> _255_recIdents; + RAST._IExpr _out207; + DCOMP._IOwnership _out208; + Dafny.ISet> _out209; + (this).GenExpr(_250_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out207, out _out208, out _out209); + _253_onExpr = _out207; + _254_onOwnership = _out208; + _255_recIdents = _out209; + Dafny.ISequence _256_selName; + _256_selName = Std.Strings.__default.OfNat(_251_idx); + DAST._IType _source5 = _252_fieldType; { - if (_source101.is_Tuple) { - Dafny.ISequence _2091_tps = _source101.dtor_Tuple_a0; - if (((_2086_fieldType).is_Tuple) && ((new BigInteger((_2091_tps).Count)) > (RAST.__default.MAX__TUPLE__SIZE))) { - _2090_selName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _2090_selName); + if (_source5.is_Tuple) { + Dafny.ISequence _257_tps = _source5.dtor_Tuple_a0; + if (((_252_fieldType).is_Tuple) && ((new BigInteger((_257_tps).Count)) > (RAST.__default.MAX__TUPLE__SIZE))) { + _256_selName = Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), _256_selName); } - goto after_match46; + goto after_match5; } } { } - after_match46: ; - r = ((_2087_onExpr).Sel(_2090_selName)).Clone(); - RAST._IExpr _out553; - DCOMP._IOwnership _out554; - (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out553, out _out554); - r = _out553; - resultingOwnership = _out554; - readIdents = _2089_recIdents; + after_match5: ; + r = ((_253_onExpr).Sel(_256_selName)).Clone(); + RAST._IExpr _out210; + DCOMP._IOwnership _out211; + (this).FromOwnership(r, DCOMP.Ownership.create_OwnershipOwned(), expectedOwnership, out _out210, out _out211); + r = _out210; + resultingOwnership = _out211; + readIdents = _255_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Call) { - DAST._IExpression _2092_on = _source96.dtor_on; - DAST._ICallName _2093_name = _source96.dtor_callName; - Dafny.ISequence _2094_typeArgs = _source96.dtor_typeArgs; - Dafny.ISequence _2095_args = _source96.dtor_args; + if (_source0.is_Call) { + DAST._IExpression _258_on = _source0.dtor_on; + DAST._ICallName _259_name = _source0.dtor_callName; + Dafny.ISequence _260_typeArgs = _source0.dtor_typeArgs; + Dafny.ISequence _261_args = _source0.dtor_args; { - Dafny.ISequence _2096_argExprs; - Dafny.ISet> _2097_recIdents; - Dafny.ISequence _2098_typeExprs; - Std.Wrappers._IOption _2099_fullNameQualifier; - Dafny.ISequence _out555; - Dafny.ISet> _out556; - Dafny.ISequence _out557; - Std.Wrappers._IOption _out558; - (this).GenArgs(selfIdent, _2093_name, _2094_typeArgs, _2095_args, env, out _out555, out _out556, out _out557, out _out558); - _2096_argExprs = _out555; - _2097_recIdents = _out556; - _2098_typeExprs = _out557; - _2099_fullNameQualifier = _out558; - readIdents = _2097_recIdents; - Std.Wrappers._IOption _source102 = _2099_fullNameQualifier; + Dafny.ISequence _262_argExprs; + Dafny.ISet> _263_recIdents; + Dafny.ISequence _264_typeExprs; + Std.Wrappers._IOption _265_fullNameQualifier; + Dafny.ISequence _out212; + Dafny.ISet> _out213; + Dafny.ISequence _out214; + Std.Wrappers._IOption _out215; + (this).GenArgs(selfIdent, _259_name, _260_typeArgs, _261_args, env, out _out212, out _out213, out _out214, out _out215); + _262_argExprs = _out212; + _263_recIdents = _out213; + _264_typeExprs = _out214; + _265_fullNameQualifier = _out215; + readIdents = _263_recIdents; + Std.Wrappers._IOption _source6 = _265_fullNameQualifier; { - if (_source102.is_Some) { - DAST._IResolvedType value11 = _source102.dtor_value; - Dafny.ISequence> _2100_path = value11.dtor_path; - Dafny.ISequence _2101_onTypeArgs = value11.dtor_typeArgs; - DAST._IResolvedTypeBase _2102_base = value11.dtor_kind; - RAST._IExpr _2103_fullPath; - RAST._IExpr _out559; - _out559 = DCOMP.COMP.GenPathExpr(_2100_path); - _2103_fullPath = _out559; - Dafny.ISequence _2104_onTypeExprs; - Dafny.ISequence _out560; - _out560 = (this).GenTypeArgs(_2101_onTypeArgs, DCOMP.GenTypeContext.@default()); - _2104_onTypeExprs = _out560; - RAST._IExpr _2105_onExpr = RAST.Expr.Default(); - DCOMP._IOwnership _2106_recOwnership = DCOMP.Ownership.Default(); - Dafny.ISet> _2107_recIdents = Dafny.Set>.Empty; - if (((_2102_base).is_Trait) || ((_2102_base).is_Class)) { - RAST._IExpr _out561; - DCOMP._IOwnership _out562; - Dafny.ISet> _out563; - (this).GenExpr(_2092_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out561, out _out562, out _out563); - _2105_onExpr = _out561; - _2106_recOwnership = _out562; - _2107_recIdents = _out563; - _2105_onExpr = ((this).read__macro).Apply1(_2105_onExpr); - readIdents = Dafny.Set>.Union(readIdents, _2107_recIdents); + if (_source6.is_Some) { + DAST._IResolvedType value0 = _source6.dtor_value; + Dafny.ISequence> _266_path = value0.dtor_path; + Dafny.ISequence _267_onTypeArgs = value0.dtor_typeArgs; + DAST._IResolvedTypeBase _268_base = value0.dtor_kind; + RAST._IExpr _269_fullPath; + RAST._IExpr _out216; + _out216 = DCOMP.COMP.GenPathExpr(_266_path); + _269_fullPath = _out216; + Dafny.ISequence _270_onTypeExprs; + Dafny.ISequence _out217; + _out217 = (this).GenTypeArgs(_267_onTypeArgs, DCOMP.GenTypeContext.@default()); + _270_onTypeExprs = _out217; + RAST._IExpr _271_onExpr = RAST.Expr.Default(); + DCOMP._IOwnership _272_recOwnership = DCOMP.Ownership.Default(); + Dafny.ISet> _273_recIdents = Dafny.Set>.Empty; + if (((_268_base).is_Trait) || ((_268_base).is_Class)) { + RAST._IExpr _out218; + DCOMP._IOwnership _out219; + Dafny.ISet> _out220; + (this).GenExpr(_258_on, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out218, out _out219, out _out220); + _271_onExpr = _out218; + _272_recOwnership = _out219; + _273_recIdents = _out220; + _271_onExpr = ((this).read__macro).Apply1(_271_onExpr); + readIdents = Dafny.Set>.Union(readIdents, _273_recIdents); } else { - RAST._IExpr _out564; - DCOMP._IOwnership _out565; - Dafny.ISet> _out566; - (this).GenExpr(_2092_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out564, out _out565, out _out566); - _2105_onExpr = _out564; - _2106_recOwnership = _out565; - _2107_recIdents = _out566; - readIdents = Dafny.Set>.Union(readIdents, _2107_recIdents); + RAST._IExpr _out221; + DCOMP._IOwnership _out222; + Dafny.ISet> _out223; + (this).GenExpr(_258_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out221, out _out222, out _out223); + _271_onExpr = _out221; + _272_recOwnership = _out222; + _273_recIdents = _out223; + readIdents = Dafny.Set>.Union(readIdents, _273_recIdents); } - r = ((((_2103_fullPath).ApplyType(_2104_onTypeExprs)).MSel(DCOMP.__default.escapeName((_2093_name).dtor_name))).ApplyType(_2098_typeExprs)).Apply(Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_2105_onExpr), _2096_argExprs)); - RAST._IExpr _out567; - DCOMP._IOwnership _out568; - (this).FromOwned(r, expectedOwnership, out _out567, out _out568); - r = _out567; - resultingOwnership = _out568; - goto after_match47; + r = ((((_269_fullPath).ApplyType(_270_onTypeExprs)).MSel(DCOMP.__default.escapeName((_259_name).dtor_name))).ApplyType(_264_typeExprs)).Apply(Dafny.Sequence.Concat(Dafny.Sequence.FromElements(_271_onExpr), _262_argExprs)); + RAST._IExpr _out224; + DCOMP._IOwnership _out225; + (this).FromOwned(r, expectedOwnership, out _out224, out _out225); + r = _out224; + resultingOwnership = _out225; + goto after_match6; } } { - RAST._IExpr _2108_onExpr; - DCOMP._IOwnership _2109___v199; - Dafny.ISet> _2110_recIdents; - RAST._IExpr _out569; - DCOMP._IOwnership _out570; - Dafny.ISet> _out571; - (this).GenExpr(_2092_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out569, out _out570, out _out571); - _2108_onExpr = _out569; - _2109___v199 = _out570; - _2110_recIdents = _out571; - readIdents = Dafny.Set>.Union(readIdents, _2110_recIdents); - Dafny.ISequence _2111_renderedName; - DAST._ICallName _source103 = _2093_name; + RAST._IExpr _274_onExpr; + DCOMP._IOwnership _275___v199; + Dafny.ISet> _276_recIdents; + RAST._IExpr _out226; + DCOMP._IOwnership _out227; + Dafny.ISet> _out228; + (this).GenExpr(_258_on, selfIdent, env, DCOMP.Ownership.create_OwnershipAutoBorrowed(), out _out226, out _out227, out _out228); + _274_onExpr = _out226; + _275___v199 = _out227; + _276_recIdents = _out228; + readIdents = Dafny.Set>.Union(readIdents, _276_recIdents); + Dafny.ISequence _277_renderedName; + DAST._ICallName _source7 = _259_name; { - if (_source103.is_CallName) { - Dafny.ISequence _2112_ident = _source103.dtor_name; - _2111_renderedName = DCOMP.__default.escapeName(_2112_ident); - goto after_match48; + if (_source7.is_CallName) { + Dafny.ISequence _278_ident = _source7.dtor_name; + _277_renderedName = DCOMP.__default.escapeName(_278_ident); + goto after_match7; } } { - bool disjunctiveMatch13 = false; - if (_source103.is_MapBuilderAdd) { - disjunctiveMatch13 = true; + bool disjunctiveMatch0 = false; + if (_source7.is_MapBuilderAdd) { + disjunctiveMatch0 = true; } - if (_source103.is_SetBuilderAdd) { - disjunctiveMatch13 = true; + if (_source7.is_SetBuilderAdd) { + disjunctiveMatch0 = true; } - if (disjunctiveMatch13) { - _2111_renderedName = Dafny.Sequence.UnicodeFromString("add"); - goto after_match48; + if (disjunctiveMatch0) { + _277_renderedName = Dafny.Sequence.UnicodeFromString("add"); + goto after_match7; } } { - _2111_renderedName = Dafny.Sequence.UnicodeFromString("build"); + _277_renderedName = Dafny.Sequence.UnicodeFromString("build"); } - after_match48: ; - DAST._IExpression _source104 = _2092_on; + after_match7: ; + DAST._IExpression _source8 = _258_on; { - if (_source104.is_Companion) { + if (_source8.is_Companion) { { - _2108_onExpr = (_2108_onExpr).MSel(_2111_renderedName); + _274_onExpr = (_274_onExpr).MSel(_277_renderedName); } - goto after_match49; + goto after_match8; } } { { - if (!object.Equals(_2108_onExpr, RAST.__default.self)) { - DAST._ICallName _source105 = _2093_name; + if (!object.Equals(_274_onExpr, RAST.__default.self)) { + DAST._ICallName _source9 = _259_name; { - if (_source105.is_CallName) { - Std.Wrappers._IOption onType2 = _source105.dtor_onType; - if (onType2.is_Some) { - DAST._IType _2113_tpe = onType2.dtor_value; - RAST._IType _2114_typ; - RAST._IType _out572; - _out572 = (this).GenType(_2113_tpe, DCOMP.GenTypeContext.@default()); - _2114_typ = _out572; - if ((_2114_typ).IsObjectOrPointer()) { - _2108_onExpr = ((this).read__macro).Apply1(_2108_onExpr); + if (_source9.is_CallName) { + Std.Wrappers._IOption onType0 = _source9.dtor_onType; + if (onType0.is_Some) { + DAST._IType _279_tpe = onType0.dtor_value; + RAST._IType _280_typ; + RAST._IType _out229; + _out229 = (this).GenType(_279_tpe, DCOMP.GenTypeContext.@default()); + _280_typ = _out229; + if ((_280_typ).IsObjectOrPointer()) { + _274_onExpr = ((this).read__macro).Apply1(_274_onExpr); } - goto after_match50; + goto after_match9; } } } { } - after_match50: ; + after_match9: ; } - _2108_onExpr = (_2108_onExpr).Sel(_2111_renderedName); + _274_onExpr = (_274_onExpr).Sel(_277_renderedName); } } - after_match49: ; - r = ((_2108_onExpr).ApplyType(_2098_typeExprs)).Apply(_2096_argExprs); - RAST._IExpr _out573; - DCOMP._IOwnership _out574; - (this).FromOwned(r, expectedOwnership, out _out573, out _out574); - r = _out573; - resultingOwnership = _out574; + after_match8: ; + r = ((_274_onExpr).ApplyType(_264_typeExprs)).Apply(_262_argExprs); + RAST._IExpr _out230; + DCOMP._IOwnership _out231; + (this).FromOwned(r, expectedOwnership, out _out230, out _out231); + r = _out230; + resultingOwnership = _out231; return ; } - after_match47: ; + after_match6: ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Lambda) { - Dafny.ISequence _2115_paramsDafny = _source96.dtor_params; - DAST._IType _2116_retType = _source96.dtor_retType; - Dafny.ISequence _2117_body = _source96.dtor_body; + if (_source0.is_Lambda) { + Dafny.ISequence _281_paramsDafny = _source0.dtor_params; + DAST._IType _282_retType = _source0.dtor_retType; + Dafny.ISequence _283_body = _source0.dtor_body; { - Dafny.ISequence _2118_params; - Dafny.ISequence _out575; - _out575 = (this).GenParams(_2115_paramsDafny); - _2118_params = _out575; - Dafny.ISequence> _2119_paramNames; - _2119_paramNames = Dafny.Sequence>.FromElements(); - Dafny.IMap,RAST._IType> _2120_paramTypesMap; - _2120_paramTypesMap = Dafny.Map, RAST._IType>.FromElements(); - BigInteger _hi47 = new BigInteger((_2118_params).Count); - for (BigInteger _2121_i = BigInteger.Zero; _2121_i < _hi47; _2121_i++) { - Dafny.ISequence _2122_name; - _2122_name = ((_2118_params).Select(_2121_i)).dtor_name; - _2119_paramNames = Dafny.Sequence>.Concat(_2119_paramNames, Dafny.Sequence>.FromElements(_2122_name)); - _2120_paramTypesMap = Dafny.Map, RAST._IType>.Update(_2120_paramTypesMap, _2122_name, ((_2118_params).Select(_2121_i)).dtor_tpe); + Dafny.ISequence _284_params; + Dafny.ISequence _out232; + _out232 = (this).GenParams(_281_paramsDafny); + _284_params = _out232; + Dafny.ISequence> _285_paramNames; + _285_paramNames = Dafny.Sequence>.FromElements(); + Dafny.IMap,RAST._IType> _286_paramTypesMap; + _286_paramTypesMap = Dafny.Map, RAST._IType>.FromElements(); + BigInteger _hi8 = new BigInteger((_284_params).Count); + for (BigInteger _287_i = BigInteger.Zero; _287_i < _hi8; _287_i++) { + Dafny.ISequence _288_name; + _288_name = ((_284_params).Select(_287_i)).dtor_name; + _285_paramNames = Dafny.Sequence>.Concat(_285_paramNames, Dafny.Sequence>.FromElements(_288_name)); + _286_paramTypesMap = Dafny.Map, RAST._IType>.Update(_286_paramTypesMap, _288_name, ((_284_params).Select(_287_i)).dtor_tpe); } - DCOMP._IEnvironment _2123_subEnv; - _2123_subEnv = ((env).ToOwned()).merge(DCOMP.Environment.create(_2119_paramNames, _2120_paramTypesMap)); - RAST._IExpr _2124_recursiveGen; - Dafny.ISet> _2125_recIdents; - DCOMP._IEnvironment _2126___v210; - RAST._IExpr _out576; - Dafny.ISet> _out577; - DCOMP._IEnvironment _out578; - (this).GenStmts(_2117_body, ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) ? (DCOMP.SelfInfo.create_ThisTyped(Dafny.Sequence.UnicodeFromString("_this"), (selfIdent).dtor_dafnyType)) : (DCOMP.SelfInfo.create_NoSelf())), _2123_subEnv, true, Std.Wrappers.Option>>.create_None(), out _out576, out _out577, out _out578); - _2124_recursiveGen = _out576; - _2125_recIdents = _out577; - _2126___v210 = _out578; + DCOMP._IEnvironment _289_subEnv; + _289_subEnv = ((env).ToOwned()).merge(DCOMP.Environment.create(_285_paramNames, _286_paramTypesMap)); + RAST._IExpr _290_recursiveGen; + Dafny.ISet> _291_recIdents; + DCOMP._IEnvironment _292___v210; + RAST._IExpr _out233; + Dafny.ISet> _out234; + DCOMP._IEnvironment _out235; + (this).GenStmts(_283_body, ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) ? (DCOMP.SelfInfo.create_ThisTyped(Dafny.Sequence.UnicodeFromString("_this"), (selfIdent).dtor_dafnyType)) : (DCOMP.SelfInfo.create_NoSelf())), _289_subEnv, true, Std.Wrappers.Option>>.create_None(), out _out233, out _out234, out _out235); + _290_recursiveGen = _out233; + _291_recIdents = _out234; + _292___v210 = _out235; readIdents = Dafny.Set>.FromElements(); - _2125_recIdents = Dafny.Set>.Difference(_2125_recIdents, Dafny.Helpers.Id>, Dafny.ISet>>>((_2127_paramNames) => ((System.Func>>)(() => { - var _coll7 = new System.Collections.Generic.List>(); - foreach (Dafny.ISequence _compr_7 in (_2127_paramNames).CloneAsArray()) { - Dafny.ISequence _2128_name = (Dafny.ISequence)_compr_7; - if ((_2127_paramNames).Contains(_2128_name)) { - _coll7.Add(_2128_name); + _291_recIdents = Dafny.Set>.Difference(_291_recIdents, Dafny.Helpers.Id>, Dafny.ISet>>>((_293_paramNames) => ((System.Func>>)(() => { + var _coll0 = new System.Collections.Generic.List>(); + foreach (Dafny.ISequence _compr_0 in (_293_paramNames).CloneAsArray()) { + Dafny.ISequence _294_name = (Dafny.ISequence)_compr_0; + if ((_293_paramNames).Contains(_294_name)) { + _coll0.Add(_294_name); } } - return Dafny.Set>.FromCollection(_coll7); - }))())(_2119_paramNames)); - RAST._IExpr _2129_allReadCloned; - _2129_allReadCloned = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - while (!(_2125_recIdents).Equals(Dafny.Set>.FromElements())) { - Dafny.ISequence _2130_next; - foreach (Dafny.ISequence _assign_such_that_3 in (_2125_recIdents).Elements) { - _2130_next = (Dafny.ISequence)_assign_such_that_3; - if ((_2125_recIdents).Contains(_2130_next)) { - goto after__ASSIGN_SUCH_THAT_3; + return Dafny.Set>.FromCollection(_coll0); + }))())(_285_paramNames)); + RAST._IExpr _295_allReadCloned; + _295_allReadCloned = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); + while (!(_291_recIdents).Equals(Dafny.Set>.FromElements())) { + Dafny.ISequence _296_next; + foreach (Dafny.ISequence _assign_such_that_1 in (_291_recIdents).Elements) { + _296_next = (Dafny.ISequence)_assign_such_that_1; + if ((_291_recIdents).Contains(_296_next)) { + goto after__ASSIGN_SUCH_THAT_1; } } throw new System.Exception("assign-such-that search produced no value (line 4885)"); - after__ASSIGN_SUCH_THAT_3: ; - if ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) && ((_2130_next).Equals(Dafny.Sequence.UnicodeFromString("_this")))) { - RAST._IExpr _2131_selfCloned; - DCOMP._IOwnership _2132___v211; - Dafny.ISet> _2133___v212; - RAST._IExpr _out579; - DCOMP._IOwnership _out580; - Dafny.ISet> _out581; - (this).GenIdent(Dafny.Sequence.UnicodeFromString("self"), selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out579, out _out580, out _out581); - _2131_selfCloned = _out579; - _2132___v211 = _out580; - _2133___v212 = _out581; - _2129_allReadCloned = (_2129_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_2131_selfCloned))); - } else if (!((_2119_paramNames).Contains(_2130_next))) { - RAST._IExpr _2134_copy; - _2134_copy = (RAST.Expr.create_Identifier(_2130_next)).Clone(); - _2129_allReadCloned = (_2129_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _2130_next, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_2134_copy))); - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_2130_next)); + after__ASSIGN_SUCH_THAT_1: ; + if ((!object.Equals(selfIdent, DCOMP.SelfInfo.create_NoSelf())) && ((_296_next).Equals(Dafny.Sequence.UnicodeFromString("_this")))) { + RAST._IExpr _297_selfCloned; + DCOMP._IOwnership _298___v211; + Dafny.ISet> _299___v212; + RAST._IExpr _out236; + DCOMP._IOwnership _out237; + Dafny.ISet> _out238; + (this).GenIdent(Dafny.Sequence.UnicodeFromString("self"), selfIdent, DCOMP.Environment.Empty(), DCOMP.Ownership.create_OwnershipOwned(), out _out236, out _out237, out _out238); + _297_selfCloned = _out236; + _298___v211 = _out237; + _299___v212 = _out238; + _295_allReadCloned = (_295_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), Dafny.Sequence.UnicodeFromString("_this"), Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_297_selfCloned))); + } else if (!((_285_paramNames).Contains(_296_next))) { + RAST._IExpr _300_copy; + _300_copy = (RAST.Expr.create_Identifier(_296_next)).Clone(); + _295_allReadCloned = (_295_allReadCloned).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_MUT(), _296_next, Std.Wrappers.Option.create_None(), Std.Wrappers.Option.create_Some(_300_copy))); + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.FromElements(_296_next)); } - _2125_recIdents = Dafny.Set>.Difference(_2125_recIdents, Dafny.Set>.FromElements(_2130_next)); + _291_recIdents = Dafny.Set>.Difference(_291_recIdents, Dafny.Set>.FromElements(_296_next)); } - RAST._IType _2135_retTypeGen; - RAST._IType _out582; - _out582 = (this).GenType(_2116_retType, DCOMP.GenTypeContext.InFn()); - _2135_retTypeGen = _out582; - r = RAST.Expr.create_Block((_2129_allReadCloned).Then(RAST.__default.RcNew(RAST.Expr.create_Lambda(_2118_params, Std.Wrappers.Option.create_Some(_2135_retTypeGen), RAST.Expr.create_Block(_2124_recursiveGen))))); - RAST._IExpr _out583; - DCOMP._IOwnership _out584; - (this).FromOwned(r, expectedOwnership, out _out583, out _out584); - r = _out583; - resultingOwnership = _out584; + RAST._IType _301_retTypeGen; + RAST._IType _out239; + _out239 = (this).GenType(_282_retType, DCOMP.GenTypeContext.InFn()); + _301_retTypeGen = _out239; + r = RAST.Expr.create_Block((_295_allReadCloned).Then(RAST.__default.RcNew(RAST.Expr.create_Lambda(_284_params, Std.Wrappers.Option.create_Some(_301_retTypeGen), RAST.Expr.create_Block(_290_recursiveGen))))); + RAST._IExpr _out240; + DCOMP._IOwnership _out241; + (this).FromOwned(r, expectedOwnership, out _out240, out _out241); + r = _out240; + resultingOwnership = _out241; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_BetaRedex) { - Dafny.ISequence<_System._ITuple2> _2136_values = _source96.dtor_values; - DAST._IType _2137_retType = _source96.dtor_retType; - DAST._IExpression _2138_expr = _source96.dtor_expr; + if (_source0.is_BetaRedex) { + Dafny.ISequence<_System._ITuple2> _302_values = _source0.dtor_values; + DAST._IType _303_retType = _source0.dtor_retType; + DAST._IExpression _304_expr = _source0.dtor_expr; { - Dafny.ISequence> _2139_paramNames; - _2139_paramNames = Dafny.Sequence>.FromElements(); - Dafny.ISequence _2140_paramFormals; - Dafny.ISequence _out585; - _out585 = (this).GenParams(Std.Collections.Seq.__default.Map<_System._ITuple2, DAST._IFormal>(((System.Func<_System._ITuple2, DAST._IFormal>)((_2141_value) => { - return (_2141_value).dtor__0; - })), _2136_values)); - _2140_paramFormals = _out585; - Dafny.IMap,RAST._IType> _2142_paramTypes; - _2142_paramTypes = Dafny.Map, RAST._IType>.FromElements(); - Dafny.ISet> _2143_paramNamesSet; - _2143_paramNamesSet = Dafny.Set>.FromElements(); - BigInteger _hi48 = new BigInteger((_2136_values).Count); - for (BigInteger _2144_i = BigInteger.Zero; _2144_i < _hi48; _2144_i++) { - Dafny.ISequence _2145_name; - _2145_name = (((_2136_values).Select(_2144_i)).dtor__0).dtor_name; - Dafny.ISequence _2146_rName; - _2146_rName = DCOMP.__default.escapeName(_2145_name); - _2139_paramNames = Dafny.Sequence>.Concat(_2139_paramNames, Dafny.Sequence>.FromElements(_2146_rName)); - _2142_paramTypes = Dafny.Map, RAST._IType>.Update(_2142_paramTypes, _2146_rName, ((_2140_paramFormals).Select(_2144_i)).dtor_tpe); - _2143_paramNamesSet = Dafny.Set>.Union(_2143_paramNamesSet, Dafny.Set>.FromElements(_2146_rName)); + Dafny.ISequence> _305_paramNames; + _305_paramNames = Dafny.Sequence>.FromElements(); + Dafny.ISequence _306_paramFormals; + Dafny.ISequence _out242; + _out242 = (this).GenParams(Std.Collections.Seq.__default.Map<_System._ITuple2, DAST._IFormal>(((System.Func<_System._ITuple2, DAST._IFormal>)((_307_value) => { + return (_307_value).dtor__0; + })), _302_values)); + _306_paramFormals = _out242; + Dafny.IMap,RAST._IType> _308_paramTypes; + _308_paramTypes = Dafny.Map, RAST._IType>.FromElements(); + Dafny.ISet> _309_paramNamesSet; + _309_paramNamesSet = Dafny.Set>.FromElements(); + BigInteger _hi9 = new BigInteger((_302_values).Count); + for (BigInteger _310_i = BigInteger.Zero; _310_i < _hi9; _310_i++) { + Dafny.ISequence _311_name; + _311_name = (((_302_values).Select(_310_i)).dtor__0).dtor_name; + Dafny.ISequence _312_rName; + _312_rName = DCOMP.__default.escapeName(_311_name); + _305_paramNames = Dafny.Sequence>.Concat(_305_paramNames, Dafny.Sequence>.FromElements(_312_rName)); + _308_paramTypes = Dafny.Map, RAST._IType>.Update(_308_paramTypes, _312_rName, ((_306_paramFormals).Select(_310_i)).dtor_tpe); + _309_paramNamesSet = Dafny.Set>.Union(_309_paramNamesSet, Dafny.Set>.FromElements(_312_rName)); } readIdents = Dafny.Set>.FromElements(); r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("")); - BigInteger _hi49 = new BigInteger((_2136_values).Count); - for (BigInteger _2147_i = BigInteger.Zero; _2147_i < _hi49; _2147_i++) { - RAST._IType _2148_typeGen; - RAST._IType _out586; - _out586 = (this).GenType((((_2136_values).Select(_2147_i)).dtor__0).dtor_typ, DCOMP.GenTypeContext.InFn()); - _2148_typeGen = _out586; - RAST._IExpr _2149_valueGen; - DCOMP._IOwnership _2150___v213; - Dafny.ISet> _2151_recIdents; - RAST._IExpr _out587; - DCOMP._IOwnership _out588; - Dafny.ISet> _out589; - (this).GenExpr(((_2136_values).Select(_2147_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out587, out _out588, out _out589); - _2149_valueGen = _out587; - _2150___v213 = _out588; - _2151_recIdents = _out589; - r = (r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((((_2136_values).Select(_2147_i)).dtor__0).dtor_name), Std.Wrappers.Option.create_Some(_2148_typeGen), Std.Wrappers.Option.create_Some(_2149_valueGen))); - readIdents = Dafny.Set>.Union(readIdents, _2151_recIdents); + BigInteger _hi10 = new BigInteger((_302_values).Count); + for (BigInteger _313_i = BigInteger.Zero; _313_i < _hi10; _313_i++) { + RAST._IType _314_typeGen; + RAST._IType _out243; + _out243 = (this).GenType((((_302_values).Select(_313_i)).dtor__0).dtor_typ, DCOMP.GenTypeContext.InFn()); + _314_typeGen = _out243; + RAST._IExpr _315_valueGen; + DCOMP._IOwnership _316___v213; + Dafny.ISet> _317_recIdents; + RAST._IExpr _out244; + DCOMP._IOwnership _out245; + Dafny.ISet> _out246; + (this).GenExpr(((_302_values).Select(_313_i)).dtor__1, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out244, out _out245, out _out246); + _315_valueGen = _out244; + _316___v213 = _out245; + _317_recIdents = _out246; + r = (r).Then(RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((((_302_values).Select(_313_i)).dtor__0).dtor_name), Std.Wrappers.Option.create_Some(_314_typeGen), Std.Wrappers.Option.create_Some(_315_valueGen))); + readIdents = Dafny.Set>.Union(readIdents, _317_recIdents); } - DCOMP._IEnvironment _2152_newEnv; - _2152_newEnv = DCOMP.Environment.create(_2139_paramNames, _2142_paramTypes); - RAST._IExpr _2153_recGen; - DCOMP._IOwnership _2154_recOwned; - Dafny.ISet> _2155_recIdents; - RAST._IExpr _out590; - DCOMP._IOwnership _out591; - Dafny.ISet> _out592; - (this).GenExpr(_2138_expr, selfIdent, _2152_newEnv, expectedOwnership, out _out590, out _out591, out _out592); - _2153_recGen = _out590; - _2154_recOwned = _out591; - _2155_recIdents = _out592; - readIdents = Dafny.Set>.Difference(_2155_recIdents, _2143_paramNamesSet); - r = RAST.Expr.create_Block((r).Then(_2153_recGen)); - RAST._IExpr _out593; - DCOMP._IOwnership _out594; - (this).FromOwnership(r, _2154_recOwned, expectedOwnership, out _out593, out _out594); - r = _out593; - resultingOwnership = _out594; + DCOMP._IEnvironment _318_newEnv; + _318_newEnv = DCOMP.Environment.create(_305_paramNames, _308_paramTypes); + RAST._IExpr _319_recGen; + DCOMP._IOwnership _320_recOwned; + Dafny.ISet> _321_recIdents; + RAST._IExpr _out247; + DCOMP._IOwnership _out248; + Dafny.ISet> _out249; + (this).GenExpr(_304_expr, selfIdent, _318_newEnv, expectedOwnership, out _out247, out _out248, out _out249); + _319_recGen = _out247; + _320_recOwned = _out248; + _321_recIdents = _out249; + readIdents = Dafny.Set>.Difference(_321_recIdents, _309_paramNamesSet); + r = RAST.Expr.create_Block((r).Then(_319_recGen)); + RAST._IExpr _out250; + DCOMP._IOwnership _out251; + (this).FromOwnership(r, _320_recOwned, expectedOwnership, out _out250, out _out251); + r = _out250; + resultingOwnership = _out251; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_IIFE) { - Dafny.ISequence _2156_name = _source96.dtor_ident; - DAST._IType _2157_tpe = _source96.dtor_typ; - DAST._IExpression _2158_value = _source96.dtor_value; - DAST._IExpression _2159_iifeBody = _source96.dtor_iifeBody; + if (_source0.is_IIFE) { + Dafny.ISequence _322_name = _source0.dtor_ident; + DAST._IType _323_tpe = _source0.dtor_typ; + DAST._IExpression _324_value = _source0.dtor_value; + DAST._IExpression _325_iifeBody = _source0.dtor_iifeBody; { - RAST._IExpr _2160_valueGen; - DCOMP._IOwnership _2161___v214; - Dafny.ISet> _2162_recIdents; - RAST._IExpr _out595; - DCOMP._IOwnership _out596; - Dafny.ISet> _out597; - (this).GenExpr(_2158_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out595, out _out596, out _out597); - _2160_valueGen = _out595; - _2161___v214 = _out596; - _2162_recIdents = _out597; - readIdents = _2162_recIdents; - RAST._IType _2163_valueTypeGen; - RAST._IType _out598; - _out598 = (this).GenType(_2157_tpe, DCOMP.GenTypeContext.InFn()); - _2163_valueTypeGen = _out598; - RAST._IExpr _2164_bodyGen; - DCOMP._IOwnership _2165___v215; - Dafny.ISet> _2166_bodyIdents; - RAST._IExpr _out599; - DCOMP._IOwnership _out600; - Dafny.ISet> _out601; - (this).GenExpr(_2159_iifeBody, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out599, out _out600, out _out601); - _2164_bodyGen = _out599; - _2165___v215 = _out600; - _2166_bodyIdents = _out601; - readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_2166_bodyIdents, Dafny.Set>.FromElements(DCOMP.__default.escapeName((_2156_name))))); - r = RAST.Expr.create_Block((RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((_2156_name)), Std.Wrappers.Option.create_Some(_2163_valueTypeGen), Std.Wrappers.Option.create_Some(_2160_valueGen))).Then(_2164_bodyGen)); - RAST._IExpr _out602; - DCOMP._IOwnership _out603; - (this).FromOwned(r, expectedOwnership, out _out602, out _out603); - r = _out602; - resultingOwnership = _out603; + RAST._IExpr _326_valueGen; + DCOMP._IOwnership _327___v214; + Dafny.ISet> _328_recIdents; + RAST._IExpr _out252; + DCOMP._IOwnership _out253; + Dafny.ISet> _out254; + (this).GenExpr(_324_value, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out252, out _out253, out _out254); + _326_valueGen = _out252; + _327___v214 = _out253; + _328_recIdents = _out254; + readIdents = _328_recIdents; + RAST._IType _329_valueTypeGen; + RAST._IType _out255; + _out255 = (this).GenType(_323_tpe, DCOMP.GenTypeContext.InFn()); + _329_valueTypeGen = _out255; + RAST._IExpr _330_bodyGen; + DCOMP._IOwnership _331___v215; + Dafny.ISet> _332_bodyIdents; + RAST._IExpr _out256; + DCOMP._IOwnership _out257; + Dafny.ISet> _out258; + (this).GenExpr(_325_iifeBody, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out256, out _out257, out _out258); + _330_bodyGen = _out256; + _331___v215 = _out257; + _332_bodyIdents = _out258; + readIdents = Dafny.Set>.Union(readIdents, Dafny.Set>.Difference(_332_bodyIdents, Dafny.Set>.FromElements(DCOMP.__default.escapeName((_322_name))))); + r = RAST.Expr.create_Block((RAST.Expr.create_DeclareVar(RAST.DeclareType.create_CONST(), DCOMP.__default.escapeName((_322_name)), Std.Wrappers.Option.create_Some(_329_valueTypeGen), Std.Wrappers.Option.create_Some(_326_valueGen))).Then(_330_bodyGen)); + RAST._IExpr _out259; + DCOMP._IOwnership _out260; + (this).FromOwned(r, expectedOwnership, out _out259, out _out260); + r = _out259; + resultingOwnership = _out260; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_Apply) { - DAST._IExpression _2167_func = _source96.dtor_expr; - Dafny.ISequence _2168_args = _source96.dtor_args; + if (_source0.is_Apply) { + DAST._IExpression _333_func = _source0.dtor_expr; + Dafny.ISequence _334_args = _source0.dtor_args; { - RAST._IExpr _2169_funcExpr; - DCOMP._IOwnership _2170___v216; - Dafny.ISet> _2171_recIdents; - RAST._IExpr _out604; - DCOMP._IOwnership _out605; - Dafny.ISet> _out606; - (this).GenExpr(_2167_func, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out604, out _out605, out _out606); - _2169_funcExpr = _out604; - _2170___v216 = _out605; - _2171_recIdents = _out606; - readIdents = _2171_recIdents; - Dafny.ISequence _2172_rArgs; - _2172_rArgs = Dafny.Sequence.FromElements(); - BigInteger _hi50 = new BigInteger((_2168_args).Count); - for (BigInteger _2173_i = BigInteger.Zero; _2173_i < _hi50; _2173_i++) { - RAST._IExpr _2174_argExpr; - DCOMP._IOwnership _2175_argOwned; - Dafny.ISet> _2176_argIdents; - RAST._IExpr _out607; - DCOMP._IOwnership _out608; - Dafny.ISet> _out609; - (this).GenExpr((_2168_args).Select(_2173_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out607, out _out608, out _out609); - _2174_argExpr = _out607; - _2175_argOwned = _out608; - _2176_argIdents = _out609; - _2172_rArgs = Dafny.Sequence.Concat(_2172_rArgs, Dafny.Sequence.FromElements(_2174_argExpr)); - readIdents = Dafny.Set>.Union(readIdents, _2176_argIdents); + RAST._IExpr _335_funcExpr; + DCOMP._IOwnership _336___v216; + Dafny.ISet> _337_recIdents; + RAST._IExpr _out261; + DCOMP._IOwnership _out262; + Dafny.ISet> _out263; + (this).GenExpr(_333_func, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out261, out _out262, out _out263); + _335_funcExpr = _out261; + _336___v216 = _out262; + _337_recIdents = _out263; + readIdents = _337_recIdents; + Dafny.ISequence _338_rArgs; + _338_rArgs = Dafny.Sequence.FromElements(); + BigInteger _hi11 = new BigInteger((_334_args).Count); + for (BigInteger _339_i = BigInteger.Zero; _339_i < _hi11; _339_i++) { + RAST._IExpr _340_argExpr; + DCOMP._IOwnership _341_argOwned; + Dafny.ISet> _342_argIdents; + RAST._IExpr _out264; + DCOMP._IOwnership _out265; + Dafny.ISet> _out266; + (this).GenExpr((_334_args).Select(_339_i), selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out264, out _out265, out _out266); + _340_argExpr = _out264; + _341_argOwned = _out265; + _342_argIdents = _out266; + _338_rArgs = Dafny.Sequence.Concat(_338_rArgs, Dafny.Sequence.FromElements(_340_argExpr)); + readIdents = Dafny.Set>.Union(readIdents, _342_argIdents); } - r = (_2169_funcExpr).Apply(_2172_rArgs); - RAST._IExpr _out610; - DCOMP._IOwnership _out611; - (this).FromOwned(r, expectedOwnership, out _out610, out _out611); - r = _out610; - resultingOwnership = _out611; + r = (_335_funcExpr).Apply(_338_rArgs); + RAST._IExpr _out267; + DCOMP._IOwnership _out268; + (this).FromOwned(r, expectedOwnership, out _out267, out _out268); + r = _out267; + resultingOwnership = _out268; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_TypeTest) { - DAST._IExpression _2177_on = _source96.dtor_on; - Dafny.ISequence> _2178_dType = _source96.dtor_dType; - Dafny.ISequence _2179_variant = _source96.dtor_variant; + if (_source0.is_TypeTest) { + DAST._IExpression _343_on = _source0.dtor_on; + Dafny.ISequence> _344_dType = _source0.dtor_dType; + Dafny.ISequence _345_variant = _source0.dtor_variant; { - RAST._IExpr _2180_exprGen; - DCOMP._IOwnership _2181___v217; - Dafny.ISet> _2182_recIdents; - RAST._IExpr _out612; - DCOMP._IOwnership _out613; - Dafny.ISet> _out614; - (this).GenExpr(_2177_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out612, out _out613, out _out614); - _2180_exprGen = _out612; - _2181___v217 = _out613; - _2182_recIdents = _out614; - RAST._IType _2183_dTypePath; - RAST._IType _out615; - _out615 = DCOMP.COMP.GenPath(_2178_dType); - _2183_dTypePath = _out615; - r = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("matches!"))).Apply(Dafny.Sequence.FromElements(((_2180_exprGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(((_2183_dTypePath).MSel(DCOMP.__default.escapeName(_2179_variant)))._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("{ .. }"))))); - RAST._IExpr _out616; - DCOMP._IOwnership _out617; - (this).FromOwned(r, expectedOwnership, out _out616, out _out617); - r = _out616; - resultingOwnership = _out617; - readIdents = _2182_recIdents; + RAST._IExpr _346_exprGen; + DCOMP._IOwnership _347___v217; + Dafny.ISet> _348_recIdents; + RAST._IExpr _out269; + DCOMP._IOwnership _out270; + Dafny.ISet> _out271; + (this).GenExpr(_343_on, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out269, out _out270, out _out271); + _346_exprGen = _out269; + _347___v217 = _out270; + _348_recIdents = _out271; + RAST._IType _349_dTypePath; + RAST._IType _out272; + _out272 = DCOMP.COMP.GenPath(_344_dType); + _349_dTypePath = _out272; + r = (RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("matches!"))).Apply(Dafny.Sequence.FromElements(((_346_exprGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements()), RAST.Expr.create_RawExpr(Dafny.Sequence.Concat(((_349_dTypePath).MSel(DCOMP.__default.escapeName(_345_variant)))._ToString(DCOMP.__default.IND), Dafny.Sequence.UnicodeFromString("{ .. }"))))); + RAST._IExpr _out273; + DCOMP._IOwnership _out274; + (this).FromOwned(r, expectedOwnership, out _out273, out _out274); + r = _out273; + resultingOwnership = _out274; + readIdents = _348_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_BoolBoundedPool) { + if (_source0.is_BoolBoundedPool) { { r = RAST.Expr.create_RawExpr(Dafny.Sequence.UnicodeFromString("[false, true]")); - RAST._IExpr _out618; - DCOMP._IOwnership _out619; - (this).FromOwned(r, expectedOwnership, out _out618, out _out619); - r = _out618; - resultingOwnership = _out619; + RAST._IExpr _out275; + DCOMP._IOwnership _out276; + (this).FromOwned(r, expectedOwnership, out _out275, out _out276); + r = _out275; + resultingOwnership = _out276; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SetBoundedPool) { - DAST._IExpression _2184_of = _source96.dtor_of; + if (_source0.is_SetBoundedPool) { + DAST._IExpression _350_of = _source0.dtor_of; { - RAST._IExpr _2185_exprGen; - DCOMP._IOwnership _2186___v218; - Dafny.ISet> _2187_recIdents; - RAST._IExpr _out620; - DCOMP._IOwnership _out621; - Dafny.ISet> _out622; - (this).GenExpr(_2184_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out620, out _out621, out _out622); - _2185_exprGen = _out620; - _2186___v218 = _out621; - _2187_recIdents = _out622; - r = ((_2185_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out623; - DCOMP._IOwnership _out624; - (this).FromOwned(r, expectedOwnership, out _out623, out _out624); - r = _out623; - resultingOwnership = _out624; - readIdents = _2187_recIdents; + RAST._IExpr _351_exprGen; + DCOMP._IOwnership _352___v218; + Dafny.ISet> _353_recIdents; + RAST._IExpr _out277; + DCOMP._IOwnership _out278; + Dafny.ISet> _out279; + (this).GenExpr(_350_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out277, out _out278, out _out279); + _351_exprGen = _out277; + _352___v218 = _out278; + _353_recIdents = _out279; + r = ((_351_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out280; + DCOMP._IOwnership _out281; + (this).FromOwned(r, expectedOwnership, out _out280, out _out281); + r = _out280; + resultingOwnership = _out281; + readIdents = _353_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SeqBoundedPool) { - DAST._IExpression _2188_of = _source96.dtor_of; - bool _2189_includeDuplicates = _source96.dtor_includeDuplicates; + if (_source0.is_SeqBoundedPool) { + DAST._IExpression _354_of = _source0.dtor_of; + bool _355_includeDuplicates = _source0.dtor_includeDuplicates; { - RAST._IExpr _2190_exprGen; - DCOMP._IOwnership _2191___v219; - Dafny.ISet> _2192_recIdents; - RAST._IExpr _out625; - DCOMP._IOwnership _out626; - Dafny.ISet> _out627; - (this).GenExpr(_2188_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out625, out _out626, out _out627); - _2190_exprGen = _out625; - _2191___v219 = _out626; - _2192_recIdents = _out627; - r = ((_2190_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); - if (!(_2189_includeDuplicates)) { + RAST._IExpr _356_exprGen; + DCOMP._IOwnership _357___v219; + Dafny.ISet> _358_recIdents; + RAST._IExpr _out282; + DCOMP._IOwnership _out283; + Dafny.ISet> _out284; + (this).GenExpr(_354_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out282, out _out283, out _out284); + _356_exprGen = _out282; + _357___v219 = _out283; + _358_recIdents = _out284; + r = ((_356_exprGen).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); + if (!(_355_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 _out628; - DCOMP._IOwnership _out629; - (this).FromOwned(r, expectedOwnership, out _out628, out _out629); - r = _out628; - resultingOwnership = _out629; - readIdents = _2192_recIdents; + RAST._IExpr _out285; + DCOMP._IOwnership _out286; + (this).FromOwned(r, expectedOwnership, out _out285, out _out286); + r = _out285; + resultingOwnership = _out286; + readIdents = _358_recIdents; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapBoundedPool) { - DAST._IExpression _2193_of = _source96.dtor_of; + if (_source0.is_MapBoundedPool) { + DAST._IExpression _359_of = _source0.dtor_of; { - RAST._IExpr _2194_exprGen; - DCOMP._IOwnership _2195___v220; - Dafny.ISet> _2196_recIdents; - RAST._IExpr _out630; - DCOMP._IOwnership _out631; - Dafny.ISet> _out632; - (this).GenExpr(_2193_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out630, out _out631, out _out632); - _2194_exprGen = _out630; - _2195___v220 = _out631; - _2196_recIdents = _out632; - r = ((((_2194_exprGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); - readIdents = _2196_recIdents; - RAST._IExpr _out633; - DCOMP._IOwnership _out634; - (this).FromOwned(r, expectedOwnership, out _out633, out _out634); - r = _out633; - resultingOwnership = _out634; - } - goto after_match41; - } - } - { - if (_source96.is_IntRange) { - DAST._IExpression _2197_lo = _source96.dtor_lo; - DAST._IExpression _2198_hi = _source96.dtor_hi; - bool _2199_up = _source96.dtor_up; + RAST._IExpr _360_exprGen; + DCOMP._IOwnership _361___v220; + Dafny.ISet> _362_recIdents; + RAST._IExpr _out287; + DCOMP._IOwnership _out288; + Dafny.ISet> _out289; + (this).GenExpr(_359_of, selfIdent, env, DCOMP.Ownership.create_OwnershipBorrowed(), out _out287, out _out288, out _out289); + _360_exprGen = _out287; + _361___v220 = _out288; + _362_recIdents = _out289; + r = ((((_360_exprGen).Sel(Dafny.Sequence.UnicodeFromString("keys"))).Apply(Dafny.Sequence.FromElements())).Sel(Dafny.Sequence.UnicodeFromString("iter"))).Apply(Dafny.Sequence.FromElements()); + readIdents = _362_recIdents; + RAST._IExpr _out290; + DCOMP._IOwnership _out291; + (this).FromOwned(r, expectedOwnership, out _out290, out _out291); + r = _out290; + resultingOwnership = _out291; + } + goto after_match0; + } + } + { + if (_source0.is_IntRange) { + DAST._IExpression _363_lo = _source0.dtor_lo; + DAST._IExpression _364_hi = _source0.dtor_hi; + bool _365_up = _source0.dtor_up; { - RAST._IExpr _2200_lo; - DCOMP._IOwnership _2201___v221; - Dafny.ISet> _2202_recIdentsLo; - RAST._IExpr _out635; - DCOMP._IOwnership _out636; - Dafny.ISet> _out637; - (this).GenExpr(_2197_lo, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out635, out _out636, out _out637); - _2200_lo = _out635; - _2201___v221 = _out636; - _2202_recIdentsLo = _out637; - RAST._IExpr _2203_hi; - DCOMP._IOwnership _2204___v222; - Dafny.ISet> _2205_recIdentsHi; - RAST._IExpr _out638; - DCOMP._IOwnership _out639; - Dafny.ISet> _out640; - (this).GenExpr(_2198_hi, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out638, out _out639, out _out640); - _2203_hi = _out638; - _2204___v222 = _out639; - _2205_recIdentsHi = _out640; - if (_2199_up) { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range"))).Apply(Dafny.Sequence.FromElements(_2200_lo, _2203_hi)); + RAST._IExpr _366_lo; + DCOMP._IOwnership _367___v221; + Dafny.ISet> _368_recIdentsLo; + RAST._IExpr _out292; + DCOMP._IOwnership _out293; + Dafny.ISet> _out294; + (this).GenExpr(_363_lo, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out292, out _out293, out _out294); + _366_lo = _out292; + _367___v221 = _out293; + _368_recIdentsLo = _out294; + RAST._IExpr _369_hi; + DCOMP._IOwnership _370___v222; + Dafny.ISet> _371_recIdentsHi; + RAST._IExpr _out295; + DCOMP._IOwnership _out296; + Dafny.ISet> _out297; + (this).GenExpr(_364_hi, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out295, out _out296, out _out297); + _369_hi = _out295; + _370___v222 = _out296; + _371_recIdentsHi = _out297; + if (_365_up) { + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range"))).Apply(Dafny.Sequence.FromElements(_366_lo, _369_hi)); } else { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_down"))).Apply(Dafny.Sequence.FromElements(_2203_hi, _2200_lo)); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_down"))).Apply(Dafny.Sequence.FromElements(_369_hi, _366_lo)); } - RAST._IExpr _out641; - DCOMP._IOwnership _out642; - (this).FromOwned(r, expectedOwnership, out _out641, out _out642); - r = _out641; - resultingOwnership = _out642; - readIdents = Dafny.Set>.Union(_2202_recIdentsLo, _2205_recIdentsHi); + RAST._IExpr _out298; + DCOMP._IOwnership _out299; + (this).FromOwned(r, expectedOwnership, out _out298, out _out299); + r = _out298; + resultingOwnership = _out299; + readIdents = Dafny.Set>.Union(_368_recIdentsLo, _371_recIdentsHi); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_UnboundedIntRange) { - DAST._IExpression _2206_start = _source96.dtor_start; - bool _2207_up = _source96.dtor_up; + if (_source0.is_UnboundedIntRange) { + DAST._IExpression _372_start = _source0.dtor_start; + bool _373_up = _source0.dtor_up; { - RAST._IExpr _2208_start; - DCOMP._IOwnership _2209___v223; - Dafny.ISet> _2210_recIdentStart; - RAST._IExpr _out643; - DCOMP._IOwnership _out644; - Dafny.ISet> _out645; - (this).GenExpr(_2206_start, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out643, out _out644, out _out645); - _2208_start = _out643; - _2209___v223 = _out644; - _2210_recIdentStart = _out645; - if (_2207_up) { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_unbounded"))).Apply1(_2208_start); + RAST._IExpr _374_start; + DCOMP._IOwnership _375___v223; + Dafny.ISet> _376_recIdentStart; + RAST._IExpr _out300; + DCOMP._IOwnership _out301; + Dafny.ISet> _out302; + (this).GenExpr(_372_start, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out300, out _out301, out _out302); + _374_start = _out300; + _375___v223 = _out301; + _376_recIdentStart = _out302; + if (_373_up) { + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_unbounded"))).Apply1(_374_start); } else { - r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_down_unbounded"))).Apply1(_2208_start); + r = ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("integer_range_down_unbounded"))).Apply1(_374_start); } - RAST._IExpr _out646; - DCOMP._IOwnership _out647; - (this).FromOwned(r, expectedOwnership, out _out646, out _out647); - r = _out646; - resultingOwnership = _out647; - readIdents = _2210_recIdentStart; + RAST._IExpr _out303; + DCOMP._IOwnership _out304; + (this).FromOwned(r, expectedOwnership, out _out303, out _out304); + r = _out303; + resultingOwnership = _out304; + readIdents = _376_recIdentStart; return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_MapBuilder) { - DAST._IType _2211_keyType = _source96.dtor_keyType; - DAST._IType _2212_valueType = _source96.dtor_valueType; + if (_source0.is_MapBuilder) { + DAST._IType _377_keyType = _source0.dtor_keyType; + DAST._IType _378_valueType = _source0.dtor_valueType; { - RAST._IType _2213_kType; - RAST._IType _out648; - _out648 = (this).GenType(_2211_keyType, DCOMP.GenTypeContext.@default()); - _2213_kType = _out648; - RAST._IType _2214_vType; - RAST._IType _out649; - _out649 = (this).GenType(_2212_valueType, DCOMP.GenTypeContext.@default()); - _2214_vType = _out649; - r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder"))).ApplyType(Dafny.Sequence.FromElements(_2213_kType, _2214_vType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out650; - DCOMP._IOwnership _out651; - (this).FromOwned(r, expectedOwnership, out _out650, out _out651); - r = _out650; - resultingOwnership = _out651; + RAST._IType _379_kType; + RAST._IType _out305; + _out305 = (this).GenType(_377_keyType, DCOMP.GenTypeContext.@default()); + _379_kType = _out305; + RAST._IType _380_vType; + RAST._IType _out306; + _out306 = (this).GenType(_378_valueType, DCOMP.GenTypeContext.@default()); + _380_vType = _out306; + r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("MapBuilder"))).ApplyType(Dafny.Sequence.FromElements(_379_kType, _380_vType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out307; + DCOMP._IOwnership _out308; + (this).FromOwned(r, expectedOwnership, out _out307, out _out308); + r = _out307; + resultingOwnership = _out308; readIdents = Dafny.Set>.FromElements(); return ; } - goto after_match41; + goto after_match0; } } { - if (_source96.is_SetBuilder) { - DAST._IType _2215_elemType = _source96.dtor_elemType; + if (_source0.is_SetBuilder) { + DAST._IType _381_elemType = _source0.dtor_elemType; { - RAST._IType _2216_eType; - RAST._IType _out652; - _out652 = (this).GenType(_2215_elemType, DCOMP.GenTypeContext.@default()); - _2216_eType = _out652; + RAST._IType _382_eType; + RAST._IType _out309; + _out309 = (this).GenType(_381_elemType, DCOMP.GenTypeContext.@default()); + _382_eType = _out309; readIdents = Dafny.Set>.FromElements(); - r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder"))).ApplyType(Dafny.Sequence.FromElements(_2216_eType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); - RAST._IExpr _out653; - DCOMP._IOwnership _out654; - (this).FromOwned(r, expectedOwnership, out _out653, out _out654); - r = _out653; - resultingOwnership = _out654; + r = ((((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("SetBuilder"))).ApplyType(Dafny.Sequence.FromElements(_382_eType))).MSel(Dafny.Sequence.UnicodeFromString("new"))).Apply(Dafny.Sequence.FromElements()); + RAST._IExpr _out310; + DCOMP._IOwnership _out311; + (this).FromOwned(r, expectedOwnership, out _out310, out _out311); + r = _out310; + resultingOwnership = _out311; return ; } - goto after_match41; + goto after_match0; } } { - DAST._IType _2217_elemType = _source96.dtor_elemType; - DAST._IExpression _2218_collection = _source96.dtor_collection; - bool _2219_is__forall = _source96.dtor_is__forall; - DAST._IExpression _2220_lambda = _source96.dtor_lambda; + DAST._IType _383_elemType = _source0.dtor_elemType; + DAST._IExpression _384_collection = _source0.dtor_collection; + bool _385_is__forall = _source0.dtor_is__forall; + DAST._IExpression _386_lambda = _source0.dtor_lambda; { - RAST._IType _2221_tpe; - RAST._IType _out655; - _out655 = (this).GenType(_2217_elemType, DCOMP.GenTypeContext.@default()); - _2221_tpe = _out655; - RAST._IExpr _2222_collectionGen; - DCOMP._IOwnership _2223___v224; - Dafny.ISet> _2224_recIdents; - RAST._IExpr _out656; - DCOMP._IOwnership _out657; - Dafny.ISet> _out658; - (this).GenExpr(_2218_collection, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out656, out _out657, out _out658); - _2222_collectionGen = _out656; - _2223___v224 = _out657; - _2224_recIdents = _out658; - Dafny.ISequence _2225_extraAttributes; - _2225_extraAttributes = Dafny.Sequence.FromElements(); - if ((((_2218_collection).is_IntRange) || ((_2218_collection).is_UnboundedIntRange)) || ((_2218_collection).is_SeqBoundedPool)) { - _2225_extraAttributes = Dafny.Sequence.FromElements(DCOMP.__default.AttributeOwned); - } - if ((_2220_lambda).is_Lambda) { - Dafny.ISequence _2226_formals; - _2226_formals = (_2220_lambda).dtor_params; - Dafny.ISequence _2227_newFormals; - _2227_newFormals = Dafny.Sequence.FromElements(); - BigInteger _hi51 = new BigInteger((_2226_formals).Count); - for (BigInteger _2228_i = BigInteger.Zero; _2228_i < _hi51; _2228_i++) { - var _pat_let_tv4 = _2225_extraAttributes; - var _pat_let_tv5 = _2226_formals; - _2227_newFormals = Dafny.Sequence.Concat(_2227_newFormals, Dafny.Sequence.FromElements(Dafny.Helpers.Let((_2226_formals).Select(_2228_i), _pat_let34_0 => Dafny.Helpers.Let(_pat_let34_0, _2229_dt__update__tmp_h0 => Dafny.Helpers.Let, DAST._IFormal>(Dafny.Sequence.Concat(_pat_let_tv4, ((_pat_let_tv5).Select(_2228_i)).dtor_attributes), _pat_let35_0 => Dafny.Helpers.Let, DAST._IFormal>(_pat_let35_0, _2230_dt__update_hattributes_h0 => DAST.Formal.create((_2229_dt__update__tmp_h0).dtor_name, (_2229_dt__update__tmp_h0).dtor_typ, _2230_dt__update_hattributes_h0))))))); + RAST._IType _387_tpe; + RAST._IType _out312; + _out312 = (this).GenType(_383_elemType, DCOMP.GenTypeContext.@default()); + _387_tpe = _out312; + RAST._IExpr _388_collectionGen; + DCOMP._IOwnership _389___v224; + Dafny.ISet> _390_recIdents; + RAST._IExpr _out313; + DCOMP._IOwnership _out314; + Dafny.ISet> _out315; + (this).GenExpr(_384_collection, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out313, out _out314, out _out315); + _388_collectionGen = _out313; + _389___v224 = _out314; + _390_recIdents = _out315; + Dafny.ISequence _391_extraAttributes; + _391_extraAttributes = Dafny.Sequence.FromElements(); + if ((((_384_collection).is_IntRange) || ((_384_collection).is_UnboundedIntRange)) || ((_384_collection).is_SeqBoundedPool)) { + _391_extraAttributes = Dafny.Sequence.FromElements(DCOMP.__default.AttributeOwned); + } + if ((_386_lambda).is_Lambda) { + Dafny.ISequence _392_formals; + _392_formals = (_386_lambda).dtor_params; + Dafny.ISequence _393_newFormals; + _393_newFormals = Dafny.Sequence.FromElements(); + BigInteger _hi12 = new BigInteger((_392_formals).Count); + for (BigInteger _394_i = BigInteger.Zero; _394_i < _hi12; _394_i++) { + var _pat_let_tv0 = _391_extraAttributes; + var _pat_let_tv1 = _392_formals; + _393_newFormals = Dafny.Sequence.Concat(_393_newFormals, Dafny.Sequence.FromElements(Dafny.Helpers.Let((_392_formals).Select(_394_i), _pat_let34_0 => Dafny.Helpers.Let(_pat_let34_0, _395_dt__update__tmp_h0 => Dafny.Helpers.Let, DAST._IFormal>(Dafny.Sequence.Concat(_pat_let_tv0, ((_pat_let_tv1).Select(_394_i)).dtor_attributes), _pat_let35_0 => Dafny.Helpers.Let, DAST._IFormal>(_pat_let35_0, _396_dt__update_hattributes_h0 => DAST.Formal.create((_395_dt__update__tmp_h0).dtor_name, (_395_dt__update__tmp_h0).dtor_typ, _396_dt__update_hattributes_h0))))))); } - DAST._IExpression _2231_newLambda; - DAST._IExpression _2232_dt__update__tmp_h1 = _2220_lambda; - Dafny.ISequence _2233_dt__update_hparams_h0 = _2227_newFormals; - _2231_newLambda = DAST.Expression.create_Lambda(_2233_dt__update_hparams_h0, (_2232_dt__update__tmp_h1).dtor_retType, (_2232_dt__update__tmp_h1).dtor_body); - RAST._IExpr _2234_lambdaGen; - DCOMP._IOwnership _2235___v225; - Dafny.ISet> _2236_recLambdaIdents; - RAST._IExpr _out659; - DCOMP._IOwnership _out660; - Dafny.ISet> _out661; - (this).GenExpr(_2231_newLambda, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out659, out _out660, out _out661); - _2234_lambdaGen = _out659; - _2235___v225 = _out660; - _2236_recLambdaIdents = _out661; - Dafny.ISequence _2237_fn; - if (_2219_is__forall) { - _2237_fn = Dafny.Sequence.UnicodeFromString("all"); + DAST._IExpression _397_newLambda; + DAST._IExpression _398_dt__update__tmp_h1 = _386_lambda; + Dafny.ISequence _399_dt__update_hparams_h0 = _393_newFormals; + _397_newLambda = DAST.Expression.create_Lambda(_399_dt__update_hparams_h0, (_398_dt__update__tmp_h1).dtor_retType, (_398_dt__update__tmp_h1).dtor_body); + RAST._IExpr _400_lambdaGen; + DCOMP._IOwnership _401___v225; + Dafny.ISet> _402_recLambdaIdents; + RAST._IExpr _out316; + DCOMP._IOwnership _out317; + Dafny.ISet> _out318; + (this).GenExpr(_397_newLambda, selfIdent, env, DCOMP.Ownership.create_OwnershipOwned(), out _out316, out _out317, out _out318); + _400_lambdaGen = _out316; + _401___v225 = _out317; + _402_recLambdaIdents = _out318; + Dafny.ISequence _403_fn; + if (_385_is__forall) { + _403_fn = Dafny.Sequence.UnicodeFromString("all"); } else { - _2237_fn = Dafny.Sequence.UnicodeFromString("any"); + _403_fn = Dafny.Sequence.UnicodeFromString("any"); } - r = ((_2222_collectionGen).Sel(_2237_fn)).Apply1(((_2234_lambdaGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements())); - readIdents = Dafny.Set>.Union(_2224_recIdents, _2236_recLambdaIdents); + r = ((_388_collectionGen).Sel(_403_fn)).Apply1(((_400_lambdaGen).Sel(Dafny.Sequence.UnicodeFromString("as_ref"))).Apply(Dafny.Sequence.FromElements())); + readIdents = Dafny.Set>.Union(_390_recIdents, _402_recLambdaIdents); } else { (this).error = Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("Quantifier without an inline lambda")); r = RAST.Expr.create_RawExpr((this.error).dtor_value); readIdents = Dafny.Set>.FromElements(); } - RAST._IExpr _out662; - DCOMP._IOwnership _out663; - (this).FromOwned(r, expectedOwnership, out _out662, out _out663); - r = _out662; - resultingOwnership = _out663; + RAST._IExpr _out319; + DCOMP._IOwnership _out320; + (this).FromOwned(r, expectedOwnership, out _out319, out _out320); + r = _out319; + resultingOwnership = _out320; } } - after_match41: ; + after_match0: ; } public Dafny.ISequence Compile(Dafny.ISequence p) { Dafny.ISequence 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 _2238_i; - _2238_i = BigInteger.Zero; - while ((_2238_i) < (new BigInteger((p).Count))) { - Dafny.ISequence _2239_generated = Dafny.Sequence.Empty; - RAST._IMod _2240_m; - RAST._IMod _out664; - _out664 = (this).GenModule((p).Select(_2238_i), Dafny.Sequence>.FromElements()); - _2240_m = _out664; - _2239_generated = (_2240_m)._ToString(Dafny.Sequence.UnicodeFromString("")); - if ((_2238_i).Sign == 1) { + BigInteger _0_i; + _0_i = BigInteger.Zero; + while ((_0_i) < (new BigInteger((p).Count))) { + Dafny.ISequence _1_generated = Dafny.Sequence.Empty; + RAST._IMod _2_m; + RAST._IMod _out0; + _out0 = (this).GenModule((p).Select(_0_i), Dafny.Sequence>.FromElements()); + _2_m = _out0; + _1_generated = (_2_m)._ToString(Dafny.Sequence.UnicodeFromString("")); + if ((_0_i).Sign == 1) { s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("\n")); } - s = Dafny.Sequence.Concat(s, _2239_generated); - _2238_i = (_2238_i) + (BigInteger.One); + s = Dafny.Sequence.Concat(s, _1_generated); + _0_i = (_0_i) + (BigInteger.One); } return s; } @@ -7140,14 +7143,14 @@ public void GenExpr(DAST._IExpression e, DCOMP._ISelfInfo selfIdent, DCOMP._IEnv { Dafny.ISequence s = Dafny.Sequence.Empty; s = Dafny.Sequence.UnicodeFromString("\nfn main() {\n"); - BigInteger _2241_i; - _2241_i = BigInteger.Zero; - while ((_2241_i) < (new BigInteger((fullName).Count))) { - if ((_2241_i).Sign == 1) { + BigInteger _0_i; + _0_i = BigInteger.Zero; + while ((_0_i) < (new BigInteger((fullName).Count))) { + if ((_0_i).Sign == 1) { s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("::")); } - s = Dafny.Sequence.Concat(s, DCOMP.__default.escapeName((fullName).Select(_2241_i))); - _2241_i = (_2241_i) + (BigInteger.One); + s = Dafny.Sequence.Concat(s, DCOMP.__default.escapeName((fullName).Select(_0_i))); + _0_i = (_0_i) + (BigInteger.One); } s = Dafny.Sequence.Concat(s, Dafny.Sequence.UnicodeFromString("();\n}")); return s; diff --git a/Source/DafnyCore/GeneratedFromDafny/Formatting.cs b/Source/DafnyCore/GeneratedFromDafny/Formatting.cs index 786cf0e03d6..66f977cecdf 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Formatting.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Formatting.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Formatting { @@ -15,23 +18,23 @@ public partial class __default { public static System.String ReindentProgramFromFirstToken(Microsoft.Dafny.IToken firstToken, Formatting.IIndentationFormatter reindent) { System.String s = default(System.String); - Microsoft.Dafny.IToken token; - token = firstToken; - System.Text.StringBuilder sb; + Microsoft.Dafny.IToken _0_token; + _0_token = firstToken; + System.Text.StringBuilder _1_sb; System.Text.StringBuilder _nw0 = new System.Text.StringBuilder(); - sb = _nw0; - while ((token) != (object) ((Microsoft.Dafny.IToken)null)) { - System.String newLeadingTrivia; - newLeadingTrivia = (reindent).GetNewLeadingTrivia(token); - System.String newTrailingTrivia; - newTrailingTrivia = (reindent).GetNewTrailingTrivia(token); - (sb).Append(newLeadingTrivia); - (sb).Append(token.val); - (sb).Append(newTrailingTrivia); - token = token.Next; + _1_sb = _nw0; + while ((_0_token) != (object) ((Microsoft.Dafny.IToken)null)) { + System.String _2_newLeadingTrivia; + _2_newLeadingTrivia = (reindent).GetNewLeadingTrivia(_0_token); + System.String _3_newTrailingTrivia; + _3_newTrailingTrivia = (reindent).GetNewTrailingTrivia(_0_token); + (_1_sb).Append(_2_newLeadingTrivia); + (_1_sb).Append(_0_token.val); + (_1_sb).Append(_3_newTrailingTrivia); + _0_token = _0_token.Next; } System.String _out0; - _out0 = (sb).ToString().ToString(); + _out0 = (_1_sb).ToString().ToString(); s = _out0; return s; } diff --git a/Source/DafnyCore/GeneratedFromDafny/RAST.cs b/Source/DafnyCore/GeneratedFromDafny/RAST.cs index c8a5fe19bfd..f1dc6a1bd2f 100644 --- a/Source/DafnyCore/GeneratedFromDafny/RAST.cs +++ b/Source/DafnyCore/GeneratedFromDafny/RAST.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace RAST { @@ -54,13 +57,13 @@ 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 _788_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"), _788_size))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), _788_size)), ((System.Func>) (() => { + Dafny.ISequence _0_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"), _0_size))).MSel(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_T"), _0_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 _789_i = (BigInteger) i10; - arr10[(int)(_789_i)] = RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), Std.Strings.__default.OfNat(_789_i)), (elements).Select(_789_i)); + var _1_i = (BigInteger) i10; + arr10[(int)(_1_i)] = RAST.AssignIdentifier.create(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("_"), Std.Strings.__default.OfNat(_1_i)), (elements).Select(_1_i)); } return Dafny.Sequence.FromArray(arr10); }))()); @@ -82,37 +85,37 @@ public static RAST._IType MaybePlaceboType(RAST._IType underlying) { } public static Dafny.ISequence AddIndent(Dafny.ISequence raw, Dafny.ISequence ind) { - Dafny.ISequence _790___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((raw).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_790___accumulator, raw); + return Dafny.Sequence.Concat(_0___accumulator, raw); } else if ((Dafny.Sequence.UnicodeFromString("[({")).Contains((raw).Select(BigInteger.Zero))) { - _790___accumulator = Dafny.Sequence.Concat(_790___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; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + Dafny.ISequence _in0 = (raw).Drop(BigInteger.One); + Dafny.ISequence _in1 = Dafny.Sequence.Concat(ind, RAST.__default.IND); + raw = _in0; + ind = _in1; goto TAIL_CALL_START; } else if (((Dafny.Sequence.UnicodeFromString("})]")).Contains((raw).Select(BigInteger.Zero))) && ((new BigInteger((ind).Count)) > (new BigInteger(2)))) { - _790___accumulator = Dafny.Sequence.Concat(_790___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; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + Dafny.ISequence _in2 = (raw).Drop(BigInteger.One); + Dafny.ISequence _in3 = (ind).Take((new BigInteger((ind).Count)) - (new BigInteger(2))); + raw = _in2; + ind = _in3; goto TAIL_CALL_START; } else if (((raw).Select(BigInteger.Zero)) == (new Dafny.Rune('\n'))) { - _790___accumulator = Dafny.Sequence.Concat(_790___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; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.Concat(Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero)), ind)); + Dafny.ISequence _in4 = (raw).Drop(BigInteger.One); + Dafny.ISequence _in5 = ind; + raw = _in4; + ind = _in5; goto TAIL_CALL_START; } else { - _790___accumulator = Dafny.Sequence.Concat(_790___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); - Dafny.ISequence _in109 = (raw).Drop(BigInteger.One); - Dafny.ISequence _in110 = ind; - raw = _in109; - ind = _in110; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((raw).Select(BigInteger.Zero))); + Dafny.ISequence _in6 = (raw).Drop(BigInteger.One); + Dafny.ISequence _in7 = ind; + raw = _in6; + ind = _in7; goto TAIL_CALL_START; } } @@ -302,18 +305,18 @@ public Dafny.ISequence dtor_body { } public abstract _IMod DowncastClone(); public Dafny.ISequence _ToString(Dafny.ISequence ind) { - RAST._IMod _source27 = this; + RAST._IMod _source0 = this; { - if (_source27.is_ExternMod) { - Dafny.ISequence _791_name = _source27.dtor_name; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _791_name), Dafny.Sequence.UnicodeFromString(";")); + if (_source0.is_ExternMod) { + Dafny.ISequence _0_name = _source0.dtor_name; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("pub mod "), _0_name), Dafny.Sequence.UnicodeFromString(";")); } } { - Dafny.ISequence _792_name = _source27.dtor_name; - Dafny.ISequence _793_body = _source27.dtor_body; - 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 "), _792_name), Dafny.Sequence.UnicodeFromString(" {")), Dafny.Sequence.UnicodeFromString("\n")), ind), RAST.__default.IND), RAST.__default.SeqToString(_793_body, Dafny.Helpers.Id, Func>>>((_794_ind) => ((System.Func>)((_795_modDecl) => { - return (_795_modDecl)._ToString(Dafny.Sequence.Concat(_794_ind, RAST.__default.IND)); + Dafny.ISequence _1_name = _source0.dtor_name; + Dafny.ISequence _2_body = _source0.dtor_body; + 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 "), _1_name), Dafny.Sequence.UnicodeFromString(" {")), Dafny.Sequence.UnicodeFromString("\n")), ind), RAST.__default.IND), RAST.__default.SeqToString(_2_body, Dafny.Helpers.Id, Func>>>((_3_ind) => ((System.Func>)((_4_modDecl) => { + return (_4_modDecl)._ToString(Dafny.Sequence.Concat(_3_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n\n"), ind), RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } @@ -898,8 +901,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>>>((_796_ind) => ((System.Func, Dafny.ISequence>)((_797_attribute) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_797_attribute), Dafny.Sequence.UnicodeFromString("\n")), _796_ind); + return RAST.__default.SeqToString>(attributes, Dafny.Helpers.Id, Func, Dafny.ISequence>>>((_0_ind) => ((System.Func, Dafny.ISequence>)((_1_attribute) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1_attribute), Dafny.Sequence.UnicodeFromString("\n")), _0_ind); })))(ind), Dafny.Sequence.UnicodeFromString("")); } } @@ -1360,8 +1363,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 _798_i = (BigInteger) i11; - arr11[(int)(_798_i)] = (((this).dtor_fields).Select(_798_i)).ToNamelessField(); + var _0_i = (BigInteger) i11; + arr11[(int)(_0_i)] = (((this).dtor_fields).Select(_0_i)).ToNamelessField(); } return Dafny.Sequence.FromArray(arr11); }))()); @@ -1369,18 +1372,18 @@ public RAST._IFields ToNamelessFields() { public Dafny.ISequence _ToString(Dafny.ISequence ind, bool newLine) { if ((this).is_NamedFields) { - Dafny.ISequence _799_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 _800_beginSpace = _let_tmp_rhs40.dtor__0; - Dafny.ISequence _801_endSpace = _let_tmp_rhs40.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {"), _800_beginSpace), RAST.__default.SeqToString((this).dtor_fields, Dafny.Helpers.Id, Func>>>((_802_ind) => ((System.Func>)((_803_field) => { - return (_803_field)._ToString(Dafny.Sequence.Concat(_802_ind, RAST.__default.IND)); - })))(ind), _799_separator)), _801_endSpace), Dafny.Sequence.UnicodeFromString("}")); + Dafny.ISequence _0_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_rhs0 = (((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 _1_beginSpace = _let_tmp_rhs0.dtor__0; + Dafny.ISequence _2_endSpace = _let_tmp_rhs0.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {"), _1_beginSpace), RAST.__default.SeqToString((this).dtor_fields, Dafny.Helpers.Id, Func>>>((_3_ind) => ((System.Func>)((_4_field) => { + return (_4_field)._ToString(Dafny.Sequence.Concat(_3_ind, RAST.__default.IND)); + })))(ind), _0_separator)), _2_endSpace), Dafny.Sequence.UnicodeFromString("}")); } else { - Dafny.ISequence _804_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>>>((_805_ind) => ((System.Func>)((_806_t) => { - return (_806_t)._ToString(Dafny.Sequence.Concat(_805_ind, RAST.__default.IND)); - })))(ind), _804_separator)), Dafny.Sequence.UnicodeFromString(")")); + Dafny.ISequence _5_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>>>((_6_ind) => ((System.Func>)((_7_t) => { + return (_7_t)._ToString(Dafny.Sequence.Concat(_6_ind, RAST.__default.IND)); + })))(ind), _5_separator)), Dafny.Sequence.UnicodeFromString(")")); } } } @@ -1594,8 +1597,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>>>((_807_ind) => ((System.Func>)((_808_variant) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _807_ind), RAST.__default.IND), (_808_variant)._ToString(Dafny.Sequence.Concat(_807_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>>>((_0_ind) => ((System.Func>)((_1_variant) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _0_ind), RAST.__default.IND), (_1_variant)._ToString(Dafny.Sequence.Concat(_0_ind, RAST.__default.IND), true)); })))(ind), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } @@ -1669,34 +1672,34 @@ 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>>>((_809_ind) => ((System.Func>)((_810_t) => { - return (_810_t)._ToString(Dafny.Sequence.Concat(_809_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(typeParams, Dafny.Helpers.Id, Func>>>((_0_ind) => ((System.Func>)((_1_t) => { + return (_1_t)._ToString(Dafny.Sequence.Concat(_0_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">")); } } public static Dafny.ISequence AddConstraintsMultiple(Dafny.ISequence typeParams, Dafny.ISequence constraints) { - Dafny.ISequence _811___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((typeParams).Count)).Sign == 0) { - return Dafny.Sequence.Concat(_811___accumulator, Dafny.Sequence.FromElements()); + return Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements()); } else { - _811___accumulator = Dafny.Sequence.Concat(_811___accumulator, Dafny.Sequence.FromElements(((typeParams).Select(BigInteger.Zero)).AddConstraints(constraints))); - Dafny.ISequence _in111 = (typeParams).Drop(BigInteger.One); - Dafny.ISequence _in112 = constraints; - typeParams = _in111; - constraints = _in112; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements(((typeParams).Select(BigInteger.Zero)).AddConstraints(constraints))); + Dafny.ISequence _in0 = (typeParams).Drop(BigInteger.One); + Dafny.ISequence _in1 = constraints; + typeParams = _in0; + constraints = _in1; goto TAIL_CALL_START; } } public RAST._ITypeParamDecl AddConstraints(Dafny.ISequence constraints) { - RAST._ITypeParamDecl _812_dt__update__tmp_h0 = this; - Dafny.ISequence _813_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((this).dtor_constraints, constraints); - return RAST.TypeParamDecl.create((_812_dt__update__tmp_h0).dtor_content, _813_dt__update_hconstraints_h0); + RAST._ITypeParamDecl _0_dt__update__tmp_h0 = this; + Dafny.ISequence _1_dt__update_hconstraints_h0 = Dafny.Sequence.Concat((this).dtor_constraints, constraints); + return RAST.TypeParamDecl.create((_0_dt__update__tmp_h0).dtor_content, _1_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>>>((_814_ind) => ((System.Func>)((_815_t) => { - return (_815_t)._ToString(Dafny.Sequence.Concat(_814_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>>>((_0_ind) => ((System.Func>)((_1_t) => { + return (_1_t)._ToString(Dafny.Sequence.Concat(_0_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(" + ")))))); } } @@ -1943,45 +1946,45 @@ public RAST._IType Replace(Dafny.IMap mapping) { if ((mapping).Contains(this)) { return Dafny.Map.Select(mapping,this); } else { - RAST._IType _source28 = this; + RAST._IType _source0 = this; { - if (_source28.is_SelfOwned) { + if (_source0.is_SelfOwned) { return this; } } { bool disjunctiveMatch0 = false; - if (_source28.is_U8) { + if (_source0.is_U8) { disjunctiveMatch0 = true; } - if (_source28.is_U16) { + if (_source0.is_U16) { disjunctiveMatch0 = true; } - if (_source28.is_U32) { + if (_source0.is_U32) { disjunctiveMatch0 = true; } - if (_source28.is_U64) { + if (_source0.is_U64) { disjunctiveMatch0 = true; } - if (_source28.is_U128) { + if (_source0.is_U128) { disjunctiveMatch0 = true; } - if (_source28.is_I8) { + if (_source0.is_I8) { disjunctiveMatch0 = true; } - if (_source28.is_I16) { + if (_source0.is_I16) { disjunctiveMatch0 = true; } - if (_source28.is_I32) { + if (_source0.is_I32) { disjunctiveMatch0 = true; } - if (_source28.is_I64) { + if (_source0.is_I64) { disjunctiveMatch0 = true; } - if (_source28.is_I128) { + if (_source0.is_I128) { disjunctiveMatch0 = true; } - if (_source28.is_Bool) { + if (_source0.is_Bool) { disjunctiveMatch0 = true; } if (disjunctiveMatch0) { @@ -1989,220 +1992,220 @@ public RAST._IType Replace(Dafny.IMap mapping) { } } { - if (_source28.is_TIdentifier) { + if (_source0.is_TIdentifier) { return this; } } { - if (_source28.is_TMemberSelect) { - RAST._IType _816_base = _source28.dtor_base; - Dafny.ISequence _817_name = _source28.dtor_name; - RAST._IType _818_dt__update__tmp_h0 = this; - RAST._IType _819_dt__update_hbase_h0 = (_816_base).Replace(mapping); - return RAST.Type.create_TMemberSelect(_819_dt__update_hbase_h0, (_818_dt__update__tmp_h0).dtor_name); + if (_source0.is_TMemberSelect) { + RAST._IType _0_base = _source0.dtor_base; + Dafny.ISequence _1_name = _source0.dtor_name; + RAST._IType _2_dt__update__tmp_h0 = this; + RAST._IType _3_dt__update_hbase_h0 = (_0_base).Replace(mapping); + return RAST.Type.create_TMemberSelect(_3_dt__update_hbase_h0, (_2_dt__update__tmp_h0).dtor_name); } } { - if (_source28.is_TypeApp) { - RAST._IType _820_baseName = _source28.dtor_baseName; - Dafny.ISequence _821_arguments = _source28.dtor_arguments; - RAST._IType _822_dt__update__tmp_h1 = this; - Dafny.ISequence _823_dt__update_harguments_h0 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_824_mapping, _825_arguments) => ((System.Func)((_826_t) => { - return (_826_t).Replace(_824_mapping); - })))(mapping, _821_arguments), _821_arguments); - RAST._IType _827_dt__update_hbaseName_h0 = (_820_baseName).Replace(mapping); - return RAST.Type.create_TypeApp(_827_dt__update_hbaseName_h0, _823_dt__update_harguments_h0); + if (_source0.is_TypeApp) { + RAST._IType _4_baseName = _source0.dtor_baseName; + Dafny.ISequence _5_arguments = _source0.dtor_arguments; + RAST._IType _6_dt__update__tmp_h1 = this; + Dafny.ISequence _7_dt__update_harguments_h0 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_8_mapping, _9_arguments) => ((System.Func)((_10_t) => { + return (_10_t).Replace(_8_mapping); + })))(mapping, _5_arguments), _5_arguments); + RAST._IType _11_dt__update_hbaseName_h0 = (_4_baseName).Replace(mapping); + return RAST.Type.create_TypeApp(_11_dt__update_hbaseName_h0, _7_dt__update_harguments_h0); } } { - if (_source28.is_Borrowed) { - RAST._IType _828_underlying = _source28.dtor_underlying; - RAST._IType _829_dt__update__tmp_h2 = this; - RAST._IType _830_dt__update_hunderlying_h0 = (_828_underlying).Replace(mapping); - if ((_829_dt__update__tmp_h2).is_Borrowed) { - return RAST.Type.create_Borrowed(_830_dt__update_hunderlying_h0); - } else if ((_829_dt__update__tmp_h2).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_830_dt__update_hunderlying_h0); - } else if ((_829_dt__update__tmp_h2).is_Pointer) { - return RAST.Type.create_Pointer(_830_dt__update_hunderlying_h0); - } else if ((_829_dt__update__tmp_h2).is_PointerMut) { - return RAST.Type.create_PointerMut(_830_dt__update_hunderlying_h0); - } else if ((_829_dt__update__tmp_h2).is_ImplType) { - return RAST.Type.create_ImplType(_830_dt__update_hunderlying_h0); - } else if ((_829_dt__update__tmp_h2).is_DynType) { - return RAST.Type.create_DynType(_830_dt__update_hunderlying_h0); + if (_source0.is_Borrowed) { + RAST._IType _12_underlying = _source0.dtor_underlying; + RAST._IType _13_dt__update__tmp_h2 = this; + RAST._IType _14_dt__update_hunderlying_h0 = (_12_underlying).Replace(mapping); + if ((_13_dt__update__tmp_h2).is_Borrowed) { + return RAST.Type.create_Borrowed(_14_dt__update_hunderlying_h0); + } else if ((_13_dt__update__tmp_h2).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_14_dt__update_hunderlying_h0); + } else if ((_13_dt__update__tmp_h2).is_Pointer) { + return RAST.Type.create_Pointer(_14_dt__update_hunderlying_h0); + } else if ((_13_dt__update__tmp_h2).is_PointerMut) { + return RAST.Type.create_PointerMut(_14_dt__update_hunderlying_h0); + } else if ((_13_dt__update__tmp_h2).is_ImplType) { + return RAST.Type.create_ImplType(_14_dt__update_hunderlying_h0); + } else if ((_13_dt__update__tmp_h2).is_DynType) { + return RAST.Type.create_DynType(_14_dt__update_hunderlying_h0); } else { - return RAST.Type.create_Array(_830_dt__update_hunderlying_h0, (_829_dt__update__tmp_h2).dtor_size); + return RAST.Type.create_Array(_14_dt__update_hunderlying_h0, (_13_dt__update__tmp_h2).dtor_size); } } } { - if (_source28.is_BorrowedMut) { - RAST._IType _831_underlying = _source28.dtor_underlying; - RAST._IType _832_dt__update__tmp_h3 = this; - RAST._IType _833_dt__update_hunderlying_h1 = (_831_underlying).Replace(mapping); - if ((_832_dt__update__tmp_h3).is_Borrowed) { - return RAST.Type.create_Borrowed(_833_dt__update_hunderlying_h1); - } else if ((_832_dt__update__tmp_h3).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_833_dt__update_hunderlying_h1); - } else if ((_832_dt__update__tmp_h3).is_Pointer) { - return RAST.Type.create_Pointer(_833_dt__update_hunderlying_h1); - } else if ((_832_dt__update__tmp_h3).is_PointerMut) { - return RAST.Type.create_PointerMut(_833_dt__update_hunderlying_h1); - } else if ((_832_dt__update__tmp_h3).is_ImplType) { - return RAST.Type.create_ImplType(_833_dt__update_hunderlying_h1); - } else if ((_832_dt__update__tmp_h3).is_DynType) { - return RAST.Type.create_DynType(_833_dt__update_hunderlying_h1); + if (_source0.is_BorrowedMut) { + RAST._IType _15_underlying = _source0.dtor_underlying; + RAST._IType _16_dt__update__tmp_h3 = this; + RAST._IType _17_dt__update_hunderlying_h1 = (_15_underlying).Replace(mapping); + if ((_16_dt__update__tmp_h3).is_Borrowed) { + return RAST.Type.create_Borrowed(_17_dt__update_hunderlying_h1); + } else if ((_16_dt__update__tmp_h3).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_17_dt__update_hunderlying_h1); + } else if ((_16_dt__update__tmp_h3).is_Pointer) { + return RAST.Type.create_Pointer(_17_dt__update_hunderlying_h1); + } else if ((_16_dt__update__tmp_h3).is_PointerMut) { + return RAST.Type.create_PointerMut(_17_dt__update_hunderlying_h1); + } else if ((_16_dt__update__tmp_h3).is_ImplType) { + return RAST.Type.create_ImplType(_17_dt__update_hunderlying_h1); + } else if ((_16_dt__update__tmp_h3).is_DynType) { + return RAST.Type.create_DynType(_17_dt__update_hunderlying_h1); } else { - return RAST.Type.create_Array(_833_dt__update_hunderlying_h1, (_832_dt__update__tmp_h3).dtor_size); + return RAST.Type.create_Array(_17_dt__update_hunderlying_h1, (_16_dt__update__tmp_h3).dtor_size); } } } { - if (_source28.is_Pointer) { - RAST._IType _834_underlying = _source28.dtor_underlying; - RAST._IType _835_dt__update__tmp_h4 = this; - RAST._IType _836_dt__update_hunderlying_h2 = (_834_underlying).Replace(mapping); - if ((_835_dt__update__tmp_h4).is_Borrowed) { - return RAST.Type.create_Borrowed(_836_dt__update_hunderlying_h2); - } else if ((_835_dt__update__tmp_h4).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_836_dt__update_hunderlying_h2); - } else if ((_835_dt__update__tmp_h4).is_Pointer) { - return RAST.Type.create_Pointer(_836_dt__update_hunderlying_h2); - } else if ((_835_dt__update__tmp_h4).is_PointerMut) { - return RAST.Type.create_PointerMut(_836_dt__update_hunderlying_h2); - } else if ((_835_dt__update__tmp_h4).is_ImplType) { - return RAST.Type.create_ImplType(_836_dt__update_hunderlying_h2); - } else if ((_835_dt__update__tmp_h4).is_DynType) { - return RAST.Type.create_DynType(_836_dt__update_hunderlying_h2); + if (_source0.is_Pointer) { + RAST._IType _18_underlying = _source0.dtor_underlying; + RAST._IType _19_dt__update__tmp_h4 = this; + RAST._IType _20_dt__update_hunderlying_h2 = (_18_underlying).Replace(mapping); + if ((_19_dt__update__tmp_h4).is_Borrowed) { + return RAST.Type.create_Borrowed(_20_dt__update_hunderlying_h2); + } else if ((_19_dt__update__tmp_h4).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_20_dt__update_hunderlying_h2); + } else if ((_19_dt__update__tmp_h4).is_Pointer) { + return RAST.Type.create_Pointer(_20_dt__update_hunderlying_h2); + } else if ((_19_dt__update__tmp_h4).is_PointerMut) { + return RAST.Type.create_PointerMut(_20_dt__update_hunderlying_h2); + } else if ((_19_dt__update__tmp_h4).is_ImplType) { + return RAST.Type.create_ImplType(_20_dt__update_hunderlying_h2); + } else if ((_19_dt__update__tmp_h4).is_DynType) { + return RAST.Type.create_DynType(_20_dt__update_hunderlying_h2); } else { - return RAST.Type.create_Array(_836_dt__update_hunderlying_h2, (_835_dt__update__tmp_h4).dtor_size); + return RAST.Type.create_Array(_20_dt__update_hunderlying_h2, (_19_dt__update__tmp_h4).dtor_size); } } } { - if (_source28.is_PointerMut) { - RAST._IType _837_underlying = _source28.dtor_underlying; - RAST._IType _838_dt__update__tmp_h5 = this; - RAST._IType _839_dt__update_hunderlying_h3 = (_837_underlying).Replace(mapping); - if ((_838_dt__update__tmp_h5).is_Borrowed) { - return RAST.Type.create_Borrowed(_839_dt__update_hunderlying_h3); - } else if ((_838_dt__update__tmp_h5).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_839_dt__update_hunderlying_h3); - } else if ((_838_dt__update__tmp_h5).is_Pointer) { - return RAST.Type.create_Pointer(_839_dt__update_hunderlying_h3); - } else if ((_838_dt__update__tmp_h5).is_PointerMut) { - return RAST.Type.create_PointerMut(_839_dt__update_hunderlying_h3); - } else if ((_838_dt__update__tmp_h5).is_ImplType) { - return RAST.Type.create_ImplType(_839_dt__update_hunderlying_h3); - } else if ((_838_dt__update__tmp_h5).is_DynType) { - return RAST.Type.create_DynType(_839_dt__update_hunderlying_h3); + if (_source0.is_PointerMut) { + RAST._IType _21_underlying = _source0.dtor_underlying; + RAST._IType _22_dt__update__tmp_h5 = this; + RAST._IType _23_dt__update_hunderlying_h3 = (_21_underlying).Replace(mapping); + if ((_22_dt__update__tmp_h5).is_Borrowed) { + return RAST.Type.create_Borrowed(_23_dt__update_hunderlying_h3); + } else if ((_22_dt__update__tmp_h5).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_23_dt__update_hunderlying_h3); + } else if ((_22_dt__update__tmp_h5).is_Pointer) { + return RAST.Type.create_Pointer(_23_dt__update_hunderlying_h3); + } else if ((_22_dt__update__tmp_h5).is_PointerMut) { + return RAST.Type.create_PointerMut(_23_dt__update_hunderlying_h3); + } else if ((_22_dt__update__tmp_h5).is_ImplType) { + return RAST.Type.create_ImplType(_23_dt__update_hunderlying_h3); + } else if ((_22_dt__update__tmp_h5).is_DynType) { + return RAST.Type.create_DynType(_23_dt__update_hunderlying_h3); } else { - return RAST.Type.create_Array(_839_dt__update_hunderlying_h3, (_838_dt__update__tmp_h5).dtor_size); + return RAST.Type.create_Array(_23_dt__update_hunderlying_h3, (_22_dt__update__tmp_h5).dtor_size); } } } { - if (_source28.is_ImplType) { - RAST._IType _840_underlying = _source28.dtor_underlying; - RAST._IType _841_dt__update__tmp_h6 = this; - RAST._IType _842_dt__update_hunderlying_h4 = (_840_underlying).Replace(mapping); - if ((_841_dt__update__tmp_h6).is_Borrowed) { - return RAST.Type.create_Borrowed(_842_dt__update_hunderlying_h4); - } else if ((_841_dt__update__tmp_h6).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_842_dt__update_hunderlying_h4); - } else if ((_841_dt__update__tmp_h6).is_Pointer) { - return RAST.Type.create_Pointer(_842_dt__update_hunderlying_h4); - } else if ((_841_dt__update__tmp_h6).is_PointerMut) { - return RAST.Type.create_PointerMut(_842_dt__update_hunderlying_h4); - } else if ((_841_dt__update__tmp_h6).is_ImplType) { - return RAST.Type.create_ImplType(_842_dt__update_hunderlying_h4); - } else if ((_841_dt__update__tmp_h6).is_DynType) { - return RAST.Type.create_DynType(_842_dt__update_hunderlying_h4); + if (_source0.is_ImplType) { + RAST._IType _24_underlying = _source0.dtor_underlying; + RAST._IType _25_dt__update__tmp_h6 = this; + RAST._IType _26_dt__update_hunderlying_h4 = (_24_underlying).Replace(mapping); + if ((_25_dt__update__tmp_h6).is_Borrowed) { + return RAST.Type.create_Borrowed(_26_dt__update_hunderlying_h4); + } else if ((_25_dt__update__tmp_h6).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_26_dt__update_hunderlying_h4); + } else if ((_25_dt__update__tmp_h6).is_Pointer) { + return RAST.Type.create_Pointer(_26_dt__update_hunderlying_h4); + } else if ((_25_dt__update__tmp_h6).is_PointerMut) { + return RAST.Type.create_PointerMut(_26_dt__update_hunderlying_h4); + } else if ((_25_dt__update__tmp_h6).is_ImplType) { + return RAST.Type.create_ImplType(_26_dt__update_hunderlying_h4); + } else if ((_25_dt__update__tmp_h6).is_DynType) { + return RAST.Type.create_DynType(_26_dt__update_hunderlying_h4); } else { - return RAST.Type.create_Array(_842_dt__update_hunderlying_h4, (_841_dt__update__tmp_h6).dtor_size); + return RAST.Type.create_Array(_26_dt__update_hunderlying_h4, (_25_dt__update__tmp_h6).dtor_size); } } } { - if (_source28.is_DynType) { - RAST._IType _843_underlying = _source28.dtor_underlying; - RAST._IType _844_dt__update__tmp_h7 = this; - RAST._IType _845_dt__update_hunderlying_h5 = (_843_underlying).Replace(mapping); - if ((_844_dt__update__tmp_h7).is_Borrowed) { - return RAST.Type.create_Borrowed(_845_dt__update_hunderlying_h5); - } else if ((_844_dt__update__tmp_h7).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_845_dt__update_hunderlying_h5); - } else if ((_844_dt__update__tmp_h7).is_Pointer) { - return RAST.Type.create_Pointer(_845_dt__update_hunderlying_h5); - } else if ((_844_dt__update__tmp_h7).is_PointerMut) { - return RAST.Type.create_PointerMut(_845_dt__update_hunderlying_h5); - } else if ((_844_dt__update__tmp_h7).is_ImplType) { - return RAST.Type.create_ImplType(_845_dt__update_hunderlying_h5); - } else if ((_844_dt__update__tmp_h7).is_DynType) { - return RAST.Type.create_DynType(_845_dt__update_hunderlying_h5); + if (_source0.is_DynType) { + RAST._IType _27_underlying = _source0.dtor_underlying; + RAST._IType _28_dt__update__tmp_h7 = this; + RAST._IType _29_dt__update_hunderlying_h5 = (_27_underlying).Replace(mapping); + if ((_28_dt__update__tmp_h7).is_Borrowed) { + return RAST.Type.create_Borrowed(_29_dt__update_hunderlying_h5); + } else if ((_28_dt__update__tmp_h7).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_29_dt__update_hunderlying_h5); + } else if ((_28_dt__update__tmp_h7).is_Pointer) { + return RAST.Type.create_Pointer(_29_dt__update_hunderlying_h5); + } else if ((_28_dt__update__tmp_h7).is_PointerMut) { + return RAST.Type.create_PointerMut(_29_dt__update_hunderlying_h5); + } else if ((_28_dt__update__tmp_h7).is_ImplType) { + return RAST.Type.create_ImplType(_29_dt__update_hunderlying_h5); + } else if ((_28_dt__update__tmp_h7).is_DynType) { + return RAST.Type.create_DynType(_29_dt__update_hunderlying_h5); } else { - return RAST.Type.create_Array(_845_dt__update_hunderlying_h5, (_844_dt__update__tmp_h7).dtor_size); + return RAST.Type.create_Array(_29_dt__update_hunderlying_h5, (_28_dt__update__tmp_h7).dtor_size); } } } { - if (_source28.is_TupleType) { - Dafny.ISequence _846_arguments = _source28.dtor_arguments; - RAST._IType _847_dt__update__tmp_h8 = this; - Dafny.ISequence _848_dt__update_harguments_h1 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_849_mapping, _850_arguments) => ((System.Func)((_851_t) => { - return (_851_t).Replace(_849_mapping); - })))(mapping, _846_arguments), _846_arguments); - if ((_847_dt__update__tmp_h8).is_TypeApp) { - return RAST.Type.create_TypeApp((_847_dt__update__tmp_h8).dtor_baseName, _848_dt__update_harguments_h1); - } else if ((_847_dt__update__tmp_h8).is_TupleType) { - return RAST.Type.create_TupleType(_848_dt__update_harguments_h1); + if (_source0.is_TupleType) { + Dafny.ISequence _30_arguments = _source0.dtor_arguments; + RAST._IType _31_dt__update__tmp_h8 = this; + Dafny.ISequence _32_dt__update_harguments_h1 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_33_mapping, _34_arguments) => ((System.Func)((_35_t) => { + return (_35_t).Replace(_33_mapping); + })))(mapping, _30_arguments), _30_arguments); + if ((_31_dt__update__tmp_h8).is_TypeApp) { + return RAST.Type.create_TypeApp((_31_dt__update__tmp_h8).dtor_baseName, _32_dt__update_harguments_h1); + } else if ((_31_dt__update__tmp_h8).is_TupleType) { + return RAST.Type.create_TupleType(_32_dt__update_harguments_h1); } else { - return RAST.Type.create_FnType(_848_dt__update_harguments_h1, (_847_dt__update__tmp_h8).dtor_returnType); + return RAST.Type.create_FnType(_32_dt__update_harguments_h1, (_31_dt__update__tmp_h8).dtor_returnType); } } } { - if (_source28.is_FnType) { - Dafny.ISequence _852_arguments = _source28.dtor_arguments; - RAST._IType _853_returnType = _source28.dtor_returnType; - RAST._IType _854_dt__update__tmp_h9 = this; - RAST._IType _855_dt__update_hreturnType_h0 = (_853_returnType).Replace(mapping); - Dafny.ISequence _856_dt__update_harguments_h2 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_857_mapping, _858_arguments) => ((System.Func)((_859_t) => { - return (_859_t).Replace(_857_mapping); - })))(mapping, _852_arguments), _852_arguments); - return RAST.Type.create_FnType(_856_dt__update_harguments_h2, _855_dt__update_hreturnType_h0); + if (_source0.is_FnType) { + Dafny.ISequence _36_arguments = _source0.dtor_arguments; + RAST._IType _37_returnType = _source0.dtor_returnType; + RAST._IType _38_dt__update__tmp_h9 = this; + RAST._IType _39_dt__update_hreturnType_h0 = (_37_returnType).Replace(mapping); + Dafny.ISequence _40_dt__update_harguments_h2 = Std.Collections.Seq.__default.Map(Dafny.Helpers.Id, Dafny.ISequence, Func>>((_41_mapping, _42_arguments) => ((System.Func)((_43_t) => { + return (_43_t).Replace(_41_mapping); + })))(mapping, _36_arguments), _36_arguments); + return RAST.Type.create_FnType(_40_dt__update_harguments_h2, _39_dt__update_hreturnType_h0); } } { - if (_source28.is_IntersectionType) { - RAST._IType _860_left = _source28.dtor_left; - RAST._IType _861_right = _source28.dtor_right; - RAST._IType _862_dt__update__tmp_h10 = this; - RAST._IType _863_dt__update_hright_h0 = (_861_right).Replace(mapping); - RAST._IType _864_dt__update_hleft_h0 = (_860_left).Replace(mapping); - return RAST.Type.create_IntersectionType(_864_dt__update_hleft_h0, _863_dt__update_hright_h0); + if (_source0.is_IntersectionType) { + RAST._IType _44_left = _source0.dtor_left; + RAST._IType _45_right = _source0.dtor_right; + RAST._IType _46_dt__update__tmp_h10 = this; + RAST._IType _47_dt__update_hright_h0 = (_45_right).Replace(mapping); + RAST._IType _48_dt__update_hleft_h0 = (_44_left).Replace(mapping); + return RAST.Type.create_IntersectionType(_48_dt__update_hleft_h0, _47_dt__update_hright_h0); } } { - RAST._IType _865_underlying = _source28.dtor_underlying; - Std.Wrappers._IOption> _866_size = _source28.dtor_size; - RAST._IType _867_dt__update__tmp_h11 = this; - RAST._IType _868_dt__update_hunderlying_h6 = (_865_underlying).Replace(mapping); - if ((_867_dt__update__tmp_h11).is_Borrowed) { - return RAST.Type.create_Borrowed(_868_dt__update_hunderlying_h6); - } else if ((_867_dt__update__tmp_h11).is_BorrowedMut) { - return RAST.Type.create_BorrowedMut(_868_dt__update_hunderlying_h6); - } else if ((_867_dt__update__tmp_h11).is_Pointer) { - return RAST.Type.create_Pointer(_868_dt__update_hunderlying_h6); - } else if ((_867_dt__update__tmp_h11).is_PointerMut) { - return RAST.Type.create_PointerMut(_868_dt__update_hunderlying_h6); - } else if ((_867_dt__update__tmp_h11).is_ImplType) { - return RAST.Type.create_ImplType(_868_dt__update_hunderlying_h6); - } else if ((_867_dt__update__tmp_h11).is_DynType) { - return RAST.Type.create_DynType(_868_dt__update_hunderlying_h6); + RAST._IType _49_underlying = _source0.dtor_underlying; + Std.Wrappers._IOption> _50_size = _source0.dtor_size; + RAST._IType _51_dt__update__tmp_h11 = this; + RAST._IType _52_dt__update_hunderlying_h6 = (_49_underlying).Replace(mapping); + if ((_51_dt__update__tmp_h11).is_Borrowed) { + return RAST.Type.create_Borrowed(_52_dt__update_hunderlying_h6); + } else if ((_51_dt__update__tmp_h11).is_BorrowedMut) { + return RAST.Type.create_BorrowedMut(_52_dt__update_hunderlying_h6); + } else if ((_51_dt__update__tmp_h11).is_Pointer) { + return RAST.Type.create_Pointer(_52_dt__update_hunderlying_h6); + } else if ((_51_dt__update__tmp_h11).is_PointerMut) { + return RAST.Type.create_PointerMut(_52_dt__update_hunderlying_h6); + } else if ((_51_dt__update__tmp_h11).is_ImplType) { + return RAST.Type.create_ImplType(_52_dt__update_hunderlying_h6); + } else if ((_51_dt__update__tmp_h11).is_DynType) { + return RAST.Type.create_DynType(_52_dt__update_hunderlying_h6); } else { - return RAST.Type.create_Array(_868_dt__update_hunderlying_h6, (_867_dt__update__tmp_h11).dtor_size); + return RAST.Type.create_Array(_52_dt__update_hunderlying_h6, (_51_dt__update__tmp_h11).dtor_size); } } } @@ -2217,13 +2220,13 @@ public bool IsRcOrBorrowedRc() { return (((this).is_TypeApp) && (object.Equals((this).dtor_baseName, RAST.__default.RcType))) || (((this).is_Borrowed) && (((this).dtor_underlying).IsRcOrBorrowedRc())); } public Std.Wrappers._IOption ExtractMaybePlacebo() { - RAST._IType _source29 = this; + RAST._IType _source0 = this; { - if (_source29.is_TypeApp) { - RAST._IType _869_wrapper = _source29.dtor_baseName; - Dafny.ISequence _870_arguments = _source29.dtor_arguments; - if (((object.Equals(_869_wrapper, RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("MaybePlacebo")))) || (object.Equals(_869_wrapper, (RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MaybePlacebo"))))) && ((new BigInteger((_870_arguments).Count)) == (BigInteger.One))) { - return Std.Wrappers.Option.create_Some((_870_arguments).Select(BigInteger.Zero)); + if (_source0.is_TypeApp) { + RAST._IType _0_wrapper = _source0.dtor_baseName; + Dafny.ISequence _1_arguments = _source0.dtor_arguments; + if (((object.Equals(_0_wrapper, RAST.Type.create_TIdentifier(Dafny.Sequence.UnicodeFromString("MaybePlacebo")))) || (object.Equals(_0_wrapper, (RAST.__default.dafny__runtime__type).MSel(Dafny.Sequence.UnicodeFromString("MaybePlacebo"))))) && ((new BigInteger((_1_arguments).Count)) == (BigInteger.One))) { + return Std.Wrappers.Option.create_Some((_1_arguments).Select(BigInteger.Zero)); } else { return Std.Wrappers.Option.create_None(); } @@ -2235,11 +2238,11 @@ public bool IsRcOrBorrowedRc() { } public Std.Wrappers._IOption ExtractMaybeUninitArrayElement() { if ((this).IsObjectOrPointer()) { - RAST._IType _871_s = (this).ObjectOrPointerUnderlying(); - if (((_871_s).is_Array) && (RAST.__default.IsMaybeUninitType((_871_s).dtor_underlying))) { - return Std.Wrappers.Option.create_Some(RAST.__default.MaybeUninitTypeUnderlying((_871_s).dtor_underlying)); - } else if (((_871_s).IsMultiArray()) && (RAST.__default.IsMaybeUninitType((_871_s).MultiArrayUnderlying()))) { - return Std.Wrappers.Option.create_Some(RAST.__default.MaybeUninitTypeUnderlying((_871_s).MultiArrayUnderlying())); + RAST._IType _0_s = (this).ObjectOrPointerUnderlying(); + if (((_0_s).is_Array) && (RAST.__default.IsMaybeUninitType((_0_s).dtor_underlying))) { + return Std.Wrappers.Option.create_Some(RAST.__default.MaybeUninitTypeUnderlying((_0_s).dtor_underlying)); + } else if (((_0_s).IsMultiArray()) && (RAST.__default.IsMaybeUninitType((_0_s).MultiArrayUnderlying()))) { + return Std.Wrappers.Option.create_Some(RAST.__default.MaybeUninitTypeUnderlying((_0_s).MultiArrayUnderlying())); } else { return Std.Wrappers.Option.create_None(); } @@ -2248,157 +2251,157 @@ public bool IsRcOrBorrowedRc() { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - RAST._IType _source30 = this; + RAST._IType _source0 = this; { - if (_source30.is_Bool) { + if (_source0.is_Bool) { return Dafny.Sequence.UnicodeFromString("bool"); } } { - if (_source30.is_TIdentifier) { - Dafny.ISequence _872_underlying = _source30.dtor_name; - return _872_underlying; + if (_source0.is_TIdentifier) { + Dafny.ISequence _0_underlying = _source0.dtor_name; + return _0_underlying; } } { - if (_source30.is_TMemberSelect) { - RAST._IType _873_underlying = _source30.dtor_base; - Dafny.ISequence _874_name = _source30.dtor_name; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_873_underlying)._ToString(ind), Dafny.Sequence.UnicodeFromString("::")), _874_name); + if (_source0.is_TMemberSelect) { + RAST._IType _1_underlying = _source0.dtor_base; + Dafny.ISequence _2_name = _source0.dtor_name; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_1_underlying)._ToString(ind), Dafny.Sequence.UnicodeFromString("::")), _2_name); } } { - if (_source30.is_Borrowed) { - RAST._IType _875_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&"), (_875_underlying)._ToString(ind)); + if (_source0.is_Borrowed) { + RAST._IType _3_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&"), (_3_underlying)._ToString(ind)); } } { - if (_source30.is_BorrowedMut) { - RAST._IType _876_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&mut "), (_876_underlying)._ToString(ind)); + if (_source0.is_BorrowedMut) { + RAST._IType _4_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("&mut "), (_4_underlying)._ToString(ind)); } } { - if (_source30.is_Pointer) { - RAST._IType _877_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*const "), (_877_underlying)._ToString(ind)); + if (_source0.is_Pointer) { + RAST._IType _5_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*const "), (_5_underlying)._ToString(ind)); } } { - if (_source30.is_PointerMut) { - RAST._IType _878_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*mut "), (_878_underlying)._ToString(ind)); + if (_source0.is_PointerMut) { + RAST._IType _6_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("*mut "), (_6_underlying)._ToString(ind)); } } { - if (_source30.is_ImplType) { - RAST._IType _879_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl "), (_879_underlying)._ToString(ind)); + if (_source0.is_ImplType) { + RAST._IType _7_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("impl "), (_7_underlying)._ToString(ind)); } } { - if (_source30.is_DynType) { - RAST._IType _880_underlying = _source30.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("dyn "), (_880_underlying)._ToString(ind)); + if (_source0.is_DynType) { + RAST._IType _8_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("dyn "), (_8_underlying)._ToString(ind)); } } { - if (_source30.is_FnType) { - Dafny.ISequence _881_arguments = _source30.dtor_arguments; - RAST._IType _882_returnType = _source30.dtor_returnType; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Fn("), RAST.__default.SeqToString(_881_arguments, Dafny.Helpers.Id, Func>>>((_883_ind) => ((System.Func>)((_884_arg) => { - return (_884_arg)._ToString(Dafny.Sequence.Concat(_883_ind, RAST.__default.IND)); - })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(") -> ")), (_882_returnType)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))); + if (_source0.is_FnType) { + Dafny.ISequence _9_arguments = _source0.dtor_arguments; + RAST._IType _10_returnType = _source0.dtor_returnType; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("::std::ops::Fn("), RAST.__default.SeqToString(_9_arguments, Dafny.Helpers.Id, Func>>>((_11_ind) => ((System.Func>)((_12_arg) => { + return (_12_arg)._ToString(Dafny.Sequence.Concat(_11_ind, RAST.__default.IND)); + })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(") -> ")), (_10_returnType)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))); } } { - if (_source30.is_IntersectionType) { - RAST._IType _885_left = _source30.dtor_left; - RAST._IType _886_right = _source30.dtor_right; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_885_left)._ToString(ind), Dafny.Sequence.UnicodeFromString(" + ")), (_886_right)._ToString(ind)); + if (_source0.is_IntersectionType) { + RAST._IType _13_left = _source0.dtor_left; + RAST._IType _14_right = _source0.dtor_right; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat((_13_left)._ToString(ind), Dafny.Sequence.UnicodeFromString(" + ")), (_14_right)._ToString(ind)); } } { - if (_source30.is_TupleType) { - Dafny.ISequence _887_args = _source30.dtor_arguments; - if ((_887_args).Equals(Dafny.Sequence.FromElements())) { + if (_source0.is_TupleType) { + Dafny.ISequence _15_args = _source0.dtor_arguments; + if ((_15_args).Equals(Dafny.Sequence.FromElements())) { return Dafny.Sequence.UnicodeFromString("()"); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_887_args, Dafny.Helpers.Id, Func>>>((_888_ind) => ((System.Func>)((_889_arg) => { - return (_889_arg)._ToString(Dafny.Sequence.Concat(_888_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_15_args, Dafny.Helpers.Id, Func>>>((_16_ind) => ((System.Func>)((_17_arg) => { + return (_17_arg)._ToString(Dafny.Sequence.Concat(_16_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(")")); } } } { - if (_source30.is_TypeApp) { - RAST._IType _890_base = _source30.dtor_baseName; - Dafny.ISequence _891_args = _source30.dtor_arguments; - return Dafny.Sequence.Concat((_890_base)._ToString(ind), (((_891_args).Equals(Dafny.Sequence.FromElements())) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(_891_args, Dafny.Helpers.Id, Func>>>((_892_ind) => ((System.Func>)((_893_arg) => { - return (_893_arg)._ToString(Dafny.Sequence.Concat(_892_ind, RAST.__default.IND)); + if (_source0.is_TypeApp) { + RAST._IType _18_base = _source0.dtor_baseName; + Dafny.ISequence _19_args = _source0.dtor_arguments; + return Dafny.Sequence.Concat((_18_base)._ToString(ind), (((_19_args).Equals(Dafny.Sequence.FromElements())) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("<"), RAST.__default.SeqToString(_19_args, Dafny.Helpers.Id, Func>>>((_20_ind) => ((System.Func>)((_21_arg) => { + return (_21_arg)._ToString(Dafny.Sequence.Concat(_20_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">"))))); } } { - if (_source30.is_SelfOwned) { + if (_source0.is_SelfOwned) { return Dafny.Sequence.UnicodeFromString("Self"); } } { - if (_source30.is_U8) { + if (_source0.is_U8) { return Dafny.Sequence.UnicodeFromString("u8"); } } { - if (_source30.is_U16) { + if (_source0.is_U16) { return Dafny.Sequence.UnicodeFromString("u16"); } } { - if (_source30.is_U32) { + if (_source0.is_U32) { return Dafny.Sequence.UnicodeFromString("u32"); } } { - if (_source30.is_U64) { + if (_source0.is_U64) { return Dafny.Sequence.UnicodeFromString("u64"); } } { - if (_source30.is_U128) { + if (_source0.is_U128) { return Dafny.Sequence.UnicodeFromString("u128"); } } { - if (_source30.is_I8) { + if (_source0.is_I8) { return Dafny.Sequence.UnicodeFromString("i8"); } } { - if (_source30.is_I16) { + if (_source0.is_I16) { return Dafny.Sequence.UnicodeFromString("i16"); } } { - if (_source30.is_I32) { + if (_source0.is_I32) { return Dafny.Sequence.UnicodeFromString("i32"); } } { - if (_source30.is_I64) { + if (_source0.is_I64) { return Dafny.Sequence.UnicodeFromString("i64"); } } { - if (_source30.is_I128) { + if (_source0.is_I128) { return Dafny.Sequence.UnicodeFromString("i128"); } } { - RAST._IType _894_underlying = _source30.dtor_underlying; - Std.Wrappers._IOption> _895_size = _source30.dtor_size; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("["), (_894_underlying)._ToString(ind)), (((_895_size).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("; "), (_895_size).dtor_value)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("]")); + RAST._IType _22_underlying = _source0.dtor_underlying; + Std.Wrappers._IOption> _23_size = _source0.dtor_size; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("["), (_22_underlying)._ToString(ind)), (((_23_size).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("; "), (_23_size).dtor_value)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("]")); } } public RAST._IType MSel(Dafny.ISequence name) { @@ -2411,39 +2414,39 @@ public RAST._IType Apply(Dafny.ISequence args) { return RAST.Type.create_TypeApp(this, args); } public RAST._IType ToOwned() { - RAST._IType _source31 = this; + RAST._IType _source0 = this; { - if (_source31.is_Borrowed) { - RAST._IType _896_x = _source31.dtor_underlying; - return _896_x; + if (_source0.is_Borrowed) { + RAST._IType _0_x = _source0.dtor_underlying; + return _0_x; } } { - if (_source31.is_BorrowedMut) { - RAST._IType _897_x = _source31.dtor_underlying; - return _897_x; + if (_source0.is_BorrowedMut) { + RAST._IType _1_x = _source0.dtor_underlying; + return _1_x; } } { - RAST._IType _898_x = _source31; - return _898_x; + RAST._IType _2_x = _source0; + return _2_x; } } public RAST._IExpr ToNullExpr() { if ((this).IsObject()) { return ((RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("Object"))).Apply1((((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("option"))).MSel(Dafny.Sequence.UnicodeFromString("Option"))).MSel(Dafny.Sequence.UnicodeFromString("None"))); } else { - RAST._IType _899_underlying = (this).dtor_underlying; - Dafny.ISequence _900_n = (((this).is_PointerMut) ? (Dafny.Sequence.UnicodeFromString("null_mut")) : (Dafny.Sequence.UnicodeFromString("null"))); - if (((_899_underlying).is_Array) && (((_899_underlying).dtor_size).is_None)) { - return ((((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("ptr"))).MSel(_900_n)).ApplyType(Dafny.Sequence.FromElements(RAST.Type.create_Array((_899_underlying).dtor_underlying, Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("0")))))).Apply(Dafny.Sequence.FromElements()); + RAST._IType _0_underlying = (this).dtor_underlying; + Dafny.ISequence _1_n = (((this).is_PointerMut) ? (Dafny.Sequence.UnicodeFromString("null_mut")) : (Dafny.Sequence.UnicodeFromString("null"))); + if (((_0_underlying).is_Array) && (((_0_underlying).dtor_size).is_None)) { + return ((((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("ptr"))).MSel(_1_n)).ApplyType(Dafny.Sequence.FromElements(RAST.Type.create_Array((_0_underlying).dtor_underlying, Std.Wrappers.Option>.create_Some(Dafny.Sequence.UnicodeFromString("0")))))).Apply(Dafny.Sequence.FromElements()); } else { - return (((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("ptr"))).MSel(_900_n)).Apply(Dafny.Sequence.FromElements()); + return (((RAST.__default.std).MSel(Dafny.Sequence.UnicodeFromString("ptr"))).MSel(_1_n)).Apply(Dafny.Sequence.FromElements()); } } } public bool IsMultiArray() { - return ((this).is_TypeApp) && (Dafny.Helpers.Let((this).dtor_baseName, _pat_let5_0 => Dafny.Helpers.Let(_pat_let5_0, _901_baseName => Dafny.Helpers.Let, bool>((this).dtor_arguments, _pat_let6_0 => Dafny.Helpers.Let, bool>(_pat_let6_0, _902_args => (((((new BigInteger((_902_args).Count)) == (BigInteger.One)) && ((_901_baseName).is_TMemberSelect)) && (object.Equals((_901_baseName).dtor_base, RAST.__default.dafny__runtime__type))) && ((new BigInteger(((_901_baseName).dtor_name).Count)) >= (new BigInteger(5)))) && ((((_901_baseName).dtor_name).Subsequence(BigInteger.Zero, new BigInteger(5))).Equals(Dafny.Sequence.UnicodeFromString("Array")))))))); + return ((this).is_TypeApp) && (Dafny.Helpers.Let((this).dtor_baseName, _pat_let5_0 => Dafny.Helpers.Let(_pat_let5_0, _0_baseName => Dafny.Helpers.Let, bool>((this).dtor_arguments, _pat_let6_0 => Dafny.Helpers.Let, bool>(_pat_let6_0, _1_args => (((((new BigInteger((_1_args).Count)) == (BigInteger.One)) && ((_0_baseName).is_TMemberSelect)) && (object.Equals((_0_baseName).dtor_base, RAST.__default.dafny__runtime__type))) && ((new BigInteger(((_0_baseName).dtor_name).Count)) >= (new BigInteger(5)))) && ((((_0_baseName).dtor_name).Subsequence(BigInteger.Zero, new BigInteger(5))).Equals(Dafny.Sequence.UnicodeFromString("Array")))))))); } public Dafny.ISequence MultiArrayClass() { return ((this).dtor_baseName).dtor_name; @@ -2453,20 +2456,20 @@ public RAST._IType MultiArrayUnderlying() { } public RAST._IType TypeAtInitialization() { if ((this).IsObjectOrPointer()) { - RAST._IType _903_s = (this).ObjectOrPointerUnderlying(); - if (((_903_s).is_Array) && (((_903_s).dtor_size).is_None)) { - RAST._IType _904_newUnderlying = RAST.Type.create_Array(RAST.__default.MaybeUninitType((_903_s).dtor_underlying), Std.Wrappers.Option>.create_None()); + RAST._IType _0_s = (this).ObjectOrPointerUnderlying(); + if (((_0_s).is_Array) && (((_0_s).dtor_size).is_None)) { + RAST._IType _1_newUnderlying = RAST.Type.create_Array(RAST.__default.MaybeUninitType((_0_s).dtor_underlying), Std.Wrappers.Option>.create_None()); if ((this).IsObject()) { - return RAST.__default.ObjectType(_904_newUnderlying); + return RAST.__default.ObjectType(_1_newUnderlying); } else { - return RAST.Type.create_PointerMut(_904_newUnderlying); + return RAST.Type.create_PointerMut(_1_newUnderlying); } - } else if ((_903_s).IsMultiArray()) { - RAST._IType _905_newUnderlying = RAST.Type.create_TypeApp((_903_s).dtor_baseName, Dafny.Sequence.FromElements(RAST.__default.MaybeUninitType(((_903_s).dtor_arguments).Select(BigInteger.Zero)))); + } else if ((_0_s).IsMultiArray()) { + RAST._IType _2_newUnderlying = RAST.Type.create_TypeApp((_0_s).dtor_baseName, Dafny.Sequence.FromElements(RAST.__default.MaybeUninitType(((_0_s).dtor_arguments).Select(BigInteger.Zero)))); if ((this).IsObject()) { - return RAST.__default.ObjectType(_905_newUnderlying); + return RAST.__default.ObjectType(_2_newUnderlying); } else { - return RAST.Type.create_PointerMut(_905_newUnderlying); + return RAST.Type.create_PointerMut(_2_newUnderlying); } } else { return this; @@ -2480,11 +2483,11 @@ public bool IsMaybeUninit() { } public bool IsUninitArray() { if ((this).IsObjectOrPointer()) { - RAST._IType _906_s = (this).ObjectOrPointerUnderlying(); - if (((_906_s).is_Array) && (((_906_s).dtor_size).is_None)) { - return ((_906_s).dtor_underlying).IsMaybeUninit(); - } else if ((_906_s).IsMultiArray()) { - return (((_906_s).dtor_arguments).Select(BigInteger.Zero)).IsMaybeUninit(); + RAST._IType _0_s = (this).ObjectOrPointerUnderlying(); + if (((_0_s).is_Array) && (((_0_s).dtor_size).is_None)) { + return ((_0_s).dtor_underlying).IsMaybeUninit(); + } else if ((_0_s).IsMultiArray()) { + return (((_0_s).dtor_arguments).Select(BigInteger.Zero)).IsMaybeUninit(); } else { return false; } @@ -2493,10 +2496,10 @@ public bool IsUninitArray() { } } public bool IsObject() { - RAST._IType _source32 = this; + RAST._IType _source0 = this; { - if (_source32.is_TypeApp) { - RAST._IType baseName0 = _source32.dtor_baseName; + if (_source0.is_TypeApp) { + RAST._IType baseName0 = _source0.dtor_baseName; if (baseName0.is_TMemberSelect) { RAST._IType base0 = baseName0.dtor_base; if (base0.is_TMemberSelect) { @@ -2508,8 +2511,8 @@ public bool IsObject() { if (object.Equals(name1, Dafny.Sequence.UnicodeFromString("dafny_runtime"))) { Dafny.ISequence name2 = baseName0.dtor_name; if (object.Equals(name2, Dafny.Sequence.UnicodeFromString("Object"))) { - Dafny.ISequence _907_elems1 = _source32.dtor_arguments; - return (new BigInteger((_907_elems1).Count)) == (BigInteger.One); + Dafny.ISequence _0_elems1 = _source0.dtor_arguments; + return (new BigInteger((_0_elems1).Count)) == (BigInteger.One); } } } @@ -2532,35 +2535,35 @@ public RAST._IType ObjectOrPointerUnderlying() { if (((this).is_PointerMut) || ((this).is_Pointer)) { return (this).dtor_underlying; } else { - RAST._IType _source33 = this; + RAST._IType _source0 = this; { - RAST._IType baseName1 = _source33.dtor_baseName; - RAST._IType base2 = baseName1.dtor_base; - RAST._IType base3 = base2.dtor_base; - Dafny.ISequence name3 = base3.dtor_name; - Dafny.ISequence name4 = base2.dtor_name; - Dafny.ISequence _908_elems1 = _source33.dtor_arguments; - return (_908_elems1).Select(BigInteger.Zero); + RAST._IType baseName0 = _source0.dtor_baseName; + RAST._IType base0 = baseName0.dtor_base; + RAST._IType base1 = base0.dtor_base; + Dafny.ISequence name0 = base1.dtor_name; + Dafny.ISequence name1 = base0.dtor_name; + Dafny.ISequence _0_elems1 = _source0.dtor_arguments; + return (_0_elems1).Select(BigInteger.Zero); } } } public bool IsBuiltinCollection() { - RAST._IType _source34 = this; + RAST._IType _source0 = this; { - if (_source34.is_TypeApp) { - RAST._IType baseName2 = _source34.dtor_baseName; - if (baseName2.is_TMemberSelect) { - RAST._IType base4 = baseName2.dtor_base; - if (base4.is_TMemberSelect) { - RAST._IType base5 = base4.dtor_base; - if (base5.is_TIdentifier) { - Dafny.ISequence name5 = base5.dtor_name; - if (object.Equals(name5, Dafny.Sequence.UnicodeFromString(""))) { - Dafny.ISequence name6 = base4.dtor_name; - if (object.Equals(name6, Dafny.Sequence.UnicodeFromString("dafny_runtime"))) { - Dafny.ISequence _909_tpe = baseName2.dtor_name; - Dafny.ISequence _910_elems1 = _source34.dtor_arguments; - return (((((_909_tpe).Equals(Dafny.Sequence.UnicodeFromString("Set"))) || ((_909_tpe).Equals(Dafny.Sequence.UnicodeFromString("Sequence")))) || ((_909_tpe).Equals(Dafny.Sequence.UnicodeFromString("Multiset")))) && ((new BigInteger((_910_elems1).Count)) == (BigInteger.One))) || (((_909_tpe).Equals(Dafny.Sequence.UnicodeFromString("Map"))) && ((new BigInteger((_910_elems1).Count)) == (new BigInteger(2)))); + if (_source0.is_TypeApp) { + RAST._IType baseName0 = _source0.dtor_baseName; + if (baseName0.is_TMemberSelect) { + RAST._IType base0 = baseName0.dtor_base; + if (base0.is_TMemberSelect) { + RAST._IType base1 = base0.dtor_base; + if (base1.is_TIdentifier) { + Dafny.ISequence name0 = base1.dtor_name; + if (object.Equals(name0, Dafny.Sequence.UnicodeFromString(""))) { + Dafny.ISequence name1 = base0.dtor_name; + if (object.Equals(name1, Dafny.Sequence.UnicodeFromString("dafny_runtime"))) { + Dafny.ISequence _0_tpe = baseName0.dtor_name; + Dafny.ISequence _1_elems1 = _source0.dtor_arguments; + return (((((_0_tpe).Equals(Dafny.Sequence.UnicodeFromString("Set"))) || ((_0_tpe).Equals(Dafny.Sequence.UnicodeFromString("Sequence")))) || ((_0_tpe).Equals(Dafny.Sequence.UnicodeFromString("Multiset")))) && ((new BigInteger((_1_elems1).Count)) == (BigInteger.One))) || (((_0_tpe).Equals(Dafny.Sequence.UnicodeFromString("Map"))) && ((new BigInteger((_1_elems1).Count)) == (new BigInteger(2)))); } } } @@ -2573,19 +2576,19 @@ public bool IsBuiltinCollection() { } } public RAST._IType GetBuiltinCollectionElement() { - RAST._IType _source35 = this; + RAST._IType _source0 = this; { - RAST._IType baseName3 = _source35.dtor_baseName; - RAST._IType base6 = baseName3.dtor_base; - RAST._IType base7 = base6.dtor_base; - Dafny.ISequence name7 = base7.dtor_name; - Dafny.ISequence name8 = base6.dtor_name; - Dafny.ISequence _911_tpe = baseName3.dtor_name; - Dafny.ISequence _912_elems = _source35.dtor_arguments; - if ((_911_tpe).Equals(Dafny.Sequence.UnicodeFromString("Map"))) { - return (_912_elems).Select(BigInteger.One); + RAST._IType baseName0 = _source0.dtor_baseName; + RAST._IType base0 = baseName0.dtor_base; + RAST._IType base1 = base0.dtor_base; + Dafny.ISequence name0 = base1.dtor_name; + Dafny.ISequence name1 = base0.dtor_name; + Dafny.ISequence _0_tpe = baseName0.dtor_name; + Dafny.ISequence _1_elems = _source0.dtor_arguments; + if ((_0_tpe).Equals(Dafny.Sequence.UnicodeFromString("Map"))) { + return (_1_elems).Select(BigInteger.One); } else { - return (_912_elems).Select(BigInteger.Zero); + return (_1_elems).Select(BigInteger.Zero); } } } @@ -3311,18 +3314,18 @@ public Dafny.ISequence dtor_body { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - Dafny.ISequence _913_tpConstraints = Std.Collections.Seq.__default.Filter(((System.Func)((_914_typeParamDecl) => { - return (new BigInteger(((_914_typeParamDecl).dtor_constraints).Count)).Sign == 1; + Dafny.ISequence _0_tpConstraints = Std.Collections.Seq.__default.Filter(((System.Func)((_1_typeParamDecl) => { + return (new BigInteger(((_1_typeParamDecl).dtor_constraints).Count)).Sign == 1; })), (this).dtor_typeParams); - Dafny.ISequence _915_additionalConstraints = RAST.__default.SeqToString(_913_tpConstraints, Dafny.Helpers.Id, Func>>>((_916_ind) => ((System.Func>)((_917_t) => { - return (_917_t)._ToString(Dafny.Sequence.Concat(_916_ind, RAST.__default.IND)); + Dafny.ISequence _2_additionalConstraints = RAST.__default.SeqToString(_0_tpConstraints, Dafny.Helpers.Id, Func>>>((_3_ind) => ((System.Func>)((_4_t) => { + return (_4_t)._ToString(Dafny.Sequence.Concat(_3_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(",\n"), ind), RAST.__default.IND)); - Dafny.ISequence _918_parents = (((new BigInteger(((this).dtor_parents).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), RAST.__default.SeqToString((this).dtor_parents, Dafny.Helpers.Id, Func>>>((_919_ind) => ((System.Func>)((_920_t) => { - return (_920_t)._ToString(Dafny.Sequence.Concat(_919_ind, RAST.__default.IND)); + Dafny.ISequence _5_parents = (((new BigInteger(((this).dtor_parents).Count)).Sign == 0) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), RAST.__default.SeqToString((this).dtor_parents, Dafny.Helpers.Id, Func>>>((_6_ind) => ((System.Func>)((_7_t) => { + return (_7_t)._ToString(Dafny.Sequence.Concat(_6_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(" + "))))); - Dafny.ISequence _921_where = (((_915_additionalConstraints).Equals(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("\n"), ind), RAST.__default.IND), Dafny.Sequence.UnicodeFromString("where\n")), ind), RAST.__default.IND), _915_additionalConstraints))); - 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 "), ((this).dtor_tpe)._ToString(ind)), _918_parents), _921_where), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_922_ind) => ((System.Func>)((_923_member) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _922_ind), RAST.__default.IND), (_923_member)._ToString(Dafny.Sequence.Concat(_922_ind, RAST.__default.IND))); + Dafny.ISequence _8_where = (((_2_additionalConstraints).Equals(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("\n"), ind), RAST.__default.IND), Dafny.Sequence.UnicodeFromString("where\n")), ind), RAST.__default.IND), _2_additionalConstraints))); + 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 "), ((this).dtor_tpe)._ToString(ind)), _5_parents), _8_where), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString((this).dtor_body, Dafny.Helpers.Id, Func>>>((_9_ind) => ((System.Func>)((_10_member) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _9_ind), RAST.__default.IND), (_10_member)._ToString(Dafny.Sequence.Concat(_9_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("}")); } } @@ -3393,8 +3396,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>>>((_924_ind) => ((System.Func>)((_925_member) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _924_ind), RAST.__default.IND), (_925_member)._ToString(Dafny.Sequence.Concat(_924_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>>>((_0_ind) => ((System.Func>)((_1_member) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _0_ind), RAST.__default.IND), (_1_member)._ToString(Dafny.Sequence.Concat(_0_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("}")); } } @@ -3930,9 +3933,9 @@ public RAST._IExpr dtor_rhs { } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - Dafny.ISequence _926_newIndent = ((((this).dtor_rhs).is_Block) ? (ind) : (Dafny.Sequence.Concat(ind, RAST.__default.IND))); - Dafny.ISequence _927_rhsString = ((this).dtor_rhs)._ToString(_926_newIndent); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Pattern._ToString((this).dtor_pattern, ind), Dafny.Sequence.UnicodeFromString(" =>")), ((((_927_rhsString).Contains(new Dafny.Rune('\n'))) && (((_927_rhsString).Select(BigInteger.Zero)) != (new Dafny.Rune('{')))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), _927_rhsString)) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _927_rhsString)))); + Dafny.ISequence _0_newIndent = ((((this).dtor_rhs).is_Block) ? (ind) : (Dafny.Sequence.Concat(ind, RAST.__default.IND))); + Dafny.ISequence _1_rhsString = ((this).dtor_rhs)._ToString(_0_newIndent); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(RAST.Pattern._ToString((this).dtor_pattern, ind), Dafny.Sequence.UnicodeFromString(" =>")), ((((_1_rhsString).Contains(new Dafny.Rune('\n'))) && (((_1_rhsString).Select(BigInteger.Zero)) != (new Dafny.Rune('{')))) ? (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), _1_rhsString)) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _1_rhsString)))); } } @@ -5036,21 +5039,21 @@ public bool NoExtraSemicolonAfter() { return (((((((this).is_DeclareVar) || ((this).is_Assign)) || ((this).is_Break)) || ((this).is_Continue)) || ((this).is_Return)) || ((this).is_For)) || ((((this).is_RawExpr) && ((new BigInteger(((this).dtor_content).Count)).Sign == 1)) && ((((this).dtor_content).Select((new BigInteger(((this).dtor_content).Count)) - (BigInteger.One))) == (new Dafny.Rune(';')))); } public RAST._IExpr Optimize() { - RAST._IExpr _source36 = this; + RAST._IExpr _source0 = this; { - if (_source36.is_UnaryOp) { - Dafny.ISequence op10 = _source36.dtor_op1; + if (_source0.is_UnaryOp) { + Dafny.ISequence op10 = _source0.dtor_op1; if (object.Equals(op10, Dafny.Sequence.UnicodeFromString("!"))) { - RAST._IExpr underlying0 = _source36.dtor_underlying; + RAST._IExpr underlying0 = _source0.dtor_underlying; if (underlying0.is_BinaryOp) { Dafny.ISequence op20 = underlying0.dtor_op2; if (object.Equals(op20, Dafny.Sequence.UnicodeFromString("=="))) { - RAST._IExpr _928_left = underlying0.dtor_left; - RAST._IExpr _929_right = underlying0.dtor_right; - DAST.Format._IBinaryOpFormat _930_format = underlying0.dtor_format2; - DAST.Format._IUnaryOpFormat format0 = _source36.dtor_format; + RAST._IExpr _0_left = underlying0.dtor_left; + RAST._IExpr _1_right = underlying0.dtor_right; + DAST.Format._IBinaryOpFormat _2_format = underlying0.dtor_format2; + DAST.Format._IUnaryOpFormat format0 = _source0.dtor_format; if (format0.is_CombineFormat) { - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _928_left, _929_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("!="), _0_left, _1_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -5058,20 +5061,20 @@ public RAST._IExpr Optimize() { } } { - if (_source36.is_UnaryOp) { - Dafny.ISequence op11 = _source36.dtor_op1; + if (_source0.is_UnaryOp) { + Dafny.ISequence op11 = _source0.dtor_op1; if (object.Equals(op11, Dafny.Sequence.UnicodeFromString("!"))) { - RAST._IExpr underlying1 = _source36.dtor_underlying; + RAST._IExpr underlying1 = _source0.dtor_underlying; if (underlying1.is_BinaryOp) { Dafny.ISequence op21 = underlying1.dtor_op2; if (object.Equals(op21, Dafny.Sequence.UnicodeFromString("<"))) { - RAST._IExpr _931_left = underlying1.dtor_left; - RAST._IExpr _932_right = underlying1.dtor_right; + RAST._IExpr _3_left = underlying1.dtor_left; + RAST._IExpr _4_right = underlying1.dtor_right; DAST.Format._IBinaryOpFormat format20 = underlying1.dtor_format2; if (format20.is_NoFormat) { - DAST.Format._IUnaryOpFormat format1 = _source36.dtor_format; + DAST.Format._IUnaryOpFormat format1 = _source0.dtor_format; if (format1.is_CombineFormat) { - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _931_left, _932_right, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString(">="), _3_left, _4_right, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -5080,20 +5083,20 @@ public RAST._IExpr Optimize() { } } { - if (_source36.is_UnaryOp) { - Dafny.ISequence op12 = _source36.dtor_op1; + if (_source0.is_UnaryOp) { + Dafny.ISequence op12 = _source0.dtor_op1; if (object.Equals(op12, Dafny.Sequence.UnicodeFromString("!"))) { - RAST._IExpr underlying2 = _source36.dtor_underlying; + RAST._IExpr underlying2 = _source0.dtor_underlying; if (underlying2.is_BinaryOp) { Dafny.ISequence op22 = underlying2.dtor_op2; if (object.Equals(op22, Dafny.Sequence.UnicodeFromString("<"))) { - RAST._IExpr _933_left = underlying2.dtor_left; - RAST._IExpr _934_right = underlying2.dtor_right; + RAST._IExpr _5_left = underlying2.dtor_left; + RAST._IExpr _6_right = underlying2.dtor_right; DAST.Format._IBinaryOpFormat format21 = underlying2.dtor_format2; if (format21.is_ReverseFormat) { - DAST.Format._IUnaryOpFormat format2 = _source36.dtor_format; + DAST.Format._IUnaryOpFormat format2 = _source0.dtor_format; if (format2.is_CombineFormat) { - return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _934_right, _933_left, DAST.Format.BinaryOpFormat.create_NoFormat()); + return RAST.Expr.create_BinaryOp(Dafny.Sequence.UnicodeFromString("<="), _6_right, _5_left, DAST.Format.BinaryOpFormat.create_NoFormat()); } } } @@ -5102,44 +5105,44 @@ public RAST._IExpr Optimize() { } } { - if (_source36.is_Call) { - RAST._IExpr obj0 = _source36.dtor_obj; + if (_source0.is_Call) { + RAST._IExpr obj0 = _source0.dtor_obj; if (obj0.is_MemberSelect) { - RAST._IExpr _935_r = obj0.dtor_obj; - Dafny.ISequence name9 = obj0.dtor_name; - if (object.Equals(name9, Dafny.Sequence.UnicodeFromString("truncate!"))) { - Dafny.ISequence _936_args = _source36.dtor_arguments; - if (((!object.Equals(_935_r, RAST.__default.dafny__runtime)) && (!object.Equals(_935_r, RAST.__default.@global))) || ((new BigInteger((_936_args).Count)) != (new BigInteger(2)))) { + RAST._IExpr _7_r = obj0.dtor_obj; + Dafny.ISequence name0 = obj0.dtor_name; + if (object.Equals(name0, Dafny.Sequence.UnicodeFromString("truncate!"))) { + Dafny.ISequence _8_args = _source0.dtor_arguments; + if (((!object.Equals(_7_r, RAST.__default.dafny__runtime)) && (!object.Equals(_7_r, RAST.__default.@global))) || ((new BigInteger((_8_args).Count)) != (new BigInteger(2)))) { return this; } else { - RAST._IExpr _937_expr = (_936_args).Select(BigInteger.Zero); - RAST._IExpr _938_tpeExpr = (_936_args).Select(BigInteger.One); - if (!((_938_tpeExpr).is_ExprFromType)) { + RAST._IExpr _9_expr = (_8_args).Select(BigInteger.Zero); + RAST._IExpr _10_tpeExpr = (_8_args).Select(BigInteger.One); + if (!((_10_tpeExpr).is_ExprFromType)) { return this; } else { - RAST._IType _939_tpe = (_938_tpeExpr).dtor_tpe; - if (((((((((((_939_tpe).is_U8) || ((_939_tpe).is_U16)) || ((_939_tpe).is_U32)) || ((_939_tpe).is_U64)) || ((_939_tpe).is_U128)) || ((_939_tpe).is_I8)) || ((_939_tpe).is_I16)) || ((_939_tpe).is_I32)) || ((_939_tpe).is_I64)) || ((_939_tpe).is_I128)) { - RAST._IExpr _source37 = _937_expr; + RAST._IType _11_tpe = (_10_tpeExpr).dtor_tpe; + if (((((((((((_11_tpe).is_U8) || ((_11_tpe).is_U16)) || ((_11_tpe).is_U32)) || ((_11_tpe).is_U64)) || ((_11_tpe).is_U128)) || ((_11_tpe).is_I8)) || ((_11_tpe).is_I16)) || ((_11_tpe).is_I32)) || ((_11_tpe).is_I64)) || ((_11_tpe).is_I128)) { + RAST._IExpr _source1 = _9_expr; { - if (_source37.is_Call) { - RAST._IExpr obj1 = _source37.dtor_obj; + if (_source1.is_Call) { + RAST._IExpr obj1 = _source1.dtor_obj; if (obj1.is_MemberSelect) { - RAST._IExpr _940_base = obj1.dtor_obj; - Dafny.ISequence name10 = obj1.dtor_name; - if (object.Equals(name10, Dafny.Sequence.UnicodeFromString("int!"))) { - Dafny.ISequence _941_args = _source37.dtor_arguments; - if (((new BigInteger((_941_args).Count)) == (BigInteger.One)) && ((object.Equals(_940_base, RAST.__default.dafny__runtime)) || (object.Equals(_940_base, RAST.__default.@global)))) { - RAST._IExpr _source38 = (_941_args).Select(BigInteger.Zero); + RAST._IExpr _12_base = obj1.dtor_obj; + Dafny.ISequence name1 = obj1.dtor_name; + if (object.Equals(name1, Dafny.Sequence.UnicodeFromString("int!"))) { + Dafny.ISequence _13_args = _source1.dtor_arguments; + if (((new BigInteger((_13_args).Count)) == (BigInteger.One)) && ((object.Equals(_12_base, RAST.__default.dafny__runtime)) || (object.Equals(_12_base, RAST.__default.@global)))) { + RAST._IExpr _source2 = (_13_args).Select(BigInteger.Zero); { - if (_source38.is_LiteralInt) { - Dafny.ISequence _942_number = _source38.dtor_value; - return RAST.Expr.create_LiteralInt(_942_number); + if (_source2.is_LiteralInt) { + Dafny.ISequence _14_number = _source2.dtor_value; + return RAST.Expr.create_LiteralInt(_14_number); } } { - if (_source38.is_LiteralString) { - Dafny.ISequence _943_number = _source38.dtor_value; - return RAST.Expr.create_LiteralInt(_943_number); + if (_source2.is_LiteralString) { + Dafny.ISequence _15_number = _source2.dtor_value; + return RAST.Expr.create_LiteralInt(_15_number); } } { @@ -5165,26 +5168,26 @@ public RAST._IExpr Optimize() { } } { - if (_source36.is_StmtExpr) { - RAST._IExpr stmt0 = _source36.dtor_stmt; + if (_source0.is_StmtExpr) { + RAST._IExpr stmt0 = _source0.dtor_stmt; if (stmt0.is_DeclareVar) { - RAST._IDeclareType _944_mod = stmt0.dtor_declareType; - Dafny.ISequence _945_name = stmt0.dtor_name; + RAST._IDeclareType _16_mod = stmt0.dtor_declareType; + Dafny.ISequence _17_name = stmt0.dtor_name; Std.Wrappers._IOption optType0 = stmt0.dtor_optType; if (optType0.is_Some) { - RAST._IType _946_tpe = optType0.dtor_value; + RAST._IType _18_tpe = optType0.dtor_value; Std.Wrappers._IOption optRhs0 = stmt0.dtor_optRhs; if (optRhs0.is_None) { - RAST._IExpr rhs0 = _source36.dtor_rhs; + RAST._IExpr rhs0 = _source0.dtor_rhs; if (rhs0.is_StmtExpr) { RAST._IExpr stmt1 = rhs0.dtor_stmt; if (stmt1.is_Assign) { - Std.Wrappers._IOption _947_name2 = stmt1.dtor_names; - RAST._IExpr _948_rhs = stmt1.dtor_rhs; - RAST._IExpr _949_last = rhs0.dtor_rhs; - if (object.Equals(_947_name2, Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_LocalVar(_945_name)))) { - RAST._IExpr _950_rewriting = RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(_944_mod, _945_name, Std.Wrappers.Option.create_Some(_946_tpe), Std.Wrappers.Option.create_Some(_948_rhs)), _949_last); - return _950_rewriting; + Std.Wrappers._IOption _19_name2 = stmt1.dtor_names; + RAST._IExpr _20_rhs = stmt1.dtor_rhs; + RAST._IExpr _21_last = rhs0.dtor_rhs; + if (object.Equals(_19_name2, Std.Wrappers.Option.create_Some(RAST.AssignLhs.create_LocalVar(_17_name)))) { + RAST._IExpr _22_rewriting = RAST.Expr.create_StmtExpr(RAST.Expr.create_DeclareVar(_16_mod, _17_name, Std.Wrappers.Option.create_Some(_18_tpe), Std.Wrappers.Option.create_Some(_20_rhs)), _21_last); + return _22_rewriting; } else { return this; } @@ -5196,8 +5199,8 @@ public RAST._IExpr Optimize() { } } { - if (_source36.is_StmtExpr) { - RAST._IExpr stmt2 = _source36.dtor_stmt; + if (_source0.is_StmtExpr) { + RAST._IExpr stmt2 = _source0.dtor_stmt; if (stmt2.is_IfExpr) { RAST._IExpr cond0 = stmt2.dtor_cond; if (cond0.is_UnaryOp) { @@ -5207,10 +5210,10 @@ public RAST._IExpr Optimize() { if (underlying3.is_BinaryOp) { Dafny.ISequence op23 = underlying3.dtor_op2; if (object.Equals(op23, Dafny.Sequence.UnicodeFromString("=="))) { - RAST._IExpr _951_a = underlying3.dtor_left; - RAST._IExpr _952_b = underlying3.dtor_right; - DAST.Format._IBinaryOpFormat _953_f = underlying3.dtor_format2; - DAST.Format._IUnaryOpFormat _954_of = cond0.dtor_format; + RAST._IExpr _23_a = underlying3.dtor_left; + RAST._IExpr _24_b = underlying3.dtor_right; + DAST.Format._IBinaryOpFormat _25_f = underlying3.dtor_format2; + DAST.Format._IUnaryOpFormat _26_of = cond0.dtor_format; RAST._IExpr thn0 = stmt2.dtor_thn; if (thn0.is_RawExpr) { Dafny.ISequence content0 = thn0.dtor_content; @@ -5219,9 +5222,9 @@ public RAST._IExpr Optimize() { if (els0.is_RawExpr) { Dafny.ISequence content1 = els0.dtor_content; if (object.Equals(content1, Dafny.Sequence.UnicodeFromString(""))) { - RAST._IExpr _955_last = _source36.dtor_rhs; - RAST._IExpr _956_rewriting = RAST.Expr.create_StmtExpr((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("assert_eq!"))).Apply(Dafny.Sequence.FromElements(_951_a, _952_b)), _955_last); - return _956_rewriting; + RAST._IExpr _27_last = _source0.dtor_rhs; + RAST._IExpr _28_rewriting = RAST.Expr.create_StmtExpr((RAST.Expr.create_Identifier(Dafny.Sequence.UnicodeFromString("assert_eq!"))).Apply(Dafny.Sequence.FromElements(_23_a, _24_b)), _27_last); + return _28_rewriting; } } } @@ -5258,11 +5261,11 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } public Std.Wrappers._IOption> RightMostIdentifier() { - RAST._IExpr _source39 = this; + RAST._IExpr _source0 = this; { - if (_source39.is_MemberSelect) { - Dafny.ISequence _957_id = _source39.dtor_name; - return Std.Wrappers.Option>.create_Some(_957_id); + if (_source0.is_MemberSelect) { + Dafny.ISequence _0_id = _source0.dtor_name; + return Std.Wrappers.Option>.create_Some(_0_id); } } { @@ -5279,64 +5282,64 @@ public bool RightRequiresParentheses(RAST._IExpr right) { return currentHashes; } } else if (((s).Subsequence(BigInteger.Zero, BigInteger.One)).Equals(Dafny.Sequence.UnicodeFromString("#"))) { - Dafny.ISequence _in113 = (s).Drop(BigInteger.One); - Dafny.ISequence _in114 = Dafny.Sequence.Concat(currentHashes, Dafny.Sequence.UnicodeFromString("#")); - Dafny.ISequence _in115 = mostHashes; - s = _in113; - currentHashes = _in114; - mostHashes = _in115; + Dafny.ISequence _in0 = (s).Drop(BigInteger.One); + Dafny.ISequence _in1 = Dafny.Sequence.Concat(currentHashes, Dafny.Sequence.UnicodeFromString("#")); + Dafny.ISequence _in2 = mostHashes; + s = _in0; + currentHashes = _in1; + mostHashes = _in2; goto TAIL_CALL_START; } else { - Dafny.ISequence _in116 = (s).Drop(BigInteger.One); - Dafny.ISequence _in117 = Dafny.Sequence.UnicodeFromString(""); - Dafny.ISequence _in118 = (((new BigInteger((currentHashes).Count)) < (new BigInteger((mostHashes).Count))) ? (mostHashes) : (currentHashes)); - s = _in116; - currentHashes = _in117; - mostHashes = _in118; + Dafny.ISequence _in3 = (s).Drop(BigInteger.One); + Dafny.ISequence _in4 = Dafny.Sequence.UnicodeFromString(""); + Dafny.ISequence _in5 = (((new BigInteger((currentHashes).Count)) < (new BigInteger((mostHashes).Count))) ? (mostHashes) : (currentHashes)); + s = _in3; + currentHashes = _in4; + mostHashes = _in5; goto TAIL_CALL_START; } } public static Dafny.ISequence RemoveDoubleQuotes(Dafny.ISequence s) { - Dafny.ISequence _958___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((s).Count)) <= (BigInteger.One)) { - return Dafny.Sequence.Concat(_958___accumulator, s); + return Dafny.Sequence.Concat(_0___accumulator, s); } else if (((s).Subsequence(BigInteger.Zero, new BigInteger(2))).Equals(Dafny.Sequence.UnicodeFromString(@""""""))) { - _958___accumulator = Dafny.Sequence.Concat(_958___accumulator, Dafny.Sequence.UnicodeFromString(@"""")); - Dafny.ISequence _in119 = (s).Drop(new BigInteger(2)); - s = _in119; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.UnicodeFromString(@"""")); + Dafny.ISequence _in0 = (s).Drop(new BigInteger(2)); + s = _in0; goto TAIL_CALL_START; } else { - _958___accumulator = Dafny.Sequence.Concat(_958___accumulator, (s).Subsequence(BigInteger.Zero, BigInteger.One)); - Dafny.ISequence _in120 = (s).Drop(BigInteger.One); - s = _in120; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, (s).Subsequence(BigInteger.Zero, BigInteger.One)); + Dafny.ISequence _in1 = (s).Drop(BigInteger.One); + s = _in1; goto TAIL_CALL_START; } } public Dafny.ISequence _ToString(Dafny.ISequence ind) { - RAST._IExpr _source40 = (this).Optimize(); + RAST._IExpr _source0 = (this).Optimize(); { - if (_source40.is_Identifier) { - Dafny.ISequence _959_name = _source40.dtor_name; - return _959_name; + if (_source0.is_Identifier) { + Dafny.ISequence _0_name = _source0.dtor_name; + return _0_name; } } { - if (_source40.is_ExprFromType) { - RAST._IType _960_t = _source40.dtor_tpe; - return (_960_t)._ToString(ind); + if (_source0.is_ExprFromType) { + RAST._IType _1_t = _source0.dtor_tpe; + return (_1_t)._ToString(ind); } } { - if (_source40.is_LiteralInt) { - Dafny.ISequence _961_number = _source40.dtor_value; - return _961_number; + if (_source0.is_LiteralInt) { + Dafny.ISequence _2_number = _source0.dtor_value; + return _2_number; } } { - if (_source40.is_LiteralBool) { - bool _962_b = _source40.dtor_bvalue; - if (_962_b) { + if (_source0.is_LiteralBool) { + bool _3_b = _source0.dtor_bvalue; + if (_3_b) { return Dafny.Sequence.UnicodeFromString("true"); } else { return Dafny.Sequence.UnicodeFromString("false"); @@ -5344,171 +5347,171 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } { - if (_source40.is_LiteralString) { - Dafny.ISequence _963_characters = _source40.dtor_value; - bool _964_binary = _source40.dtor_binary; - bool _965_verbatim = _source40.dtor_verbatim; - Dafny.ISequence _966_hashes = ((_965_verbatim) ? (Dafny.Sequence.Concat(RAST.Expr.MaxHashes(_963_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(((_964_binary) ? (Dafny.Sequence.UnicodeFromString("b")) : (Dafny.Sequence.UnicodeFromString(""))), ((_965_verbatim) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r"), _966_hashes)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("\"")), ((_965_verbatim) ? (RAST.Expr.RemoveDoubleQuotes(_963_characters)) : (_963_characters))), Dafny.Sequence.UnicodeFromString("\"")), _966_hashes); + if (_source0.is_LiteralString) { + Dafny.ISequence _4_characters = _source0.dtor_value; + bool _5_binary = _source0.dtor_binary; + bool _6_verbatim = _source0.dtor_verbatim; + Dafny.ISequence _7_hashes = ((_6_verbatim) ? (Dafny.Sequence.Concat(RAST.Expr.MaxHashes(_4_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(((_5_binary) ? (Dafny.Sequence.UnicodeFromString("b")) : (Dafny.Sequence.UnicodeFromString(""))), ((_6_verbatim) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("r"), _7_hashes)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("\"")), ((_6_verbatim) ? (RAST.Expr.RemoveDoubleQuotes(_4_characters)) : (_4_characters))), Dafny.Sequence.UnicodeFromString("\"")), _7_hashes); } } { - if (_source40.is_Match) { - RAST._IExpr _967_matchee = _source40.dtor_matchee; - Dafny.ISequence _968_cases = _source40.dtor_cases; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("match "), (_967_matchee)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_968_cases, Dafny.Helpers.Id, Func>>>((_969_ind) => ((System.Func>)((_970_c) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _969_ind), RAST.__default.IND), (_970_c)._ToString(Dafny.Sequence.Concat(_969_ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(",")); + if (_source0.is_Match) { + RAST._IExpr _8_matchee = _source0.dtor_matchee; + Dafny.ISequence _9_cases = _source0.dtor_cases; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("match "), (_8_matchee)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_9_cases, Dafny.Helpers.Id, Func>>>((_10_ind) => ((System.Func>)((_11_c) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _10_ind), RAST.__default.IND), (_11_c)._ToString(Dafny.Sequence.Concat(_10_ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(",")); })))(ind), Dafny.Sequence.UnicodeFromString(""))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } { - if (_source40.is_StmtExpr) { - RAST._IExpr _971_stmt = _source40.dtor_stmt; - RAST._IExpr _972_rhs = _source40.dtor_rhs; - if (((_971_stmt).is_RawExpr) && (((_971_stmt).dtor_content).Equals(Dafny.Sequence.UnicodeFromString("")))) { - return (_972_rhs)._ToString(ind); + if (_source0.is_StmtExpr) { + RAST._IExpr _12_stmt = _source0.dtor_stmt; + RAST._IExpr _13_rhs = _source0.dtor_rhs; + if (((_12_stmt).is_RawExpr) && (((_12_stmt).dtor_content).Equals(Dafny.Sequence.UnicodeFromString("")))) { + return (_13_rhs)._ToString(ind); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_971_stmt)._ToString(ind), (((_971_stmt).NoExtraSemicolonAfter()) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.UnicodeFromString(";")))), Dafny.Sequence.UnicodeFromString("\n")), ind), (_972_rhs)._ToString(ind)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_12_stmt)._ToString(ind), (((_12_stmt).NoExtraSemicolonAfter()) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.UnicodeFromString(";")))), Dafny.Sequence.UnicodeFromString("\n")), ind), (_13_rhs)._ToString(ind)); } } } { - if (_source40.is_Block) { - RAST._IExpr _973_underlying = _source40.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\n"), ind), RAST.__default.IND), (_973_underlying)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); + if (_source0.is_Block) { + RAST._IExpr _14_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("{\n"), ind), RAST.__default.IND), (_14_underlying)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } { - if (_source40.is_IfExpr) { - RAST._IExpr _974_cond = _source40.dtor_cond; - RAST._IExpr _975_thn = _source40.dtor_thn; - RAST._IExpr _976_els = _source40.dtor_els; - 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 "), (_974_cond)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_975_thn)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")), ((object.Equals(_976_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"), ind), RAST.__default.IND), (_976_els)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}"))))); + if (_source0.is_IfExpr) { + RAST._IExpr _15_cond = _source0.dtor_cond; + RAST._IExpr _16_thn = _source0.dtor_thn; + RAST._IExpr _17_els = _source0.dtor_els; + 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 "), (_15_cond)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_16_thn)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")), ((object.Equals(_17_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"), ind), RAST.__default.IND), (_17_els)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}"))))); } } { - if (_source40.is_StructBuild) { - RAST._IExpr _977_name = _source40.dtor_underlying; - Dafny.ISequence _978_assignments = _source40.dtor_assignments; - if (((new BigInteger((_978_assignments).Count)).Sign == 1) && ((((_978_assignments).Select(BigInteger.Zero)).dtor_identifier).Equals(Dafny.Sequence.UnicodeFromString("0")))) { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_977_name)._ToString(ind), Dafny.Sequence.UnicodeFromString(" (")), RAST.__default.SeqToString(_978_assignments, Dafny.Helpers.Id, Func>>>((_979_ind) => ((System.Func>)((_980_assignment) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _979_ind), RAST.__default.IND), ((_980_assignment).dtor_rhs)._ToString(Dafny.Sequence.Concat(_979_ind, RAST.__default.IND))); - })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_978_assignments).Count)) > (BigInteger.One)) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); + if (_source0.is_StructBuild) { + RAST._IExpr _18_name = _source0.dtor_underlying; + Dafny.ISequence _19_assignments = _source0.dtor_assignments; + if (((new BigInteger((_19_assignments).Count)).Sign == 1) && ((((_19_assignments).Select(BigInteger.Zero)).dtor_identifier).Equals(Dafny.Sequence.UnicodeFromString("0")))) { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_18_name)._ToString(ind), Dafny.Sequence.UnicodeFromString(" (")), RAST.__default.SeqToString(_19_assignments, Dafny.Helpers.Id, Func>>>((_20_ind) => ((System.Func>)((_21_assignment) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _20_ind), RAST.__default.IND), ((_21_assignment).dtor_rhs)._ToString(Dafny.Sequence.Concat(_20_ind, RAST.__default.IND))); + })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_19_assignments).Count)) > (BigInteger.One)) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_977_name)._ToString(ind), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_978_assignments, Dafny.Helpers.Id, Func>>>((_981_ind) => ((System.Func>)((_982_assignment) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _981_ind), RAST.__default.IND), (_982_assignment)._ToString(Dafny.Sequence.Concat(_981_ind, RAST.__default.IND))); - })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_978_assignments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("}")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat((_18_name)._ToString(ind), Dafny.Sequence.UnicodeFromString(" {")), RAST.__default.SeqToString(_19_assignments, Dafny.Helpers.Id, Func>>>((_22_ind) => ((System.Func>)((_23_assignment) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _22_ind), RAST.__default.IND), (_23_assignment)._ToString(Dafny.Sequence.Concat(_22_ind, RAST.__default.IND))); + })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_19_assignments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString("}")); } } } { - if (_source40.is_Tuple) { - Dafny.ISequence _983_arguments = _source40.dtor_arguments; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_983_arguments, Dafny.Helpers.Id, Func>>>((_984_ind) => ((System.Func>)((_985_arg) => { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _984_ind), RAST.__default.IND), (_985_arg)._ToString(Dafny.Sequence.Concat(_984_ind, RAST.__default.IND))); - })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_983_arguments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); + if (_source0.is_Tuple) { + Dafny.ISequence _24_arguments = _source0.dtor_arguments; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString(_24_arguments, Dafny.Helpers.Id, Func>>>((_25_ind) => ((System.Func>)((_26_arg) => { + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), _25_ind), RAST.__default.IND), (_26_arg)._ToString(Dafny.Sequence.Concat(_25_ind, RAST.__default.IND))); + })))(ind), Dafny.Sequence.UnicodeFromString(","))), (((new BigInteger((_24_arguments).Count)).Sign == 1) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind)) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(")")); } } { - if (_source40.is_UnaryOp) { - Dafny.ISequence _986_op = _source40.dtor_op1; - RAST._IExpr _987_underlying = _source40.dtor_underlying; - DAST.Format._IUnaryOpFormat _988_format = _source40.dtor_format; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs41 = ((((this).printingInfo).NeedParenthesesFor((_987_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 _989_leftP = _let_tmp_rhs41.dtor__0; - Dafny.ISequence _990_rightP = _let_tmp_rhs41.dtor__1; - Dafny.ISequence _991_leftOp = ((((_986_op).Equals(Dafny.Sequence.UnicodeFromString("&mut"))) && (!(_989_leftP).Equals(Dafny.Sequence.UnicodeFromString("(")))) ? (Dafny.Sequence.Concat(_986_op, Dafny.Sequence.UnicodeFromString(" "))) : ((((_986_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (Dafny.Sequence.UnicodeFromString("")) : (_986_op)))); - Dafny.ISequence _992_rightOp = (((_986_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (_986_op) : (Dafny.Sequence.UnicodeFromString(""))); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_991_leftOp, _989_leftP), (_987_underlying)._ToString(ind)), _990_rightP), _992_rightOp); + if (_source0.is_UnaryOp) { + Dafny.ISequence _27_op = _source0.dtor_op1; + RAST._IExpr _28_underlying = _source0.dtor_underlying; + DAST.Format._IUnaryOpFormat _29_format = _source0.dtor_format; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs0 = ((((this).printingInfo).NeedParenthesesFor((_28_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 _30_leftP = _let_tmp_rhs0.dtor__0; + Dafny.ISequence _31_rightP = _let_tmp_rhs0.dtor__1; + Dafny.ISequence _32_leftOp = ((((_27_op).Equals(Dafny.Sequence.UnicodeFromString("&mut"))) && (!(_30_leftP).Equals(Dafny.Sequence.UnicodeFromString("(")))) ? (Dafny.Sequence.Concat(_27_op, Dafny.Sequence.UnicodeFromString(" "))) : ((((_27_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (Dafny.Sequence.UnicodeFromString("")) : (_27_op)))); + Dafny.ISequence _33_rightOp = (((_27_op).Equals(Dafny.Sequence.UnicodeFromString("?"))) ? (_27_op) : (Dafny.Sequence.UnicodeFromString(""))); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_32_leftOp, _30_leftP), (_28_underlying)._ToString(ind)), _31_rightP), _33_rightOp); } } { - if (_source40.is_TypeAscription) { - RAST._IExpr _993_left = _source40.dtor_left; - RAST._IType _994_tpe = _source40.dtor_tpe; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs42 = (this).LeftParentheses(_993_left); - Dafny.ISequence _995_leftLeftP = _let_tmp_rhs42.dtor__0; - Dafny.ISequence _996_leftRightP = _let_tmp_rhs42.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_995_leftLeftP, (_993_left)._ToString(RAST.__default.IND)), _996_leftRightP), Dafny.Sequence.UnicodeFromString(" as ")), (_994_tpe)._ToString(RAST.__default.IND)); + if (_source0.is_TypeAscription) { + RAST._IExpr _34_left = _source0.dtor_left; + RAST._IType _35_tpe = _source0.dtor_tpe; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs1 = (this).LeftParentheses(_34_left); + Dafny.ISequence _36_leftLeftP = _let_tmp_rhs1.dtor__0; + Dafny.ISequence _37_leftRightP = _let_tmp_rhs1.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_36_leftLeftP, (_34_left)._ToString(RAST.__default.IND)), _37_leftRightP), Dafny.Sequence.UnicodeFromString(" as ")), (_35_tpe)._ToString(RAST.__default.IND)); } } { - if (_source40.is_BinaryOp) { - Dafny.ISequence _997_op2 = _source40.dtor_op2; - RAST._IExpr _998_left = _source40.dtor_left; - RAST._IExpr _999_right = _source40.dtor_right; - DAST.Format._IBinaryOpFormat _1000_format = _source40.dtor_format2; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs43 = (this).LeftParentheses(_998_left); - Dafny.ISequence _1001_leftLeftP = _let_tmp_rhs43.dtor__0; - Dafny.ISequence _1002_leftRighP = _let_tmp_rhs43.dtor__1; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs44 = (this).RightParentheses(_999_right); - Dafny.ISequence _1003_rightLeftP = _let_tmp_rhs44.dtor__0; - Dafny.ISequence _1004_rightRightP = _let_tmp_rhs44.dtor__1; - Dafny.ISequence _1005_opRendered = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _997_op2), Dafny.Sequence.UnicodeFromString(" ")); - Dafny.ISequence _1006_indLeft = (((_1001_leftLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(ind, RAST.__default.IND)) : (ind)); - Dafny.ISequence _1007_indRight = (((_1003_rightLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(ind, RAST.__default.IND)) : (ind)); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1001_leftLeftP, (_998_left)._ToString(_1006_indLeft)), _1002_leftRighP), _1005_opRendered), _1003_rightLeftP), (_999_right)._ToString(_1007_indRight)), _1004_rightRightP); + if (_source0.is_BinaryOp) { + Dafny.ISequence _38_op2 = _source0.dtor_op2; + RAST._IExpr _39_left = _source0.dtor_left; + RAST._IExpr _40_right = _source0.dtor_right; + DAST.Format._IBinaryOpFormat _41_format = _source0.dtor_format2; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs2 = (this).LeftParentheses(_39_left); + Dafny.ISequence _42_leftLeftP = _let_tmp_rhs2.dtor__0; + Dafny.ISequence _43_leftRighP = _let_tmp_rhs2.dtor__1; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs3 = (this).RightParentheses(_40_right); + Dafny.ISequence _44_rightLeftP = _let_tmp_rhs3.dtor__0; + Dafny.ISequence _45_rightRightP = _let_tmp_rhs3.dtor__1; + Dafny.ISequence _46_opRendered = Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), _38_op2), Dafny.Sequence.UnicodeFromString(" ")); + Dafny.ISequence _47_indLeft = (((_42_leftLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(ind, RAST.__default.IND)) : (ind)); + Dafny.ISequence _48_indRight = (((_44_rightLeftP).Equals(Dafny.Sequence.UnicodeFromString("("))) ? (Dafny.Sequence.Concat(ind, RAST.__default.IND)) : (ind)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_42_leftLeftP, (_39_left)._ToString(_47_indLeft)), _43_leftRighP), _46_opRendered), _44_rightLeftP), (_40_right)._ToString(_48_indRight)), _45_rightRightP); } } { - if (_source40.is_DeclareVar) { - RAST._IDeclareType _1008_declareType = _source40.dtor_declareType; - Dafny.ISequence _1009_name = _source40.dtor_name; - Std.Wrappers._IOption _1010_optType = _source40.dtor_optType; - Std.Wrappers._IOption _1011_optExpr = _source40.dtor_optRhs; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("let "), ((object.Equals(_1008_declareType, RAST.DeclareType.create_MUT())) ? (Dafny.Sequence.UnicodeFromString("mut ")) : (Dafny.Sequence.UnicodeFromString("")))), _1009_name), (((_1010_optType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), ((_1010_optType).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), (((_1011_optExpr).is_Some) ? (Dafny.Helpers.Let, Dafny.ISequence>(((_1011_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)), _pat_let7_0 => Dafny.Helpers.Let, Dafny.ISequence>(_pat_let7_0, _1012_optExprString => (((_1012_optExprString).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("= /*issue with empty RHS*/"), ((((_1011_optExpr).dtor_value).is_RawExpr) ? (Dafny.Sequence.UnicodeFromString("Empty Raw expr")) : (((((_1011_optExpr).dtor_value).is_LiteralString) ? (Dafny.Sequence.UnicodeFromString("Empty string literal")) : (((((_1011_optExpr).dtor_value).is_LiteralInt) ? (Dafny.Sequence.UnicodeFromString("Empty int literal")) : (Dafny.Sequence.UnicodeFromString("Another case"))))))))) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" = "), _1012_optExprString)))))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); + if (_source0.is_DeclareVar) { + RAST._IDeclareType _49_declareType = _source0.dtor_declareType; + Dafny.ISequence _50_name = _source0.dtor_name; + Std.Wrappers._IOption _51_optType = _source0.dtor_optType; + Std.Wrappers._IOption _52_optExpr = _source0.dtor_optRhs; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("let "), ((object.Equals(_49_declareType, RAST.DeclareType.create_MUT())) ? (Dafny.Sequence.UnicodeFromString("mut ")) : (Dafny.Sequence.UnicodeFromString("")))), _50_name), (((_51_optType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(": "), ((_51_optType).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), (((_52_optExpr).is_Some) ? (Dafny.Helpers.Let, Dafny.ISequence>(((_52_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)), _pat_let7_0 => Dafny.Helpers.Let, Dafny.ISequence>(_pat_let7_0, _53_optExprString => (((_53_optExprString).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("= /*issue with empty RHS*/"), ((((_52_optExpr).dtor_value).is_RawExpr) ? (Dafny.Sequence.UnicodeFromString("Empty Raw expr")) : (((((_52_optExpr).dtor_value).is_LiteralString) ? (Dafny.Sequence.UnicodeFromString("Empty string literal")) : (((((_52_optExpr).dtor_value).is_LiteralInt) ? (Dafny.Sequence.UnicodeFromString("Empty int literal")) : (Dafny.Sequence.UnicodeFromString("Another case"))))))))) : (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" = "), _53_optExprString)))))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); } } { - if (_source40.is_Assign) { - Std.Wrappers._IOption _1013_names = _source40.dtor_names; - RAST._IExpr _1014_expr = _source40.dtor_rhs; - Dafny.ISequence _1015_lhs = ((System.Func>)(() => { - Std.Wrappers._IOption _source41 = _1013_names; + if (_source0.is_Assign) { + Std.Wrappers._IOption _54_names = _source0.dtor_names; + RAST._IExpr _55_expr = _source0.dtor_rhs; + Dafny.ISequence _56_lhs = ((System.Func>)(() => { + Std.Wrappers._IOption _source1 = _54_names; { - if (_source41.is_Some) { - RAST._IAssignLhs value0 = _source41.dtor_value; + if (_source1.is_Some) { + RAST._IAssignLhs value0 = _source1.dtor_value; if (value0.is_LocalVar) { - Dafny.ISequence _1016_name = value0.dtor_name; - return Dafny.Sequence.Concat(_1016_name, Dafny.Sequence.UnicodeFromString(" = ")); + Dafny.ISequence _57_name = value0.dtor_name; + return Dafny.Sequence.Concat(_57_name, Dafny.Sequence.UnicodeFromString(" = ")); } } } { - if (_source41.is_Some) { - RAST._IAssignLhs value1 = _source41.dtor_value; + if (_source1.is_Some) { + RAST._IAssignLhs value1 = _source1.dtor_value; if (value1.is_SelectMember) { - RAST._IExpr _1017_member = value1.dtor_on; - Dafny.ISequence _1018_field = value1.dtor_field; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs45 = (RAST.Expr.create_Select(_1017_member, _1018_field)).LeftParentheses(_1017_member); - Dafny.ISequence _1019_leftP = _let_tmp_rhs45.dtor__0; - Dafny.ISequence _1020_rightP = _let_tmp_rhs45.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1019_leftP, (_1017_member)._ToString(ind)), _1020_rightP), Dafny.Sequence.UnicodeFromString(".")), _1018_field), Dafny.Sequence.UnicodeFromString(" = ")); + RAST._IExpr _58_member = value1.dtor_on; + Dafny.ISequence _59_field = value1.dtor_field; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs4 = (RAST.Expr.create_Select(_58_member, _59_field)).LeftParentheses(_58_member); + Dafny.ISequence _60_leftP = _let_tmp_rhs4.dtor__0; + Dafny.ISequence _61_rightP = _let_tmp_rhs4.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_60_leftP, (_58_member)._ToString(ind)), _61_rightP), Dafny.Sequence.UnicodeFromString(".")), _59_field), Dafny.Sequence.UnicodeFromString(" = ")); } } } { - if (_source41.is_Some) { - RAST._IAssignLhs value2 = _source41.dtor_value; + if (_source1.is_Some) { + RAST._IAssignLhs value2 = _source1.dtor_value; if (value2.is_ExtractTuple) { - Dafny.ISequence> _1021_names = value2.dtor_names; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString>(_1021_names, ((System.Func, Dafny.ISequence>)((_1022_name) => { - return _1022_name; + Dafny.ISequence> _62_names = value2.dtor_names; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("("), RAST.__default.SeqToString>(_62_names, ((System.Func, Dafny.ISequence>)((_63_name) => { + return _63_name; })), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString(") = ")); } } } { - if (_source41.is_Some) { - RAST._IAssignLhs value3 = _source41.dtor_value; + if (_source1.is_Some) { + RAST._IAssignLhs value3 = _source1.dtor_value; if (value3.is_Index) { - RAST._IExpr _1023_e = value3.dtor_expr; - Dafny.ISequence _1024_indices = value3.dtor_indices; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs46 = (RAST.Expr.create_Call(_1023_e, _1024_indices)).LeftParentheses(_1023_e); - Dafny.ISequence _1025_leftP = _let_tmp_rhs46.dtor__0; - Dafny.ISequence _1026_rightP = _let_tmp_rhs46.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1025_leftP, (_1023_e)._ToString(ind)), _1026_rightP), Dafny.Sequence.UnicodeFromString("[")), RAST.__default.SeqToString(_1024_indices, Dafny.Helpers.Id, Func>>>((_1027_ind) => ((System.Func>)((_1028_index) => { - return (_1028_index)._ToString(Dafny.Sequence.Concat(_1027_ind, RAST.__default.IND)); + RAST._IExpr _64_e = value3.dtor_expr; + Dafny.ISequence _65_indices = value3.dtor_indices; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs5 = (RAST.Expr.create_Call(_64_e, _65_indices)).LeftParentheses(_64_e); + Dafny.ISequence _66_leftP = _let_tmp_rhs5.dtor__0; + Dafny.ISequence _67_rightP = _let_tmp_rhs5.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_66_leftP, (_64_e)._ToString(ind)), _67_rightP), Dafny.Sequence.UnicodeFromString("[")), RAST.__default.SeqToString(_65_indices, Dafny.Helpers.Id, Func>>>((_68_ind) => ((System.Func>)((_69_index) => { + return (_69_index)._ToString(Dafny.Sequence.Concat(_68_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString("]["))), Dafny.Sequence.UnicodeFromString("] = ")); } } @@ -5517,24 +5520,24 @@ public bool RightRequiresParentheses(RAST._IExpr right) { return Dafny.Sequence.UnicodeFromString("_ = "); } }))(); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1015_lhs, (_1014_expr)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(";")); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(_56_lhs, (_55_expr)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(";")); } } { - if (_source40.is_Labelled) { - Dafny.ISequence _1029_name = _source40.dtor_lbl; - RAST._IExpr _1030_underlying = _source40.dtor_underlying; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("'"), _1029_name), Dafny.Sequence.UnicodeFromString(": ")), (_1030_underlying)._ToString(ind)); + if (_source0.is_Labelled) { + Dafny.ISequence _70_name = _source0.dtor_lbl; + RAST._IExpr _71_underlying = _source0.dtor_underlying; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("'"), _70_name), Dafny.Sequence.UnicodeFromString(": ")), (_71_underlying)._ToString(ind)); } } { - if (_source40.is_Break) { - Std.Wrappers._IOption> _1031_optLbl = _source40.dtor_optLbl; - Std.Wrappers._IOption> _source42 = _1031_optLbl; + if (_source0.is_Break) { + Std.Wrappers._IOption> _72_optLbl = _source0.dtor_optLbl; + Std.Wrappers._IOption> _source2 = _72_optLbl; { - if (_source42.is_Some) { - Dafny.ISequence _1032_lbl = _source42.dtor_value; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("break '"), _1032_lbl), Dafny.Sequence.UnicodeFromString(";")); + if (_source2.is_Some) { + Dafny.ISequence _73_lbl = _source2.dtor_value; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("break '"), _73_lbl), Dafny.Sequence.UnicodeFromString(";")); } } { @@ -5543,13 +5546,13 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } { - if (_source40.is_Continue) { - Std.Wrappers._IOption> _1033_optLbl = _source40.dtor_optLbl; - Std.Wrappers._IOption> _source43 = _1033_optLbl; + if (_source0.is_Continue) { + Std.Wrappers._IOption> _74_optLbl = _source0.dtor_optLbl; + Std.Wrappers._IOption> _source3 = _74_optLbl; { - if (_source43.is_Some) { - Dafny.ISequence _1034_lbl = _source43.dtor_value; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("continue '"), _1034_lbl), Dafny.Sequence.UnicodeFromString(";")); + if (_source3.is_Some) { + Dafny.ISequence _75_lbl = _source3.dtor_value; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("continue '"), _75_lbl), Dafny.Sequence.UnicodeFromString(";")); } } { @@ -5558,95 +5561,95 @@ public bool RightRequiresParentheses(RAST._IExpr right) { } } { - if (_source40.is_Loop) { - Std.Wrappers._IOption _1035_optCond = _source40.dtor_optCond; - RAST._IExpr _1036_underlying = _source40.dtor_underlying; + if (_source0.is_Loop) { + Std.Wrappers._IOption _76_optCond = _source0.dtor_optCond; + RAST._IExpr _77_underlying = _source0.dtor_underlying; 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 _source44 = _1035_optCond; + Std.Wrappers._IOption _source4 = _76_optCond; { - if (_source44.is_None) { + if (_source4.is_None) { return Dafny.Sequence.UnicodeFromString("loop"); } } { - RAST._IExpr _1037_c = _source44.dtor_value; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("while "), (_1037_c)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))); + RAST._IExpr _78_c = _source4.dtor_value; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("while "), (_78_c)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))); } - }))(), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_1036_underlying)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); + }))(), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_77_underlying)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } { - if (_source40.is_For) { - Dafny.ISequence _1038_name = _source40.dtor_name; - RAST._IExpr _1039_range = _source40.dtor_range; - RAST._IExpr _1040_body = _source40.dtor_body; - 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 "), _1038_name), Dafny.Sequence.UnicodeFromString(" in ")), (_1039_range)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_1040_body)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); + if (_source0.is_For) { + Dafny.ISequence _79_name = _source0.dtor_name; + RAST._IExpr _80_range = _source0.dtor_range; + RAST._IExpr _81_body = _source0.dtor_body; + 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 "), _79_name), Dafny.Sequence.UnicodeFromString(" in ")), (_80_range)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString(" {\n")), ind), RAST.__default.IND), (_81_body)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } } { - if (_source40.is_Return) { - Std.Wrappers._IOption _1041_optExpr = _source40.dtor_optExpr; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("return"), (((_1041_optExpr).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), ((_1041_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); + if (_source0.is_Return) { + Std.Wrappers._IOption _82_optExpr = _source0.dtor_optExpr; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("return"), (((_82_optExpr).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" "), ((_82_optExpr).dtor_value)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)))) : (Dafny.Sequence.UnicodeFromString("")))), Dafny.Sequence.UnicodeFromString(";")); } } { - if (_source40.is_CallType) { - RAST._IExpr _1042_expr = _source40.dtor_obj; - Dafny.ISequence _1043_tpes = _source40.dtor_typeParameters; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs47 = (this).LeftParentheses(_1042_expr); - Dafny.ISequence _1044_leftP = _let_tmp_rhs47.dtor__0; - Dafny.ISequence _1045_rightP = _let_tmp_rhs47.dtor__1; - if ((_1043_tpes).Equals(Dafny.Sequence.FromElements())) { - return (_1042_expr)._ToString(ind); + if (_source0.is_CallType) { + RAST._IExpr _83_expr = _source0.dtor_obj; + Dafny.ISequence _84_tpes = _source0.dtor_typeParameters; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs6 = (this).LeftParentheses(_83_expr); + Dafny.ISequence _85_leftP = _let_tmp_rhs6.dtor__0; + Dafny.ISequence _86_rightP = _let_tmp_rhs6.dtor__1; + if ((_84_tpes).Equals(Dafny.Sequence.FromElements())) { + return (_83_expr)._ToString(ind); } else { - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1044_leftP, (_1042_expr)._ToString(ind)), _1045_rightP), Dafny.Sequence.UnicodeFromString("::<")), RAST.__default.SeqToString(_1043_tpes, Dafny.Helpers.Id, Func>>>((_1046_ind) => ((System.Func>)((_1047_tpe) => { - return (_1047_tpe)._ToString(Dafny.Sequence.Concat(_1046_ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_85_leftP, (_83_expr)._ToString(ind)), _86_rightP), Dafny.Sequence.UnicodeFromString("::<")), RAST.__default.SeqToString(_84_tpes, Dafny.Helpers.Id, Func>>>((_87_ind) => ((System.Func>)((_88_tpe) => { + return (_88_tpe)._ToString(Dafny.Sequence.Concat(_87_ind, RAST.__default.IND)); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(">")); } } } { - if (_source40.is_Call) { - RAST._IExpr _1048_expr = _source40.dtor_obj; - Dafny.ISequence _1049_args = _source40.dtor_arguments; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs48 = (this).LeftParentheses(_1048_expr); - Dafny.ISequence _1050_leftP = _let_tmp_rhs48.dtor__0; - Dafny.ISequence _1051_rightP = _let_tmp_rhs48.dtor__1; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs49 = ((System.Func<_System._ITuple2, Dafny.ISequence>>)(() => { - Std.Wrappers._IOption> _source45 = (_1048_expr).RightMostIdentifier(); + if (_source0.is_Call) { + RAST._IExpr _89_expr = _source0.dtor_obj; + Dafny.ISequence _90_args = _source0.dtor_arguments; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs7 = (this).LeftParentheses(_89_expr); + Dafny.ISequence _91_leftP = _let_tmp_rhs7.dtor__0; + Dafny.ISequence _92_rightP = _let_tmp_rhs7.dtor__1; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs8 = ((System.Func<_System._ITuple2, Dafny.ISequence>>)(() => { + Std.Wrappers._IOption> _source5 = (_89_expr).RightMostIdentifier(); { - bool disjunctiveMatch1 = false; - if (_source45.is_Some) { - Dafny.ISequence value4 = _source45.dtor_value; + bool disjunctiveMatch0 = false; + if (_source5.is_Some) { + Dafny.ISequence value4 = _source5.dtor_value; if (object.Equals(value4, Dafny.Sequence.UnicodeFromString("seq!"))) { - disjunctiveMatch1 = true; + disjunctiveMatch0 = true; } } - if (_source45.is_Some) { - Dafny.ISequence value5 = _source45.dtor_value; + if (_source5.is_Some) { + Dafny.ISequence value5 = _source5.dtor_value; if (object.Equals(value5, Dafny.Sequence.UnicodeFromString("map!"))) { - disjunctiveMatch1 = true; + disjunctiveMatch0 = true; } } - if (disjunctiveMatch1) { + if (disjunctiveMatch0) { return _System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("["), Dafny.Sequence.UnicodeFromString("]")); } } { - bool disjunctiveMatch2 = false; - if (_source45.is_Some) { - Dafny.ISequence value6 = _source45.dtor_value; + bool disjunctiveMatch1 = false; + if (_source5.is_Some) { + Dafny.ISequence value6 = _source5.dtor_value; if (object.Equals(value6, Dafny.Sequence.UnicodeFromString("set!"))) { - disjunctiveMatch2 = true; + disjunctiveMatch1 = true; } } - if (_source45.is_Some) { - Dafny.ISequence value7 = _source45.dtor_value; + if (_source5.is_Some) { + Dafny.ISequence value7 = _source5.dtor_value; if (object.Equals(value7, Dafny.Sequence.UnicodeFromString("multiset!"))) { - disjunctiveMatch2 = true; + disjunctiveMatch1 = true; } } - if (disjunctiveMatch2) { + if (disjunctiveMatch1) { return _System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("{"), Dafny.Sequence.UnicodeFromString("}")); } } @@ -5654,57 +5657,57 @@ public bool RightRequiresParentheses(RAST._IExpr right) { return _System.Tuple2, Dafny.ISequence>.create(Dafny.Sequence.UnicodeFromString("("), Dafny.Sequence.UnicodeFromString(")")); } }))(); - Dafny.ISequence _1052_leftCallP = _let_tmp_rhs49.dtor__0; - Dafny.ISequence _1053_rightCallP = _let_tmp_rhs49.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1050_leftP, (_1048_expr)._ToString(ind)), _1051_rightP), _1052_leftCallP), RAST.__default.SeqToString(_1049_args, Dafny.Helpers.Id, Func>>>((_1054_ind) => ((System.Func>)((_1055_arg) => { - return (_1055_arg)._ToString(Dafny.Sequence.Concat(_1054_ind, RAST.__default.IND)); - })))(ind), Dafny.Sequence.UnicodeFromString(", "))), _1053_rightCallP); + Dafny.ISequence _93_leftCallP = _let_tmp_rhs8.dtor__0; + Dafny.ISequence _94_rightCallP = _let_tmp_rhs8.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_91_leftP, (_89_expr)._ToString(ind)), _92_rightP), _93_leftCallP), RAST.__default.SeqToString(_90_args, Dafny.Helpers.Id, Func>>>((_95_ind) => ((System.Func>)((_96_arg) => { + return (_96_arg)._ToString(Dafny.Sequence.Concat(_95_ind, RAST.__default.IND)); + })))(ind), Dafny.Sequence.UnicodeFromString(", "))), _94_rightCallP); } } { - if (_source40.is_Select) { - RAST._IExpr _1056_expression = _source40.dtor_obj; - Dafny.ISequence _1057_name = _source40.dtor_name; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs50 = (this).LeftParentheses(_1056_expression); - Dafny.ISequence _1058_leftP = _let_tmp_rhs50.dtor__0; - Dafny.ISequence _1059_rightP = _let_tmp_rhs50.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1058_leftP, (_1056_expression)._ToString(ind)), _1059_rightP), Dafny.Sequence.UnicodeFromString(".")), _1057_name); + if (_source0.is_Select) { + RAST._IExpr _97_expression = _source0.dtor_obj; + Dafny.ISequence _98_name = _source0.dtor_name; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs9 = (this).LeftParentheses(_97_expression); + Dafny.ISequence _99_leftP = _let_tmp_rhs9.dtor__0; + Dafny.ISequence _100_rightP = _let_tmp_rhs9.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_99_leftP, (_97_expression)._ToString(ind)), _100_rightP), Dafny.Sequence.UnicodeFromString(".")), _98_name); } } { - if (_source40.is_SelectIndex) { - RAST._IExpr _1060_expression = _source40.dtor_obj; - RAST._IExpr _1061_range = _source40.dtor_range; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs51 = (this).LeftParentheses(_1060_expression); - Dafny.ISequence _1062_leftP = _let_tmp_rhs51.dtor__0; - Dafny.ISequence _1063_rightP = _let_tmp_rhs51.dtor__1; - Dafny.ISequence _1064_rangeStr = (_1061_range)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)); - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1062_leftP, (_1060_expression)._ToString(ind)), _1063_rightP), Dafny.Sequence.UnicodeFromString("[")), _1064_rangeStr), Dafny.Sequence.UnicodeFromString("]")); + if (_source0.is_SelectIndex) { + RAST._IExpr _101_expression = _source0.dtor_obj; + RAST._IExpr _102_range = _source0.dtor_range; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs10 = (this).LeftParentheses(_101_expression); + Dafny.ISequence _103_leftP = _let_tmp_rhs10.dtor__0; + Dafny.ISequence _104_rightP = _let_tmp_rhs10.dtor__1; + Dafny.ISequence _105_rangeStr = (_102_range)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND)); + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_103_leftP, (_101_expression)._ToString(ind)), _104_rightP), Dafny.Sequence.UnicodeFromString("[")), _105_rangeStr), Dafny.Sequence.UnicodeFromString("]")); } } { - if (_source40.is_MemberSelect) { - RAST._IExpr _1065_expression = _source40.dtor_obj; - Dafny.ISequence _1066_name = _source40.dtor_name; - _System._ITuple2, Dafny.ISequence> _let_tmp_rhs52 = (this).LeftParentheses(_1065_expression); - Dafny.ISequence _1067_leftP = _let_tmp_rhs52.dtor__0; - Dafny.ISequence _1068_rightP = _let_tmp_rhs52.dtor__1; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_1067_leftP, (_1065_expression)._ToString(ind)), _1068_rightP), Dafny.Sequence.UnicodeFromString("::")), _1066_name); + if (_source0.is_MemberSelect) { + RAST._IExpr _106_expression = _source0.dtor_obj; + Dafny.ISequence _107_name = _source0.dtor_name; + _System._ITuple2, Dafny.ISequence> _let_tmp_rhs11 = (this).LeftParentheses(_106_expression); + Dafny.ISequence _108_leftP = _let_tmp_rhs11.dtor__0; + Dafny.ISequence _109_rightP = _let_tmp_rhs11.dtor__1; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(_108_leftP, (_106_expression)._ToString(ind)), _109_rightP), Dafny.Sequence.UnicodeFromString("::")), _107_name); } } { - if (_source40.is_Lambda) { - Dafny.ISequence _1069_params = _source40.dtor_params; - Std.Wrappers._IOption _1070_retType = _source40.dtor_retType; - RAST._IExpr _1071_body = _source40.dtor_body; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("move |"), RAST.__default.SeqToString(_1069_params, Dafny.Helpers.Id, Func>>>((_1072_ind) => ((System.Func>)((_1073_arg) => { - return (_1073_arg)._ToString(_1072_ind); - })))(ind), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("| ")), (((_1070_retType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("-> "), ((_1070_retType).dtor_value)._ToString(ind))) : (Dafny.Sequence.UnicodeFromString("")))), ((((_1070_retType).is_Some) && (!((_1071_body).is_Block))) ? ((RAST.Expr.create_Block(_1071_body))._ToString(ind)) : ((_1071_body)._ToString(ind)))); + if (_source0.is_Lambda) { + Dafny.ISequence _110_params = _source0.dtor_params; + Std.Wrappers._IOption _111_retType = _source0.dtor_retType; + RAST._IExpr _112_body = _source0.dtor_body; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("move |"), RAST.__default.SeqToString(_110_params, Dafny.Helpers.Id, Func>>>((_113_ind) => ((System.Func>)((_114_arg) => { + return (_114_arg)._ToString(_113_ind); + })))(ind), Dafny.Sequence.UnicodeFromString(","))), Dafny.Sequence.UnicodeFromString("| ")), (((_111_retType).is_Some) ? (Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("-> "), ((_111_retType).dtor_value)._ToString(ind))) : (Dafny.Sequence.UnicodeFromString("")))), ((((_111_retType).is_Some) && (!((_112_body).is_Block))) ? ((RAST.Expr.create_Block(_112_body))._ToString(ind)) : ((_112_body)._ToString(ind)))); } } { - RAST._IExpr _1074_r = _source40; - return RAST.__default.AddIndent((_1074_r).dtor_content, ind); + RAST._IExpr _115_r = _source0; + return RAST.__default.AddIndent((_115_r).dtor_content, ind); } } public RAST._IExpr Then(RAST._IExpr rhs2) { @@ -5739,7 +5742,7 @@ public RAST._IExpr Apply1(RAST._IExpr argument) { return RAST.Expr.create_Call(this, Dafny.Sequence.FromElements(argument)); } public bool IsLhsIdentifier() { - return ((this).is_Identifier) || (((this).is_Call) && ((((object.Equals((this).dtor_obj, (RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("modify!")))) && ((new BigInteger(((this).dtor_arguments).Count)) == (BigInteger.One))) && ((((this).dtor_arguments).Select(BigInteger.Zero)).is_Identifier)) || (((object.Equals((this).dtor_obj, (RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("md!")))) && ((new BigInteger(((this).dtor_arguments).Count)) == (BigInteger.One))) && (Dafny.Helpers.Let(((this).dtor_arguments).Select(BigInteger.Zero), _pat_let8_0 => Dafny.Helpers.Let(_pat_let8_0, _1075_lhs => (((_1075_lhs).is_Call) && (((_1075_lhs).dtor_obj).is_Select)) && ((((_1075_lhs).dtor_obj).dtor_obj).is_Identifier))))))); + return ((this).is_Identifier) || (((this).is_Call) && ((((object.Equals((this).dtor_obj, (RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("modify!")))) && ((new BigInteger(((this).dtor_arguments).Count)) == (BigInteger.One))) && ((((this).dtor_arguments).Select(BigInteger.Zero)).is_Identifier)) || (((object.Equals((this).dtor_obj, (RAST.__default.dafny__runtime).MSel(Dafny.Sequence.UnicodeFromString("md!")))) && ((new BigInteger(((this).dtor_arguments).Count)) == (BigInteger.One))) && (Dafny.Helpers.Let(((this).dtor_arguments).Select(BigInteger.Zero), _pat_let8_0 => Dafny.Helpers.Let(_pat_let8_0, _0_lhs => (((_0_lhs).is_Call) && (((_0_lhs).dtor_obj).is_Select)) && ((((_0_lhs).dtor_obj).dtor_obj).is_Identifier))))))); } public Dafny.ISequence LhsIdentifierName() { if ((this).is_Identifier) { @@ -5754,66 +5757,66 @@ public RAST._IExpr Clone() { return (RAST.Expr.create_Select(this, Dafny.Sequence.UnicodeFromString("clone"))).Apply(Dafny.Sequence.FromElements()); } public RAST._IPrintingInfo printingInfo { get { - RAST._IExpr _source46 = this; + RAST._IExpr _source0 = this; { - if (_source46.is_RawExpr) { + if (_source0.is_RawExpr) { return RAST.PrintingInfo.create_UnknownPrecedence(); } } { - if (_source46.is_ExprFromType) { + if (_source0.is_ExprFromType) { return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } { - if (_source46.is_Identifier) { + if (_source0.is_Identifier) { return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } { - if (_source46.is_LiteralInt) { + if (_source0.is_LiteralInt) { return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } { - if (_source46.is_LiteralBool) { + if (_source0.is_LiteralBool) { return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } { - if (_source46.is_LiteralString) { + if (_source0.is_LiteralString) { return RAST.PrintingInfo.create_Precedence(BigInteger.One); } } { - if (_source46.is_UnaryOp) { - Dafny.ISequence _1076_op = _source46.dtor_op1; - RAST._IExpr _1077_underlying = _source46.dtor_underlying; - DAST.Format._IUnaryOpFormat _1078_format = _source46.dtor_format; - Dafny.ISequence _source47 = _1076_op; + if (_source0.is_UnaryOp) { + Dafny.ISequence _0_op = _source0.dtor_op1; + RAST._IExpr _1_underlying = _source0.dtor_underlying; + DAST.Format._IUnaryOpFormat _2_format = _source0.dtor_format; + Dafny.ISequence _source1 = _0_op; { - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("?"))) { + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("?"))) { return RAST.PrintingInfo.create_SuffixPrecedence(new BigInteger(5)); } } { - bool disjunctiveMatch3 = false; - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("-"))) { - disjunctiveMatch3 = true; + bool disjunctiveMatch0 = false; + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("-"))) { + disjunctiveMatch0 = true; } - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("*"))) { - disjunctiveMatch3 = true; + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("*"))) { + disjunctiveMatch0 = true; } - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("!"))) { - disjunctiveMatch3 = true; + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("!"))) { + disjunctiveMatch0 = true; } - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("&"))) { - disjunctiveMatch3 = true; + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("&"))) { + disjunctiveMatch0 = true; } - if (object.Equals(_source47, Dafny.Sequence.UnicodeFromString("&mut"))) { - disjunctiveMatch3 = true; + if (object.Equals(_source1, Dafny.Sequence.UnicodeFromString("&mut"))) { + disjunctiveMatch0 = true; } - if (disjunctiveMatch3) { + if (disjunctiveMatch0) { return RAST.PrintingInfo.create_Precedence(new BigInteger(6)); } } @@ -5823,186 +5826,186 @@ public RAST._IPrintingInfo printingInfo { get { } } { - if (_source46.is_Select) { - RAST._IExpr _1079_underlying = _source46.dtor_obj; - Dafny.ISequence _1080_name = _source46.dtor_name; + if (_source0.is_Select) { + RAST._IExpr _3_underlying = _source0.dtor_obj; + Dafny.ISequence _4_name = _source0.dtor_name; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_SelectIndex) { - RAST._IExpr _1081_underlying = _source46.dtor_obj; - RAST._IExpr _1082_range = _source46.dtor_range; + if (_source0.is_SelectIndex) { + RAST._IExpr _5_underlying = _source0.dtor_obj; + RAST._IExpr _6_range = _source0.dtor_range; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_MemberSelect) { - RAST._IExpr _1083_underlying = _source46.dtor_obj; - Dafny.ISequence _1084_name = _source46.dtor_name; + if (_source0.is_MemberSelect) { + RAST._IExpr _7_underlying = _source0.dtor_obj; + Dafny.ISequence _8_name = _source0.dtor_name; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_CallType) { + if (_source0.is_CallType) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_Call) { + if (_source0.is_Call) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(2), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_TypeAscription) { - RAST._IExpr _1085_left = _source46.dtor_left; - RAST._IType _1086_tpe = _source46.dtor_tpe; + if (_source0.is_TypeAscription) { + RAST._IExpr _9_left = _source0.dtor_left; + RAST._IType _10_tpe = _source0.dtor_tpe; return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(10), RAST.Associativity.create_LeftToRight()); } } { - if (_source46.is_BinaryOp) { - Dafny.ISequence _1087_op2 = _source46.dtor_op2; - RAST._IExpr _1088_left = _source46.dtor_left; - RAST._IExpr _1089_right = _source46.dtor_right; - DAST.Format._IBinaryOpFormat _1090_format = _source46.dtor_format2; - Dafny.ISequence _source48 = _1087_op2; + if (_source0.is_BinaryOp) { + Dafny.ISequence _11_op2 = _source0.dtor_op2; + RAST._IExpr _12_left = _source0.dtor_left; + RAST._IExpr _13_right = _source0.dtor_right; + DAST.Format._IBinaryOpFormat _14_format = _source0.dtor_format2; + Dafny.ISequence _source2 = _11_op2; { - bool disjunctiveMatch4 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("*"))) { - disjunctiveMatch4 = true; + bool disjunctiveMatch1 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("*"))) { + disjunctiveMatch1 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("/"))) { - disjunctiveMatch4 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("/"))) { + disjunctiveMatch1 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("%"))) { - disjunctiveMatch4 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("%"))) { + disjunctiveMatch1 = true; } - if (disjunctiveMatch4) { + if (disjunctiveMatch1) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(20), RAST.Associativity.create_LeftToRight()); } } { - bool disjunctiveMatch5 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("+"))) { - disjunctiveMatch5 = true; + bool disjunctiveMatch2 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("+"))) { + disjunctiveMatch2 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("-"))) { - disjunctiveMatch5 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("-"))) { + disjunctiveMatch2 = true; } - if (disjunctiveMatch5) { + if (disjunctiveMatch2) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(30), RAST.Associativity.create_LeftToRight()); } } { - bool disjunctiveMatch6 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("<<"))) { - disjunctiveMatch6 = true; + bool disjunctiveMatch3 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("<<"))) { + disjunctiveMatch3 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString(">>"))) { - disjunctiveMatch6 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString(">>"))) { + disjunctiveMatch3 = true; } - if (disjunctiveMatch6) { + if (disjunctiveMatch3) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(40), RAST.Associativity.create_LeftToRight()); } } { - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("&"))) { + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("&"))) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(50), RAST.Associativity.create_LeftToRight()); } } { - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("^"))) { + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("^"))) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(60), RAST.Associativity.create_LeftToRight()); } } { - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("|"))) { + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("|"))) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(70), RAST.Associativity.create_LeftToRight()); } } { - bool disjunctiveMatch7 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("=="))) { - disjunctiveMatch7 = true; + bool disjunctiveMatch4 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("=="))) { + disjunctiveMatch4 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("!="))) { - disjunctiveMatch7 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("!="))) { + disjunctiveMatch4 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("<"))) { - disjunctiveMatch7 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("<"))) { + disjunctiveMatch4 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString(">"))) { - disjunctiveMatch7 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString(">"))) { + disjunctiveMatch4 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("<="))) { - disjunctiveMatch7 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("<="))) { + disjunctiveMatch4 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString(">="))) { - disjunctiveMatch7 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString(">="))) { + disjunctiveMatch4 = true; } - if (disjunctiveMatch7) { + if (disjunctiveMatch4) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(80), RAST.Associativity.create_RequiresParentheses()); } } { - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("&&"))) { + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("&&"))) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(90), RAST.Associativity.create_LeftToRight()); } } { - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("||"))) { + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("||"))) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(100), RAST.Associativity.create_LeftToRight()); } } { - bool disjunctiveMatch8 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString(".."))) { - disjunctiveMatch8 = true; + bool disjunctiveMatch5 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString(".."))) { + disjunctiveMatch5 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("..="))) { - disjunctiveMatch8 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("..="))) { + disjunctiveMatch5 = true; } - if (disjunctiveMatch8) { + if (disjunctiveMatch5) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RequiresParentheses()); } } { - bool disjunctiveMatch9 = false; - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("="))) { - disjunctiveMatch9 = true; + bool disjunctiveMatch6 = false; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("+="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("+="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("-="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("-="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("*="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("*="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("/="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("/="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("%="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("%="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("&="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("&="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("|="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("|="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("^="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("^="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString("<<="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString("<<="))) { + disjunctiveMatch6 = true; } - if (object.Equals(_source48, Dafny.Sequence.UnicodeFromString(">>="))) { - disjunctiveMatch9 = true; + if (object.Equals(_source2, Dafny.Sequence.UnicodeFromString(">>="))) { + disjunctiveMatch6 = true; } - if (disjunctiveMatch9) { + if (disjunctiveMatch6) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(110), RAST.Associativity.create_RightToLeft()); } } @@ -6012,7 +6015,7 @@ public RAST._IPrintingInfo printingInfo { get { } } { - if (_source46.is_Lambda) { + if (_source0.is_Lambda) { return RAST.PrintingInfo.create_PrecedenceAssociativity(new BigInteger(300), RAST.Associativity.create_LeftToRight()); } } @@ -7053,29 +7056,29 @@ public Std.Wrappers._IOption 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.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>>>((_1091_ind) => ((System.Func>)((_1092_formal) => { - return (_1092_formal)._ToString(_1091_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>>>((_0_ind) => ((System.Func>)((_1_formal) => { + return (_1_formal)._ToString(_0_ind); })))(ind), Dafny.Sequence.UnicodeFromString(", "))), Dafny.Sequence.UnicodeFromString(")")), ((System.Func>)(() => { - Std.Wrappers._IOption _source49 = (this).dtor_returnType; + Std.Wrappers._IOption _source0 = (this).dtor_returnType; { - if (_source49.is_Some) { - RAST._IType _1093_t = _source49.dtor_value; - return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" -> "), (_1093_t)._ToString(ind)); + if (_source0.is_Some) { + RAST._IType _2_t = _source0.dtor_value; + return Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" -> "), (_2_t)._ToString(ind)); } } { return Dafny.Sequence.UnicodeFromString(""); } }))()), ((((this).dtor_where).Equals(Dafny.Sequence.UnicodeFromString(""))) ? (Dafny.Sequence.UnicodeFromString("")) : (Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString("\n"), ind), RAST.__default.IND), (this).dtor_where)))), ((System.Func>)(() => { - Std.Wrappers._IOption _source50 = (this).dtor_body; + Std.Wrappers._IOption _source1 = (this).dtor_body; { - if (_source50.is_None) { + if (_source1.is_None) { return Dafny.Sequence.UnicodeFromString(";"); } } { - RAST._IExpr _1094_body = _source50.dtor_value; - return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {\n"), ind), RAST.__default.IND), (_1094_body)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); + RAST._IExpr _3_body = _source1.dtor_value; + return Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.Concat(Dafny.Sequence.UnicodeFromString(" {\n"), ind), RAST.__default.IND), (_3_body)._ToString(Dafny.Sequence.Concat(ind, RAST.__default.IND))), Dafny.Sequence.UnicodeFromString("\n")), ind), Dafny.Sequence.UnicodeFromString("}")); } }))()); } diff --git a/Source/DafnyCore/GeneratedFromDafny/ResolvedDesugaredExecutableDafnyPlugin.cs b/Source/DafnyCore/GeneratedFromDafny/ResolvedDesugaredExecutableDafnyPlugin.cs index b157ecc9685..b62b79525a8 100644 --- a/Source/DafnyCore/GeneratedFromDafny/ResolvedDesugaredExecutableDafnyPlugin.cs +++ b/Source/DafnyCore/GeneratedFromDafny/ResolvedDesugaredExecutableDafnyPlugin.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace ResolvedDesugaredExecutableDafnyPlugin { @@ -18,9 +21,9 @@ public COMP() { public static Dafny.ISequence Compile(Dafny.ISequence p) { Dafny.ISequence s = Dafny.Sequence.Empty; - Dafny.ISequence _out14; - _out14 = D2DPrettyPrinter.__default.PrettyPrint(p); - s = _out14; + Dafny.ISequence _out0; + _out0 = D2DPrettyPrinter.__default.PrettyPrint(p); + s = _out0; return s; } public static Dafny.ISequence EmitCallToMain(Dafny.ISequence> fullName) diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic.cs index fd436cb0724..c3f38daaa5b 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternals.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternals.cs index bfbe3ceaa47..997d1b461c8 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternals.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternals.cs @@ -8,29 +8,32 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.DivInternals { public partial class __default { public static BigInteger DivPos(BigInteger x, BigInteger d) { - BigInteger _136___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if ((x).Sign == -1) { - _136___accumulator = (_136___accumulator) + (new BigInteger(-1)); - BigInteger _in38 = (x) + (d); - BigInteger _in39 = d; - x = _in38; - d = _in39; + _0___accumulator = (_0___accumulator) + (new BigInteger(-1)); + BigInteger _in0 = (x) + (d); + BigInteger _in1 = d; + x = _in0; + d = _in1; goto TAIL_CALL_START; } else if ((x) < (d)) { - return (BigInteger.Zero) + (_136___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _136___accumulator = (_136___accumulator) + (BigInteger.One); - BigInteger _in40 = (x) - (d); - BigInteger _in41 = d; - x = _in40; - d = _in41; + _0___accumulator = (_0___accumulator) + (BigInteger.One); + BigInteger _in2 = (x) - (d); + BigInteger _in3 = d; + x = _in2; + d = _in3; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternalsNonlinear.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternalsNonlinear.cs index 1cb3e322f6d..42ee76c580c 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternalsNonlinear.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivInternalsNonlinear.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.DivInternalsNonlinear { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivMod.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivMod.cs index 6f44e6546e6..0cacb4aa840 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivMod.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_DivMod.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.DivMod { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_GeneralInternals.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_GeneralInternals.cs index af3ea448344..bfbf27c915b 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_GeneralInternals.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_GeneralInternals.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.GeneralInternals { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Logarithm.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Logarithm.cs index f52e1c30836..de30d84acaf 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Logarithm.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Logarithm.cs @@ -8,22 +8,25 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.Logarithm { public partial class __default { public static BigInteger Log(BigInteger @base, BigInteger pow) { - BigInteger _138___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if ((pow) < (@base)) { - return (BigInteger.Zero) + (_138___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _138___accumulator = (_138___accumulator) + (BigInteger.One); - BigInteger _in44 = @base; - BigInteger _in45 = Dafny.Helpers.EuclideanDivision(pow, @base); - @base = _in44; - pow = _in45; + _0___accumulator = (_0___accumulator) + (BigInteger.One); + BigInteger _in0 = @base; + BigInteger _in1 = Dafny.Helpers.EuclideanDivision(pow, @base); + @base = _in0; + pow = _in1; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternals.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternals.cs index a3707de82d9..956c44501c2 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternals.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternals.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.ModInternals { @@ -16,18 +19,18 @@ public static BigInteger ModRecursive(BigInteger x, BigInteger d) { TAIL_CALL_START: ; if ((x).Sign == -1) { - BigInteger _in34 = (d) + (x); - BigInteger _in35 = d; - x = _in34; - d = _in35; + BigInteger _in0 = (d) + (x); + BigInteger _in1 = d; + x = _in0; + d = _in1; goto TAIL_CALL_START; } else if ((x) < (d)) { return x; } else { - BigInteger _in36 = (x) - (d); - BigInteger _in37 = d; - x = _in36; - d = _in37; + BigInteger _in2 = (x) - (d); + BigInteger _in3 = d; + x = _in2; + d = _in3; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternalsNonlinear.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternalsNonlinear.cs index d283e6740c8..30cf7f2c8e8 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternalsNonlinear.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_ModInternalsNonlinear.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.ModInternalsNonlinear { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Mul.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Mul.cs index 55e8945e646..9def4d585f7 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Mul.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Mul.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.Mul { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternals.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternals.cs index 85a3a8e5795..dbbe9443722 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternals.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternals.cs @@ -8,22 +8,25 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.MulInternals { public partial class __default { public static BigInteger MulPos(BigInteger x, BigInteger y) { - BigInteger _135___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if ((x).Sign == 0) { - return (BigInteger.Zero) + (_135___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _135___accumulator = (_135___accumulator) + (y); - BigInteger _in32 = (x) - (BigInteger.One); - BigInteger _in33 = y; - x = _in32; - y = _in33; + _0___accumulator = (_0___accumulator) + (y); + BigInteger _in0 = (x) - (BigInteger.One); + BigInteger _in1 = y; + x = _in0; + y = _in1; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternalsNonlinear.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternalsNonlinear.cs index 9b6610c8a89..28123ed8dd2 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternalsNonlinear.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_MulInternalsNonlinear.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.MulInternalsNonlinear { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power.cs index d7b70998db2..5d473618d6f 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power.cs @@ -8,22 +8,25 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.Power { public partial class __default { public static BigInteger Pow(BigInteger b, BigInteger e) { - BigInteger _137___accumulator = BigInteger.One; + BigInteger _0___accumulator = BigInteger.One; TAIL_CALL_START: ; if ((e).Sign == 0) { - return (BigInteger.One) * (_137___accumulator); + return (BigInteger.One) * (_0___accumulator); } else { - _137___accumulator = (_137___accumulator) * (b); - BigInteger _in42 = b; - BigInteger _in43 = (e) - (BigInteger.One); - b = _in42; - e = _in43; + _0___accumulator = (_0___accumulator) * (b); + BigInteger _in0 = b; + BigInteger _in1 = (e) - (BigInteger.One); + b = _in0; + e = _in1; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power2.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power2.cs index 27de265928c..8251fce2577 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power2.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Arithmetic_Power2.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Arithmetic.Power2 { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Collections_Seq.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Collections_Seq.cs index 46f43f95718..8f4194df420 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Collections_Seq.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Collections_Seq.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Collections.Seq { @@ -27,23 +30,23 @@ public static Dafny.ISequence<__T> DropLast<__T>(Dafny.ISequence<__T> xs) { public static __T[] ToArray<__T>(Dafny.ISequence<__T> xs) { __T[] a = new __T[0]; - Func _init2 = Dafny.Helpers.Id, Func>>((_69_xs) => ((System.Func)((_70_i) => { - return (_69_xs).Select(_70_i); + Func _init0 = Dafny.Helpers.Id, Func>>((_0_xs) => ((System.Func)((_1_i) => { + return (_0_xs).Select(_1_i); })))(xs); - __T[] _nw3 = new __T[Dafny.Helpers.ToIntChecked(new BigInteger((xs).Count), "array size exceeds memory limit")]; - for (var _i0_2 = 0; _i0_2 < new BigInteger(_nw3.Length); _i0_2++) { - _nw3[(int)(_i0_2)] = _init2(_i0_2); + __T[] _nw0 = new __T[Dafny.Helpers.ToIntChecked(new BigInteger((xs).Count), "array size exceeds memory limit")]; + for (var _i0_0 = 0; _i0_0 < new BigInteger(_nw0.Length); _i0_0++) { + _nw0[(int)(_i0_0)] = _init0(_i0_0); } - a = _nw3; + a = _nw0; return a; } public static Dafny.ISet<__T> ToSet<__T>(Dafny.ISequence<__T> xs) { - return Dafny.Helpers.Id, Dafny.ISet<__T>>>((_71_xs) => ((System.Func>)(() => { + return Dafny.Helpers.Id, Dafny.ISet<__T>>>((_0_xs) => ((System.Func>)(() => { var _coll0 = new System.Collections.Generic.List<__T>(); - foreach (__T _compr_0 in (_71_xs).CloneAsArray()) { - __T _72_x = (__T)_compr_0; - if ((_71_xs).Contains(_72_x)) { - _coll0.Add(_72_x); + foreach (__T _compr_0 in (_0_xs).CloneAsArray()) { + __T _1_x = (__T)_compr_0; + if ((_0_xs).Contains(_1_x)) { + _coll0.Add(_1_x); } } return Dafny.Set<__T>.FromCollection(_coll0); @@ -51,12 +54,12 @@ public static Dafny.ISet<__T> ToSet<__T>(Dafny.ISequence<__T> xs) { } public static BigInteger IndexOf<__T>(Dafny.ISequence<__T> xs, __T v) { - BigInteger _73___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if (object.Equals((xs).Select(BigInteger.Zero), v)) { - return (BigInteger.Zero) + (_73___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _73___accumulator = (_73___accumulator) + (BigInteger.One); + _0___accumulator = (_0___accumulator) + (BigInteger.One); Dafny.ISequence<__T> _in0 = (xs).Drop(BigInteger.One); __T _in1 = v; xs = _in0; @@ -66,8 +69,8 @@ public static BigInteger IndexOf<__T>(Dafny.ISequence<__T> xs, __T v) } public static Std.Wrappers._IOption IndexOfOption<__T>(Dafny.ISequence<__T> xs, __T v) { - return Std.Collections.Seq.__default.IndexByOption<__T>(xs, Dafny.Helpers.Id>>((_74_v) => ((System.Func<__T, bool>)((_75_x) => { - return object.Equals(_75_x, _74_v); + return Std.Collections.Seq.__default.IndexByOption<__T>(xs, Dafny.Helpers.Id>>((_0_v) => ((System.Func<__T, bool>)((_1_x) => { + return object.Equals(_1_x, _0_v); })))(v)); } public static Std.Wrappers._IOption IndexByOption<__T>(Dafny.ISequence<__T> xs, Func<__T, bool> p) @@ -77,9 +80,9 @@ public static Std.Wrappers._IOption IndexByOption<__T>(Dafny.ISequen } else if (Dafny.Helpers.Id>(p)((xs).Select(BigInteger.Zero))) { return Std.Wrappers.Option.create_Some(BigInteger.Zero); } else { - Std.Wrappers._IOption _76_o_k = Std.Collections.Seq.__default.IndexByOption<__T>((xs).Drop(BigInteger.One), p); - if ((_76_o_k).is_Some) { - return Std.Wrappers.Option.create_Some(((_76_o_k).dtor_value) + (BigInteger.One)); + Std.Wrappers._IOption _0_o_k = Std.Collections.Seq.__default.IndexByOption<__T>((xs).Drop(BigInteger.One), p); + if ((_0_o_k).is_Some) { + return Std.Wrappers.Option.create_Some(((_0_o_k).dtor_value) + (BigInteger.One)); } else { return Std.Wrappers.Option.create_None(); } @@ -91,17 +94,17 @@ public static BigInteger LastIndexOf<__T>(Dafny.ISequence<__T> xs, __T v) if (object.Equals((xs).Select((new BigInteger((xs).Count)) - (BigInteger.One)), v)) { return (new BigInteger((xs).Count)) - (BigInteger.One); } else { - Dafny.ISequence<__T> _in2 = (xs).Take((new BigInteger((xs).Count)) - (BigInteger.One)); - __T _in3 = v; - xs = _in2; - v = _in3; + Dafny.ISequence<__T> _in0 = (xs).Take((new BigInteger((xs).Count)) - (BigInteger.One)); + __T _in1 = v; + xs = _in0; + v = _in1; goto TAIL_CALL_START; } } public static Std.Wrappers._IOption LastIndexOfOption<__T>(Dafny.ISequence<__T> xs, __T v) { - return Std.Collections.Seq.__default.LastIndexByOption<__T>(xs, Dafny.Helpers.Id>>((_77_v) => ((System.Func<__T, bool>)((_78_x) => { - return object.Equals(_78_x, _77_v); + return Std.Collections.Seq.__default.LastIndexByOption<__T>(xs, Dafny.Helpers.Id>>((_0_v) => ((System.Func<__T, bool>)((_1_x) => { + return object.Equals(_1_x, _0_v); })))(v)); } public static Std.Wrappers._IOption LastIndexByOption<__T>(Dafny.ISequence<__T> xs, Func<__T, bool> p) @@ -112,10 +115,10 @@ public static Std.Wrappers._IOption LastIndexByOption<__T>(Dafny.ISe } else if (Dafny.Helpers.Id>(p)((xs).Select((new BigInteger((xs).Count)) - (BigInteger.One)))) { return Std.Wrappers.Option.create_Some((new BigInteger((xs).Count)) - (BigInteger.One)); } else { - Dafny.ISequence<__T> _in4 = (xs).Take((new BigInteger((xs).Count)) - (BigInteger.One)); - Func<__T, bool> _in5 = p; - xs = _in4; - p = _in5; + Dafny.ISequence<__T> _in0 = (xs).Take((new BigInteger((xs).Count)) - (BigInteger.One)); + Func<__T, bool> _in1 = p; + xs = _in0; + p = _in1; goto TAIL_CALL_START; } } @@ -128,8 +131,8 @@ public static Dafny.ISequence<__T> RemoveValue<__T>(Dafny.ISequence<__T> xs, __T if (!(xs).Contains(v)) { return xs; } else { - BigInteger _79_i = Std.Collections.Seq.__default.IndexOf<__T>(xs, v); - return Dafny.Sequence<__T>.Concat((xs).Take(_79_i), (xs).Drop((_79_i) + (BigInteger.One))); + BigInteger _0_i = Std.Collections.Seq.__default.IndexOf<__T>(xs, v); + return Dafny.Sequence<__T>.Concat((xs).Take(_0_i), (xs).Drop((_0_i) + (BigInteger.One))); } } public static Dafny.ISequence<__T> Insert<__T>(Dafny.ISequence<__T> xs, __T a, BigInteger pos) @@ -137,29 +140,29 @@ public static Dafny.ISequence<__T> Insert<__T>(Dafny.ISequence<__T> xs, __T a, B return Dafny.Sequence<__T>.Concat(Dafny.Sequence<__T>.Concat((xs).Take(pos), Dafny.Sequence<__T>.FromElements(a)), (xs).Drop(pos)); } public static Dafny.ISequence<__T> Reverse<__T>(Dafny.ISequence<__T> xs) { - Dafny.ISequence<__T> _80___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((xs).Equals(Dafny.Sequence<__T>.FromElements())) { - return Dafny.Sequence<__T>.Concat(_80___accumulator, Dafny.Sequence<__T>.FromElements()); + return Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements()); } else { - _80___accumulator = Dafny.Sequence<__T>.Concat(_80___accumulator, Dafny.Sequence<__T>.FromElements((xs).Select((new BigInteger((xs).Count)) - (BigInteger.One)))); - Dafny.ISequence<__T> _in6 = (xs).Subsequence(BigInteger.Zero, (new BigInteger((xs).Count)) - (BigInteger.One)); - xs = _in6; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements((xs).Select((new BigInteger((xs).Count)) - (BigInteger.One)))); + Dafny.ISequence<__T> _in0 = (xs).Subsequence(BigInteger.Zero, (new BigInteger((xs).Count)) - (BigInteger.One)); + xs = _in0; goto TAIL_CALL_START; } } public static Dafny.ISequence<__T> Repeat<__T>(__T v, BigInteger length) { - Dafny.ISequence<__T> _81___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((length).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_81___accumulator, Dafny.Sequence<__T>.FromElements()); + return Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements()); } else { - _81___accumulator = Dafny.Sequence<__T>.Concat(_81___accumulator, Dafny.Sequence<__T>.FromElements(v)); - __T _in7 = v; - BigInteger _in8 = (length) - (BigInteger.One); - v = _in7; - length = _in8; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements(v)); + __T _in0 = v; + BigInteger _in1 = (length) - (BigInteger.One); + v = _in0; + length = _in1; goto TAIL_CALL_START; } } @@ -168,23 +171,23 @@ public static Dafny.ISequence<__T> Repeat<__T>(__T v, BigInteger length) return _System.Tuple2, Dafny.ISequence<__B>>.create(Dafny.Sequence<__A>.FromElements(), Dafny.Sequence<__B>.FromElements()); } else { _System._ITuple2, Dafny.ISequence<__B>> _let_tmp_rhs0 = Std.Collections.Seq.__default.Unzip<__A, __B>(Std.Collections.Seq.__default.DropLast<_System._ITuple2<__A, __B>>(xs)); - Dafny.ISequence<__A> _82_a = _let_tmp_rhs0.dtor__0; - Dafny.ISequence<__B> _83_b = _let_tmp_rhs0.dtor__1; - return _System.Tuple2, Dafny.ISequence<__B>>.create(Dafny.Sequence<__A>.Concat(_82_a, Dafny.Sequence<__A>.FromElements((Std.Collections.Seq.__default.Last<_System._ITuple2<__A, __B>>(xs)).dtor__0)), Dafny.Sequence<__B>.Concat(_83_b, Dafny.Sequence<__B>.FromElements((Std.Collections.Seq.__default.Last<_System._ITuple2<__A, __B>>(xs)).dtor__1))); + Dafny.ISequence<__A> _0_a = _let_tmp_rhs0.dtor__0; + Dafny.ISequence<__B> _1_b = _let_tmp_rhs0.dtor__1; + return _System.Tuple2, Dafny.ISequence<__B>>.create(Dafny.Sequence<__A>.Concat(_0_a, Dafny.Sequence<__A>.FromElements((Std.Collections.Seq.__default.Last<_System._ITuple2<__A, __B>>(xs)).dtor__0)), Dafny.Sequence<__B>.Concat(_1_b, Dafny.Sequence<__B>.FromElements((Std.Collections.Seq.__default.Last<_System._ITuple2<__A, __B>>(xs)).dtor__1))); } } public static Dafny.ISequence<_System._ITuple2<__A, __B>> Zip<__A, __B>(Dafny.ISequence<__A> xs, Dafny.ISequence<__B> ys) { - Dafny.ISequence<_System._ITuple2<__A, __B>> _84___accumulator = Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(); + Dafny.ISequence<_System._ITuple2<__A, __B>> _0___accumulator = Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return Dafny.Sequence<_System._ITuple2<__A, __B>>.Concat(Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(), _84___accumulator); + return Dafny.Sequence<_System._ITuple2<__A, __B>>.Concat(Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(), _0___accumulator); } else { - _84___accumulator = Dafny.Sequence<_System._ITuple2<__A, __B>>.Concat(Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(_System.Tuple2<__A, __B>.create(Std.Collections.Seq.__default.Last<__A>(xs), Std.Collections.Seq.__default.Last<__B>(ys))), _84___accumulator); - Dafny.ISequence<__A> _in9 = Std.Collections.Seq.__default.DropLast<__A>(xs); - Dafny.ISequence<__B> _in10 = Std.Collections.Seq.__default.DropLast<__B>(ys); - xs = _in9; - ys = _in10; + _0___accumulator = Dafny.Sequence<_System._ITuple2<__A, __B>>.Concat(Dafny.Sequence<_System._ITuple2<__A, __B>>.FromElements(_System.Tuple2<__A, __B>.create(Std.Collections.Seq.__default.Last<__A>(xs), Std.Collections.Seq.__default.Last<__B>(ys))), _0___accumulator); + Dafny.ISequence<__A> _in0 = Std.Collections.Seq.__default.DropLast<__A>(xs); + Dafny.ISequence<__B> _in1 = Std.Collections.Seq.__default.DropLast<__B>(ys); + xs = _in0; + ys = _in1; goto TAIL_CALL_START; } } @@ -203,89 +206,89 @@ public static BigInteger Min(Dafny.ISequence xs) { } } public static Dafny.ISequence<__T> Flatten<__T>(Dafny.ISequence> xs) { - Dafny.ISequence<__T> _85___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_85___accumulator, Dafny.Sequence<__T>.FromElements()); + return Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements()); } else { - _85___accumulator = Dafny.Sequence<__T>.Concat(_85___accumulator, (xs).Select(BigInteger.Zero)); - Dafny.ISequence> _in11 = (xs).Drop(BigInteger.One); - xs = _in11; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, (xs).Select(BigInteger.Zero)); + Dafny.ISequence> _in0 = (xs).Drop(BigInteger.One); + xs = _in0; goto TAIL_CALL_START; } } public static Dafny.ISequence<__T> FlattenReverse<__T>(Dafny.ISequence> xs) { - Dafny.ISequence<__T> _86___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(Dafny.Sequence<__T>.FromElements(), _86___accumulator); + return Dafny.Sequence<__T>.Concat(Dafny.Sequence<__T>.FromElements(), _0___accumulator); } else { - _86___accumulator = Dafny.Sequence<__T>.Concat(Std.Collections.Seq.__default.Last>(xs), _86___accumulator); - Dafny.ISequence> _in12 = Std.Collections.Seq.__default.DropLast>(xs); - xs = _in12; + _0___accumulator = Dafny.Sequence<__T>.Concat(Std.Collections.Seq.__default.Last>(xs), _0___accumulator); + Dafny.ISequence> _in0 = Std.Collections.Seq.__default.DropLast>(xs); + xs = _in0; goto TAIL_CALL_START; } } public static Dafny.ISequence<__T> Join<__T>(Dafny.ISequence> seqs, Dafny.ISequence<__T> separator) { - Dafny.ISequence<__T> _87___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((seqs).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_87___accumulator, Dafny.Sequence<__T>.FromElements()); + return Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements()); } else if ((new BigInteger((seqs).Count)) == (BigInteger.One)) { - return Dafny.Sequence<__T>.Concat(_87___accumulator, (seqs).Select(BigInteger.Zero)); + return Dafny.Sequence<__T>.Concat(_0___accumulator, (seqs).Select(BigInteger.Zero)); } else { - _87___accumulator = Dafny.Sequence<__T>.Concat(_87___accumulator, Dafny.Sequence<__T>.Concat((seqs).Select(BigInteger.Zero), separator)); - Dafny.ISequence> _in13 = (seqs).Drop(BigInteger.One); - Dafny.ISequence<__T> _in14 = separator; - seqs = _in13; - separator = _in14; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.Concat((seqs).Select(BigInteger.Zero), separator)); + Dafny.ISequence> _in0 = (seqs).Drop(BigInteger.One); + Dafny.ISequence<__T> _in1 = separator; + seqs = _in0; + separator = _in1; goto TAIL_CALL_START; } } public static Dafny.ISequence> Split<__T>(Dafny.ISequence<__T> s, __T delim) { - Dafny.ISequence> _88___accumulator = Dafny.Sequence>.FromElements(); + Dafny.ISequence> _0___accumulator = Dafny.Sequence>.FromElements(); TAIL_CALL_START: ; - Std.Wrappers._IOption _89_i = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); - if ((_89_i).is_Some) { - _88___accumulator = Dafny.Sequence>.Concat(_88___accumulator, Dafny.Sequence>.FromElements((s).Take((_89_i).dtor_value))); - Dafny.ISequence<__T> _in15 = (s).Drop(((_89_i).dtor_value) + (BigInteger.One)); - __T _in16 = delim; - s = _in15; - delim = _in16; + Std.Wrappers._IOption _1_i = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); + if ((_1_i).is_Some) { + _0___accumulator = Dafny.Sequence>.Concat(_0___accumulator, Dafny.Sequence>.FromElements((s).Take((_1_i).dtor_value))); + Dafny.ISequence<__T> _in0 = (s).Drop(((_1_i).dtor_value) + (BigInteger.One)); + __T _in1 = delim; + s = _in0; + delim = _in1; goto TAIL_CALL_START; } else { - return Dafny.Sequence>.Concat(_88___accumulator, Dafny.Sequence>.FromElements(s)); + return Dafny.Sequence>.Concat(_0___accumulator, Dafny.Sequence>.FromElements(s)); } } public static _System._ITuple2, Dafny.ISequence<__T>> SplitOnce<__T>(Dafny.ISequence<__T> s, __T delim) { - Std.Wrappers._IOption _90_i = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); - return _System.Tuple2, Dafny.ISequence<__T>>.create((s).Take((_90_i).dtor_value), (s).Drop(((_90_i).dtor_value) + (BigInteger.One))); + Std.Wrappers._IOption _0_i = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); + return _System.Tuple2, Dafny.ISequence<__T>>.create((s).Take((_0_i).dtor_value), (s).Drop(((_0_i).dtor_value) + (BigInteger.One))); } public static Std.Wrappers._IOption<_System._ITuple2, Dafny.ISequence<__T>>> SplitOnceOption<__T>(Dafny.ISequence<__T> s, __T delim) { - Std.Wrappers._IOption _91_valueOrError0 = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); - if ((_91_valueOrError0).IsFailure()) { - return (_91_valueOrError0).PropagateFailure<_System._ITuple2, Dafny.ISequence<__T>>>(); + Std.Wrappers._IOption _0_valueOrError0 = Std.Collections.Seq.__default.IndexOfOption<__T>(s, delim); + if ((_0_valueOrError0).IsFailure()) { + return (_0_valueOrError0).PropagateFailure<_System._ITuple2, Dafny.ISequence<__T>>>(); } else { - BigInteger _92_i = (_91_valueOrError0).Extract(); - return Std.Wrappers.Option<_System._ITuple2, Dafny.ISequence<__T>>>.create_Some(_System.Tuple2, Dafny.ISequence<__T>>.create((s).Take(_92_i), (s).Drop((_92_i) + (BigInteger.One)))); + BigInteger _1_i = (_0_valueOrError0).Extract(); + return Std.Wrappers.Option<_System._ITuple2, Dafny.ISequence<__T>>>.create_Some(_System.Tuple2, Dafny.ISequence<__T>>.create((s).Take(_1_i), (s).Drop((_1_i) + (BigInteger.One)))); } } public static Dafny.ISequence<__R> Map<__T, __R>(Func<__T, __R> f, Dafny.ISequence<__T> xs) { - Dafny.ISequence<__R> _93___accumulator = Dafny.Sequence<__R>.FromElements(); + Dafny.ISequence<__R> _0___accumulator = Dafny.Sequence<__R>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return Dafny.Sequence<__R>.Concat(_93___accumulator, Dafny.Sequence<__R>.FromElements()); + return Dafny.Sequence<__R>.Concat(_0___accumulator, Dafny.Sequence<__R>.FromElements()); } else { - _93___accumulator = Dafny.Sequence<__R>.Concat(_93___accumulator, Dafny.Sequence<__R>.FromElements(Dafny.Helpers.Id>(f)((xs).Select(BigInteger.Zero)))); - Func<__T, __R> _in17 = f; - Dafny.ISequence<__T> _in18 = (xs).Drop(BigInteger.One); - f = _in17; - xs = _in18; + _0___accumulator = Dafny.Sequence<__R>.Concat(_0___accumulator, Dafny.Sequence<__R>.FromElements(Dafny.Helpers.Id>(f)((xs).Select(BigInteger.Zero)))); + Func<__T, __R> _in0 = f; + Dafny.ISequence<__T> _in1 = (xs).Drop(BigInteger.One); + f = _in0; + xs = _in1; goto TAIL_CALL_START; } } @@ -294,33 +297,33 @@ public static Dafny.ISequence<__R> Map<__T, __R>(Func<__T, __R> f, Dafny.ISequen if ((new BigInteger((xs).Count)).Sign == 0) { return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__R>.FromElements()); } else { - Std.Wrappers._IResult<__R, __E> _94_valueOrError0 = Dafny.Helpers.Id>>(f)((xs).Select(BigInteger.Zero)); - if ((_94_valueOrError0).IsFailure()) { - return (_94_valueOrError0).PropagateFailure>(); + Std.Wrappers._IResult<__R, __E> _0_valueOrError0 = Dafny.Helpers.Id>>(f)((xs).Select(BigInteger.Zero)); + if ((_0_valueOrError0).IsFailure()) { + return (_0_valueOrError0).PropagateFailure>(); } else { - __R _95_head = (_94_valueOrError0).Extract(); - Std.Wrappers._IResult, __E> _96_valueOrError1 = Std.Collections.Seq.__default.MapWithResult<__T, __R, __E>(f, (xs).Drop(BigInteger.One)); - if ((_96_valueOrError1).IsFailure()) { - return (_96_valueOrError1).PropagateFailure>(); + __R _1_head = (_0_valueOrError0).Extract(); + Std.Wrappers._IResult, __E> _2_valueOrError1 = Std.Collections.Seq.__default.MapWithResult<__T, __R, __E>(f, (xs).Drop(BigInteger.One)); + if ((_2_valueOrError1).IsFailure()) { + return (_2_valueOrError1).PropagateFailure>(); } else { - Dafny.ISequence<__R> _97_tail = (_96_valueOrError1).Extract(); - return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__R>.Concat(Dafny.Sequence<__R>.FromElements(_95_head), _97_tail)); + Dafny.ISequence<__R> _3_tail = (_2_valueOrError1).Extract(); + return Std.Wrappers.Result, __E>.create_Success(Dafny.Sequence<__R>.Concat(Dafny.Sequence<__R>.FromElements(_1_head), _3_tail)); } } } } public static Dafny.ISequence<__T> Filter<__T>(Func<__T, bool> f, Dafny.ISequence<__T> xs) { - Dafny.ISequence<__T> _98___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_98___accumulator, Dafny.Sequence<__T>.FromElements()); + return Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements()); } else { - _98___accumulator = Dafny.Sequence<__T>.Concat(_98___accumulator, ((Dafny.Helpers.Id>(f)((xs).Select(BigInteger.Zero))) ? (Dafny.Sequence<__T>.FromElements((xs).Select(BigInteger.Zero))) : (Dafny.Sequence<__T>.FromElements()))); - Func<__T, bool> _in19 = f; - Dafny.ISequence<__T> _in20 = (xs).Drop(BigInteger.One); - f = _in19; - xs = _in20; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, ((Dafny.Helpers.Id>(f)((xs).Select(BigInteger.Zero))) ? (Dafny.Sequence<__T>.FromElements((xs).Select(BigInteger.Zero))) : (Dafny.Sequence<__T>.FromElements()))); + Func<__T, bool> _in0 = f; + Dafny.ISequence<__T> _in1 = (xs).Drop(BigInteger.One); + f = _in0; + xs = _in1; goto TAIL_CALL_START; } } @@ -330,12 +333,12 @@ public static __A FoldLeft<__A, __T>(Func<__A, __T, __A> f, __A init, Dafny.ISeq if ((new BigInteger((xs).Count)).Sign == 0) { return init; } else { - Func<__A, __T, __A> _in21 = f; - __A _in22 = Dafny.Helpers.Id>(f)(init, (xs).Select(BigInteger.Zero)); - Dafny.ISequence<__T> _in23 = (xs).Drop(BigInteger.One); - f = _in21; - init = _in22; - xs = _in23; + Func<__A, __T, __A> _in0 = f; + __A _in1 = Dafny.Helpers.Id>(f)(init, (xs).Select(BigInteger.Zero)); + Dafny.ISequence<__T> _in2 = (xs).Drop(BigInteger.One); + f = _in0; + init = _in1; + xs = _in2; goto TAIL_CALL_START; } } @@ -351,29 +354,29 @@ public static Dafny.ISequence<__T> SetToSeq<__T>(Dafny.ISet<__T> s) { Dafny.ISequence<__T> xs = Dafny.Sequence<__T>.Empty; xs = Dafny.Sequence<__T>.FromElements(); - Dafny.ISet<__T> _99_left; - _99_left = s; - while (!(_99_left).Equals(Dafny.Set<__T>.FromElements())) { - __T _100_x; - foreach (__T _assign_such_that_0 in (_99_left).Elements) { - _100_x = (__T)_assign_such_that_0; - if ((_99_left).Contains(_100_x)) { + Dafny.ISet<__T> _0_left; + _0_left = s; + while (!(_0_left).Equals(Dafny.Set<__T>.FromElements())) { + __T _1_x; + foreach (__T _assign_such_that_0 in (_0_left).Elements) { + _1_x = (__T)_assign_such_that_0; + if ((_0_left).Contains(_1_x)) { goto after__ASSIGN_SUCH_THAT_0; } } throw new System.Exception("assign-such-that search produced no value (line 7245)"); after__ASSIGN_SUCH_THAT_0: ; - _99_left = Dafny.Set<__T>.Difference(_99_left, Dafny.Set<__T>.FromElements(_100_x)); - xs = Dafny.Sequence<__T>.Concat(xs, Dafny.Sequence<__T>.FromElements(_100_x)); + _0_left = Dafny.Set<__T>.Difference(_0_left, Dafny.Set<__T>.FromElements(_1_x)); + xs = Dafny.Sequence<__T>.Concat(xs, Dafny.Sequence<__T>.FromElements(_1_x)); } return xs; } public static Dafny.ISequence<__T> SetToSortedSeq<__T>(Dafny.ISet<__T> s, Func<__T, __T, bool> R) { Dafny.ISequence<__T> xs = Dafny.Sequence<__T>.Empty; - Dafny.ISequence<__T> _out6; - _out6 = Std.Collections.Seq.__default.SetToSeq<__T>(s); - xs = _out6; + Dafny.ISequence<__T> _out0; + _out0 = Std.Collections.Seq.__default.SetToSeq<__T>(s); + xs = _out0; xs = Std.Collections.Seq.__default.MergeSortBy<__T>(R, xs); return xs; } @@ -382,39 +385,39 @@ public static Dafny.ISequence<__T> MergeSortBy<__T>(Func<__T, __T, bool> lessTha if ((new BigInteger((a).Count)) <= (BigInteger.One)) { return a; } else { - BigInteger _101_splitIndex = Dafny.Helpers.EuclideanDivision(new BigInteger((a).Count), new BigInteger(2)); - Dafny.ISequence<__T> _102_left = (a).Take(_101_splitIndex); - Dafny.ISequence<__T> _103_right = (a).Drop(_101_splitIndex); - Dafny.ISequence<__T> _104_leftSorted = Std.Collections.Seq.__default.MergeSortBy<__T>(lessThanOrEq, _102_left); - Dafny.ISequence<__T> _105_rightSorted = Std.Collections.Seq.__default.MergeSortBy<__T>(lessThanOrEq, _103_right); - return Std.Collections.Seq.__default.MergeSortedWith<__T>(_104_leftSorted, _105_rightSorted, lessThanOrEq); + BigInteger _0_splitIndex = Dafny.Helpers.EuclideanDivision(new BigInteger((a).Count), new BigInteger(2)); + Dafny.ISequence<__T> _1_left = (a).Take(_0_splitIndex); + Dafny.ISequence<__T> _2_right = (a).Drop(_0_splitIndex); + Dafny.ISequence<__T> _3_leftSorted = Std.Collections.Seq.__default.MergeSortBy<__T>(lessThanOrEq, _1_left); + Dafny.ISequence<__T> _4_rightSorted = Std.Collections.Seq.__default.MergeSortBy<__T>(lessThanOrEq, _2_right); + return Std.Collections.Seq.__default.MergeSortedWith<__T>(_3_leftSorted, _4_rightSorted, lessThanOrEq); } } public static Dafny.ISequence<__T> MergeSortedWith<__T>(Dafny.ISequence<__T> left, Dafny.ISequence<__T> right, Func<__T, __T, bool> lessThanOrEq) { - Dafny.ISequence<__T> _106___accumulator = Dafny.Sequence<__T>.FromElements(); + Dafny.ISequence<__T> _0___accumulator = Dafny.Sequence<__T>.FromElements(); TAIL_CALL_START: ; if ((new BigInteger((left).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_106___accumulator, right); + return Dafny.Sequence<__T>.Concat(_0___accumulator, right); } else if ((new BigInteger((right).Count)).Sign == 0) { - return Dafny.Sequence<__T>.Concat(_106___accumulator, left); + return Dafny.Sequence<__T>.Concat(_0___accumulator, left); } else if (Dafny.Helpers.Id>(lessThanOrEq)((left).Select(BigInteger.Zero), (right).Select(BigInteger.Zero))) { - _106___accumulator = Dafny.Sequence<__T>.Concat(_106___accumulator, Dafny.Sequence<__T>.FromElements((left).Select(BigInteger.Zero))); - Dafny.ISequence<__T> _in24 = (left).Drop(BigInteger.One); - Dafny.ISequence<__T> _in25 = right; - Func<__T, __T, bool> _in26 = lessThanOrEq; - left = _in24; - right = _in25; - lessThanOrEq = _in26; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements((left).Select(BigInteger.Zero))); + Dafny.ISequence<__T> _in0 = (left).Drop(BigInteger.One); + Dafny.ISequence<__T> _in1 = right; + Func<__T, __T, bool> _in2 = lessThanOrEq; + left = _in0; + right = _in1; + lessThanOrEq = _in2; goto TAIL_CALL_START; } else { - _106___accumulator = Dafny.Sequence<__T>.Concat(_106___accumulator, Dafny.Sequence<__T>.FromElements((right).Select(BigInteger.Zero))); - Dafny.ISequence<__T> _in27 = left; - Dafny.ISequence<__T> _in28 = (right).Drop(BigInteger.One); - Func<__T, __T, bool> _in29 = lessThanOrEq; - left = _in27; - right = _in28; - lessThanOrEq = _in29; + _0___accumulator = Dafny.Sequence<__T>.Concat(_0___accumulator, Dafny.Sequence<__T>.FromElements((right).Select(BigInteger.Zero))); + Dafny.ISequence<__T> _in3 = left; + Dafny.ISequence<__T> _in4 = (right).Drop(BigInteger.One); + Func<__T, __T, bool> _in5 = lessThanOrEq; + left = _in3; + right = _in4; + lessThanOrEq = _in5; goto TAIL_CALL_START; } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Math.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Math.cs index 20ac317a0d0..8e22eb16897 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Math.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Math.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Math { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Strings.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Strings.cs index d4791c5d23e..dbda9bad3da 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Strings.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Strings.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Strings { diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_CharStrEscaping.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_CharStrEscaping.cs index 6abef775a70..c7bcf7b8e0c 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_CharStrEscaping.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_CharStrEscaping.cs @@ -8,33 +8,36 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Strings.CharStrEscaping { public partial class __default { public static Dafny.ISequence Escape(Dafny.ISequence str, Dafny.ISet mustEscape, Dafny.Rune escape) { - Dafny.ISequence _177___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((str).Equals(Dafny.Sequence.FromElements())) { - return Dafny.Sequence.Concat(_177___accumulator, str); + return Dafny.Sequence.Concat(_0___accumulator, str); } else if ((mustEscape).Contains((str).Select(BigInteger.Zero))) { - _177___accumulator = Dafny.Sequence.Concat(_177___accumulator, Dafny.Sequence.FromElements(escape, (str).Select(BigInteger.Zero))); - Dafny.ISequence _in56 = (str).Drop(BigInteger.One); - Dafny.ISet _in57 = mustEscape; - Dafny.Rune _in58 = escape; - str = _in56; - mustEscape = _in57; - escape = _in58; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements(escape, (str).Select(BigInteger.Zero))); + Dafny.ISequence _in0 = (str).Drop(BigInteger.One); + Dafny.ISet _in1 = mustEscape; + Dafny.Rune _in2 = escape; + str = _in0; + mustEscape = _in1; + escape = _in2; goto TAIL_CALL_START; } else { - _177___accumulator = Dafny.Sequence.Concat(_177___accumulator, Dafny.Sequence.FromElements((str).Select(BigInteger.Zero))); - Dafny.ISequence _in59 = (str).Drop(BigInteger.One); - Dafny.ISet _in60 = mustEscape; - Dafny.Rune _in61 = escape; - str = _in59; - mustEscape = _in60; - escape = _in61; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements((str).Select(BigInteger.Zero))); + Dafny.ISequence _in3 = (str).Drop(BigInteger.One); + Dafny.ISet _in4 = mustEscape; + Dafny.Rune _in5 = escape; + str = _in3; + mustEscape = _in4; + escape = _in5; goto TAIL_CALL_START; } } @@ -44,23 +47,23 @@ public partial class __default { return Std.Wrappers.Option>.create_Some(str); } else if (((str).Select(BigInteger.Zero)) == (escape)) { if ((new BigInteger((str).Count)) > (BigInteger.One)) { - Std.Wrappers._IOption> _178_valueOrError0 = Std.Strings.CharStrEscaping.__default.Unescape((str).Drop(new BigInteger(2)), escape); - if ((_178_valueOrError0).IsFailure()) { - return (_178_valueOrError0).PropagateFailure>(); + Std.Wrappers._IOption> _0_valueOrError0 = Std.Strings.CharStrEscaping.__default.Unescape((str).Drop(new BigInteger(2)), escape); + if ((_0_valueOrError0).IsFailure()) { + return (_0_valueOrError0).PropagateFailure>(); } else { - Dafny.ISequence _179_tl = (_178_valueOrError0).Extract(); - return Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.FromElements((str).Select(BigInteger.One)), _179_tl)); + Dafny.ISequence _1_tl = (_0_valueOrError0).Extract(); + return Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.FromElements((str).Select(BigInteger.One)), _1_tl)); } } else { return Std.Wrappers.Option>.create_None(); } } else { - Std.Wrappers._IOption> _180_valueOrError1 = Std.Strings.CharStrEscaping.__default.Unescape((str).Drop(BigInteger.One), escape); - if ((_180_valueOrError1).IsFailure()) { - return (_180_valueOrError1).PropagateFailure>(); + Std.Wrappers._IOption> _2_valueOrError1 = Std.Strings.CharStrEscaping.__default.Unescape((str).Drop(BigInteger.One), escape); + if ((_2_valueOrError1).IsFailure()) { + return (_2_valueOrError1).PropagateFailure>(); } else { - Dafny.ISequence _181_tl = (_180_valueOrError1).Extract(); - return Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.FromElements((str).Select(BigInteger.Zero)), _181_tl)); + Dafny.ISequence _3_tl = (_2_valueOrError1).Extract(); + return Std.Wrappers.Option>.create_Some(Dafny.Sequence.Concat(Dafny.Sequence.FromElements((str).Select(BigInteger.Zero)), _3_tl)); } } } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_DecimalConversion.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_DecimalConversion.cs index 7f878d59a11..a408b172517 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_DecimalConversion.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_DecimalConversion.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Strings.DecimalConversion { @@ -19,14 +22,14 @@ public static bool IsDigitChar(Dafny.Rune c) { return (Std.Strings.DecimalConversion.__default.charToDigit).Contains(c); } public static Dafny.ISequence OfDigits(Dafny.ISequence digits) { - Dafny.ISequence _158___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((digits).Equals(Dafny.Sequence.FromElements())) { - return Dafny.Sequence.Concat(Dafny.Sequence.FromElements(), _158___accumulator); + return Dafny.Sequence.Concat(Dafny.Sequence.FromElements(), _0___accumulator); } else { - _158___accumulator = Dafny.Sequence.Concat(Dafny.Sequence.FromElements((Std.Strings.DecimalConversion.__default.chars).Select((digits).Select(BigInteger.Zero))), _158___accumulator); - Dafny.ISequence _in51 = (digits).Drop(BigInteger.One); - digits = _in51; + _0___accumulator = Dafny.Sequence.Concat(Dafny.Sequence.FromElements((Std.Strings.DecimalConversion.__default.chars).Select((digits).Select(BigInteger.Zero))), _0___accumulator); + Dafny.ISequence _in0 = (digits).Drop(BigInteger.One); + digits = _in0; goto TAIL_CALL_START; } } @@ -39,9 +42,9 @@ public static bool IsDigitChar(Dafny.Rune c) { } public static bool IsNumberStr(Dafny.ISequence str, Dafny.Rune minus) { - return !(!(str).Equals(Dafny.Sequence.FromElements())) || (((((str).Select(BigInteger.Zero)) == (minus)) || ((Std.Strings.DecimalConversion.__default.charToDigit).Contains((str).Select(BigInteger.Zero)))) && (Dafny.Helpers.Id, bool>>((_159_str) => Dafny.Helpers.Quantifier(((_159_str).Drop(BigInteger.One)).UniqueElements, true, (((_forall_var_2) => { - Dafny.Rune _160_c = (Dafny.Rune)_forall_var_2; - return !(((_159_str).Drop(BigInteger.One)).Contains(_160_c)) || (Std.Strings.DecimalConversion.__default.IsDigitChar(_160_c)); + return !(!(str).Equals(Dafny.Sequence.FromElements())) || (((((str).Select(BigInteger.Zero)) == (minus)) || ((Std.Strings.DecimalConversion.__default.charToDigit).Contains((str).Select(BigInteger.Zero)))) && (Dafny.Helpers.Id, bool>>((_0_str) => Dafny.Helpers.Quantifier(((_0_str).Drop(BigInteger.One)).UniqueElements, true, (((_forall_var_0) => { + Dafny.Rune _1_c = (Dafny.Rune)_forall_var_0; + return !(((_0_str).Drop(BigInteger.One)).Contains(_1_c)) || (Std.Strings.DecimalConversion.__default.IsDigitChar(_1_c)); }))))(str))); } public static Dafny.ISequence OfInt(BigInteger n, Dafny.Rune minus) @@ -56,8 +59,8 @@ public static BigInteger ToNat(Dafny.ISequence str) { if ((str).Equals(Dafny.Sequence.FromElements())) { return BigInteger.Zero; } else { - Dafny.Rune _161_c = (str).Select((new BigInteger((str).Count)) - (BigInteger.One)); - return ((Std.Strings.DecimalConversion.__default.ToNat((str).Take((new BigInteger((str).Count)) - (BigInteger.One)))) * (Std.Strings.DecimalConversion.__default.@base)) + (Dafny.Map.Select(Std.Strings.DecimalConversion.__default.charToDigit,_161_c)); + Dafny.Rune _0_c = (str).Select((new BigInteger((str).Count)) - (BigInteger.One)); + return ((Std.Strings.DecimalConversion.__default.ToNat((str).Take((new BigInteger((str).Count)) - (BigInteger.One)))) * (Std.Strings.DecimalConversion.__default.@base)) + (Dafny.Map.Select(Std.Strings.DecimalConversion.__default.charToDigit,_0_c)); } } public static BigInteger ToInt(Dafny.ISequence str, Dafny.Rune minus) @@ -76,26 +79,26 @@ public static BigInteger ToNatRight(Dafny.ISequence xs) { } } public static BigInteger ToNatLeft(Dafny.ISequence xs) { - BigInteger _162___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return (BigInteger.Zero) + (_162___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _162___accumulator = ((Std.Collections.Seq.__default.Last(xs)) * (Std.Arithmetic.Power.__default.Pow(Std.Strings.DecimalConversion.__default.BASE(), (new BigInteger((xs).Count)) - (BigInteger.One)))) + (_162___accumulator); - Dafny.ISequence _in52 = Std.Collections.Seq.__default.DropLast(xs); - xs = _in52; + _0___accumulator = ((Std.Collections.Seq.__default.Last(xs)) * (Std.Arithmetic.Power.__default.Pow(Std.Strings.DecimalConversion.__default.BASE(), (new BigInteger((xs).Count)) - (BigInteger.One)))) + (_0___accumulator); + Dafny.ISequence _in0 = Std.Collections.Seq.__default.DropLast(xs); + xs = _in0; goto TAIL_CALL_START; } } public static Dafny.ISequence FromNat(BigInteger n) { - Dafny.ISequence _163___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((n).Sign == 0) { - return Dafny.Sequence.Concat(_163___accumulator, Dafny.Sequence.FromElements()); + return Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements()); } else { - _163___accumulator = Dafny.Sequence.Concat(_163___accumulator, Dafny.Sequence.FromElements(Dafny.Helpers.EuclideanModulus(n, Std.Strings.DecimalConversion.__default.BASE()))); - BigInteger _in53 = Dafny.Helpers.EuclideanDivision(n, Std.Strings.DecimalConversion.__default.BASE()); - n = _in53; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements(Dafny.Helpers.EuclideanModulus(n, Std.Strings.DecimalConversion.__default.BASE()))); + BigInteger _in0 = Dafny.Helpers.EuclideanDivision(n, Std.Strings.DecimalConversion.__default.BASE()); + n = _in0; goto TAIL_CALL_START; } } @@ -105,39 +108,39 @@ public static Dafny.ISequence SeqExtend(Dafny.ISequence if ((new BigInteger((xs).Count)) >= (n)) { return xs; } else { - Dafny.ISequence _in54 = Dafny.Sequence.Concat(xs, Dafny.Sequence.FromElements(BigInteger.Zero)); - BigInteger _in55 = n; - xs = _in54; - n = _in55; + Dafny.ISequence _in0 = Dafny.Sequence.Concat(xs, Dafny.Sequence.FromElements(BigInteger.Zero)); + BigInteger _in1 = n; + xs = _in0; + n = _in1; goto TAIL_CALL_START; } } public static Dafny.ISequence SeqExtendMultiple(Dafny.ISequence xs, BigInteger n) { - BigInteger _164_newLen = ((new BigInteger((xs).Count)) + (n)) - (Dafny.Helpers.EuclideanModulus(new BigInteger((xs).Count), n)); - return Std.Strings.DecimalConversion.__default.SeqExtend(xs, _164_newLen); + BigInteger _0_newLen = ((new BigInteger((xs).Count)) + (n)) - (Dafny.Helpers.EuclideanModulus(new BigInteger((xs).Count), n)); + return Std.Strings.DecimalConversion.__default.SeqExtend(xs, _0_newLen); } public static Dafny.ISequence FromNatWithLen(BigInteger n, BigInteger len) { return Std.Strings.DecimalConversion.__default.SeqExtend(Std.Strings.DecimalConversion.__default.FromNat(n), len); } public static Dafny.ISequence SeqZero(BigInteger len) { - Dafny.ISequence _165_xs = Std.Strings.DecimalConversion.__default.FromNatWithLen(BigInteger.Zero, len); - return _165_xs; + Dafny.ISequence _0_xs = Std.Strings.DecimalConversion.__default.FromNatWithLen(BigInteger.Zero, len); + return _0_xs; } public static _System._ITuple2, BigInteger> SeqAdd(Dafny.ISequence xs, Dafny.ISequence ys) { if ((new BigInteger((xs).Count)).Sign == 0) { return _System.Tuple2, BigInteger>.create(Dafny.Sequence.FromElements(), BigInteger.Zero); } else { - _System._ITuple2, BigInteger> _let_tmp_rhs5 = Std.Strings.DecimalConversion.__default.SeqAdd(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); - Dafny.ISequence _166_zs_k = _let_tmp_rhs5.dtor__0; - BigInteger _167_cin = _let_tmp_rhs5.dtor__1; - BigInteger _168_sum = ((Std.Collections.Seq.__default.Last(xs)) + (Std.Collections.Seq.__default.Last(ys))) + (_167_cin); - _System._ITuple2 _let_tmp_rhs6 = (((_168_sum) < (Std.Strings.DecimalConversion.__default.BASE())) ? (_System.Tuple2.create(_168_sum, BigInteger.Zero)) : (_System.Tuple2.create((_168_sum) - (Std.Strings.DecimalConversion.__default.BASE()), BigInteger.One))); - BigInteger _169_sum__out = _let_tmp_rhs6.dtor__0; - BigInteger _170_cout = _let_tmp_rhs6.dtor__1; - return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_166_zs_k, Dafny.Sequence.FromElements(_169_sum__out)), _170_cout); + _System._ITuple2, BigInteger> _let_tmp_rhs0 = Std.Strings.DecimalConversion.__default.SeqAdd(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); + Dafny.ISequence _0_zs_k = _let_tmp_rhs0.dtor__0; + BigInteger _1_cin = _let_tmp_rhs0.dtor__1; + BigInteger _2_sum = ((Std.Collections.Seq.__default.Last(xs)) + (Std.Collections.Seq.__default.Last(ys))) + (_1_cin); + _System._ITuple2 _let_tmp_rhs1 = (((_2_sum) < (Std.Strings.DecimalConversion.__default.BASE())) ? (_System.Tuple2.create(_2_sum, BigInteger.Zero)) : (_System.Tuple2.create((_2_sum) - (Std.Strings.DecimalConversion.__default.BASE()), BigInteger.One))); + BigInteger _3_sum__out = _let_tmp_rhs1.dtor__0; + BigInteger _4_cout = _let_tmp_rhs1.dtor__1; + return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_0_zs_k, Dafny.Sequence.FromElements(_3_sum__out)), _4_cout); } } public static _System._ITuple2, BigInteger> SeqSub(Dafny.ISequence xs, Dafny.ISequence ys) @@ -145,13 +148,13 @@ public static Dafny.ISequence SeqZero(BigInteger len) { if ((new BigInteger((xs).Count)).Sign == 0) { return _System.Tuple2, BigInteger>.create(Dafny.Sequence.FromElements(), BigInteger.Zero); } else { - _System._ITuple2, BigInteger> _let_tmp_rhs7 = Std.Strings.DecimalConversion.__default.SeqSub(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); - Dafny.ISequence _171_zs = _let_tmp_rhs7.dtor__0; - BigInteger _172_cin = _let_tmp_rhs7.dtor__1; - _System._ITuple2 _let_tmp_rhs8 = (((Std.Collections.Seq.__default.Last(xs)) >= ((Std.Collections.Seq.__default.Last(ys)) + (_172_cin))) ? (_System.Tuple2.create(((Std.Collections.Seq.__default.Last(xs)) - (Std.Collections.Seq.__default.Last(ys))) - (_172_cin), BigInteger.Zero)) : (_System.Tuple2.create((((Std.Strings.DecimalConversion.__default.BASE()) + (Std.Collections.Seq.__default.Last(xs))) - (Std.Collections.Seq.__default.Last(ys))) - (_172_cin), BigInteger.One))); - BigInteger _173_diff__out = _let_tmp_rhs8.dtor__0; - BigInteger _174_cout = _let_tmp_rhs8.dtor__1; - return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_171_zs, Dafny.Sequence.FromElements(_173_diff__out)), _174_cout); + _System._ITuple2, BigInteger> _let_tmp_rhs0 = Std.Strings.DecimalConversion.__default.SeqSub(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); + Dafny.ISequence _0_zs = _let_tmp_rhs0.dtor__0; + BigInteger _1_cin = _let_tmp_rhs0.dtor__1; + _System._ITuple2 _let_tmp_rhs1 = (((Std.Collections.Seq.__default.Last(xs)) >= ((Std.Collections.Seq.__default.Last(ys)) + (_1_cin))) ? (_System.Tuple2.create(((Std.Collections.Seq.__default.Last(xs)) - (Std.Collections.Seq.__default.Last(ys))) - (_1_cin), BigInteger.Zero)) : (_System.Tuple2.create((((Std.Strings.DecimalConversion.__default.BASE()) + (Std.Collections.Seq.__default.Last(xs))) - (Std.Collections.Seq.__default.Last(ys))) - (_1_cin), BigInteger.One))); + BigInteger _2_diff__out = _let_tmp_rhs1.dtor__0; + BigInteger _3_cout = _let_tmp_rhs1.dtor__1; + return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_0_zs, Dafny.Sequence.FromElements(_2_diff__out)), _3_cout); } } public static Dafny.ISequence DIGITS { get { @@ -174,8 +177,8 @@ public partial class CharSeq { return _TYPE; } public static bool _Is(Dafny.ISequence __source) { - Dafny.ISequence _175_chars = __source; - return (new BigInteger((_175_chars).Count)) > (BigInteger.One); + Dafny.ISequence _0_chars = __source; + return (new BigInteger((_0_chars).Count)) > (BigInteger.One); } } @@ -185,9 +188,9 @@ public static Dafny.TypeDescriptor _TypeDescriptor() { return _TYPE; } public static bool _Is(BigInteger __source) { - BigInteger _176_i = __source; - if (_System.nat._Is(_176_i)) { - return ((_176_i).Sign != -1) && ((_176_i) < (Std.Strings.DecimalConversion.__default.BASE())); + BigInteger _1_i = __source; + if (_System.nat._Is(_1_i)) { + return ((_1_i).Sign != -1) && ((_1_i) < (Std.Strings.DecimalConversion.__default.BASE())); } return false; } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_HexConversion.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_HexConversion.cs index a606f2c4df0..57a20d539c8 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Strings_HexConversion.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Strings_HexConversion.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Strings.HexConversion { @@ -19,14 +22,14 @@ public static bool IsDigitChar(Dafny.Rune c) { return (Std.Strings.HexConversion.__default.charToDigit).Contains(c); } public static Dafny.ISequence OfDigits(Dafny.ISequence digits) { - Dafny.ISequence _139___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((digits).Equals(Dafny.Sequence.FromElements())) { - return Dafny.Sequence.Concat(Dafny.Sequence.FromElements(), _139___accumulator); + return Dafny.Sequence.Concat(Dafny.Sequence.FromElements(), _0___accumulator); } else { - _139___accumulator = Dafny.Sequence.Concat(Dafny.Sequence.FromElements((Std.Strings.HexConversion.__default.chars).Select((digits).Select(BigInteger.Zero))), _139___accumulator); - Dafny.ISequence _in46 = (digits).Drop(BigInteger.One); - digits = _in46; + _0___accumulator = Dafny.Sequence.Concat(Dafny.Sequence.FromElements((Std.Strings.HexConversion.__default.chars).Select((digits).Select(BigInteger.Zero))), _0___accumulator); + Dafny.ISequence _in0 = (digits).Drop(BigInteger.One); + digits = _in0; goto TAIL_CALL_START; } } @@ -39,9 +42,9 @@ public static bool IsDigitChar(Dafny.Rune c) { } public static bool IsNumberStr(Dafny.ISequence str, Dafny.Rune minus) { - return !(!(str).Equals(Dafny.Sequence.FromElements())) || (((((str).Select(BigInteger.Zero)) == (minus)) || ((Std.Strings.HexConversion.__default.charToDigit).Contains((str).Select(BigInteger.Zero)))) && (Dafny.Helpers.Id, bool>>((_140_str) => Dafny.Helpers.Quantifier(((_140_str).Drop(BigInteger.One)).UniqueElements, true, (((_forall_var_1) => { - Dafny.Rune _141_c = (Dafny.Rune)_forall_var_1; - return !(((_140_str).Drop(BigInteger.One)).Contains(_141_c)) || (Std.Strings.HexConversion.__default.IsDigitChar(_141_c)); + return !(!(str).Equals(Dafny.Sequence.FromElements())) || (((((str).Select(BigInteger.Zero)) == (minus)) || ((Std.Strings.HexConversion.__default.charToDigit).Contains((str).Select(BigInteger.Zero)))) && (Dafny.Helpers.Id, bool>>((_0_str) => Dafny.Helpers.Quantifier(((_0_str).Drop(BigInteger.One)).UniqueElements, true, (((_forall_var_0) => { + Dafny.Rune _1_c = (Dafny.Rune)_forall_var_0; + return !(((_0_str).Drop(BigInteger.One)).Contains(_1_c)) || (Std.Strings.HexConversion.__default.IsDigitChar(_1_c)); }))))(str))); } public static Dafny.ISequence OfInt(BigInteger n, Dafny.Rune minus) @@ -56,8 +59,8 @@ public static BigInteger ToNat(Dafny.ISequence str) { if ((str).Equals(Dafny.Sequence.FromElements())) { return BigInteger.Zero; } else { - Dafny.Rune _142_c = (str).Select((new BigInteger((str).Count)) - (BigInteger.One)); - return ((Std.Strings.HexConversion.__default.ToNat((str).Take((new BigInteger((str).Count)) - (BigInteger.One)))) * (Std.Strings.HexConversion.__default.@base)) + (Dafny.Map.Select(Std.Strings.HexConversion.__default.charToDigit,_142_c)); + Dafny.Rune _0_c = (str).Select((new BigInteger((str).Count)) - (BigInteger.One)); + return ((Std.Strings.HexConversion.__default.ToNat((str).Take((new BigInteger((str).Count)) - (BigInteger.One)))) * (Std.Strings.HexConversion.__default.@base)) + (Dafny.Map.Select(Std.Strings.HexConversion.__default.charToDigit,_0_c)); } } public static BigInteger ToInt(Dafny.ISequence str, Dafny.Rune minus) @@ -76,26 +79,26 @@ public static BigInteger ToNatRight(Dafny.ISequence xs) { } } public static BigInteger ToNatLeft(Dafny.ISequence xs) { - BigInteger _143___accumulator = BigInteger.Zero; + BigInteger _0___accumulator = BigInteger.Zero; TAIL_CALL_START: ; if ((new BigInteger((xs).Count)).Sign == 0) { - return (BigInteger.Zero) + (_143___accumulator); + return (BigInteger.Zero) + (_0___accumulator); } else { - _143___accumulator = ((Std.Collections.Seq.__default.Last(xs)) * (Std.Arithmetic.Power.__default.Pow(Std.Strings.HexConversion.__default.BASE(), (new BigInteger((xs).Count)) - (BigInteger.One)))) + (_143___accumulator); - Dafny.ISequence _in47 = Std.Collections.Seq.__default.DropLast(xs); - xs = _in47; + _0___accumulator = ((Std.Collections.Seq.__default.Last(xs)) * (Std.Arithmetic.Power.__default.Pow(Std.Strings.HexConversion.__default.BASE(), (new BigInteger((xs).Count)) - (BigInteger.One)))) + (_0___accumulator); + Dafny.ISequence _in0 = Std.Collections.Seq.__default.DropLast(xs); + xs = _in0; goto TAIL_CALL_START; } } public static Dafny.ISequence FromNat(BigInteger n) { - Dafny.ISequence _144___accumulator = Dafny.Sequence.FromElements(); + Dafny.ISequence _0___accumulator = Dafny.Sequence.FromElements(); TAIL_CALL_START: ; if ((n).Sign == 0) { - return Dafny.Sequence.Concat(_144___accumulator, Dafny.Sequence.FromElements()); + return Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements()); } else { - _144___accumulator = Dafny.Sequence.Concat(_144___accumulator, Dafny.Sequence.FromElements(Dafny.Helpers.EuclideanModulus(n, Std.Strings.HexConversion.__default.BASE()))); - BigInteger _in48 = Dafny.Helpers.EuclideanDivision(n, Std.Strings.HexConversion.__default.BASE()); - n = _in48; + _0___accumulator = Dafny.Sequence.Concat(_0___accumulator, Dafny.Sequence.FromElements(Dafny.Helpers.EuclideanModulus(n, Std.Strings.HexConversion.__default.BASE()))); + BigInteger _in0 = Dafny.Helpers.EuclideanDivision(n, Std.Strings.HexConversion.__default.BASE()); + n = _in0; goto TAIL_CALL_START; } } @@ -105,39 +108,39 @@ public static Dafny.ISequence SeqExtend(Dafny.ISequence if ((new BigInteger((xs).Count)) >= (n)) { return xs; } else { - Dafny.ISequence _in49 = Dafny.Sequence.Concat(xs, Dafny.Sequence.FromElements(BigInteger.Zero)); - BigInteger _in50 = n; - xs = _in49; - n = _in50; + Dafny.ISequence _in0 = Dafny.Sequence.Concat(xs, Dafny.Sequence.FromElements(BigInteger.Zero)); + BigInteger _in1 = n; + xs = _in0; + n = _in1; goto TAIL_CALL_START; } } public static Dafny.ISequence SeqExtendMultiple(Dafny.ISequence xs, BigInteger n) { - BigInteger _145_newLen = ((new BigInteger((xs).Count)) + (n)) - (Dafny.Helpers.EuclideanModulus(new BigInteger((xs).Count), n)); - return Std.Strings.HexConversion.__default.SeqExtend(xs, _145_newLen); + BigInteger _0_newLen = ((new BigInteger((xs).Count)) + (n)) - (Dafny.Helpers.EuclideanModulus(new BigInteger((xs).Count), n)); + return Std.Strings.HexConversion.__default.SeqExtend(xs, _0_newLen); } public static Dafny.ISequence FromNatWithLen(BigInteger n, BigInteger len) { return Std.Strings.HexConversion.__default.SeqExtend(Std.Strings.HexConversion.__default.FromNat(n), len); } public static Dafny.ISequence SeqZero(BigInteger len) { - Dafny.ISequence _146_xs = Std.Strings.HexConversion.__default.FromNatWithLen(BigInteger.Zero, len); - return _146_xs; + Dafny.ISequence _0_xs = Std.Strings.HexConversion.__default.FromNatWithLen(BigInteger.Zero, len); + return _0_xs; } public static _System._ITuple2, BigInteger> SeqAdd(Dafny.ISequence xs, Dafny.ISequence ys) { if ((new BigInteger((xs).Count)).Sign == 0) { return _System.Tuple2, BigInteger>.create(Dafny.Sequence.FromElements(), BigInteger.Zero); } else { - _System._ITuple2, BigInteger> _let_tmp_rhs1 = Std.Strings.HexConversion.__default.SeqAdd(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); - Dafny.ISequence _147_zs_k = _let_tmp_rhs1.dtor__0; - BigInteger _148_cin = _let_tmp_rhs1.dtor__1; - BigInteger _149_sum = ((Std.Collections.Seq.__default.Last(xs)) + (Std.Collections.Seq.__default.Last(ys))) + (_148_cin); - _System._ITuple2 _let_tmp_rhs2 = (((_149_sum) < (Std.Strings.HexConversion.__default.BASE())) ? (_System.Tuple2.create(_149_sum, BigInteger.Zero)) : (_System.Tuple2.create((_149_sum) - (Std.Strings.HexConversion.__default.BASE()), BigInteger.One))); - BigInteger _150_sum__out = _let_tmp_rhs2.dtor__0; - BigInteger _151_cout = _let_tmp_rhs2.dtor__1; - return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_147_zs_k, Dafny.Sequence.FromElements(_150_sum__out)), _151_cout); + _System._ITuple2, BigInteger> _let_tmp_rhs0 = Std.Strings.HexConversion.__default.SeqAdd(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); + Dafny.ISequence _0_zs_k = _let_tmp_rhs0.dtor__0; + BigInteger _1_cin = _let_tmp_rhs0.dtor__1; + BigInteger _2_sum = ((Std.Collections.Seq.__default.Last(xs)) + (Std.Collections.Seq.__default.Last(ys))) + (_1_cin); + _System._ITuple2 _let_tmp_rhs1 = (((_2_sum) < (Std.Strings.HexConversion.__default.BASE())) ? (_System.Tuple2.create(_2_sum, BigInteger.Zero)) : (_System.Tuple2.create((_2_sum) - (Std.Strings.HexConversion.__default.BASE()), BigInteger.One))); + BigInteger _3_sum__out = _let_tmp_rhs1.dtor__0; + BigInteger _4_cout = _let_tmp_rhs1.dtor__1; + return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_0_zs_k, Dafny.Sequence.FromElements(_3_sum__out)), _4_cout); } } public static _System._ITuple2, BigInteger> SeqSub(Dafny.ISequence xs, Dafny.ISequence ys) @@ -145,13 +148,13 @@ public static Dafny.ISequence SeqZero(BigInteger len) { if ((new BigInteger((xs).Count)).Sign == 0) { return _System.Tuple2, BigInteger>.create(Dafny.Sequence.FromElements(), BigInteger.Zero); } else { - _System._ITuple2, BigInteger> _let_tmp_rhs3 = Std.Strings.HexConversion.__default.SeqSub(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); - Dafny.ISequence _152_zs = _let_tmp_rhs3.dtor__0; - BigInteger _153_cin = _let_tmp_rhs3.dtor__1; - _System._ITuple2 _let_tmp_rhs4 = (((Std.Collections.Seq.__default.Last(xs)) >= ((Std.Collections.Seq.__default.Last(ys)) + (_153_cin))) ? (_System.Tuple2.create(((Std.Collections.Seq.__default.Last(xs)) - (Std.Collections.Seq.__default.Last(ys))) - (_153_cin), BigInteger.Zero)) : (_System.Tuple2.create((((Std.Strings.HexConversion.__default.BASE()) + (Std.Collections.Seq.__default.Last(xs))) - (Std.Collections.Seq.__default.Last(ys))) - (_153_cin), BigInteger.One))); - BigInteger _154_diff__out = _let_tmp_rhs4.dtor__0; - BigInteger _155_cout = _let_tmp_rhs4.dtor__1; - return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_152_zs, Dafny.Sequence.FromElements(_154_diff__out)), _155_cout); + _System._ITuple2, BigInteger> _let_tmp_rhs0 = Std.Strings.HexConversion.__default.SeqSub(Std.Collections.Seq.__default.DropLast(xs), Std.Collections.Seq.__default.DropLast(ys)); + Dafny.ISequence _0_zs = _let_tmp_rhs0.dtor__0; + BigInteger _1_cin = _let_tmp_rhs0.dtor__1; + _System._ITuple2 _let_tmp_rhs1 = (((Std.Collections.Seq.__default.Last(xs)) >= ((Std.Collections.Seq.__default.Last(ys)) + (_1_cin))) ? (_System.Tuple2.create(((Std.Collections.Seq.__default.Last(xs)) - (Std.Collections.Seq.__default.Last(ys))) - (_1_cin), BigInteger.Zero)) : (_System.Tuple2.create((((Std.Strings.HexConversion.__default.BASE()) + (Std.Collections.Seq.__default.Last(xs))) - (Std.Collections.Seq.__default.Last(ys))) - (_1_cin), BigInteger.One))); + BigInteger _2_diff__out = _let_tmp_rhs1.dtor__0; + BigInteger _3_cout = _let_tmp_rhs1.dtor__1; + return _System.Tuple2, BigInteger>.create(Dafny.Sequence.Concat(_0_zs, Dafny.Sequence.FromElements(_2_diff__out)), _3_cout); } } public static Dafny.ISequence HEX__DIGITS { get { @@ -174,8 +177,8 @@ public partial class CharSeq { return _TYPE; } public static bool _Is(Dafny.ISequence __source) { - Dafny.ISequence _156_chars = __source; - return (new BigInteger((_156_chars).Count)) > (BigInteger.One); + Dafny.ISequence _0_chars = __source; + return (new BigInteger((_0_chars).Count)) > (BigInteger.One); } } @@ -185,9 +188,9 @@ public static Dafny.TypeDescriptor _TypeDescriptor() { return _TYPE; } public static bool _Is(BigInteger __source) { - BigInteger _157_i = __source; - if (_System.nat._Is(_157_i)) { - return ((_157_i).Sign != -1) && ((_157_i) < (Std.Strings.HexConversion.__default.BASE())); + BigInteger _1_i = __source; + if (_System.nat._Is(_1_i)) { + return ((_1_i).Sign != -1) && ((_1_i) < (Std.Strings.HexConversion.__default.BASE())); } return false; } diff --git a/Source/DafnyCore/GeneratedFromDafny/Std_Wrappers.cs b/Source/DafnyCore/GeneratedFromDafny/Std_Wrappers.cs index fbcdc9cf5cf..bd2a8af634a 100644 --- a/Source/DafnyCore/GeneratedFromDafny/Std_Wrappers.cs +++ b/Source/DafnyCore/GeneratedFromDafny/Std_Wrappers.cs @@ -8,6 +8,9 @@ using System; using System.Numerics; using System.Collections; +#pragma warning disable CS0164 // This label has not been referenced +#pragma warning disable CS0162 // Unreachable code detected +#pragma warning disable CS1717 // Assignment made to same variable namespace Std.Wrappers { @@ -70,8 +73,8 @@ public static T GetOr(Std.Wrappers._IOption _this, T @default) { Std.Wrappers._IOption _source0 = _this; { if (_source0.is_Some) { - T v = _source0.dtor_value; - return v; + T _0_v = _source0.dtor_value; + return _0_v; } } { @@ -79,11 +82,11 @@ public static T GetOr(Std.Wrappers._IOption _this, T @default) { } } public Std.Wrappers._IResult ToResult<__E>(__E error) { - Std.Wrappers._IOption _source1 = this; + Std.Wrappers._IOption _source0 = this; { - if (_source1.is_Some) { - T v = _source1.dtor_value; - return Std.Wrappers.Result.create_Success(v); + if (_source0.is_Some) { + T _0_v = _source0.dtor_value; + return Std.Wrappers.Result.create_Success(_0_v); } } { @@ -91,10 +94,10 @@ public Std.Wrappers._IResult ToResult<__E>(__E error) { } } public Std.Wrappers._IOutcome<__E> ToOutcome<__E>(__E error) { - Std.Wrappers._IOption _source2 = this; + Std.Wrappers._IOption _source0 = this; { - if (_source2.is_Some) { - T v = _source2.dtor_value; + if (_source0.is_Some) { + T _0_v = _source0.dtor_value; return Std.Wrappers.Outcome<__E>.create_Pass(); } } @@ -207,58 +210,58 @@ public R Extract() { return (this).dtor_value; } public static R GetOr(Std.Wrappers._IResult _this, R @default) { - Std.Wrappers._IResult _source3 = _this; + Std.Wrappers._IResult _source0 = _this; { - if (_source3.is_Success) { - R s = _source3.dtor_value; - return s; + if (_source0.is_Success) { + R _0_s = _source0.dtor_value; + return _0_s; } } { - E e = _source3.dtor_error; + E _1_e = _source0.dtor_error; return @default; } } public Std.Wrappers._IOption ToOption() { - Std.Wrappers._IResult _source4 = this; + Std.Wrappers._IResult _source0 = this; { - if (_source4.is_Success) { - R s = _source4.dtor_value; - return Std.Wrappers.Option.create_Some(s); + if (_source0.is_Success) { + R _0_s = _source0.dtor_value; + return Std.Wrappers.Option.create_Some(_0_s); } } { - E _10_e = _source4.dtor_error; + E _1_e = _source0.dtor_error; return Std.Wrappers.Option.create_None(); } } public Std.Wrappers._IOutcome ToOutcome() { - Std.Wrappers._IResult _source5 = this; + Std.Wrappers._IResult _source0 = this; { - if (_source5.is_Success) { - R _11_s = _source5.dtor_value; + if (_source0.is_Success) { + R _0_s = _source0.dtor_value; return Std.Wrappers.Outcome.create_Pass(); } } { - E _12_e = _source5.dtor_error; - return Std.Wrappers.Outcome.create_Fail(_12_e); + E _1_e = _source0.dtor_error; + return Std.Wrappers.Outcome.create_Fail(_1_e); } } public static __FC Map<__FC>(Std.Wrappers._IResult _this, Func, __FC> rewrap) { return Dafny.Helpers.Id, __FC>>(rewrap)(_this); } public static Std.Wrappers._IResult MapFailure<__NewE>(Std.Wrappers._IResult _this, Func reWrap) { - Std.Wrappers._IResult _source6 = _this; + Std.Wrappers._IResult _source0 = _this; { - if (_source6.is_Success) { - R _13_s = _source6.dtor_value; - return Std.Wrappers.Result.create_Success(_13_s); + if (_source0.is_Success) { + R _0_s = _source0.dtor_value; + return Std.Wrappers.Result.create_Success(_0_s); } } { - E _14_e = _source6.dtor_error; - return Std.Wrappers.Result.create_Failure(Dafny.Helpers.Id>(reWrap)(_14_e)); + E _1_e = _source0.dtor_error; + return Std.Wrappers.Result.create_Failure(Dafny.Helpers.Id>(reWrap)(_1_e)); } } } @@ -358,27 +361,27 @@ public Std.Wrappers._IOutcome PropagateFailure() { return this; } public Std.Wrappers._IOption<__R> ToOption<__R>(__R r) { - Std.Wrappers._IOutcome _source7 = this; + Std.Wrappers._IOutcome _source0 = this; { - if (_source7.is_Pass) { + if (_source0.is_Pass) { return Std.Wrappers.Option<__R>.create_Some(r); } } { - E _15_e = _source7.dtor_error; + E _0_e = _source0.dtor_error; return Std.Wrappers.Option<__R>.create_None(); } } public Std.Wrappers._IResult<__R, E> ToResult<__R>(__R r) { - Std.Wrappers._IOutcome _source8 = this; + Std.Wrappers._IOutcome _source0 = this; { - if (_source8.is_Pass) { + if (_source0.is_Pass) { return Std.Wrappers.Result<__R, E>.create_Success(r); } } { - E _16_e = _source8.dtor_error; - return Std.Wrappers.Result<__R, E>.create_Failure(_16_e); + E _0_e = _source0.dtor_error; + return Std.Wrappers.Result<__R, E>.create_Failure(_0_e); } } public static __FC Map<__FC>(Std.Wrappers._IOutcome _this, Func, __FC> rewrap) { @@ -386,15 +389,15 @@ public static __FC Map<__FC>(Std.Wrappers._IOutcome _this, Func MapFailure<__T, __NewE>(Std.Wrappers._IOutcome _this, Func rewrap, __T @default) { - Std.Wrappers._IOutcome _source9 = _this; + Std.Wrappers._IOutcome _source0 = _this; { - if (_source9.is_Pass) { + if (_source0.is_Pass) { return Std.Wrappers.Result<__T, __NewE>.create_Success(@default); } } { - E _17_e = _source9.dtor_error; - return Std.Wrappers.Result<__T, __NewE>.create_Failure(Dafny.Helpers.Id>(rewrap)(_17_e)); + E _0_e = _source0.dtor_error; + return Std.Wrappers.Result<__T, __NewE>.create_Failure(Dafny.Helpers.Id>(rewrap)(_0_e)); } } public static Std.Wrappers._IOutcome Need(bool condition, E error) diff --git a/Source/DafnyCore/Options/DafnyCommands.cs b/Source/DafnyCore/Options/DafnyCommands.cs index 67b3f734b08..74acb94d988 100644 --- a/Source/DafnyCore/Options/DafnyCommands.cs +++ b/Source/DafnyCore/Options/DafnyCommands.cs @@ -71,6 +71,8 @@ static DafnyCommands() { Snippets.ShowSnippets, DeveloperOptionBag.PrintOption, DeveloperOptionBag.ResolvedPrint, + DeveloperOptionBag.SplitPrint, + DeveloperOptionBag.PassivePrint, DeveloperOptionBag.BoogiePrint, Printer.PrintMode, CommonOptionBag.AllowWarnings, diff --git a/Source/DafnyCore/Options/DeveloperOptionBag.cs b/Source/DafnyCore/Options/DeveloperOptionBag.cs index 46e33eab351..db0ad5c33ca 100644 --- a/Source/DafnyCore/Options/DeveloperOptionBag.cs +++ b/Source/DafnyCore/Options/DeveloperOptionBag.cs @@ -6,6 +6,22 @@ namespace Microsoft.Dafny; public class DeveloperOptionBag { + public static readonly Option SplitPrint = new("--sprint", + @" +Print Boogie splits translated from Dafny +(use - as to print to console)".TrimStart()) { + IsHidden = true, + ArgumentHelpName = "file", + }; + + public static readonly Option PassivePrint = new("--pprint", + @" +Print passified Boogie program translated from Dafny +(use - as to print to console)".TrimStart()) { + IsHidden = true, + ArgumentHelpName = "file", + }; + public static readonly Option BoogiePrint = new("--bprint", @" Print Boogie program translated from Dafny @@ -48,13 +64,27 @@ static DeveloperOptionBag() { options.FileTimestamp); }); + DafnyOptions.RegisterLegacyBinding(PassivePrint, (options, f) => { + options.PrintPassiveFile = f; + options.ExpandFilename(options.PrintPassiveFile, x => options.PrintPassiveFile = x, options.LogPrefix, + options.FileTimestamp); + }); + DafnyOptions.RegisterLegacyBinding(BoogiePrint, (options, f) => { options.PrintFile = f; options.ExpandFilename(options.PrintFile, x => options.PrintFile = x, options.LogPrefix, options.FileTimestamp); }); + DafnyOptions.RegisterLegacyBinding(SplitPrint, (options, f) => { + options.PrintSplitFile = f; + options.ExpandFilename(options.PrintSplitFile, x => options.PrintSplitFile = x, options.LogPrefix, + options.FileTimestamp); + }); + + DooFile.RegisterNoChecksNeeded(PassivePrint, false); DooFile.RegisterNoChecksNeeded(BoogiePrint, false); + DooFile.RegisterNoChecksNeeded(SplitPrint, false); DooFile.RegisterNoChecksNeeded(PrintOption, false); DooFile.RegisterNoChecksNeeded(ResolvedPrint, false); DooFile.RegisterNoChecksNeeded(Bootstrapping, false); diff --git a/Source/DafnyCore/Resolver/InferDecreasesClause.cs b/Source/DafnyCore/Resolver/InferDecreasesClause.cs index c2f9060aa71..0e3996c8520 100644 --- a/Source/DafnyCore/Resolver/InferDecreasesClause.cs +++ b/Source/DafnyCore/Resolver/InferDecreasesClause.cs @@ -147,7 +147,7 @@ public Expression FrameToObjectSet(List fexprs) { List sets = new List(); List singletons = null; - var idGen = new FreshIdGenerator(); + var idGen = new VerificationIdGenerator(); // drop wildcards altogether in the following iterations foreach (FrameExpression fe in fexprs.Where(fe => fe.E is not WildcardExpr)) { Contract.Assert(fe != null); diff --git a/Source/DafnyCore/Resolver/ModuleResolver.cs b/Source/DafnyCore/Resolver/ModuleResolver.cs index 4d61573c048..22d0c818442 100644 --- a/Source/DafnyCore/Resolver/ModuleResolver.cs +++ b/Source/DafnyCore/Resolver/ModuleResolver.cs @@ -61,10 +61,8 @@ internal bool VisibleInScope(Declaration d) { return d.IsVisibleInScope(moduleInfo.VisibilityScope); } - public FreshIdGenerator defaultTempVarIdGenerator => ProgramResolver.Program.Compilation.IdGenerator; - public string FreshTempVarName(string prefix, ICodeContext context) { - var gen = context is Declaration decl ? decl.IdGenerator : defaultTempVarIdGenerator; + var gen = context.CodeGenIdGenerator; var freshTempVarName = gen.FreshId(prefix); return freshTempVarName; } diff --git a/Source/DafnyCore/Rewriters/RewriterCollection.cs b/Source/DafnyCore/Rewriters/RewriterCollection.cs index e91fe0ca1d7..573ad83e3e1 100644 --- a/Source/DafnyCore/Rewriters/RewriterCollection.cs +++ b/Source/DafnyCore/Rewriters/RewriterCollection.cs @@ -19,7 +19,7 @@ public static IList GetRewriters(ErrorReporter reporter, Program prog result.Add(new TimeLimitRewriter(reporter)); result.Add(new ForallStmtRewriter(reporter)); result.Add(new ProvideRevealAllRewriter(reporter)); - result.Add(new MatchFlattener(reporter, program.Compilation.IdGenerator)); + result.Add(new MatchFlattener(reporter)); if (reporter.Options.AutoTriggers) { result.Add(new QuantifierSplittingRewriter(reporter)); diff --git a/Source/DafnyCore/Rewriters/RunAllTestsMainMethod.cs b/Source/DafnyCore/Rewriters/RunAllTestsMainMethod.cs index 24415062a93..e6f891ca4ba 100644 --- a/Source/DafnyCore/Rewriters/RunAllTestsMainMethod.cs +++ b/Source/DafnyCore/Rewriters/RunAllTestsMainMethod.cs @@ -95,7 +95,7 @@ internal override void PreResolve(Program program) { internal override void PostResolve(Program program) { var tok = program.GetStartOfFirstFileToken() ?? Token.NoToken; List mainMethodStatements = new(); - var idGenerator = new FreshIdGenerator(); + var idGenerator = new CodeGenIdGenerator(); // var success := true; var successVarStmt = Statement.CreateLocalVariable(tok, "success", Expression.CreateBoolLiteral(tok, true)); diff --git a/Source/DafnyCore/Triggers/TriggerExtensions.cs b/Source/DafnyCore/Triggers/TriggerExtensions.cs index 7166b8d954b..de3eba4153a 100644 --- a/Source/DafnyCore/Triggers/TriggerExtensions.cs +++ b/Source/DafnyCore/Triggers/TriggerExtensions.cs @@ -154,7 +154,6 @@ private static bool ShallowSameSingleAttribute(Attributes arg1, Attributes arg2) private static bool SameBoundVar(IVariable arg1, IVariable arg2) { return arg1 == arg2 || (arg1.Name == arg2.Name && - arg1.CompileName == arg2.CompileName && arg1.DisplayName == arg2.DisplayName && arg1.UniqueName == arg2.UniqueName && arg1.IsGhost == arg2.IsGhost && diff --git a/Source/DafnyCore/Verifier/BoogieGenerator.cs b/Source/DafnyCore/Verifier/BoogieGenerator.cs index 924d78212c4..e30bd6c6a5e 100644 --- a/Source/DafnyCore/Verifier/BoogieGenerator.cs +++ b/Source/DafnyCore/Verifier/BoogieGenerator.cs @@ -1753,9 +1753,9 @@ public enum StmtType { NONE, ASSERT, ASSUME }; public StmtType stmtContext = StmtType.NONE; // the Statement that is currently being translated public bool adjustFuelForExists = true; // fuel need to be adjusted for exists based on whether exists is in assert or assume stmt. - public readonly FreshIdGenerator defaultIdGenerator = new FreshIdGenerator(); + public readonly VerificationIdGenerator defaultIdGenerator = new VerificationIdGenerator(); - public FreshIdGenerator CurrentIdGenerator { + public VerificationIdGenerator CurrentIdGenerator { get { var decl = codeContext as Declaration; if (decl != null) { @@ -3654,7 +3654,7 @@ Bpl.Expr SetupVariableAsLocal(IVariable v, Dictionary sub Contract.Requires(builder != null); Contract.Requires(decreases != null); List oldBfs = new List(); - var idGen = new FreshIdGenerator(); + var idGen = new VerificationIdGenerator(); foreach (Expression e in decreases) { Contract.Assert(e != null); Bpl.LocalVariable bfVar = new Bpl.LocalVariable(e.tok, new Bpl.TypedIdent(e.tok, idGen.FreshId(varPrefix), TrType(cce.NonNull(e.Type)))); diff --git a/Source/DafnyCore/Verifier/FreshIdGenerator.cs b/Source/DafnyCore/Verifier/FreshIdGenerator.cs index 4196ea040c1..d6f71d52623 100644 --- a/Source/DafnyCore/Verifier/FreshIdGenerator.cs +++ b/Source/DafnyCore/Verifier/FreshIdGenerator.cs @@ -1,9 +1,10 @@ +using System; using System.Collections.Generic; using System.Diagnostics.Contracts; using System.Linq; namespace Microsoft.Dafny { - public class FreshIdGenerator { + public abstract class FreshIdGenerator { string tipString; // a string representation of Tip int tipChildrenCount = 0; readonly Stack> prefixToCountStack = new(); // invariant PrefixToCount_Stack.Count == Tip.Count @@ -35,7 +36,7 @@ public FreshIdGenerator() { prefixToCountStack.Push(new()); } - private FreshIdGenerator(string commonPrefix) : this() { + protected FreshIdGenerator(string commonPrefix) : this() { this.commonPrefix = commonPrefix; } @@ -50,11 +51,7 @@ public string FreshId(string prefix) { return commonPrefix + prefix + FreshNumericId(prefix); } - public FreshIdGenerator NestedFreshIdGenerator(string prefix) { - return new(FreshId(prefix)); - } - - public string FreshNumericId(string prefix = "") { + public virtual string FreshNumericId(string prefix = "") { var prefixToCount = prefixToCountStack.Peek(); lock (prefixToCount) { if (!prefixToCount.TryGetValue(prefix, out var old)) { @@ -64,5 +61,22 @@ public string FreshNumericId(string prefix = "") { return tipString == null ? old.ToString() : tipString + "_" + old.ToString(); } } + + public override string ToString() { + throw new InvalidOperationException("Did not expect to convert the fresh Id generator itself to a string"); + } + } + + public class CodeGenIdGenerator : FreshIdGenerator { + } + + public class VerificationIdGenerator : FreshIdGenerator { + public VerificationIdGenerator() { + } + public VerificationIdGenerator(string commonPrefix) : base(commonPrefix) { + } + public VerificationIdGenerator NestedFreshIdGenerator(string prefix) { + return new(FreshId(prefix)); + } } } \ No newline at end of file diff --git a/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs b/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs index ea9f3bc61fc..6d276fbbdc7 100644 --- a/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs +++ b/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs @@ -20,7 +20,8 @@ static class MeasureComplexityCommand { VerifyCommand.FilterSymbol, VerifyCommand.FilterPosition, }.Concat(DafnyCommands.VerificationOptions). - Concat(DafnyCommands.ResolverOptions); + Concat(DafnyCommands.ResolverOptions). + Concat(DafnyCommands.ConsoleOutputOptions); static MeasureComplexityCommand() { DafnyOptions.RegisterLegacyBinding(Iterations, (o, v) => o.RandomizeVcIterations = (int)v); diff --git a/Source/DafnyLanguageServer/LanguageServer.cs b/Source/DafnyLanguageServer/LanguageServer.cs index a3fe6625527..2d15d60eebb 100644 --- a/Source/DafnyLanguageServer/LanguageServer.cs +++ b/Source/DafnyLanguageServer/LanguageServer.cs @@ -28,6 +28,8 @@ public class LanguageServer { DafnyLangSymbolResolver.UseCaching, ProjectManager.UpdateThrottling, CachingProjectFileOpener.ProjectFileCacheExpiry, + DeveloperOptionBag.SplitPrint, + DeveloperOptionBag.PassivePrint, DeveloperOptionBag.BoogiePrint, CommonOptionBag.EnforceDeterminism, InternalDocstringRewritersPluginConfiguration.UseJavadocLikeDocstringRewriterOption, diff --git a/Source/DafnyRuntime/DafnyRuntimeGo/dafny/dafnyFromDafny.go b/Source/DafnyRuntime/DafnyRuntimeGo/dafny/dafnyFromDafny.go index 0b92f44150b..cd434586dda 100644 --- a/Source/DafnyRuntime/DafnyRuntimeGo/dafny/dafnyFromDafny.go +++ b/Source/DafnyRuntime/DafnyRuntimeGo/dafny/dafnyFromDafny.go @@ -84,17 +84,17 @@ TAIL_CALL_START: if func(_is_2 Sequence) bool { return InstanceOf(_is_2, (*ConcatSequence)(nil)) }(e) { - var _4_concat *ConcatSequence - _ = _4_concat - _4_concat = e.(*ConcatSequence) + var _0_concat *ConcatSequence + _ = _0_concat + _0_concat = e.(*ConcatSequence) if !(Companion_Default___.SizeAdditionInRange(stack.Size, Companion_Default___.ONE__SIZE())) { panic("dafnyRuntime.dfy[DafnyGo](766,6): " + (SeqOfString("expectation violation")).String()) } - (stack).AddLast((_4_concat).Right()) + (stack).AddLast((_0_concat).Right()) { var _in0 *Vector = builder _ = _in0 - var _in1 Sequence = (_4_concat).Left() + var _in1 Sequence = (_0_concat).Left() _ = _in1 var _in2 *Vector = stack _ = _in2 @@ -108,18 +108,18 @@ TAIL_CALL_START: } else if func(_is_3 Sequence) bool { return InstanceOf(_is_3, (*LazySequence)(nil)) }(e) { - var _5_lazy *LazySequence - _ = _5_lazy - _5_lazy = e.(*LazySequence) - var _6_boxed Sequence - _ = _6_boxed - var _out2 interface{} - _ = _out2 - _out2 = ((_5_lazy).Box()).Get() - _6_boxed = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out2)) + var _1_lazy *LazySequence + _ = _1_lazy + _1_lazy = e.(*LazySequence) + var _2_boxed Sequence + _ = _2_boxed + var _out0 interface{} + _ = _out0 + _out0 = ((_1_lazy).Box()).Get() + _2_boxed = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out0)) var _in3 *Vector = builder _ = _in3 - var _in4 Sequence = _6_boxed + var _in4 Sequence = _2_boxed _ = _in4 var _in5 *Vector = stack _ = _in5 @@ -130,21 +130,21 @@ TAIL_CALL_START: } else if func(_is_4 Sequence) bool { return InstanceOf(_is_4, (*ArraySequence)(nil)) }(e) { - var _7_a *ArraySequence - _ = _7_a - _7_a = e.(*ArraySequence) - (builder).Append((_7_a).Values()) + var _3_a *ArraySequence + _ = _3_a + _3_a = e.(*ArraySequence) + (builder).Append((_3_a).Values()) if (uint32(0)) < (stack.Size) { - var _8_next Sequence - _ = _8_next - var _out3 interface{} - _ = _out3 - _out3 = (stack).RemoveLast() - _8_next = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out3)) + var _4_next Sequence + _ = _4_next + var _out1 interface{} + _ = _out1 + _out1 = (stack).RemoveLast() + _4_next = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out1)) { var _in6 *Vector = builder _ = _in6 - var _in7 Sequence = _8_next + var _in7 Sequence = _4_next _ = _in7 var _in8 *Vector = stack _ = _in8 @@ -216,13 +216,13 @@ func (_static *CompanionStruct_Sequence_) Select(_this Sequence, index uint32) i { var ret interface{} = (interface{})(nil) _ = ret - var _9_a ImmutableArray - _ = _9_a - var _out4 ImmutableArray - _ = _out4 - _out4 = (_this).ToArray() - _9_a = _out4 - ret = (_9_a).Select(index) + var _0_a ImmutableArray + _ = _0_a + var _out0 ImmutableArray + _ = _out0 + _out0 = (_this).ToArray() + _0_a = _out0 + ret = (_0_a).Select(index) return ret return ret } @@ -231,10 +231,10 @@ func (_static *CompanionStruct_Sequence_) Drop(_this Sequence, lo uint32) Sequen { var ret Sequence = (Sequence)(nil) _ = ret - var _out5 Sequence - _ = _out5 - _out5 = (_this).Subsequence(lo, (_this).Cardinality()) - ret = _out5 + var _out0 Sequence + _ = _out0 + _out0 = (_this).Subsequence(lo, (_this).Cardinality()) + ret = _out0 return ret } } @@ -242,10 +242,10 @@ func (_static *CompanionStruct_Sequence_) Take(_this Sequence, hi uint32) Sequen { var ret Sequence = (Sequence)(nil) _ = ret - var _out6 Sequence - _ = _out6 - _out6 = (_this).Subsequence(uint32(0), hi) - ret = _out6 + var _out0 Sequence + _ = _out0 + _out0 = (_this).Subsequence(uint32(0), hi) + ret = _out0 return ret } } @@ -253,21 +253,21 @@ func (_static *CompanionStruct_Sequence_) Subsequence(_this Sequence, lo uint32, { var ret Sequence = (Sequence)(nil) _ = ret - var _10_a ImmutableArray - _ = _10_a - var _out7 ImmutableArray - _ = _out7 - _out7 = (_this).ToArray() - _10_a = _out7 - var _11_subarray ImmutableArray - _ = _11_subarray - var _out8 ImmutableArray - _ = _out8 - _out8 = Companion_ImmutableArray_.CastTo_((_10_a).Subarray(lo, hi)) - _11_subarray = Companion_ImmutableArray_.CastTo_(_out8) + var _0_a ImmutableArray + _ = _0_a + var _out0 ImmutableArray + _ = _out0 + _out0 = (_this).ToArray() + _0_a = _out0 + var _1_subarray ImmutableArray + _ = _1_subarray + var _out1 ImmutableArray + _ = _out1 + _out1 = Companion_ImmutableArray_.CastTo_((_0_a).Subarray(lo, hi)) + _1_subarray = Companion_ImmutableArray_.CastTo_(_out1) var _nw0 *ArraySequence = New_ArraySequence_() _ = _nw0 - _nw0.Ctor__(_11_subarray, false) + _nw0.Ctor__(_1_subarray, false) ret = _nw0 return ret } @@ -280,26 +280,26 @@ func (_static *CompanionStruct_Sequence_) Elements(_this Sequence) Sequence { func (_static *CompanionStruct_Sequence_) Create(cardinality uint32, initFn func(uint32) interface{}) Sequence { var ret Sequence = (Sequence)(nil) _ = ret - var _12_a NativeArray - _ = _12_a - var _out9 NativeArray - _ = _out9 - _out9 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.MakeWithInit(cardinality, func(coer0 func(uint32) interface{}) func(uint32) interface{} { + var _0_a NativeArray + _ = _0_a + var _out0 NativeArray + _ = _out0 + _out0 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.MakeWithInit(cardinality, func(coer0 func(uint32) interface{}) func(uint32) interface{} { return func(arg0 uint32) interface{} { return coer0(arg0) } }(initFn))) - _12_a = Companion_NativeArray_.CastTo_(_out9) - var _13_frozen ImmutableArray - _ = _13_frozen - var _out10 ImmutableArray - _ = _out10 - _out10 = Companion_ImmutableArray_.CastTo_((_12_a).Freeze(cardinality)) - _13_frozen = Companion_ImmutableArray_.CastTo_(_out10) - var _nw1 *ArraySequence = New_ArraySequence_() - _ = _nw1 - _nw1.Ctor__(_13_frozen, false) - ret = _nw1 + _0_a = Companion_NativeArray_.CastTo_(_out0) + var _1_frozen ImmutableArray + _ = _1_frozen + var _out1 ImmutableArray + _ = _out1 + _out1 = Companion_ImmutableArray_.CastTo_((_0_a).Freeze(cardinality)) + _1_frozen = Companion_ImmutableArray_.CastTo_(_out1) + var _nw0 *ArraySequence = New_ArraySequence_() + _ = _nw0 + _nw0.Ctor__(_1_frozen, false) + ret = _nw0 return ret } func (_static *CompanionStruct_Sequence_) EqualUpTo(left Sequence, right Sequence, index uint32) bool { @@ -307,20 +307,20 @@ func (_static *CompanionStruct_Sequence_) EqualUpTo(left Sequence, right Sequenc _ = ret var _hi0 uint32 = index _ = _hi0 - for _14_i := uint32(0); _14_i < _hi0; _14_i++ { - var _15_leftElement interface{} - _ = _15_leftElement - var _out11 interface{} - _ = _out11 - _out11 = (left).Select(_14_i) - _15_leftElement = _out11 - var _16_rightElement interface{} - _ = _16_rightElement - var _out12 interface{} - _ = _out12 - _out12 = (right).Select(_14_i) - _16_rightElement = _out12 - if !AreEqual(_15_leftElement, _16_rightElement) { + for _0_i := uint32(0); _0_i < _hi0; _0_i++ { + var _1_leftElement interface{} + _ = _1_leftElement + var _out0 interface{} + _ = _out0 + _out0 = (left).Select(_0_i) + _1_leftElement = _out0 + var _2_rightElement interface{} + _ = _2_rightElement + var _out1 interface{} + _ = _out1 + _out1 = (right).Select(_0_i) + _2_rightElement = _out1 + if !AreEqual(_1_leftElement, _2_rightElement) { ret = false return ret } @@ -336,10 +336,10 @@ func (_static *CompanionStruct_Sequence_) Equal(left Sequence, right Sequence) b ret = false return ret } - var _out13 bool - _ = _out13 - _out13 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) - ret = _out13 + var _out0 bool + _ = _out0 + _out0 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) + ret = _out0 return ret } func (_static *CompanionStruct_Sequence_) IsPrefixOf(left Sequence, right Sequence) bool { @@ -349,10 +349,10 @@ func (_static *CompanionStruct_Sequence_) IsPrefixOf(left Sequence, right Sequen ret = false return ret } - var _out14 bool - _ = _out14 - _out14 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) - ret = _out14 + var _out0 bool + _ = _out0 + _out0 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) + ret = _out0 return ret } func (_static *CompanionStruct_Sequence_) IsProperPrefixOf(left Sequence, right Sequence) bool { @@ -362,25 +362,25 @@ func (_static *CompanionStruct_Sequence_) IsProperPrefixOf(left Sequence, right ret = false return ret } - var _out15 bool - _ = _out15 - _out15 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) - ret = _out15 + var _out0 bool + _ = _out0 + _out0 = Companion_Sequence_.EqualUpTo(left, right, (left).Cardinality()) + ret = _out0 return ret } func (_static *CompanionStruct_Sequence_) Contains(s Sequence, t interface{}) bool { var _hresult bool = false _ = _hresult - var _hi1 uint32 = (s).Cardinality() - _ = _hi1 - for _17_i := Companion_Default___.ZERO__SIZE(); _17_i < _hi1; _17_i++ { - var _18_element interface{} - _ = _18_element - var _out16 interface{} - _ = _out16 - _out16 = (s).Select(_17_i) - _18_element = _out16 - if AreEqual(_18_element, t) { + var _hi0 uint32 = (s).Cardinality() + _ = _hi0 + for _0_i := Companion_Default___.ZERO__SIZE(); _0_i < _hi0; _0_i++ { + var _1_element interface{} + _ = _1_element + var _out0 interface{} + _ = _out0 + _out0 = (s).Select(_0_i) + _1_element = _out0 + if AreEqual(_1_element, t) { _hresult = true return _hresult } @@ -392,29 +392,29 @@ func (_static *CompanionStruct_Sequence_) Contains(s Sequence, t interface{}) bo func (_static *CompanionStruct_Sequence_) Update(s Sequence, i uint32, t interface{}) Sequence { var ret Sequence = (Sequence)(nil) _ = ret - var _19_a ImmutableArray - _ = _19_a - var _out17 ImmutableArray - _ = _out17 - _out17 = Companion_ImmutableArray_.CastTo_((s).ToArray()) - _19_a = Companion_ImmutableArray_.CastTo_(_out17) - var _20_newValue NativeArray - _ = _20_newValue - var _out18 NativeArray - _ = _out18 - _out18 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Copy(_19_a)) - _20_newValue = Companion_NativeArray_.CastTo_(_out18) - (_20_newValue).Update(i, t) - var _21_newValueFrozen ImmutableArray - _ = _21_newValueFrozen - var _out19 ImmutableArray - _ = _out19 - _out19 = Companion_ImmutableArray_.CastTo_((_20_newValue).Freeze((_20_newValue).Length())) - _21_newValueFrozen = Companion_ImmutableArray_.CastTo_(_out19) - var _nw2 *ArraySequence = New_ArraySequence_() - _ = _nw2 - _nw2.Ctor__(_21_newValueFrozen, false) - ret = _nw2 + var _0_a ImmutableArray + _ = _0_a + var _out0 ImmutableArray + _ = _out0 + _out0 = Companion_ImmutableArray_.CastTo_((s).ToArray()) + _0_a = Companion_ImmutableArray_.CastTo_(_out0) + var _1_newValue NativeArray + _ = _1_newValue + var _out1 NativeArray + _ = _out1 + _out1 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Copy(_0_a)) + _1_newValue = Companion_NativeArray_.CastTo_(_out1) + (_1_newValue).Update(i, t) + var _2_newValueFrozen ImmutableArray + _ = _2_newValueFrozen + var _out2 ImmutableArray + _ = _out2 + _out2 = Companion_ImmutableArray_.CastTo_((_1_newValue).Freeze((_1_newValue).Length())) + _2_newValueFrozen = Companion_ImmutableArray_.CastTo_(_out2) + var _nw0 *ArraySequence = New_ArraySequence_() + _ = _nw0 + _nw0.Ctor__(_2_newValueFrozen, false) + ret = _nw0 return ret } func (_static *CompanionStruct_Sequence_) Concatenate(left Sequence, right Sequence) Sequence { @@ -423,44 +423,44 @@ func (_static *CompanionStruct_Sequence_) Concatenate(left Sequence, right Seque if !(Companion_Default___.SizeAdditionInRange((left).Cardinality(), (right).Cardinality())) { panic("dafnyRuntime.dfy[DafnyGo](594,6): " + (Companion_Sequence_.Concatenate(Companion_Sequence_.Concatenate(SeqOfString("Concatenation result cardinality would be larger than the maximum ("), Companion_Helpers_.DafnyValueToDafnyString(Companion_Default___.SIZE__T__MAX())), SeqOfString(")"))).String()) } - var _22_left_k Sequence - _ = _22_left_k - _22_left_k = left + var _0_left_k Sequence + _ = _0_left_k + _0_left_k = left if func(_is_5 Sequence) bool { return InstanceOf(_is_5, (*LazySequence)(nil)) }(left) { - var _23_lazyLeft *LazySequence - _ = _23_lazyLeft - _23_lazyLeft = left.(*LazySequence) - var _out20 interface{} - _ = _out20 - _out20 = ((_23_lazyLeft).Box()).Get() - _22_left_k = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out20)) + var _1_lazyLeft *LazySequence + _ = _1_lazyLeft + _1_lazyLeft = left.(*LazySequence) + var _out0 interface{} + _ = _out0 + _out0 = ((_1_lazyLeft).Box()).Get() + _0_left_k = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out0)) } - var _24_right_k Sequence - _ = _24_right_k - _24_right_k = right + var _2_right_k Sequence + _ = _2_right_k + _2_right_k = right if func(_is_6 Sequence) bool { return InstanceOf(_is_6, (*LazySequence)(nil)) }(right) { - var _25_lazyRight *LazySequence - _ = _25_lazyRight - _25_lazyRight = right.(*LazySequence) - var _out21 interface{} - _ = _out21 - _out21 = ((_25_lazyRight).Box()).Get() - _24_right_k = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out21)) + var _3_lazyRight *LazySequence + _ = _3_lazyRight + _3_lazyRight = right.(*LazySequence) + var _out1 interface{} + _ = _out1 + _out1 = ((_3_lazyRight).Box()).Get() + _2_right_k = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out1)) } - var _26_c *ConcatSequence - _ = _26_c - var _nw3 *ConcatSequence = New_ConcatSequence_() - _ = _nw3 - _nw3.Ctor__(_22_left_k, _24_right_k) - _26_c = _nw3 - var _nw4 *LazySequence = New_LazySequence_() - _ = _nw4 - _nw4.Ctor__(_26_c) - ret = _nw4 + var _4_c *ConcatSequence + _ = _4_c + var _nw0 *ConcatSequence = New_ConcatSequence_() + _ = _nw0 + _nw0.Ctor__(_0_left_k, _2_right_k) + _4_c = _nw0 + var _nw1 *LazySequence = New_LazySequence_() + _ = _nw1 + _nw1.Ctor__(_4_c) + ret = _nw1 return ret } @@ -555,9 +555,9 @@ func (_this type_Size__t_) String() string { return "dafny.Size__t" } func (_this *CompanionStruct_Size__t_) Is_(__source uint32) bool { - var _27_x Int = IntOfUint32(__source) - _ = _27_x - return ((_27_x).Sign() != -1) && ((_27_x).Cmp(Companion_Default___.SIZE__T__LIMIT()) < 0) + var _0_x Int = IntOfUint32(__source) + _ = _0_x + return ((_0_x).Sign() != -1) && ((_0_x).Cmp(Companion_Default___.SIZE__T__LIMIT()) < 0) } // Definition of trait NativeArray @@ -784,13 +784,13 @@ var _ TraitOffspring = &Vector{} func (_this *Vector) Ctor__(length uint32) { { - var _28_storage NativeArray - _ = _28_storage - var _out22 NativeArray - _ = _out22 - _out22 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Make(length)) - _28_storage = Companion_NativeArray_.CastTo_(_out22) - (_this).Storage = _28_storage + var _0_storage NativeArray + _ = _0_storage + var _out0 NativeArray + _ = _out0 + _out0 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Make(length)) + _0_storage = Companion_NativeArray_.CastTo_(_out0) + (_this).Storage = _0_storage (_this).Size = uint32(0) } } @@ -825,26 +825,26 @@ func (_this *Vector) EnsureCapacity(newMinCapacity uint32) { if ((_this.Storage).Length()) >= (newMinCapacity) { return } - var _29_newCapacity uint32 - _ = _29_newCapacity - _29_newCapacity = newMinCapacity + var _0_newCapacity uint32 + _ = _0_newCapacity + _0_newCapacity = newMinCapacity if ((_this.Storage).Length()) <= ((Companion_Default___.SIZE__T__MAX()) / (Companion_Default___.TWO__SIZE())) { - _29_newCapacity = (_this).Max(_29_newCapacity, ((_this.Storage).Length())*(Companion_Default___.TWO__SIZE())) + _0_newCapacity = (_this).Max(_0_newCapacity, ((_this.Storage).Length())*(Companion_Default___.TWO__SIZE())) } - var _30_newStorage NativeArray - _ = _30_newStorage - var _out23 NativeArray - _ = _out23 - _out23 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Make(_29_newCapacity)) - _30_newStorage = Companion_NativeArray_.CastTo_(_out23) - var _31_values ImmutableArray - _ = _31_values - var _out24 ImmutableArray - _ = _out24 - _out24 = Companion_ImmutableArray_.CastTo_((_this.Storage).Freeze(_this.Size)) - _31_values = Companion_ImmutableArray_.CastTo_(_out24) - (_30_newStorage).UpdateSubarray(uint32(0), _31_values) - (_this).Storage = _30_newStorage + var _1_newStorage NativeArray + _ = _1_newStorage + var _out0 NativeArray + _ = _out0 + _out0 = Companion_NativeArray_.CastTo_(Companion_NativeArray_.Make(_0_newCapacity)) + _1_newStorage = Companion_NativeArray_.CastTo_(_out0) + var _2_values ImmutableArray + _ = _2_values + var _out1 ImmutableArray + _ = _out1 + _out1 = Companion_ImmutableArray_.CastTo_((_this.Storage).Freeze(_this.Size)) + _2_values = Companion_ImmutableArray_.CastTo_(_out1) + (_1_newStorage).UpdateSubarray(uint32(0), _2_values) + (_this).Storage = _1_newStorage } } func (_this *Vector) RemoveLast() interface{} { @@ -858,10 +858,10 @@ func (_this *Vector) RemoveLast() interface{} { } func (_this *Vector) Append(other ImmutableArray) { { - var _32_newSize uint32 - _ = _32_newSize - _32_newSize = (_this.Size) + ((other).Length()) - (_this).EnsureCapacity(_32_newSize) + var _0_newSize uint32 + _ = _0_newSize + _0_newSize = (_this.Size) + ((other).Length()) + (_this).EnsureCapacity(_0_newSize) (_this.Storage).UpdateSubarray(_this.Size, other) (_this).Size = (_this.Size) + ((other).Length()) } @@ -870,10 +870,10 @@ func (_this *Vector) Freeze() ImmutableArray { { var ret ImmutableArray = (ImmutableArray)(nil) _ = ret - var _out25 ImmutableArray - _ = _out25 - _out25 = Companion_ImmutableArray_.CastTo_((_this.Storage).Freeze(_this.Size)) - ret = Companion_ImmutableArray_.CastTo_(_out25) + var _out0 ImmutableArray + _ = _out0 + _out0 = Companion_ImmutableArray_.CastTo_((_this.Storage).Freeze(_this.Size)) + ret = Companion_ImmutableArray_.CastTo_(_out0) return ret } } @@ -944,10 +944,10 @@ var _ Sequence = &ArraySequence{} var _ TraitOffspring = &ArraySequence{} func (_this *ArraySequence) Drop(lo uint32) Sequence { - var _out26 Sequence - _ = _out26 - _out26 = Companion_Sequence_.Drop(_this, lo) - return _out26 + var _out1 Sequence + _ = _out1 + _out1 = Companion_Sequence_.Drop(_this, lo) + return _out1 } func (_this *ArraySequence) Elements() Sequence { return Companion_Sequence_.Elements(_this) @@ -959,28 +959,28 @@ func (_this *ArraySequence) IsString_set_(value bool) { _this._isString = value } func (_this *ArraySequence) Select(index uint32) interface{} { - var _out27 interface{} - _ = _out27 - _out27 = Companion_Sequence_.Select(_this, index) - return _out27 + var _out1 interface{} + _ = _out1 + _out1 = Companion_Sequence_.Select(_this, index) + return _out1 } func (_this *ArraySequence) SetString() Sequence { - var _out28 Sequence - _ = _out28 - _out28 = Companion_Sequence_.SetString(_this) - return _out28 + var _out0 Sequence + _ = _out0 + _out0 = Companion_Sequence_.SetString(_this) + return _out0 } func (_this *ArraySequence) Subsequence(lo uint32, hi uint32) Sequence { - var _out29 Sequence - _ = _out29 - _out29 = Companion_Sequence_.Subsequence(_this, lo, hi) - return _out29 + var _out2 Sequence + _ = _out2 + _out2 = Companion_Sequence_.Subsequence(_this, lo, hi) + return _out2 } func (_this *ArraySequence) Take(hi uint32) Sequence { - var _out30 Sequence - _ = _out30 - _out30 = Companion_Sequence_.Take(_this, hi) - return _out30 + var _out1 Sequence + _ = _out1 + _out1 = Companion_Sequence_.Take(_this, hi) + return _out1 } func (_this *ArraySequence) Ctor__(value ImmutableArray, isString bool) { { @@ -1056,10 +1056,10 @@ var _ Sequence = &ConcatSequence{} var _ TraitOffspring = &ConcatSequence{} func (_this *ConcatSequence) Drop(lo uint32) Sequence { - var _out31 Sequence - _ = _out31 - _out31 = Companion_Sequence_.Drop(_this, lo) - return _out31 + var _out2 Sequence + _ = _out2 + _out2 = Companion_Sequence_.Drop(_this, lo) + return _out2 } func (_this *ConcatSequence) Elements() Sequence { return Companion_Sequence_.Elements(_this) @@ -1071,28 +1071,28 @@ func (_this *ConcatSequence) IsString_set_(value bool) { _this._isString = value } func (_this *ConcatSequence) Select(index uint32) interface{} { - var _out32 interface{} - _ = _out32 - _out32 = Companion_Sequence_.Select(_this, index) - return _out32 + var _out2 interface{} + _ = _out2 + _out2 = Companion_Sequence_.Select(_this, index) + return _out2 } func (_this *ConcatSequence) SetString() Sequence { - var _out33 Sequence - _ = _out33 - _out33 = Companion_Sequence_.SetString(_this) - return _out33 + var _out1 Sequence + _ = _out1 + _out1 = Companion_Sequence_.SetString(_this) + return _out1 } func (_this *ConcatSequence) Subsequence(lo uint32, hi uint32) Sequence { - var _out34 Sequence - _ = _out34 - _out34 = Companion_Sequence_.Subsequence(_this, lo, hi) - return _out34 + var _out3 Sequence + _ = _out3 + _out3 = Companion_Sequence_.Subsequence(_this, lo, hi) + return _out3 } func (_this *ConcatSequence) Take(hi uint32) Sequence { - var _out35 Sequence - _ = _out35 - _out35 = Companion_Sequence_.Take(_this, hi) - return _out35 + var _out2 Sequence + _ = _out2 + _out2 = Companion_Sequence_.Take(_this, hi) + return _out2 } func (_this *ConcatSequence) Ctor__(left Sequence, right Sequence) { { @@ -1111,23 +1111,23 @@ func (_this *ConcatSequence) ToArray() ImmutableArray { { var ret ImmutableArray = (ImmutableArray)(nil) _ = ret - var _33_builder *Vector - _ = _33_builder - var _nw5 *Vector = New_Vector_() - _ = _nw5 - _nw5.Ctor__((_this).Length()) - _33_builder = _nw5 - var _34_stack *Vector - _ = _34_stack - var _nw6 *Vector = New_Vector_() - _ = _nw6 - _nw6.Ctor__(Companion_Default___.TEN__SIZE()) - _34_stack = _nw6 - Companion_Default___.AppendOptimized(_33_builder, _this, _34_stack) - var _out36 ImmutableArray - _ = _out36 - _out36 = Companion_ImmutableArray_.CastTo_((_33_builder).Freeze()) - ret = Companion_ImmutableArray_.CastTo_(_out36) + var _0_builder *Vector + _ = _0_builder + var _nw0 *Vector = New_Vector_() + _ = _nw0 + _nw0.Ctor__((_this).Length()) + _0_builder = _nw0 + var _1_stack *Vector + _ = _1_stack + var _nw1 *Vector = New_Vector_() + _ = _nw1 + _nw1.Ctor__(Companion_Default___.TEN__SIZE()) + _1_stack = _nw1 + Companion_Default___.AppendOptimized(_0_builder, _this, _1_stack) + var _out0 ImmutableArray + _ = _out0 + _out0 = Companion_ImmutableArray_.CastTo_((_0_builder).Freeze()) + ret = Companion_ImmutableArray_.CastTo_(_out0) return ret } } @@ -1193,10 +1193,10 @@ var _ Sequence = &LazySequence{} var _ TraitOffspring = &LazySequence{} func (_this *LazySequence) Drop(lo uint32) Sequence { - var _out37 Sequence - _ = _out37 - _out37 = Companion_Sequence_.Drop(_this, lo) - return _out37 + var _out3 Sequence + _ = _out3 + _out3 = Companion_Sequence_.Drop(_this, lo) + return _out3 } func (_this *LazySequence) Elements() Sequence { return Companion_Sequence_.Elements(_this) @@ -1208,38 +1208,38 @@ func (_this *LazySequence) IsString_set_(value bool) { _this._isString = value } func (_this *LazySequence) Select(index uint32) interface{} { - var _out38 interface{} - _ = _out38 - _out38 = Companion_Sequence_.Select(_this, index) - return _out38 + var _out3 interface{} + _ = _out3 + _out3 = Companion_Sequence_.Select(_this, index) + return _out3 } func (_this *LazySequence) SetString() Sequence { - var _out39 Sequence - _ = _out39 - _out39 = Companion_Sequence_.SetString(_this) - return _out39 + var _out2 Sequence + _ = _out2 + _out2 = Companion_Sequence_.SetString(_this) + return _out2 } func (_this *LazySequence) Subsequence(lo uint32, hi uint32) Sequence { - var _out40 Sequence - _ = _out40 - _out40 = Companion_Sequence_.Subsequence(_this, lo, hi) - return _out40 + var _out4 Sequence + _ = _out4 + _out4 = Companion_Sequence_.Subsequence(_this, lo, hi) + return _out4 } func (_this *LazySequence) Take(hi uint32) Sequence { - var _out41 Sequence - _ = _out41 - _out41 = Companion_Sequence_.Take(_this, hi) - return _out41 + var _out3 Sequence + _ = _out3 + _out3 = Companion_Sequence_.Take(_this, hi) + return _out3 } func (_this *LazySequence) Ctor__(wrapped Sequence) { { - var _35_box AtomicBox - _ = _35_box - var _out42 AtomicBox - _ = _out42 - _out42 = Companion_AtomicBox_.CastTo_(Companion_AtomicBox_.Make(wrapped)) - _35_box = Companion_AtomicBox_.CastTo_(_out42) - (_this)._box = _35_box + var _0_box AtomicBox + _ = _0_box + var _out0 AtomicBox + _ = _out0 + _out0 = Companion_AtomicBox_.CastTo_(Companion_AtomicBox_.Make(wrapped)) + _0_box = Companion_AtomicBox_.CastTo_(_out0) + (_this)._box = _0_box (_this)._length = (wrapped).Cardinality() (_this)._isString = wrapped.IsString() } @@ -1253,23 +1253,23 @@ func (_this *LazySequence) ToArray() ImmutableArray { { var ret ImmutableArray = (ImmutableArray)(nil) _ = ret - var _36_expr Sequence - _ = _36_expr - var _out43 interface{} - _ = _out43 - _out43 = ((_this).Box()).Get() - _36_expr = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out43)) - var _out44 ImmutableArray - _ = _out44 - _out44 = Companion_ImmutableArray_.CastTo_((_36_expr).ToArray()) - ret = Companion_ImmutableArray_.CastTo_(_out44) - var _37_arraySeq *ArraySequence - _ = _37_arraySeq - var _nw7 *ArraySequence = New_ArraySequence_() - _ = _nw7 - _nw7.Ctor__(ret, false) - _37_arraySeq = _nw7 - ((_this).Box()).Put(_37_arraySeq) + var _0_expr Sequence + _ = _0_expr + var _out0 interface{} + _ = _out0 + _out0 = ((_this).Box()).Get() + _0_expr = Companion_Sequence_.CastTo_(Companion_Sequence_.CastTo_(_out0)) + var _out1 ImmutableArray + _ = _out1 + _out1 = Companion_ImmutableArray_.CastTo_((_0_expr).ToArray()) + ret = Companion_ImmutableArray_.CastTo_(_out1) + var _1_arraySeq *ArraySequence + _ = _1_arraySeq + var _nw0 *ArraySequence = New_ArraySequence_() + _ = _nw0 + _nw0.Ctor__(ret, false) + _1_arraySeq = _nw0 + ((_this).Box()).Put(_1_arraySeq) return ret } } diff --git a/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/measure-complexity.dfy b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/measure-complexity.dfy index ebbf53c168d..62e786470c7 100644 --- a/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/measure-complexity.dfy +++ b/Source/IntegrationTests/TestFiles/LitTests/LitTest/cli/measure-complexity.dfy @@ -1,4 +1,4 @@ -// RUN: %exits-with 4 %baredafny measure-complexity --use-basename-for-filename --isolate-assertions --worst-amount 100 "%s" > %t.raw +// RUN: %exits-with 4 %baredafny measure-complexity --show-snippets false --use-basename-for-filename --isolate-assertions --worst-amount 100 "%s" > %t.raw // RUN: %sed 's#\): \d+#): #g' %t.raw > %t.raw2 // RUN: %sed 's#are \d+#are #g' %t.raw2 > %t // RUN: %diff "%s.expect" "%t" diff --git a/customBoogie.patch b/customBoogie.patch index 0f5b5eefb5f..3f1b02ac97e 100644 --- a/customBoogie.patch +++ b/customBoogie.patch @@ -61,7 +61,7 @@ index 4a8b2f89b..a308be9bf 100644 -- +- + + +