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