Source/Dafny/DafnyOptions.cs
/// <summary>
/// Dafny comes with it's own copy of z3, to save new users the trouble of having to install extra dependency. 
/// For this to work, Dafny makes the Z3ExecutablePath point to the path were Z3 is put by our release script.
/// For developers though (and people getting this from source), it's convenient to be able to run right away, 
/// so we vendor a Windows version.
/// </summary>
Dafny comes with it's own copy of z3, to save new users the trouble of having to install extra dependency.
For this to work, Dafny makes the Z3ExecutablePath point to the path were Z3 is put by our release script.
For developers though (and people getting this from source), it's convenient to be able to run right away,
so we vendor a Windows version.
Dafny comes with it ' s own copy of z3 to save new users the trouble of having to install extra dependency . For this to work Dafny makes the Z3ExecutablePath point to the path were Z3 is put by our release script . For developers though ( and people getting this from source ) it ' s convenient to be able to run right away so we vendor a Windows version .
private void SetZ3ExecutableName() {
      var platform = (int)System.Environment.OSVersion.Platform;
      var isUnix = platform == 4 || platform == 128;
      var z3binName = isUnix ? "z3" : "z3.exe";
      var dafnyBinDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
      var z3BinDir = System.IO.Path.Combine(dafnyBinDir, "z3", "bin");
      var z3BinPath = System.IO.Path.Combine(z3BinDir, z3binName);
      if (!System.IO.File.Exists(z3BinPath) && !isUnix) {
        z3BinPath = System.IO.Path.Combine(dafnyBinDir, z3binName);
      }
      if (!System.IO.File.Exists(z3BinPath) && errorReporter != null) {
        var tok = new Bpl.Token(1, 1) { filename = "*** " };
        errorReporter.Warning(MessageSource.Other, tok, "Could not find '{0}' in '{1}'.{2}Downloading and extracting a Z3 distribution to Dafny's 'Binaries' folder would solve this issue; for now, we'll rely on Boogie to find Z3.", 
          z3binName, z3BinDir, System.Environment.NewLine);
      } else {
        Z3ExecutablePath = z3BinPath;
      }
    }
private void SetZ3ExecutableName ( ) { var platform = ( int ) System . Environment . OSVersion . Platform ; var isUnix = platform == 4 || platform == 128 ; var z3binName = isUnix ? " " : " " ; var dafnyBinDir = System . IO . Path . GetDirectoryName ( System . Reflection . Assembly . GetExecutingAssembly ( ) . Location ) ; var z3BinDir = System . IO . Path . Combine ( dafnyBinDir , " " , " " ) ; var z3BinPath = System . IO . Path . Combine ( z3BinDir , z3binName ) ; if ( ! System . IO . File . Exists ( z3BinPath ) && ! isUnix ) { z3BinPath = System . IO . Path . Combine ( dafnyBinDir , z3binName ) ; } if ( ! System . IO . File . Exists ( z3BinPath ) && errorReporter != null ) { var tok = new Bpl . Token ( 1 , 1 ) { filename = " " } ; errorReporter . Warning ( MessageSource . Other , tok , " " , z3binName , z3BinDir , System . Environment . NewLine ) ; } else { Z3ExecutablePath = z3BinPath ; } }
Dafny comes with it's own copy of z3, to save new users the trouble of having to install extra dependency.
Dafny comes with it ' s own copy of z3 to save new users the trouble of having to install extra dependency .
// http://www.mono-project.com/docs/faq/technical/ // This is most likely a Windows user running from source without downloading z3  // separately; this is ok, since we vendor z3.exe.