diff --git a/.gitmodules b/.gitmodules
index aa94f844181..e5dec47b942 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "Test/libraries"]
path = Source/IntegrationTests/TestFiles/LitTests/LitTest/libraries
url = https://github.com/dafny-lang/libraries.git
+[submodule "boogie"]
+ path = boogie
+ url = git@github.com:keyboardDrummer/boogie.git
diff --git a/Source/Dafny.sln b/Source/Dafny.sln
index 23297b185ed..fc8e8b1fa49 100644
--- a/Source/Dafny.sln
+++ b/Source/Dafny.sln
@@ -43,6 +43,32 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DafnyDriver.Test", "DafnyDr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DafnyCore.Test", "DafnyCore.Test\DafnyCore.Test.csproj", "{33C29F26-A27B-474D-B436-83EA615B09FC}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boogie", "Boogie", "{60332269-9C5D-465E-8582-01F9B738BD90}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseTypes", "..\boogie\Source\BaseTypes\BaseTypes.csproj", "{68721962-0D91-4355-BC94-BE1CCBD30E47}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AbstractInterpretation", "..\boogie\Source\AbstractInterpretation\AbstractInterpretation.csproj", "{2A6B36F4-9F15-459A-8EDB-5BAEED98FE17}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeContractsExtender", "..\boogie\Source\CodeContractsExtender\CodeContractsExtender.csproj", "{09662044-5640-4785-92E3-2F7CDBA4DDB2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Concurrency", "..\boogie\Source\Concurrency\Concurrency.csproj", "{DA8A9BA8-9BBA-4C64-9736-FD967517DCA9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "..\boogie\Source\Core\Core.csproj", "{2BF5ECCA-24B2-4A4B-86B6-D0DB17331109}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecutionEngine", "..\boogie\Source\ExecutionEngine\ExecutionEngine.csproj", "{0145DC89-7243-41F8-AB3E-F716F04E9BFF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Graph", "..\boogie\Source\Graph\Graph.csproj", "{05DE24BB-D639-40C4-894F-701652F51559}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Houdini", "..\boogie\Source\Houdini\Houdini.csproj", "{51D6B0D1-2D15-40A3-80F4-E32A5C07B0A6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "..\boogie\Source\Model\Model.csproj", "{D97C23B6-FB4A-4450-930E-58EC83D308A0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SMTLib", "..\boogie\Source\Provers\SMTLib\SMTLib.csproj", "{0EC245EE-54DD-4AE3-9C2E-34E67EE28B9F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCExpr", "..\boogie\Source\VCExpr\VCExpr.csproj", "{E760E37E-0257-4C96-89C4-722F85BABDBB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCGeneration", "..\boogie\Source\VCGeneration\VCGeneration.csproj", "{1EE372AA-4FF9-47FB-9C04-18CBF219F6E8}"
+EndProject
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -138,5 +164,17 @@ Global
SolutionGuid = {280F572B-D27A-4613-998F-00B6FFE01187}
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
+ {68721962-0D91-4355-BC94-BE1CCBD30E47} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {2A6B36F4-9F15-459A-8EDB-5BAEED98FE17} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {09662044-5640-4785-92E3-2F7CDBA4DDB2} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {DA8A9BA8-9BBA-4C64-9736-FD967517DCA9} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {2BF5ECCA-24B2-4A4B-86B6-D0DB17331109} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {0145DC89-7243-41F8-AB3E-F716F04E9BFF} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {05DE24BB-D639-40C4-894F-701652F51559} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {51D6B0D1-2D15-40A3-80F4-E32A5C07B0A6} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {D97C23B6-FB4A-4450-930E-58EC83D308A0} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {0EC245EE-54DD-4AE3-9C2E-34E67EE28B9F} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {E760E37E-0257-4C96-89C4-722F85BABDBB} = {60332269-9C5D-465E-8582-01F9B738BD90}
+ {1EE372AA-4FF9-47FB-9C04-18CBF219F6E8} = {60332269-9C5D-465E-8582-01F9B738BD90}
EndGlobalSection
EndGlobal
diff --git a/Source/DafnyCore/DafnyCore.csproj b/Source/DafnyCore/DafnyCore.csproj
index e1499557a15..c15a3145ea3 100644
--- a/Source/DafnyCore/DafnyCore.csproj
+++ b/Source/DafnyCore/DafnyCore.csproj
@@ -34,7 +34,17 @@
-
+
+
+
+
+
+
+
+
+
+
+
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..3664718b741 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/DafnyDriver/Commands/MeasureComplexityCommand.cs b/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs
index ed44471f310..6d276fbbdc7 100644
--- a/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs
+++ b/Source/DafnyDriver/Commands/MeasureComplexityCommand.cs
@@ -3,9 +3,12 @@
using System.CommandLine;
using System.Linq;
using System.Reactive.Subjects;
+using System.Threading;
using System.Threading.Tasks;
using DafnyCore;
using DafnyDriver.Commands;
+using Microsoft.Boogie;
+using VC;
namespace Microsoft.Dafny;
@@ -13,10 +16,12 @@ static class MeasureComplexityCommand {
public static IEnumerable