mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
Merge branch 'unstable' of https://git01.codeplex.com/z3 into unstable
This commit is contained in:
commit
99e94e3263
12
configure.ac
12
configure.ac
|
@ -1,4 +1,6 @@
|
||||||
AC_INIT([z3], [4.2])
|
AC_INIT([z3], [4.2])
|
||||||
|
AC_CONFIG_SRCDIR(src/util/util.cpp)
|
||||||
|
AC_PREFIX_DEFAULT(/usr)
|
||||||
|
|
||||||
###################
|
###################
|
||||||
#
|
#
|
||||||
|
@ -80,7 +82,12 @@ fi
|
||||||
#
|
#
|
||||||
###################
|
###################
|
||||||
# Sets CXX
|
# Sets CXX
|
||||||
AC_PROG_CXX(g++)
|
AC_LANG([C++])
|
||||||
|
AC_PROG_CXX(g++ false)
|
||||||
|
AC_PROG_CC
|
||||||
|
if test $CXX = "false"; then
|
||||||
|
AC_MSG_ERROR([C++ compiler was not found])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_PROG_MAKE_SET
|
AC_PROG_MAKE_SET
|
||||||
|
|
||||||
|
@ -108,6 +115,7 @@ host_os=`uname -s`
|
||||||
AS_IF([test "$host_os" = "Darwin"], [
|
AS_IF([test "$host_os" = "Darwin"], [
|
||||||
PLATFORM=osx
|
PLATFORM=osx
|
||||||
SO_EXT=.dylib
|
SO_EXT=.dylib
|
||||||
|
LDFLAGS=
|
||||||
SLIBFLAGS="-dynamiclib -fopenmp"
|
SLIBFLAGS="-dynamiclib -fopenmp"
|
||||||
SLIBEXTRAFLAGS=""
|
SLIBEXTRAFLAGS=""
|
||||||
COMP_VERSIONS="-compatibility_version \$(Z3_VERSION) -current_version \$(Z3_VERSION)"
|
COMP_VERSIONS="-compatibility_version \$(Z3_VERSION) -current_version \$(Z3_VERSION)"
|
||||||
|
@ -115,6 +123,7 @@ AS_IF([test "$host_os" = "Darwin"], [
|
||||||
], [test "$host_os" = "Linux"], [
|
], [test "$host_os" = "Linux"], [
|
||||||
PLATFORM=linux
|
PLATFORM=linux
|
||||||
SO_EXT=.so
|
SO_EXT=.so
|
||||||
|
LDFLAGS=-lrt
|
||||||
SLIBFLAGS="-shared -fopenmp"
|
SLIBFLAGS="-shared -fopenmp"
|
||||||
SLIBEXTRAFLAGS=
|
SLIBEXTRAFLAGS=
|
||||||
COMP_VERSIONS=
|
COMP_VERSIONS=
|
||||||
|
@ -133,6 +142,7 @@ AS_IF([test "$host_os" = "Darwin"], [
|
||||||
AC_MSG_ERROR([Unknown host platform: $host_os])
|
AC_MSG_ERROR([Unknown host platform: $host_os])
|
||||||
])
|
])
|
||||||
AC_SUBST(SLIBFLAGS)
|
AC_SUBST(SLIBFLAGS)
|
||||||
|
AC_SUBST(LDFLAGS)
|
||||||
AC_SUBST(SLIBEXTRAFLAGS)
|
AC_SUBST(SLIBEXTRAFLAGS)
|
||||||
AC_SUBST(SO_EXT)
|
AC_SUBST(SO_EXT)
|
||||||
|
|
||||||
|
|
10
examples/c++/README
Normal file
10
examples/c++/README
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Small example using the c++ bindings.
|
||||||
|
To build the example execute
|
||||||
|
make examples
|
||||||
|
in the build directory.
|
||||||
|
|
||||||
|
This command will create the executable cpp_example.
|
||||||
|
On Windows, you can just execute it.
|
||||||
|
On OSX and Linux, you must install z3 first using
|
||||||
|
sudo make install
|
||||||
|
OR update LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (OSX) with the build directory. You need that to be able to find the Z3 shared library.
|
|
@ -1,24 +0,0 @@
|
||||||
This directory contains scripts to build the test application using
|
|
||||||
Microsoft C compiler, or g++.
|
|
||||||
|
|
||||||
1) Using Microsoft C compiler
|
|
||||||
|
|
||||||
Use 'build.cmd' to build the test application using Microsoft C
|
|
||||||
compiler.
|
|
||||||
|
|
||||||
Remark: The Microsoft C compiler (cl) must be in your path,
|
|
||||||
or you can use the Visual Studio Command Prompt.
|
|
||||||
|
|
||||||
The script 'exec.cmd' adds the bin directory to the path. So,
|
|
||||||
example.exe can find z3.dll.
|
|
||||||
|
|
||||||
2) Using gcc
|
|
||||||
|
|
||||||
You must install Z3 before running this example.
|
|
||||||
To install Z3, execute the following command in the Z3 root directory.
|
|
||||||
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
Use 'build.sh' to build the test application using g++.
|
|
||||||
It generates the executable 'example'.
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
cl /EHsc /I ..\..\include /I . ..\..\bin\z3.lib example.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
cl /W3 /EHsc /I ..\lib ..\debug\z3_dbg.lib example.cpp
|
|
|
@ -1,9 +0,0 @@
|
||||||
if g++ -fopenmp -o example example.cpp -lz3; then
|
|
||||||
echo "Example was successfully compiled."
|
|
||||||
echo "To run example, execute:"
|
|
||||||
echo " ./example"
|
|
||||||
else
|
|
||||||
echo "You must install Z3 before compiling this example."
|
|
||||||
echo "To install Z3, execute the following command in the Z3 root directory."
|
|
||||||
echo " sudo make install"
|
|
||||||
fi
|
|
|
@ -1,5 +0,0 @@
|
||||||
@echo off
|
|
||||||
SETLOCAL
|
|
||||||
set PATH=..\..\bin;%PATH%
|
|
||||||
example.exe
|
|
||||||
ENDLOCAL
|
|
11
examples/c/README
Normal file
11
examples/c/README
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Small example using the c++ bindings.
|
||||||
|
To build the example execute
|
||||||
|
make examples
|
||||||
|
in the build directory.
|
||||||
|
|
||||||
|
This command will create the executable c_example.
|
||||||
|
On Windows, you can just execute it.
|
||||||
|
On OSX and Linux, you must install z3 first using
|
||||||
|
sudo make install
|
||||||
|
OR update LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (OSX) with the build directory. You need that to be able to find the Z3 shared library.
|
||||||
|
|
7
examples/dotnet/README
Normal file
7
examples/dotnet/README
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Small example using the .Net bindings.
|
||||||
|
This example is only built if you have Visual Studio.
|
||||||
|
To build the example execute
|
||||||
|
make examples
|
||||||
|
in the build directory.
|
||||||
|
|
||||||
|
It will create the executable dotnet_example.exe
|
12
examples/maxsat/README
Normal file
12
examples/maxsat/README
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Small example using the c++ bindings.
|
||||||
|
To build the example execute
|
||||||
|
make examples
|
||||||
|
in the build directory.
|
||||||
|
|
||||||
|
This command will create the executable maxsat.
|
||||||
|
On Windows, you can just execute it.
|
||||||
|
On OSX and Linux, you must install z3 first using
|
||||||
|
sudo make install
|
||||||
|
OR update LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (OSX) with the build directory. You need that to be able to find the Z3 shared library.
|
||||||
|
|
||||||
|
This directory contains a test file (ex.smt) that can be use as input for the maxsat test application.
|
|
@ -1,16 +0,0 @@
|
||||||
WARNING: this example still uses the old Z3 (version 3.x) C API.
|
|
||||||
The current version is backward compatible.
|
|
||||||
|
|
||||||
This directory contains scripts to build the MaxSAT application using
|
|
||||||
Microsoft C compiler, or gcc.
|
|
||||||
|
|
||||||
1) Using Microsoft C compiler (with binary release)
|
|
||||||
|
|
||||||
Use 'build.cmd' to build the MaxSAT application using Microsoft C compiler.
|
|
||||||
|
|
||||||
Remark: The Microsoft C compiler (cl) must be in your path,
|
|
||||||
or you can use the Visual Studio Command Prompt.
|
|
||||||
|
|
||||||
The script 'exec.cmd' adds the bin directory to the path. So,
|
|
||||||
maxsat.exe can find z3.dll.
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
WARNING: this example still uses the old Z3 (version 3.x) C API.
|
|
||||||
The current version is backward compatible.
|
|
||||||
|
|
||||||
1) Using Visual Studio (with Z3 source code release)
|
|
||||||
|
|
||||||
The maxsat example application is automatically built when the z3-prover.sln is processed. The following command should be used to compile z3-prover.sln in the Z3 root directory
|
|
||||||
|
|
||||||
msbuild /p:configuration=external
|
|
||||||
|
|
||||||
The maxsat executable is located at
|
|
||||||
|
|
||||||
..\external\maxsat
|
|
||||||
|
|
||||||
To process ex.smt, use
|
|
||||||
|
|
||||||
..\external\maxsat ex.smt
|
|
||||||
|
|
||||||
2) Using gcc (on Linux or OSX)
|
|
||||||
|
|
||||||
Use 'build.sh' to build the MaxSAT application using gcc.
|
|
||||||
|
|
||||||
You must install Z3 before running this example.
|
|
||||||
To install Z3, execute the following command in the Z3 root directory.
|
|
||||||
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
Use 'build.sh' to build the test application using gcc.
|
|
||||||
It generates the executable 'maxsat'.
|
|
|
@ -1 +0,0 @@
|
||||||
cl /I ..\..\include ..\..\bin\z3.lib maxsat.c
|
|
|
@ -1,9 +0,0 @@
|
||||||
if gcc -fopenmp -o maxsat maxsat.c -lz3; then
|
|
||||||
echo "maxsat example was successfully compiled."
|
|
||||||
echo "To run example, execute:"
|
|
||||||
echo " ./maxsat ex.smt"
|
|
||||||
else
|
|
||||||
echo "You must install Z3 before compiling this example."
|
|
||||||
echo "To install Z3, execute the following command in the Z3 root directory."
|
|
||||||
echo " sudo make install"
|
|
||||||
fi
|
|
|
@ -1,5 +0,0 @@
|
||||||
@echo off
|
|
||||||
SETLOCAL
|
|
||||||
set PATH=..\..\bin;%PATH%
|
|
||||||
maxsat.exe %1
|
|
||||||
ENDLOCAL
|
|
|
@ -1,295 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="commercial|Win32">
|
|
||||||
<Configuration>commercial</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="commercial|x64">
|
|
||||||
<Configuration>commercial</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="external|Win32">
|
|
||||||
<Configuration>external</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="external|x64">
|
|
||||||
<Configuration>external</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{7C154132-AAAB-4F60-B652-F8C51A63D244}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>maxsat</RootNamespace>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>_AMD64_;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\lib</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="maxsat.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\lib\lib.vcxproj">
|
|
||||||
<Project>{4a7e5a93-19d8-4382-8950-fb2edec7a76e}</Project>
|
|
||||||
<Private>true</Private>
|
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
||||||
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
||||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
|
||||||
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
4
examples/python/README
Normal file
4
examples/python/README
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
The example is copied to the build directory during configuration.
|
||||||
|
You can execute it using
|
||||||
|
python example.py
|
||||||
|
in the build directory after you build Z3.
|
|
@ -1,25 +0,0 @@
|
||||||
WARNING: this example still uses the old Z3 (version 3.x) C API.
|
|
||||||
The current version is backward compatible.
|
|
||||||
|
|
||||||
1) Using Visual Studio (with Z3 source code release)
|
|
||||||
|
|
||||||
The test_capi application is automatically built when the z3-prover.sln is processed. The following command should be used to compile z3-prover.sln in the Z3 root directory
|
|
||||||
|
|
||||||
msbuild /p:configuration=external
|
|
||||||
|
|
||||||
The maxsat executable is located at
|
|
||||||
|
|
||||||
..\external\test_capi
|
|
||||||
|
|
||||||
2) Using gcc (on Linux or OSX)
|
|
||||||
|
|
||||||
Use 'build.sh' to build the test application using gcc.
|
|
||||||
|
|
||||||
You must install Z3 before running this example.
|
|
||||||
To install Z3, execute the following command in the Z3 root directory.
|
|
||||||
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
Use 'build.sh' to build the test application using gcc.
|
|
||||||
It generates the executable 'test_capi'.
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
if gcc -fopenmp -o test_capi test_capi.c -lz3; then
|
|
||||||
echo "test_capi applicatio was successfully compiled."
|
|
||||||
echo "To try it, execute:"
|
|
||||||
echo " ./test_capi"
|
|
||||||
else
|
|
||||||
echo "You must install Z3 before compiling this example."
|
|
||||||
echo "To install Z3, execute the following command in the Z3 root directory."
|
|
||||||
echo " sudo make install"
|
|
||||||
fi
|
|
|
@ -1,430 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="commercial|Win32">
|
|
||||||
<Configuration>commercial</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="commercial|x64">
|
|
||||||
<Configuration>commercial</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="external|Win32">
|
|
||||||
<Configuration>external</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="external|x64">
|
|
||||||
<Configuration>external</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="release_mt|Win32">
|
|
||||||
<Configuration>release_mt</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="release_mt|x64">
|
|
||||||
<Configuration>release_mt</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{9E76526D-EDA2-4B88-9616-A8FC08F31071}</ProjectGuid>
|
|
||||||
<RootNamespace>test_capi</RootNamespace>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'">false</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'">false</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='external|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='external|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='external|Win32'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">false</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='external|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='external|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='external|x64'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">false</LinkIncremental>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='external|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='external|Win32'" />
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='external|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='external|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='external|x64'" />
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='external|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='commercial|x64'" />
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;Z3DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
<DataExecutionPrevention>
|
|
||||||
</DataExecutionPrevention>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;Z3DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<StackReserveSize>8388608</StackReserveSize>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
<DataExecutionPrevention>
|
|
||||||
</DataExecutionPrevention>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_mt|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<StackReserveSize>8388608</StackReserveSize>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
<DataExecutionPrevention>
|
|
||||||
</DataExecutionPrevention>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='external|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
<DataExecutionPrevention>
|
|
||||||
</DataExecutionPrevention>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='commercial|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
||||||
<DataExecutionPrevention>
|
|
||||||
</DataExecutionPrevention>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='external|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='commercial|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_CONSOLE;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="test_capi.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\dll\dll.vcxproj">
|
|
||||||
<Project>{0bf8cb94-61c7-4545-ae55-c58d858aa8b6}</Project>
|
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\lib\lib.vcxproj">
|
|
||||||
<Project>{4a7e5a93-19d8-4382-8950-fb2edec7a76e}</Project>
|
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
|
@ -1,4 +0,0 @@
|
||||||
copy ..\..\external\Microsoft.Z3.dll .
|
|
||||||
copy ..\..\external\Z3.dll .
|
|
||||||
|
|
||||||
csc /reference:..\..\external\Microsoft.Z3.dll /platform:anycpu /reference:System.Numerics.dll Program.cs
|
|
|
@ -1,133 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
|
||||||
<ProductVersion>8.0.30703</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<ProjectGuid>{D350BC78-8455-45D3-9759-073394378BF2}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>test_mapi</RootNamespace>
|
|
||||||
<AssemblyName>test_mapi</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
|
||||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<StartupObject>test_mapi.Program</StartupObject>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<CodeAnalysisLogFile>bin\Debug\test_mapi.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
|
||||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
|
||||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
|
||||||
<CodeAnalysisRuleDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<CodeAnalysisLogFile>bin\Release\test_mapi.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
|
||||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
|
||||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
|
||||||
<CodeAnalysisRuleDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
|
||||||
<CodeAnalysisLogFile>bin\Debug\test_mapi.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
|
||||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
|
||||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
|
||||||
<CodeAnalysisRuleDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
|
||||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
|
||||||
<OutputPath>bin\x64\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
|
||||||
<CodeAnalysisLogFile>bin\Release\test_mapi.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
|
||||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
|
||||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
|
||||||
<CodeAnalysisRuleDirectories>;C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
|
||||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.Numerics" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Program.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Properties\" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Microsoft.Z3.csproj">
|
|
||||||
<Project>{EC3DB697-B734-42F7-9468-5B62821EEB5A}</Project>
|
|
||||||
<Name>Microsoft.Z3</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<PostBuildEvent>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</PropertyGroup>
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
CC=@CC@
|
||||||
|
PREFIX=@prefix@
|
||||||
CXX=@CXX@
|
CXX=@CXX@
|
||||||
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -DZ3DEBUG -D_TRACE -c -g -Wall -fopenmp -msse -msse2 -mfpmath=sse
|
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -DZ3DEBUG -D_TRACE -c -g -Wall -fopenmp -msse -msse2 -mfpmath=sse
|
||||||
CXX_OUT_FLAG=-o
|
CXX_OUT_FLAG=-o
|
||||||
|
@ -10,10 +10,11 @@ AR_FLAGS=rcs
|
||||||
AR_OUTFLAG=
|
AR_OUTFLAG=
|
||||||
EXE_EXT=
|
EXE_EXT=
|
||||||
LINK=@CXX@
|
LINK=@CXX@
|
||||||
LINK_FLAGS=-lpthread -fopenmp
|
LINK_FLAGS=
|
||||||
LINK_OUT_FLAG=-o
|
LINK_OUT_FLAG=-o
|
||||||
|
LINK_EXTRA_FLAGS=-lpthread -fopenmp @LDFLAGS@
|
||||||
SO_EXT=@SO_EXT@
|
SO_EXT=@SO_EXT@
|
||||||
SLINK=@CXX@
|
SLINK=@CXX@
|
||||||
SLINK_FLAGS=@SLIBFLAGS@
|
SLINK_FLAGS=@SLIBFLAGS@
|
||||||
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
||||||
SLINK_OUT_FLAG=-o
|
SLINK_OUT_FLAG=-o
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
CC=@CC@
|
||||||
|
PREFIX=@prefix@
|
||||||
CXX=@CXX@
|
CXX=@CXX@
|
||||||
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -c -O3 -fomit-frame-pointer -fopenmp -msse -msse2 -mfpmath=sse
|
CXXFLAGS=@CPPFLAGS@ @CXXFLAGS@ -c -O3 -fomit-frame-pointer -fopenmp -msse -msse2 -mfpmath=sse
|
||||||
CXX_OUT_FLAG=-o
|
CXX_OUT_FLAG=-o
|
||||||
|
@ -10,10 +10,11 @@ AR_FLAGS=rcs
|
||||||
AR_OUTFLAG=
|
AR_OUTFLAG=
|
||||||
EXE_EXT=
|
EXE_EXT=
|
||||||
LINK=@CXX@
|
LINK=@CXX@
|
||||||
LINK_FLAGS=-lpthread -fopenmp
|
LINK_FLAGS=
|
||||||
LINK_OUT_FLAG=-o
|
LINK_OUT_FLAG=-o
|
||||||
|
LINK_EXTRA_FLAGS=-lpthread -fopenmp @LDFLAGS@
|
||||||
SO_EXT=@SO_EXT@
|
SO_EXT=@SO_EXT@
|
||||||
SLINK=@CXX@
|
SLINK=@CXX@
|
||||||
SLINK_FLAGS=@SLIBFLAGS@
|
SLINK_FLAGS=@SLIBFLAGS@
|
||||||
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
SLINK_EXTRA_FLAGS=@SLIBEXTRAFLAGS@
|
||||||
SLINK_OUT_FLAG=-o
|
SLINK_OUT_FLAG=-o
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
CC=cl
|
||||||
CXX=cl
|
CXX=cl
|
||||||
CXXFLAGS=/c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _AMD64_ /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze-
|
CXXFLAGS=/c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _AMD64_ /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze-
|
||||||
CXX_OUT_FLAG=/Fo
|
CXX_OUT_FLAG=/Fo
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
CC=cl
|
||||||
CXX=cl
|
CXX=cl
|
||||||
CXXFLAGS=/c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze-
|
CXXFLAGS=/c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze- /arch:SSE2
|
||||||
CXX_OUT_FLAG=/Fo
|
CXX_OUT_FLAG=/Fo
|
||||||
OBJ_EXT=.obj
|
OBJ_EXT=.obj
|
||||||
LIB_EXT=.lib
|
LIB_EXT=.lib
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
CC=cl
|
||||||
CXX=cl
|
CXX=cl
|
||||||
CXXFLAGS=/c /Zi /nologo /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _LIB /D _WINDOWS /D _AMD64_ /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP
|
CXXFLAGS=/c /Zi /nologo /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _LIB /D _WINDOWS /D _AMD64_ /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP
|
||||||
CXX_OUT_FLAG=/Fo
|
CXX_OUT_FLAG=/Fo
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
CC=cl
|
||||||
CXX=cl
|
CXX=cl
|
||||||
CXXFLAGS=/nologo /c /W3 /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _CONSOLE /D _WINDOWS /D ASYNC_COMMANDS /Gm- /EHsc /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze- /arch:SSE2
|
CXXFLAGS=/nologo /c /W3 /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _CONSOLE /D _WINDOWS /D ASYNC_COMMANDS /Gm- /EHsc /GS /fp:precise /Zc:wchar_t /Zc:forScope /openmp /Gd /analyze- /arch:SSE2
|
||||||
CXX_OUT_FLAG=/Fo
|
CXX_OUT_FLAG=/Fo
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
from mk_util import *
|
from mk_util import *
|
||||||
|
|
||||||
parse_options()
|
parse_options()
|
||||||
|
check_eol()
|
||||||
|
|
||||||
add_lib('util', [])
|
add_lib('util', [])
|
||||||
add_lib('polynomial', ['util'], 'math/polynomial')
|
add_lib('polynomial', ['util'], 'math/polynomial')
|
||||||
|
@ -30,8 +31,8 @@ add_lib('old_params', ['model', 'simplifier'])
|
||||||
add_lib('cmd_context', ['tactic', 'rewriter', 'model', 'old_params', 'simplifier'])
|
add_lib('cmd_context', ['tactic', 'rewriter', 'model', 'old_params', 'simplifier'])
|
||||||
add_lib('substitution', ['ast'], 'ast/substitution')
|
add_lib('substitution', ['ast'], 'ast/substitution')
|
||||||
add_lib('normal_forms', ['rewriter', 'old_params'], 'ast/normal_forms')
|
add_lib('normal_forms', ['rewriter', 'old_params'], 'ast/normal_forms')
|
||||||
add_lib('parser_util', ['ast'])
|
add_lib('parser_util', ['ast'], 'parsers/util')
|
||||||
add_lib('smt2parser', ['cmd_context', 'parser_util'])
|
add_lib('smt2parser', ['cmd_context', 'parser_util'], 'parsers/smt2')
|
||||||
add_lib('pattern', ['normal_forms', 'smt2parser'], 'ast/pattern')
|
add_lib('pattern', ['normal_forms', 'smt2parser'], 'ast/pattern')
|
||||||
add_lib('macros', ['simplifier', 'old_params'], 'ast/macros')
|
add_lib('macros', ['simplifier', 'old_params'], 'ast/macros')
|
||||||
add_lib('grobner', ['ast'], 'math/grobner')
|
add_lib('grobner', ['ast'], 'math/grobner')
|
||||||
|
@ -59,14 +60,25 @@ add_lib('smtlogic_tactics', ['arith_tactics', 'bv_tactics', 'nlsat_tactic', 'smt
|
||||||
add_lib('ufbv_tactic', ['normal_forms', 'core_tactics', 'macros', 'smt_tactic', 'rewriter'], 'tactic/ufbv')
|
add_lib('ufbv_tactic', ['normal_forms', 'core_tactics', 'macros', 'smt_tactic', 'rewriter'], 'tactic/ufbv')
|
||||||
add_lib('portfolio', ['smtlogic_tactics', 'ufbv_tactic', 'fpa', 'aig', 'muz_qe', 'sls_tactic', 'subpaving_tactic'], 'tactic/portfolio')
|
add_lib('portfolio', ['smtlogic_tactics', 'ufbv_tactic', 'fpa', 'aig', 'muz_qe', 'sls_tactic', 'subpaving_tactic'], 'tactic/portfolio')
|
||||||
# TODO: delete SMT 1.0 frontend
|
# TODO: delete SMT 1.0 frontend
|
||||||
add_lib('api', ['portfolio', 'user_plugin'])
|
add_lib('smtparser', ['portfolio'], 'parsers/smt')
|
||||||
|
add_lib('api', ['portfolio', 'user_plugin', 'smtparser'],
|
||||||
|
includes2install=['z3.h', 'z3_api.h', 'z3_v1.h', 'z3_macros.h'])
|
||||||
add_exe('shell', ['api', 'sat', 'extra_cmds'], exe_name='z3')
|
add_exe('shell', ['api', 'sat', 'extra_cmds'], exe_name='z3')
|
||||||
add_exe('test', ['api', 'fuzzing'], exe_name='test-z3')
|
add_exe('test', ['api', 'fuzzing'], exe_name='test-z3', install=False)
|
||||||
API_files = ['z3_api.h']
|
API_files = ['z3_api.h']
|
||||||
add_dll('api_dll', ['api', 'sat', 'extra_cmds'], 'api/dll', reexports=['api'], dll_name='libz3', export_files=API_files)
|
add_dll('api_dll', ['api', 'sat', 'extra_cmds'], 'api/dll',
|
||||||
add_dot_net_dll('dotnet', ['api_dll'], 'bindings/dotnet/Microsoft.Z3', dll_name='Microsoft.Z3', assembly_info_dir='Properties')
|
reexports=['api'],
|
||||||
add_dot_net_dll('dotnetV3', ['api_dll'], 'bindings/dotnet/Microsoft.Z3V3', dll_name='Microsoft.Z3V3')
|
dll_name='libz3',
|
||||||
set_python_dir('bindings/python')
|
export_files=API_files)
|
||||||
|
add_dot_net_dll('dotnet', ['api_dll'], 'bindings/dotnet', dll_name='Microsoft.Z3', assembly_info_dir='Properties')
|
||||||
|
add_hlib('cpp', 'bindings/c++', includes2install=['z3++.h'])
|
||||||
|
set_z3py_dir('bindings/python')
|
||||||
|
# Examples
|
||||||
|
add_cpp_example('cpp_example', 'c++')
|
||||||
|
add_c_example('c_example', 'c')
|
||||||
|
add_c_example('maxsat')
|
||||||
|
add_dotnet_example('dotnet_example', 'dotnet')
|
||||||
|
add_z3py_example('python')
|
||||||
|
|
||||||
update_version(4, 2, 0, 0)
|
update_version(4, 2, 0, 0)
|
||||||
mk_auto_src()
|
mk_auto_src()
|
||||||
|
|
|
@ -13,18 +13,74 @@ import getopt
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
from mk_exception import *
|
from mk_exception import *
|
||||||
|
from fnmatch import fnmatch
|
||||||
|
import distutils.sysconfig
|
||||||
|
import compileall
|
||||||
|
|
||||||
|
PYTHON_PACKAGE_DIR=distutils.sysconfig.get_python_lib()
|
||||||
BUILD_DIR='build'
|
BUILD_DIR='build'
|
||||||
REV_BUILD_DIR='..'
|
REV_BUILD_DIR='..'
|
||||||
SRC_DIR='src'
|
SRC_DIR='src'
|
||||||
|
EXAMPLE_DIR='examples'
|
||||||
|
# Required Components
|
||||||
|
Z3_DLL_COMPONENT='api_dll'
|
||||||
|
PATTERN_COMPONENT='pattern'
|
||||||
|
UTIL_COMPONENT='util'
|
||||||
|
API_COMPONENT='api'
|
||||||
|
DOTNET_COMPONENT='dotnet'
|
||||||
|
CPP_COMPONENT='cpp'
|
||||||
|
#####################
|
||||||
IS_WINDOW=False
|
IS_WINDOW=False
|
||||||
VERBOSE=True
|
VERBOSE=True
|
||||||
DEBUG_MODE=False
|
DEBUG_MODE=False
|
||||||
SHOW_CPPS = True
|
SHOW_CPPS = True
|
||||||
VS_X64 = False
|
VS_X64 = False
|
||||||
ONLY_MAKEFILES = False
|
ONLY_MAKEFILES = False
|
||||||
PYTHON_DIR=None
|
Z3PY_SRC_DIR=None
|
||||||
VS_PROJ = False
|
VS_PROJ = False
|
||||||
|
TRACE = False
|
||||||
|
|
||||||
|
def is_cr_lf(fname):
|
||||||
|
# Check whether text files use cr/lf
|
||||||
|
f = open(fname, 'r')
|
||||||
|
line = f.readline()
|
||||||
|
sz = len(line)
|
||||||
|
return sz >= 2 and line[sz-2] == '\r' and line[sz-1] == '\n'
|
||||||
|
|
||||||
|
# dos2unix in python
|
||||||
|
# cr/lf --> lf
|
||||||
|
def dos2unix(fname):
|
||||||
|
if is_cr_lf(fname):
|
||||||
|
fin = open(fname, 'r')
|
||||||
|
fname_new = '%s.new' % fname
|
||||||
|
fout = open(fname_new, 'w')
|
||||||
|
for line in fin:
|
||||||
|
line = line.rstrip('\r\n')
|
||||||
|
fout.write(line)
|
||||||
|
fout.write('\n')
|
||||||
|
fin.close()
|
||||||
|
fout.close()
|
||||||
|
shutil.move(fname_new, fname)
|
||||||
|
if is_verbose():
|
||||||
|
print "dos2unix '%s'" % fname
|
||||||
|
|
||||||
|
def dos2unix_tree_core(pattern, dir, files):
|
||||||
|
for filename in files:
|
||||||
|
if fnmatch(filename, pattern):
|
||||||
|
fname = os.path.join(dir, filename)
|
||||||
|
if not os.path.isdir(fname):
|
||||||
|
dos2unix(fname)
|
||||||
|
|
||||||
|
def dos2unix_tree():
|
||||||
|
os.path.walk('src', dos2unix_tree_core, '*')
|
||||||
|
|
||||||
|
def check_eol():
|
||||||
|
if not IS_WINDOW:
|
||||||
|
# Linux/OSX/BSD check if the end-of-line is cr/lf
|
||||||
|
if is_cr_lf('LICENSE.txt'):
|
||||||
|
if is_verbose():
|
||||||
|
print "Fixing end of line..."
|
||||||
|
dos2unix_tree()
|
||||||
|
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
IS_WINDOW=True
|
IS_WINDOW=True
|
||||||
|
@ -44,20 +100,22 @@ def display_help():
|
||||||
print " -m, --makefiles generate only makefiles."
|
print " -m, --makefiles generate only makefiles."
|
||||||
print " -c, --showcpp display file .cpp file names before invoking compiler."
|
print " -c, --showcpp display file .cpp file names before invoking compiler."
|
||||||
print " -v, --vsproj generate Visual Studio Project Files."
|
print " -v, --vsproj generate Visual Studio Project Files."
|
||||||
|
print " -t, --trace enable tracing in release mode."
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
# Parse configuration option for mk_make script
|
# Parse configuration option for mk_make script
|
||||||
def parse_options():
|
def parse_options():
|
||||||
global VERBOSE, DEBUG_MODE, IS_WINDOW, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ
|
global VERBOSE, DEBUG_MODE, IS_WINDOW, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE
|
||||||
options, remainder = getopt.gnu_getopt(sys.argv[1:], 'b:dsxhmcv', ['build=',
|
options, remainder = getopt.gnu_getopt(sys.argv[1:], 'b:dsxhmcvt', ['build=',
|
||||||
'debug',
|
'debug',
|
||||||
'silent',
|
'silent',
|
||||||
'x64',
|
'x64',
|
||||||
'help',
|
'help',
|
||||||
'makefiles',
|
'makefiles',
|
||||||
'showcpp',
|
'showcpp',
|
||||||
'vsproj'
|
'vsproj',
|
||||||
])
|
'trace'
|
||||||
|
])
|
||||||
for opt, arg in options:
|
for opt, arg in options:
|
||||||
if opt in ('-b', '--build'):
|
if opt in ('-b', '--build'):
|
||||||
if arg == 'src':
|
if arg == 'src':
|
||||||
|
@ -79,9 +137,11 @@ def parse_options():
|
||||||
SHOW_CPPS = True
|
SHOW_CPPS = True
|
||||||
elif opt in ('-v', '--vsproj'):
|
elif opt in ('-v', '--vsproj'):
|
||||||
VS_PROJ = True
|
VS_PROJ = True
|
||||||
|
elif opt in ('-t', '--trace'):
|
||||||
|
TRACE = True
|
||||||
else:
|
else:
|
||||||
raise MKException("Invalid command line option '%s'" % opt)
|
raise MKException("Invalid command line option '%s'" % opt)
|
||||||
|
|
||||||
# Return a list containing a file names included using '#include' in
|
# Return a list containing a file names included using '#include' in
|
||||||
# the given C/C++ file named fname.
|
# the given C/C++ file named fname.
|
||||||
def extract_c_includes(fname):
|
def extract_c_includes(fname):
|
||||||
|
@ -122,15 +182,23 @@ def set_build_dir(d):
|
||||||
BUILD_DIR = d
|
BUILD_DIR = d
|
||||||
REV_BUILD_DIR = reverse_path(d)
|
REV_BUILD_DIR = reverse_path(d)
|
||||||
|
|
||||||
def set_python_dir(p):
|
def set_z3py_dir(p):
|
||||||
global SRC_DIR, PYTHON_DIR
|
global SRC_DIR, Z3PY_SRC_DIR
|
||||||
full = '%s/%s' % (SRC_DIR, p)
|
full = '%s/%s' % (SRC_DIR, p)
|
||||||
if not os.path.exists(full):
|
if not os.path.exists(full):
|
||||||
raise MKException("Python bindings directory '%s' does not exist" % full)
|
raise MKException("Python bindings directory '%s' does not exist" % full)
|
||||||
PYTHON_DIR = full
|
Z3PY_SRC_DIR = full
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print "Python bindinds directory was detected."
|
print "Python bindinds directory was detected."
|
||||||
|
|
||||||
|
def add_z3py_example(p):
|
||||||
|
mk_dir(BUILD_DIR)
|
||||||
|
full = '%s/%s' % (EXAMPLE_DIR, p)
|
||||||
|
for py in filter(lambda f: f.endswith('.py'), os.listdir(full)):
|
||||||
|
shutil.copyfile('%s/%s' % (full, py), '%s/%s' % (BUILD_DIR, py))
|
||||||
|
if is_verbose():
|
||||||
|
print "Copied Z3Py example '%s' to '%s'" % (py, BUILD_DIR)
|
||||||
|
|
||||||
_UNIQ_ID = 0
|
_UNIQ_ID = 0
|
||||||
|
|
||||||
def mk_fresh_name(prefix):
|
def mk_fresh_name(prefix):
|
||||||
|
@ -150,8 +218,8 @@ def get_component(name):
|
||||||
return _Name2Component[name]
|
return _Name2Component[name]
|
||||||
|
|
||||||
# Return the directory where the python bindings are located.
|
# Return the directory where the python bindings are located.
|
||||||
def get_python_dir():
|
def get_z3py_dir():
|
||||||
return PYTHON_DIR
|
return Z3PY_SRC_DIR
|
||||||
|
|
||||||
# Return true if in verbose mode
|
# Return true if in verbose mode
|
||||||
def is_verbose():
|
def is_verbose():
|
||||||
|
@ -160,6 +228,12 @@ def is_verbose():
|
||||||
def get_cpp_files(path):
|
def get_cpp_files(path):
|
||||||
return filter(lambda f: f.endswith('.cpp'), os.listdir(path))
|
return filter(lambda f: f.endswith('.cpp'), os.listdir(path))
|
||||||
|
|
||||||
|
def get_c_files(path):
|
||||||
|
return filter(lambda f: f.endswith('.c'), os.listdir(path))
|
||||||
|
|
||||||
|
def get_cs_files(path):
|
||||||
|
return filter(lambda f: f.endswith('.cs'), os.listdir(path))
|
||||||
|
|
||||||
def find_all_deps(name, deps):
|
def find_all_deps(name, deps):
|
||||||
new_deps = []
|
new_deps = []
|
||||||
for dep in deps:
|
for dep in deps:
|
||||||
|
@ -244,7 +318,14 @@ class Component:
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
if SHOW_CPPS:
|
if SHOW_CPPS:
|
||||||
out.write('\t@echo %s/%s\n' % (self.src_dir, cppfile))
|
out.write('\t@echo %s/%s\n' % (self.src_dir, cppfile))
|
||||||
out.write('\t@$(CXX) $(CXXFLAGS) $(%s) $(CXX_OUT_FLAG)%s %s\n' % (include_defs, objfile, srcfile))
|
# TRACE is enabled in debug mode by default
|
||||||
|
trace_opt = ''
|
||||||
|
if TRACE and not DEBUG_MODE:
|
||||||
|
if IS_WINDOW:
|
||||||
|
trace_opt = '/D _TRACE'
|
||||||
|
else:
|
||||||
|
trace_opt = '-D _TRACE'
|
||||||
|
out.write('\t@$(CXX) $(CXXFLAGS) %s $(%s) $(CXX_OUT_FLAG)%s %s\n' % (trace_opt, include_defs, objfile, srcfile))
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
include_defs = mk_fresh_name('includes')
|
include_defs = mk_fresh_name('includes')
|
||||||
|
@ -272,9 +353,19 @@ class Component:
|
||||||
def require_def_file(self):
|
def require_def_file(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def mk_install(self, out):
|
||||||
|
return
|
||||||
|
|
||||||
|
def mk_uninstall(self, out):
|
||||||
|
return
|
||||||
|
|
||||||
|
def is_example(self):
|
||||||
|
return False
|
||||||
|
|
||||||
class LibComponent(Component):
|
class LibComponent(Component):
|
||||||
def __init__(self, name, path, deps):
|
def __init__(self, name, path, deps, includes2install):
|
||||||
Component.__init__(self, name, path, deps)
|
Component.__init__(self, name, path, deps)
|
||||||
|
self.includes2install = includes2install
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
Component.mk_makefile(self, out)
|
Component.mk_makefile(self, out)
|
||||||
|
@ -297,6 +388,22 @@ class LibComponent(Component):
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write('%s: %s\n\n' % (self.name, libfile))
|
out.write('%s: %s\n\n' % (self.name, libfile))
|
||||||
|
|
||||||
|
def mk_install(self, out):
|
||||||
|
for include in self.includes2install:
|
||||||
|
out.write('\t@cp %s/%s $(PREFIX)/include/%s\n' % (self.to_src_dir, include, include))
|
||||||
|
|
||||||
|
def mk_uninstall(self, out):
|
||||||
|
for include in self.includes2install:
|
||||||
|
out.write('\t@rm -f $(PREFIX)/include/%s\n' % include)
|
||||||
|
|
||||||
|
# "Library" containing only .h files. This is just a placeholder for includes files to be installed.
|
||||||
|
class HLibComponent(LibComponent):
|
||||||
|
def __init__(self, name, path, includes2install):
|
||||||
|
LibComponent.__init__(self, name, path, [], includes2install)
|
||||||
|
|
||||||
|
def mk_makefile(self, out):
|
||||||
|
return
|
||||||
|
|
||||||
# Auxiliary function for sort_components
|
# Auxiliary function for sort_components
|
||||||
def comp_components(c1, c2):
|
def comp_components(c1, c2):
|
||||||
id1 = get_component(c1).id
|
id1 = get_component(c1).id
|
||||||
|
@ -308,11 +415,12 @@ def sort_components(cnames):
|
||||||
return sorted(cnames, cmp=comp_components)
|
return sorted(cnames, cmp=comp_components)
|
||||||
|
|
||||||
class ExeComponent(Component):
|
class ExeComponent(Component):
|
||||||
def __init__(self, name, exe_name, path, deps):
|
def __init__(self, name, exe_name, path, deps, install):
|
||||||
Component.__init__(self, name, path, deps)
|
Component.__init__(self, name, path, deps)
|
||||||
if exe_name == None:
|
if exe_name == None:
|
||||||
exe_name = name
|
exe_name = name
|
||||||
self.exe_name = exe_name
|
self.exe_name = exe_name
|
||||||
|
self.install = install
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
Component.mk_makefile(self, out)
|
Component.mk_makefile(self, out)
|
||||||
|
@ -349,14 +457,26 @@ class ExeComponent(Component):
|
||||||
def main_component(self):
|
def main_component(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def mk_install(self, out):
|
||||||
|
if self.install:
|
||||||
|
exefile = '%s$(EXE_EXT)' % self.exe_name
|
||||||
|
out.write('\t@cp %s $(PREFIX)/bin/%s\n' % (exefile, exefile))
|
||||||
|
|
||||||
|
def mk_uninstall(self, out):
|
||||||
|
if self.install:
|
||||||
|
exefile = '%s$(EXE_EXT)' % self.exe_name
|
||||||
|
out.write('\t@rm -f $(PREFIX)/bin/%s\n' % exefile)
|
||||||
|
|
||||||
|
|
||||||
class DLLComponent(Component):
|
class DLLComponent(Component):
|
||||||
def __init__(self, name, dll_name, path, deps, export_files, reexports):
|
def __init__(self, name, dll_name, path, deps, export_files, reexports, install):
|
||||||
Component.__init__(self, name, path, deps)
|
Component.__init__(self, name, path, deps)
|
||||||
if dll_name == None:
|
if dll_name == None:
|
||||||
dll_name = name
|
dll_name = name
|
||||||
self.dll_name = dll_name
|
self.dll_name = dll_name
|
||||||
self.export_files = export_files
|
self.export_files = export_files
|
||||||
self.reexports = reexports
|
self.reexports = reexports
|
||||||
|
self.install = install
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
Component.mk_makefile(self, out)
|
Component.mk_makefile(self, out)
|
||||||
|
@ -406,6 +526,18 @@ class DLLComponent(Component):
|
||||||
def require_def_file(self):
|
def require_def_file(self):
|
||||||
return IS_WINDOW and self.export_files
|
return IS_WINDOW and self.export_files
|
||||||
|
|
||||||
|
def mk_install(self, out):
|
||||||
|
if self.install:
|
||||||
|
dllfile = '%s$(SO_EXT)' % self.dll_name
|
||||||
|
out.write('\t@cp %s $(PREFIX)/lib/%s\n' % (dllfile, dllfile))
|
||||||
|
out.write('\t@cp %s %s/%s\n' % (dllfile, PYTHON_PACKAGE_DIR, dllfile))
|
||||||
|
|
||||||
|
def mk_uninstall(self, out):
|
||||||
|
if self.install:
|
||||||
|
dllfile = '%s$(SO_EXT)' % self.dll_name
|
||||||
|
out.write('\t@rm -f $(PREFIX)/lib/%s\n' % dllfile)
|
||||||
|
out.write('\t@rm -f %s/%s\n' % (PYTHON_PACKAGE_DIR, dllfile))
|
||||||
|
|
||||||
class DotNetDLLComponent(Component):
|
class DotNetDLLComponent(Component):
|
||||||
def __init__(self, name, dll_name, path, deps, assembly_info_dir):
|
def __init__(self, name, dll_name, path, deps, assembly_info_dir):
|
||||||
Component.__init__(self, name, path, deps)
|
Component.__init__(self, name, path, deps)
|
||||||
|
@ -418,8 +550,31 @@ class DotNetDLLComponent(Component):
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
if IS_WINDOW:
|
if IS_WINDOW:
|
||||||
# TODO
|
cs_fp_files = []
|
||||||
out.write('%s: \n\n' % self.name)
|
cs_files = []
|
||||||
|
for cs_file in get_cs_files(self.src_dir):
|
||||||
|
cs_fp_files.append('%s/%s' % (self.to_src_dir, cs_file))
|
||||||
|
cs_files.append(cs_file)
|
||||||
|
if self.assembly_info_dir != '.':
|
||||||
|
for cs_file in get_cs_files('%s/%s' % (self.src_dir, self.assembly_info_dir)):
|
||||||
|
cs_fp_files.append('%s/%s/%s' % (self.to_src_dir, self.assembly_info_dir, cs_file))
|
||||||
|
cs_files.append('%s\%s' % (self.assembly_info_dir, cs_file))
|
||||||
|
dllfile = '%s.dll' % self.dll_name
|
||||||
|
out.write('%s:' % dllfile)
|
||||||
|
for cs_file in cs_fp_files:
|
||||||
|
out.write(' ')
|
||||||
|
out.write(cs_file)
|
||||||
|
out.write('\n')
|
||||||
|
out.write(' cd %s && csc /noconfig /unsafe+ /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:mscorlib.dll /reference:System.Core.dll /reference:System.dll /reference:System.Numerics.dll /debug+ /debug:full /filealign:512 /optimize- /out:%s.dll /target:library' % (self.to_src_dir, self.dll_name))
|
||||||
|
for cs_file in cs_files:
|
||||||
|
out.write(' ')
|
||||||
|
out.write(cs_file)
|
||||||
|
out.write('\n')
|
||||||
|
# HACK
|
||||||
|
win_to_src_dir = self.to_src_dir.replace('/', '\\')
|
||||||
|
out.write(' move %s\%s\n' % (win_to_src_dir, dllfile))
|
||||||
|
out.write(' move %s\%s.pdb\n' % (win_to_src_dir, self.dll_name))
|
||||||
|
out.write('%s: %s\n\n' % (self.name, dllfile))
|
||||||
return
|
return
|
||||||
|
|
||||||
def main_component(self):
|
def main_component(self):
|
||||||
|
@ -427,7 +582,89 @@ class DotNetDLLComponent(Component):
|
||||||
|
|
||||||
def has_assembly_info(self):
|
def has_assembly_info(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
class ExampleComponent(Component):
|
||||||
|
def __init__(self, name, path):
|
||||||
|
Component.__init__(self, name, path, [])
|
||||||
|
self.ex_dir = '%s/%s' % (EXAMPLE_DIR, self.path)
|
||||||
|
self.to_ex_dir = '%s/%s' % (REV_BUILD_DIR, self.ex_dir)
|
||||||
|
|
||||||
|
def is_example(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
class CppExampleComponent(ExampleComponent):
|
||||||
|
def __init__(self, name, path):
|
||||||
|
ExampleComponent.__init__(self, name, path)
|
||||||
|
|
||||||
|
def compiler(self):
|
||||||
|
return "$(CXX)"
|
||||||
|
|
||||||
|
def src_files(self):
|
||||||
|
return get_cpp_files(self.ex_dir)
|
||||||
|
|
||||||
|
def mk_makefile(self, out):
|
||||||
|
dll_name = get_component(Z3_DLL_COMPONENT).dll_name
|
||||||
|
dll = '%s$(SO_EXT)' % dll_name
|
||||||
|
exefile = '%s$(EXE_EXT)' % self.name
|
||||||
|
out.write('%s: %s' % (exefile, dll))
|
||||||
|
for cppfile in self.src_files():
|
||||||
|
out.write(' ')
|
||||||
|
out.write('%s/%s' % (self.to_ex_dir, cppfile))
|
||||||
|
out.write('\n')
|
||||||
|
out.write('\t%s $(LINK_OUT_FLAG)%s $(LINK_FLAGS)' % (self.compiler(), exefile))
|
||||||
|
# Add include dir components
|
||||||
|
out.write(' -I%s' % get_component(API_COMPONENT).to_src_dir)
|
||||||
|
out.write(' -I%s' % get_component(CPP_COMPONENT).to_src_dir)
|
||||||
|
for cppfile in self.src_files():
|
||||||
|
out.write(' ')
|
||||||
|
out.write('%s/%s' % (self.to_ex_dir, cppfile))
|
||||||
|
out.write(' ')
|
||||||
|
if IS_WINDOW:
|
||||||
|
out.write('%s.lib' % dll_name)
|
||||||
|
else:
|
||||||
|
out.write(dll)
|
||||||
|
out.write(' $(LINK_EXTRA_FLAGS)\n')
|
||||||
|
out.write('_ex_%s: %s\n\n' % (self.name, exefile))
|
||||||
|
|
||||||
|
class CExampleComponent(CppExampleComponent):
|
||||||
|
def __init__(self, name, path):
|
||||||
|
CppExampleComponent.__init__(self, name, path)
|
||||||
|
|
||||||
|
def compiler(self):
|
||||||
|
return "$(CC)"
|
||||||
|
|
||||||
|
def src_files(self):
|
||||||
|
return get_c_files(self.ex_dir)
|
||||||
|
|
||||||
|
class DotNetExampleComponent(ExampleComponent):
|
||||||
|
def __init__(self, name, path):
|
||||||
|
ExampleComponent.__init__(self, name, path)
|
||||||
|
|
||||||
|
def is_example(self):
|
||||||
|
return IS_WINDOW
|
||||||
|
|
||||||
|
def mk_makefile(self, out):
|
||||||
|
if IS_WINDOW:
|
||||||
|
dll_name = get_component(DOTNET_COMPONENT).dll_name
|
||||||
|
dll = '%s.dll' % dll_name
|
||||||
|
exefile = '%s.exe' % self.name
|
||||||
|
out.write('%s: %s' % (exefile, dll))
|
||||||
|
for csfile in get_cs_files(self.ex_dir):
|
||||||
|
out.write(' ')
|
||||||
|
out.write('%s/%s' % (self.to_ex_dir, csfile))
|
||||||
|
out.write('\n')
|
||||||
|
out.write('\tcsc /out:%s /reference:%s /debug:full /reference:System.Numerics.dll' % (exefile, dll))
|
||||||
|
if VS_X64:
|
||||||
|
out.write(' /platform:x64')
|
||||||
|
else:
|
||||||
|
out.write(' /platform:x86')
|
||||||
|
for csfile in get_cs_files(self.ex_dir):
|
||||||
|
out.write(' ')
|
||||||
|
# HACK
|
||||||
|
win_ex_dir = self.to_ex_dir.replace('/', '\\')
|
||||||
|
out.write('%s\\%s' % (win_ex_dir, csfile))
|
||||||
|
out.write('\n')
|
||||||
|
out.write('_ex_%s: %s\n\n' % (self.name, exefile))
|
||||||
|
|
||||||
def reg_component(name, c):
|
def reg_component(name, c):
|
||||||
global _Id, _Components, _ComponentNames, _Name2Component
|
global _Id, _Components, _ComponentNames, _Name2Component
|
||||||
|
@ -439,22 +676,38 @@ def reg_component(name, c):
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print "New component: '%s'" % name
|
print "New component: '%s'" % name
|
||||||
|
|
||||||
def add_lib(name, deps=[], path=None):
|
def add_lib(name, deps=[], path=None, includes2install=[]):
|
||||||
c = LibComponent(name, path, deps)
|
c = LibComponent(name, path, deps, includes2install)
|
||||||
reg_component(name, c)
|
reg_component(name, c)
|
||||||
|
|
||||||
def add_exe(name, deps=[], path=None, exe_name=None):
|
def add_hlib(name, path=None, includes2install=[]):
|
||||||
c = ExeComponent(name, exe_name, path, deps)
|
c = HLibComponent(name, path, includes2install)
|
||||||
reg_component(name, c)
|
reg_component(name, c)
|
||||||
|
|
||||||
def add_dll(name, deps=[], path=None, dll_name=None, export_files=[], reexports=[]):
|
def add_exe(name, deps=[], path=None, exe_name=None, install=True):
|
||||||
c = DLLComponent(name, dll_name, path, deps, export_files, reexports)
|
c = ExeComponent(name, exe_name, path, deps, install)
|
||||||
|
reg_component(name, c)
|
||||||
|
|
||||||
|
def add_dll(name, deps=[], path=None, dll_name=None, export_files=[], reexports=[], install=True):
|
||||||
|
c = DLLComponent(name, dll_name, path, deps, export_files, reexports, install)
|
||||||
reg_component(name, c)
|
reg_component(name, c)
|
||||||
|
|
||||||
def add_dot_net_dll(name, deps=[], path=None, dll_name=None, assembly_info_dir=None):
|
def add_dot_net_dll(name, deps=[], path=None, dll_name=None, assembly_info_dir=None):
|
||||||
c = DotNetDLLComponent(name, dll_name, path, deps, assembly_info_dir)
|
c = DotNetDLLComponent(name, dll_name, path, deps, assembly_info_dir)
|
||||||
reg_component(name, c)
|
reg_component(name, c)
|
||||||
|
|
||||||
|
def add_cpp_example(name, path=None):
|
||||||
|
c = CppExampleComponent(name, path)
|
||||||
|
reg_component(name, c)
|
||||||
|
|
||||||
|
def add_c_example(name, path=None):
|
||||||
|
c = CExampleComponent(name, path)
|
||||||
|
reg_component(name, c)
|
||||||
|
|
||||||
|
def add_dotnet_example(name, path=None):
|
||||||
|
c = DotNetExampleComponent(name, path)
|
||||||
|
reg_component(name, c)
|
||||||
|
|
||||||
# Copy configuration correct file to BUILD_DIR
|
# Copy configuration correct file to BUILD_DIR
|
||||||
def cp_config_mk():
|
def cp_config_mk():
|
||||||
if IS_WINDOW:
|
if IS_WINDOW:
|
||||||
|
@ -474,6 +727,25 @@ def cp_config_mk():
|
||||||
else:
|
else:
|
||||||
shutil.copyfile('scripts/config-release.mk', '%s/config.mk' % BUILD_DIR)
|
shutil.copyfile('scripts/config-release.mk', '%s/config.mk' % BUILD_DIR)
|
||||||
|
|
||||||
|
def mk_install(out):
|
||||||
|
out.write('install:\n')
|
||||||
|
out.write('\t@mkdir -p $(PREFIX)/bin\n')
|
||||||
|
out.write('\t@mkdir -p $(PREFIX)/include\n')
|
||||||
|
out.write('\t@mkdir -p $(PREFIX)/lib\n')
|
||||||
|
for c in _Components:
|
||||||
|
c.mk_install(out)
|
||||||
|
out.write('\t@cp z3*.pyc %s\n' % PYTHON_PACKAGE_DIR)
|
||||||
|
out.write('\t@echo Z3 was successfully installed.\n')
|
||||||
|
out.write('\n')
|
||||||
|
|
||||||
|
def mk_uninstall(out):
|
||||||
|
out.write('uninstall:\n')
|
||||||
|
for c in _Components:
|
||||||
|
c.mk_uninstall(out)
|
||||||
|
out.write('\t@rm -f %s/z3*.pyc\n' % PYTHON_PACKAGE_DIR)
|
||||||
|
out.write('\t@echo Z3 was successfully uninstalled.\n')
|
||||||
|
out.write('\n')
|
||||||
|
|
||||||
# Generate the Z3 makefile
|
# Generate the Z3 makefile
|
||||||
def mk_makefile():
|
def mk_makefile():
|
||||||
mk_dir(BUILD_DIR)
|
mk_dir(BUILD_DIR)
|
||||||
|
@ -488,13 +760,28 @@ def mk_makefile():
|
||||||
for c in _Components:
|
for c in _Components:
|
||||||
if c.main_component():
|
if c.main_component():
|
||||||
out.write(' %s' % c.name)
|
out.write(' %s' % c.name)
|
||||||
out.write('\n\n')
|
out.write('\n\t@echo Z3 was successfully built.\n')
|
||||||
|
if not IS_WINDOW:
|
||||||
|
out.write("\t@echo Use the following command to install Z3 at prefix $(PREFIX).\n")
|
||||||
|
out.write('\t@echo " sudo make install"\n')
|
||||||
|
# Generate :examples rule
|
||||||
|
out.write('examples:')
|
||||||
|
for c in _Components:
|
||||||
|
if c.is_example():
|
||||||
|
out.write(' _ex_%s' % c.name)
|
||||||
|
out.write('\n\t@echo Z3 examples were successfully built.\n')
|
||||||
# Generate components
|
# Generate components
|
||||||
for c in _Components:
|
for c in _Components:
|
||||||
c.mk_makefile(out)
|
c.mk_makefile(out)
|
||||||
|
# Generate install/uninstall rules if not WINDOWS
|
||||||
|
if not IS_WINDOW:
|
||||||
|
mk_install(out)
|
||||||
|
mk_uninstall(out)
|
||||||
# Finalize
|
# Finalize
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print "Makefile was successfully generated."
|
print "Makefile was successfully generated."
|
||||||
|
if not IS_WINDOW:
|
||||||
|
print " python packages dir:", PYTHON_PACKAGE_DIR
|
||||||
if DEBUG_MODE:
|
if DEBUG_MODE:
|
||||||
print " compilation mode: Debug"
|
print " compilation mode: Debug"
|
||||||
else:
|
else:
|
||||||
|
@ -502,12 +789,12 @@ def mk_makefile():
|
||||||
if IS_WINDOW:
|
if IS_WINDOW:
|
||||||
if VS_X64:
|
if VS_X64:
|
||||||
print " platform: x64\n"
|
print " platform: x64\n"
|
||||||
print "To build Z3, open a ***Visual Studio x64 Command Prompt***, then"
|
print "To build Z3, open a [Visual Studio x64 Command Prompt], then"
|
||||||
else:
|
else:
|
||||||
print " platform: x86"
|
print " platform: x86"
|
||||||
print "To build Z3, open a ***Visual Studio Command Prompt***, then"
|
print "To build Z3, open a [Visual Studio Command Prompt], then"
|
||||||
print "type 'cd %s/%s && nmake'\n" % (os.getcwd(), BUILD_DIR)
|
print "type 'cd %s/%s && nmake'\n" % (os.getcwd(), BUILD_DIR)
|
||||||
print 'Remark: to open a Visual Studio Command Prompt, go to: "Start > All Programs > Visual Studio > Visual Studio Tools >"'
|
print 'Remark: to open a Visual Studio Command Prompt, go to: "Start > All Programs > Visual Studio > Visual Studio Tools"'
|
||||||
else:
|
else:
|
||||||
print "Type 'cd %s; make' to build Z3" % BUILD_DIR
|
print "Type 'cd %s; make' to build Z3" % BUILD_DIR
|
||||||
|
|
||||||
|
@ -520,7 +807,7 @@ def mk_auto_src():
|
||||||
# TODO: delete after src/ast/pattern/expr_pattern_match
|
# TODO: delete after src/ast/pattern/expr_pattern_match
|
||||||
# database.smt ==> database.h
|
# database.smt ==> database.h
|
||||||
def mk_pat_db():
|
def mk_pat_db():
|
||||||
c = get_component('pattern')
|
c = get_component(PATTERN_COMPONENT)
|
||||||
fin = open('%s/database.smt2' % c.src_dir, 'r')
|
fin = open('%s/database.smt2' % c.src_dir, 'r')
|
||||||
fout = open('%s/database.h' % c.src_dir, 'w')
|
fout = open('%s/database.h' % c.src_dir, 'w')
|
||||||
fout.write('char const * g_pattern_database =\n')
|
fout.write('char const * g_pattern_database =\n')
|
||||||
|
@ -539,7 +826,7 @@ def update_version(major, minor, build, revision):
|
||||||
|
|
||||||
# Update files with the version number
|
# Update files with the version number
|
||||||
def mk_version_dot_h(major, minor, build, revision):
|
def mk_version_dot_h(major, minor, build, revision):
|
||||||
c = get_component('util')
|
c = get_component(UTIL_COMPONENT)
|
||||||
fout = open('%s/version.h' % c.src_dir, 'w')
|
fout = open('%s/version.h' % c.src_dir, 'w')
|
||||||
fout.write('// automatically generated file.\n')
|
fout.write('// automatically generated file.\n')
|
||||||
fout.write('#define Z3_MAJOR_VERSION %s\n' % major)
|
fout.write('#define Z3_MAJOR_VERSION %s\n' % major)
|
||||||
|
@ -712,23 +999,36 @@ def mk_def_files():
|
||||||
if c.require_def_file():
|
if c.require_def_file():
|
||||||
mk_def_file(c)
|
mk_def_file(c)
|
||||||
|
|
||||||
|
def cp_z3pyc_to_build():
|
||||||
|
mk_dir(BUILD_DIR)
|
||||||
|
compileall.compile_dir(Z3PY_SRC_DIR, force=1)
|
||||||
|
for pyc in filter(lambda f: f.endswith('.pyc'), os.listdir(Z3PY_SRC_DIR)):
|
||||||
|
try:
|
||||||
|
os.remove('%s/%s' % (BUILD_DIR, pyc))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
os.rename('%s/%s' % (Z3PY_SRC_DIR, pyc), '%s/%s' % (BUILD_DIR, pyc))
|
||||||
|
if is_verbose():
|
||||||
|
print "Generated '%s'" % pyc
|
||||||
|
|
||||||
def mk_bindings(api_files):
|
def mk_bindings(api_files):
|
||||||
if not ONLY_MAKEFILES:
|
if not ONLY_MAKEFILES:
|
||||||
mk_z3consts_py(api_files)
|
mk_z3consts_py(api_files)
|
||||||
mk_z3consts_donet(api_files)
|
mk_z3consts_donet(api_files)
|
||||||
new_api_files = []
|
new_api_files = []
|
||||||
api = get_component('api')
|
api = get_component(API_COMPONENT)
|
||||||
for api_file in api_files:
|
for api_file in api_files:
|
||||||
api_file_path = api.find_file(api_file, api.name)
|
api_file_path = api.find_file(api_file, api.name)
|
||||||
new_api_files.append('%s/%s' % (api_file_path.src_dir, api_file))
|
new_api_files.append('%s/%s' % (api_file_path.src_dir, api_file))
|
||||||
g = {}
|
g = {}
|
||||||
g["API_FILES"] = new_api_files
|
g["API_FILES"] = new_api_files
|
||||||
execfile('scripts/update_api.py', g) # HACK
|
execfile('scripts/update_api.py', g) # HACK
|
||||||
|
cp_z3pyc_to_build()
|
||||||
|
|
||||||
# Extract enumeration types from API files, and add python definitions.
|
# Extract enumeration types from API files, and add python definitions.
|
||||||
def mk_z3consts_py(api_files):
|
def mk_z3consts_py(api_files):
|
||||||
if PYTHON_DIR == None:
|
if Z3PY_SRC_DIR == None:
|
||||||
raise MKException("You must invoke set_python_dir(path):")
|
raise MKException("You must invoke set_z3py_dir(path):")
|
||||||
|
|
||||||
blank_pat = re.compile("^ *$")
|
blank_pat = re.compile("^ *$")
|
||||||
comment_pat = re.compile("^ *//.*$")
|
comment_pat = re.compile("^ *//.*$")
|
||||||
|
@ -737,10 +1037,10 @@ def mk_z3consts_py(api_files):
|
||||||
openbrace_pat = re.compile("{ *")
|
openbrace_pat = re.compile("{ *")
|
||||||
closebrace_pat = re.compile("}.*;")
|
closebrace_pat = re.compile("}.*;")
|
||||||
|
|
||||||
z3consts = open('%s/z3consts.py' % PYTHON_DIR, 'w')
|
z3consts = open('%s/z3consts.py' % Z3PY_SRC_DIR, 'w')
|
||||||
z3consts.write('# Automatically generated file\n\n')
|
z3consts.write('# Automatically generated file\n\n')
|
||||||
|
|
||||||
api_dll = get_component('api_dll')
|
api_dll = get_component(Z3_DLL_COMPONENT)
|
||||||
|
|
||||||
for api_file in api_files:
|
for api_file in api_files:
|
||||||
api_file_c = api_dll.find_file(api_file, api_dll.name)
|
api_file_c = api_dll.find_file(api_file, api_dll.name)
|
||||||
|
@ -800,7 +1100,7 @@ def mk_z3consts_py(api_files):
|
||||||
idx = idx + 1
|
idx = idx + 1
|
||||||
linenum = linenum + 1
|
linenum = linenum + 1
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print "Generated '%s'" % ('%s/z3consts.py' % PYTHON_DIR)
|
print "Generated '%s'" % ('%s/z3consts.py' % Z3PY_SRC_DIR)
|
||||||
|
|
||||||
|
|
||||||
# Extract enumeration types from z3_api.h, and add .Net definitions
|
# Extract enumeration types from z3_api.h, and add .Net definitions
|
||||||
|
@ -812,9 +1112,9 @@ def mk_z3consts_donet(api_files):
|
||||||
openbrace_pat = re.compile("{ *")
|
openbrace_pat = re.compile("{ *")
|
||||||
closebrace_pat = re.compile("}.*;")
|
closebrace_pat = re.compile("}.*;")
|
||||||
|
|
||||||
dotnet = get_component('dotnet')
|
dotnet = get_component(DOTNET_COMPONENT)
|
||||||
|
|
||||||
DeprecatedEnums = { 'Z3_search_failure' }
|
DeprecatedEnums = [ 'Z3_search_failure' ]
|
||||||
z3consts = open('%s/Enumerations.cs' % dotnet.src_dir, 'w')
|
z3consts = open('%s/Enumerations.cs' % dotnet.src_dir, 'w')
|
||||||
z3consts.write('// Automatically generated file\n\n')
|
z3consts.write('// Automatically generated file\n\n')
|
||||||
z3consts.write('using System;\n\n'
|
z3consts.write('using System;\n\n'
|
||||||
|
@ -893,7 +1193,7 @@ def mk_gui_str(id):
|
||||||
def mk_vs_proj(name, components):
|
def mk_vs_proj(name, components):
|
||||||
if not VS_PROJ:
|
if not VS_PROJ:
|
||||||
return
|
return
|
||||||
proj_name = '%s.vcxproj' % name
|
proj_name = '%s/%s.vcxproj' % (BUILD_DIR, name)
|
||||||
modes=['Debug', 'Release']
|
modes=['Debug', 'Release']
|
||||||
PLATFORMS=['Win32']
|
PLATFORMS=['Win32']
|
||||||
f = open(proj_name, 'w')
|
f = open(proj_name, 'w')
|
||||||
|
@ -945,7 +1245,7 @@ def mk_vs_proj(name, components):
|
||||||
first = False
|
first = False
|
||||||
else:
|
else:
|
||||||
f.write(';')
|
f.write(';')
|
||||||
f.write('%s' % get_component(dep).src_dir)
|
f.write(get_component(dep).to_src_dir)
|
||||||
f.write('</AdditionalIncludeDirectories>\n')
|
f.write('</AdditionalIncludeDirectories>\n')
|
||||||
f.write(' </ClCompile>\n')
|
f.write(' </ClCompile>\n')
|
||||||
f.write(' <Link>\n')
|
f.write(' <Link>\n')
|
||||||
|
@ -965,7 +1265,7 @@ def mk_vs_proj(name, components):
|
||||||
for dep in deps:
|
for dep in deps:
|
||||||
dep = get_component(dep)
|
dep = get_component(dep)
|
||||||
for cpp in filter(lambda f: f.endswith('.cpp'), os.listdir(dep.src_dir)):
|
for cpp in filter(lambda f: f.endswith('.cpp'), os.listdir(dep.src_dir)):
|
||||||
f.write(' <ClCompile Include="%s/%s" />\n' % (dep.src_dir, cpp))
|
f.write(' <ClCompile Include="%s/%s" />\n' % (dep.to_src_dir, cpp))
|
||||||
f.write(' </ItemGroup>\n')
|
f.write(' </ItemGroup>\n')
|
||||||
f.write(' <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\n')
|
f.write(' <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\n')
|
||||||
f.write(' <ImportGroup Label="ExtensionTargets">\n')
|
f.write(' <ImportGroup Label="ExtensionTargets">\n')
|
||||||
|
|
|
@ -27,7 +27,7 @@ dotnet_dir = get_component('dotnet').src_dir
|
||||||
log_h = open('%s/api_log_macros.h' % api_dir, 'w')
|
log_h = open('%s/api_log_macros.h' % api_dir, 'w')
|
||||||
log_c = open('%s/api_log_macros.cpp' % api_dir, 'w')
|
log_c = open('%s/api_log_macros.cpp' % api_dir, 'w')
|
||||||
exe_c = open('%s/api_commands.cpp' % api_dir, 'w')
|
exe_c = open('%s/api_commands.cpp' % api_dir, 'w')
|
||||||
core_py = open('%s/z3core.py' % get_python_dir(), 'w')
|
core_py = open('%s/z3core.py' % get_z3py_dir(), 'w')
|
||||||
dotnet_fileout = '%s/Native.cs' % dotnet_dir
|
dotnet_fileout = '%s/Native.cs' % dotnet_dir
|
||||||
##
|
##
|
||||||
log_h.write('// Automatically generated file\n')
|
log_h.write('// Automatically generated file\n')
|
||||||
|
@ -311,7 +311,7 @@ def mk_dotnet():
|
||||||
dotnet.write(' public unsafe class LIB\n')
|
dotnet.write(' public unsafe class LIB\n')
|
||||||
dotnet.write(' {\n')
|
dotnet.write(' {\n')
|
||||||
dotnet.write(' '
|
dotnet.write(' '
|
||||||
' const string Z3_DLL_NAME = \"z3.dll\";\n'
|
' const string Z3_DLL_NAME = \"libz3.dll\";\n'
|
||||||
' \n');
|
' \n');
|
||||||
dotnet.write(' [DllImport(Z3_DLL_NAME, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]\n')
|
dotnet.write(' [DllImport(Z3_DLL_NAME, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]\n')
|
||||||
dotnet.write(' public extern static void Z3_set_error_handler(Z3_context a0, Z3_error_handler a1);\n\n')
|
dotnet.write(' public extern static void Z3_set_error_handler(Z3_context a0, Z3_error_handler a1);\n\n')
|
||||||
|
@ -335,7 +335,7 @@ def mk_dotnet():
|
||||||
dotnet.write(' }\n')
|
dotnet.write(' }\n')
|
||||||
|
|
||||||
|
|
||||||
DotnetUnwrapped = { 'Z3_del_context' }
|
DotnetUnwrapped = [ 'Z3_del_context' ]
|
||||||
|
|
||||||
def mk_dotnet_wrappers():
|
def mk_dotnet_wrappers():
|
||||||
global Type2Str
|
global Type2Str
|
||||||
|
@ -671,5 +671,5 @@ if is_verbose():
|
||||||
print "Generated '%s'" % ('%s/api_log_macros.h' % api_dir)
|
print "Generated '%s'" % ('%s/api_log_macros.h' % api_dir)
|
||||||
print "Generated '%s'" % ('%s/api_log_macros.cpp' % api_dir)
|
print "Generated '%s'" % ('%s/api_log_macros.cpp' % api_dir)
|
||||||
print "Generated '%s'" % ('%s/api_commands.cpp' % api_dir)
|
print "Generated '%s'" % ('%s/api_commands.cpp' % api_dir)
|
||||||
print "Generated '%s'" % ('%s/z3core.py' % get_python_dir())
|
print "Generated '%s'" % ('%s/z3core.py' % get_z3py_dir())
|
||||||
print "Generated '%s'" % ('%s/Native.cs' % dotnet_dir)
|
print "Generated '%s'" % ('%s/Native.cs' % dotnet_dir)
|
||||||
|
|
|
@ -23,7 +23,6 @@ Revision History:
|
||||||
#include"cmd_context.h"
|
#include"cmd_context.h"
|
||||||
#include"smt2parser.h"
|
#include"smt2parser.h"
|
||||||
#include"smtparser.h"
|
#include"smtparser.h"
|
||||||
#include"z3_solver.h"
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
@ -248,40 +247,6 @@ extern "C" {
|
||||||
return mk_c(c)->m_smtlib_error_buffer.c_str();
|
return mk_c(c)->m_smtlib_error_buffer.c_str();
|
||||||
Z3_CATCH_RETURN("");
|
Z3_CATCH_RETURN("");
|
||||||
}
|
}
|
||||||
|
|
||||||
Z3_ast parse_z3_stream(Z3_context c, std::istream& is) {
|
|
||||||
z3_solver parser(c, is, verbose_stream(), mk_c(c)->fparams(), false);
|
|
||||||
if (!parser.parse()) {
|
|
||||||
SET_ERROR_CODE(Z3_PARSER_ERROR);
|
|
||||||
return of_ast(mk_c(c)->m().mk_true());
|
|
||||||
}
|
|
||||||
expr_ref_vector assumptions(mk_c(c)->m());
|
|
||||||
parser.get_assumptions(assumptions);
|
|
||||||
return of_ast(mk_c(c)->mk_and(assumptions.size(), assumptions.c_ptr()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Z3_ast Z3_API Z3_parse_z3_string(Z3_context c, Z3_string str) {
|
|
||||||
Z3_TRY;
|
|
||||||
LOG_Z3_parse_z3_string(c, str);
|
|
||||||
std::string s(str);
|
|
||||||
std::istringstream is(s);
|
|
||||||
Z3_ast r = parse_z3_stream(c, is);
|
|
||||||
RETURN_Z3(r);
|
|
||||||
Z3_CATCH_RETURN(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
Z3_ast Z3_API Z3_parse_z3_file(Z3_context c, Z3_string file_name) {
|
|
||||||
Z3_TRY;
|
|
||||||
LOG_Z3_parse_z3_file(c, file_name);
|
|
||||||
std::ifstream is(file_name);
|
|
||||||
if (!is) {
|
|
||||||
SET_ERROR_CODE(Z3_PARSER_ERROR);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Z3_ast r = parse_z3_stream(c, is);
|
|
||||||
RETURN_Z3(r);
|
|
||||||
Z3_CATCH_RETURN(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------
|
// ---------------
|
||||||
// Support for SMTLIB2
|
// Support for SMTLIB2
|
||||||
|
|
|
@ -4977,23 +4977,6 @@ BEGIN_MLAPI_EXCLUDE
|
||||||
Z3_string Z3_API Z3_get_smtlib_error(__in Z3_context c);
|
Z3_string Z3_API Z3_get_smtlib_error(__in Z3_context c);
|
||||||
END_MLAPI_EXCLUDE
|
END_MLAPI_EXCLUDE
|
||||||
|
|
||||||
/**
|
|
||||||
\brief \mlh parse_z3_string c str \endmlh
|
|
||||||
Parse the given string using the Z3 native parser.
|
|
||||||
|
|
||||||
Return the conjunction of asserts made in the input.
|
|
||||||
|
|
||||||
def_API('Z3_parse_z3_string', AST, (_in(CONTEXT), _in(STRING)))
|
|
||||||
*/
|
|
||||||
Z3_ast Z3_API Z3_parse_z3_string(__in Z3_context c, __in Z3_string str);
|
|
||||||
|
|
||||||
/**
|
|
||||||
\brief Similar to #Z3_parse_z3_string, but reads the benchmark from a file.
|
|
||||||
|
|
||||||
def_API('Z3_parse_z3_file', AST, (_in(CONTEXT), _in(STRING)))
|
|
||||||
*/
|
|
||||||
Z3_ast Z3_API Z3_parse_z3_file(__in Z3_context c, __in Z3_string file_name);
|
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
#ifdef CorML4
|
#ifdef CorML4
|
||||||
|
|
File diff suppressed because it is too large
Load diff
1007
src/api/z3_solver.h
1007
src/api/z3_solver.h
File diff suppressed because it is too large
Load diff
|
@ -1410,6 +1410,51 @@ br_status bv_rewriter::mk_bv_xor(unsigned num, expr * const * args, expr_ref & r
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XOR is a mask
|
||||||
|
// All arguments but one is a numeral.
|
||||||
|
//
|
||||||
|
// Apply a transformation of the form:
|
||||||
|
//
|
||||||
|
// (bvxor a 0011) --> (concat ((_ extract 3 2) a) ((_ extract 1 0) (bvnot a)))
|
||||||
|
//
|
||||||
|
if (!v1.is_zero() && num_coeffs == num - 1) {
|
||||||
|
// find argument that is not a numeral
|
||||||
|
expr * t = 0;
|
||||||
|
for (unsigned i = 0; i < num; i++) {
|
||||||
|
t = args[i];
|
||||||
|
if (!is_numeral(t))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SASSERT(t != 0);
|
||||||
|
numeral two(2);
|
||||||
|
expr_ref_buffer exs(m());
|
||||||
|
expr_ref not_t(m());
|
||||||
|
not_t = m_util.mk_bv_not(t);
|
||||||
|
unsigned low = 0;
|
||||||
|
unsigned i = 0;
|
||||||
|
while (i < sz) {
|
||||||
|
while (i < sz && mod(v1, two).is_one()) {
|
||||||
|
i++;
|
||||||
|
div(v1, two, v1);
|
||||||
|
}
|
||||||
|
if (i != low) {
|
||||||
|
exs.push_back(m_mk_extract(i-1, low, not_t));
|
||||||
|
low = i;
|
||||||
|
}
|
||||||
|
while (i < sz && mod(v1, two).is_zero()) {
|
||||||
|
i++;
|
||||||
|
div(v1, two, v1);
|
||||||
|
}
|
||||||
|
if (i != low) {
|
||||||
|
exs.push_back(m_mk_extract(i-1, low, t));
|
||||||
|
low = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::reverse(exs.c_ptr(), exs.c_ptr() + exs.size());
|
||||||
|
result = m_util.mk_concat(exs.size(), exs.c_ptr());
|
||||||
|
return BR_REWRITE3;
|
||||||
|
}
|
||||||
|
|
||||||
if (!merged && !flattened && (num_coeffs == 0 || (num_coeffs == 1 && !v1.is_zero() && v1 != (m_util.power_of_two(sz) - numeral(1)))))
|
if (!merged && !flattened && (num_coeffs == 0 || (num_coeffs == 1 && !v1.is_zero() && v1 != (m_util.power_of_two(sz) - numeral(1)))))
|
||||||
return BR_FAILED;
|
return BR_FAILED;
|
||||||
|
|
|
@ -2853,30 +2853,6 @@ namespace Microsoft.Z3
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Native Parser
|
|
||||||
/// <summary>
|
|
||||||
/// Parse the given string using the Z3 native parser.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>A conjunction of asserts made in <paramref name="str"/>.</returns>
|
|
||||||
public Expr ParseZ3String(string str)
|
|
||||||
{
|
|
||||||
Contract.Ensures(Contract.Result<Expr>() != null);
|
|
||||||
|
|
||||||
return Expr.Create(this, Native.Z3_parse_z3_string(nCtx, str));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Parse the given file using the Z3 native parser.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>A conjunction of asserts made in the file.</returns>
|
|
||||||
public Expr ParseZ3File(string fileName)
|
|
||||||
{
|
|
||||||
Contract.Ensures(Contract.Result<Expr>() != null);
|
|
||||||
|
|
||||||
return Expr.Create(this, Native.Z3_parse_z3_file(nCtx, fileName));
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Goals
|
#region Goals
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new Goal.
|
/// Creates a new Goal.
|
|
@ -24,7 +24,7 @@ Small example:
|
||||||
>>> s.check()
|
>>> s.check()
|
||||||
sat
|
sat
|
||||||
>>> s.model()
|
>>> s.model()
|
||||||
[x = 1, y = 2]
|
[y = 2, x = 1]
|
||||||
|
|
||||||
Z3 exceptions:
|
Z3 exceptions:
|
||||||
|
|
||||||
|
@ -1698,9 +1698,9 @@ def Exists(vs, body, weight=1, qid="", skid="", patterns=[], no_patterns=[]):
|
||||||
>>> q
|
>>> q
|
||||||
Exists([x, y], f(x, y) >= x)
|
Exists([x, y], f(x, y) >= x)
|
||||||
>>> Tactic('nnf')(q)
|
>>> Tactic('nnf')(q)
|
||||||
[[f(x!foo!2, y!foo!1) >= x!foo!2]]
|
[[f(x!foo!1, y!foo!0) >= x!foo!1]]
|
||||||
>>> Tactic('nnf')(q).as_expr()
|
>>> Tactic('nnf')(q).as_expr()
|
||||||
f(x!foo!4, y!foo!3) >= x!foo!4
|
f(x!foo!3, y!foo!2) >= x!foo!3
|
||||||
"""
|
"""
|
||||||
return _mk_quantifier(False, vs, body, weight, qid, skid, patterns, no_patterns)
|
return _mk_quantifier(False, vs, body, weight, qid, skid, patterns, no_patterns)
|
||||||
|
|
||||||
|
@ -6908,7 +6908,7 @@ def solve(*args, **keywords):
|
||||||
|
|
||||||
>>> a, b = Ints('a b')
|
>>> a, b = Ints('a b')
|
||||||
>>> solve(a + b == 3, Or(a == 0, a == 1), a != 0)
|
>>> solve(a + b == 3, Or(a == 0, a == 1), a != 0)
|
||||||
[a = 1, b = 2]
|
[b = 2, a = 1]
|
||||||
"""
|
"""
|
||||||
s = Solver()
|
s = Solver()
|
||||||
s.set(**keywords)
|
s.set(**keywords)
|
||||||
|
|
|
@ -45,6 +45,7 @@ Revision History:
|
||||||
#include "cooperate.h"
|
#include "cooperate.h"
|
||||||
#include "tactical.h"
|
#include "tactical.h"
|
||||||
#include "model_v2_pp.h"
|
#include "model_v2_pp.h"
|
||||||
|
#include "obj_hashtable.h"
|
||||||
|
|
||||||
|
|
||||||
namespace qe {
|
namespace qe {
|
||||||
|
@ -723,6 +724,85 @@ namespace qe {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ----------------------------
|
||||||
|
// def_vector
|
||||||
|
|
||||||
|
void def_vector::normalize() {
|
||||||
|
// apply nested definitions into place.
|
||||||
|
ast_manager& m = m_vars.get_manager();
|
||||||
|
expr_substitution sub(m);
|
||||||
|
scoped_ptr<expr_replacer> rep = mk_expr_simp_replacer(m);
|
||||||
|
if (size() <= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (unsigned i = size(); i > 0; ) {
|
||||||
|
--i;
|
||||||
|
expr_ref e(m);
|
||||||
|
e = def(i);
|
||||||
|
rep->set_substitution(&sub);
|
||||||
|
(*rep)(e);
|
||||||
|
sub.insert(m.mk_const(var(i)), e);
|
||||||
|
def_ref(i) = e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void def_vector::project(unsigned num_vars, app* const* vars) {
|
||||||
|
obj_hashtable<func_decl> fns;
|
||||||
|
for (unsigned i = 0; i < num_vars; ++i) {
|
||||||
|
fns.insert(vars[i]->get_decl());
|
||||||
|
}
|
||||||
|
for (unsigned i = 0; i < size(); ++i) {
|
||||||
|
if (fns.contains(m_vars[i].get())) {
|
||||||
|
//
|
||||||
|
// retain only first occurrence of eliminated variable.
|
||||||
|
// later occurrences are just recycling the name.
|
||||||
|
//
|
||||||
|
fns.remove(m_vars[i].get());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (unsigned j = i+1; j < size(); ++j) {
|
||||||
|
m_vars.set(j-1, m_vars.get(j));
|
||||||
|
m_defs.set(j-1, m_defs.get(j));
|
||||||
|
}
|
||||||
|
m_vars.pop_back();
|
||||||
|
m_defs.pop_back();
|
||||||
|
--i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------
|
||||||
|
// guarded_defs
|
||||||
|
|
||||||
|
std::ostream& guarded_defs::display(std::ostream& out) const {
|
||||||
|
ast_manager& m = m_guards.get_manager();
|
||||||
|
for (unsigned i = 0; i < size(); ++i) {
|
||||||
|
for (unsigned j = 0; j < defs(i).size(); ++j) {
|
||||||
|
out << defs(i).var(j)->get_name() << " := " << mk_pp(defs(i).def(j), m) << "\n";
|
||||||
|
}
|
||||||
|
out << "if " << mk_pp(guard(i), m) << "\n";
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool guarded_defs::inv() {
|
||||||
|
return m_defs.size() == m_guards.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
void guarded_defs::add(expr* guard, def_vector const& defs) {
|
||||||
|
SASSERT(inv());
|
||||||
|
m_defs.push_back(defs);
|
||||||
|
m_guards.push_back(guard);
|
||||||
|
m_defs.back().normalize();
|
||||||
|
SASSERT(inv());
|
||||||
|
}
|
||||||
|
|
||||||
|
void guarded_defs::project(unsigned num_vars, app* const* vars) {
|
||||||
|
for (unsigned i = 0; i < size(); ++i) {
|
||||||
|
m_defs[i].project(num_vars, vars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------
|
// ----------------------------
|
||||||
// Obtain atoms in NNF formula.
|
// Obtain atoms in NNF formula.
|
||||||
|
|
||||||
|
@ -810,7 +890,7 @@ namespace qe {
|
||||||
|
|
||||||
virtual lbool eliminate_exists(
|
virtual lbool eliminate_exists(
|
||||||
unsigned num_vars, app* const* vars,
|
unsigned num_vars, app* const* vars,
|
||||||
expr_ref& fml, app_ref_vector& free_vars, bool get_first, def_vector* defs) = 0;
|
expr_ref& fml, app_ref_vector& free_vars, bool get_first, guarded_defs* defs) = 0;
|
||||||
|
|
||||||
virtual void set_assumption(expr* fml) = 0;
|
virtual void set_assumption(expr* fml) = 0;
|
||||||
|
|
||||||
|
@ -918,40 +998,25 @@ namespace qe {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get_leaf_rec(expr_ref& fml, def_vector& defs) {
|
void get_leaves_rec(def_vector& defs, guarded_defs& gdefs) {
|
||||||
expr* f = this->fml();
|
expr* f = this->fml();
|
||||||
|
unsigned sz = defs.size();
|
||||||
|
defs.append(def());
|
||||||
if (m_children.empty() && f && !m.is_false(f) &&
|
if (m_children.empty() && f && !m.is_false(f) &&
|
||||||
m_vars.empty() && !has_var()) {
|
m_vars.empty() && !has_var()) {
|
||||||
fml = f;
|
gdefs.add(f, defs);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
unsigned sz = defs.size();
|
else {
|
||||||
for (unsigned i = 0; i < m_children.size(); ++i) {
|
for (unsigned i = 0; i < m_children.size(); ++i) {
|
||||||
search_tree* st = m_children[i];
|
m_children[i]->get_leaves_rec(defs, gdefs);
|
||||||
defs.append(st->def());
|
|
||||||
if (st->get_leaf_rec(fml, defs)) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
defs.shrink(sz);
|
|
||||||
}
|
}
|
||||||
return false;
|
defs.shrink(sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_leaf(expr_ref& fml, def_vector& defs) {
|
void get_leaves(guarded_defs& gdefs) {
|
||||||
get_leaf_rec(fml, defs);
|
def_vector defs(m);
|
||||||
|
get_leaves_rec(defs, gdefs);
|
||||||
// apply nested definitions into place.
|
|
||||||
expr_substitution sub(m);
|
|
||||||
scoped_ptr<expr_replacer> rep = mk_expr_simp_replacer(m);
|
|
||||||
for (unsigned i = defs.size(); i > 0; ) {
|
|
||||||
--i;
|
|
||||||
expr_ref e(m);
|
|
||||||
e = defs.def(i);
|
|
||||||
rep->set_substitution(&sub);
|
|
||||||
(*rep)(e);
|
|
||||||
sub.insert(m.mk_const(defs.var(i)), e);
|
|
||||||
defs.def_ref(i) = e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
|
@ -1248,7 +1313,7 @@ namespace qe {
|
||||||
|
|
||||||
app_ref_vector m_new_vars; // variables added by solvers
|
app_ref_vector m_new_vars; // variables added by solvers
|
||||||
bool m_get_first; // get first satisfying branch.
|
bool m_get_first; // get first satisfying branch.
|
||||||
def_vector* m_defs;
|
guarded_defs* m_defs;
|
||||||
nnf_normalizer m_nnf; // nnf conversion
|
nnf_normalizer m_nnf; // nnf conversion
|
||||||
|
|
||||||
|
|
||||||
|
@ -1311,7 +1376,7 @@ namespace qe {
|
||||||
|
|
||||||
void check(unsigned num_vars, app* const* vars,
|
void check(unsigned num_vars, app* const* vars,
|
||||||
expr* assumption, expr_ref& fml, bool get_first,
|
expr* assumption, expr_ref& fml, bool get_first,
|
||||||
app_ref_vector& free_vars, def_vector* defs) {
|
app_ref_vector& free_vars, guarded_defs* defs) {
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
m_solver.push();
|
m_solver.push();
|
||||||
|
@ -1366,9 +1431,11 @@ namespace qe {
|
||||||
expr_ref_vector result(m);
|
expr_ref_vector result(m);
|
||||||
m_root.get_leaves(result);
|
m_root.get_leaves(result);
|
||||||
m_bool_rewriter.mk_or(result.size(), result.c_ptr(), fml);
|
m_bool_rewriter.mk_or(result.size(), result.c_ptr(), fml);
|
||||||
}
|
}
|
||||||
else if (defs) {
|
|
||||||
m_root.get_leaf(fml, *defs);
|
if (defs) {
|
||||||
|
m_root.get_leaves(*defs);
|
||||||
|
defs->project(num_vars, vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("qe",
|
TRACE("qe",
|
||||||
|
@ -1401,7 +1468,7 @@ namespace qe {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void final_check(model_evaluator& model_eval) {
|
void final_check(model_evaluator& model_eval) {
|
||||||
TRACE("qe", tout << (m_fml?"fml":"null") << "\n";);
|
TRACE("qe", tout << "\n";);
|
||||||
while (can_propagate_assignment(model_eval)) {
|
while (can_propagate_assignment(model_eval)) {
|
||||||
propagate_assignment(model_eval);
|
propagate_assignment(model_eval);
|
||||||
}
|
}
|
||||||
|
@ -1480,7 +1547,7 @@ namespace qe {
|
||||||
m_qe.eliminate_exists(1, &var, fml, m_free_vars, false, 0);
|
m_qe.eliminate_exists(1, &var, fml, m_free_vars, false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
lbool eliminate_exists(unsigned num_vars, app* const* vars, expr_ref& fml, bool get_first, def_vector* defs) {
|
lbool eliminate_exists(unsigned num_vars, app* const* vars, expr_ref& fml, bool get_first, guarded_defs* defs) {
|
||||||
return m_qe.eliminate_exists(num_vars, vars, fml, m_free_vars, get_first, defs);
|
return m_qe.eliminate_exists(num_vars, vars, fml, m_free_vars, get_first, defs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1700,7 +1767,7 @@ namespace qe {
|
||||||
|
|
||||||
void propagate_assignment(model_evaluator& model_eval) {
|
void propagate_assignment(model_evaluator& model_eval) {
|
||||||
if (m_fml) {
|
if (m_fml) {
|
||||||
update_current(model_eval, true);
|
update_status st = update_current(model_eval, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1982,7 +2049,7 @@ namespace qe {
|
||||||
|
|
||||||
virtual lbool eliminate_exists(
|
virtual lbool eliminate_exists(
|
||||||
unsigned num_vars, app* const* vars, expr_ref& fml,
|
unsigned num_vars, app* const* vars, expr_ref& fml,
|
||||||
app_ref_vector& free_vars, bool get_first, def_vector* defs) {
|
app_ref_vector& free_vars, bool get_first, guarded_defs* defs) {
|
||||||
if (get_first) {
|
if (get_first) {
|
||||||
return eliminate_block(num_vars, vars, fml, free_vars, get_first, defs);
|
return eliminate_block(num_vars, vars, fml, free_vars, get_first, defs);
|
||||||
}
|
}
|
||||||
|
@ -2008,7 +2075,7 @@ namespace qe {
|
||||||
|
|
||||||
lbool eliminate_block(
|
lbool eliminate_block(
|
||||||
unsigned num_vars, app* const* vars, expr_ref& fml,
|
unsigned num_vars, app* const* vars, expr_ref& fml,
|
||||||
app_ref_vector& free_vars, bool get_first, def_vector* defs) {
|
app_ref_vector& free_vars, bool get_first, guarded_defs* defs) {
|
||||||
|
|
||||||
checkpoint();
|
checkpoint();
|
||||||
|
|
||||||
|
@ -2094,54 +2161,6 @@ namespace qe {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
//
|
|
||||||
// Instantiation based quantifier elimination procedure.
|
|
||||||
// try a few loops of checking satisfiability.
|
|
||||||
// substitute in model values for bound variables.
|
|
||||||
//
|
|
||||||
class quant_elim_inst : public quant_elim {
|
|
||||||
ast_manager&
|
|
||||||
public:
|
|
||||||
quant_elim_inst(ast_manager& m): m(m) {}
|
|
||||||
|
|
||||||
virtual lbool eliminate_exists(
|
|
||||||
unsigned num_vars, app* const* vars,
|
|
||||||
expr_ref& fml, app_ref_vector& free_vars, bool get_first, def_vector* defs) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void set_assumption(expr* fml) {}
|
|
||||||
|
|
||||||
virtual void collect_statistics(statistics & st) const {
|
|
||||||
m_solver.collect_statistics(st);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void eliminate(bool is_forall, unsigned num_vars, app* const* vars, expr_ref& fml) {
|
|
||||||
if (is_forall) {
|
|
||||||
fml = m.mk_not(fml);
|
|
||||||
r = eliminate_exists(num_vars, vars, fml, free_vars, false, defs);
|
|
||||||
fml = m.mk_not(fml);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
r = eliminate_exists(num_vars, vars, fml, free_vars, false, defs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void set_cancel(bool f) {
|
|
||||||
m_solver.set_cancel(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void updt_params(params_ref const& p) {
|
|
||||||
m_solver.updt_params(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------
|
// ------------------------------------------------
|
||||||
// expr_quant_elim
|
// expr_quant_elim
|
||||||
|
|
||||||
|
@ -2310,40 +2329,28 @@ namespace qe {
|
||||||
lbool expr_quant_elim::first_elim(unsigned num_vars, app* const* vars, expr_ref& fml, def_vector& defs) {
|
lbool expr_quant_elim::first_elim(unsigned num_vars, app* const* vars, expr_ref& fml, def_vector& defs) {
|
||||||
app_ref_vector fvs(m);
|
app_ref_vector fvs(m);
|
||||||
init_qe();
|
init_qe();
|
||||||
return m_qe->eliminate_exists(num_vars, vars, fml, fvs, true, &defs);
|
guarded_defs gdefs(m);
|
||||||
}
|
lbool res = m_qe->eliminate_exists(num_vars, vars, fml, fvs, true, &gdefs);
|
||||||
|
if (gdefs.size() > 0) {
|
||||||
bool expr_quant_elim::solve_for_var(app* var, expr* _fml, expr_ref_vector& terms, expr_ref_vector& fmls) {
|
defs.reset();
|
||||||
expr_ref assms(m.mk_true(), m);
|
defs.append(gdefs.defs(0));
|
||||||
func_decl* v = var->get_decl();
|
fml = gdefs.guard(0);
|
||||||
init_qe();
|
|
||||||
while (true) {
|
|
||||||
def_vector defs(m);
|
|
||||||
app_ref_vector fvs(m);
|
|
||||||
m_qe->set_assumption(assms);
|
|
||||||
expr_ref fml(_fml, m);
|
|
||||||
lbool is_sat = m_qe->eliminate_exists(1, &var, fml, fvs, true, &defs);
|
|
||||||
switch (is_sat) {
|
|
||||||
case l_false: return true;
|
|
||||||
case l_undef: return false;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
bool found = false;
|
|
||||||
for (unsigned i = 0; !found && i < defs.size(); ++i) {
|
|
||||||
if (defs.var(i) == v) {
|
|
||||||
terms.push_back(defs.def(i));
|
|
||||||
fmls.push_back(fml);
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found) {
|
|
||||||
NOT_IMPLEMENTED_YET();
|
|
||||||
}
|
|
||||||
assms = m.mk_and(assms, m.mk_not(fml));
|
|
||||||
}
|
}
|
||||||
return true;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool expr_quant_elim::solve_for_var(app* var, expr* fml, guarded_defs& defs) {
|
||||||
|
return solve_for_vars(1,&var, fml, defs);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool expr_quant_elim::solve_for_vars(unsigned num_vars, app* const* vars, expr* _fml, guarded_defs& defs) {
|
||||||
|
app_ref_vector fvs(m);
|
||||||
|
expr_ref fml(_fml, m);
|
||||||
|
TRACE("qe", tout << mk_pp(fml, m) << "\n";);
|
||||||
|
init_qe();
|
||||||
|
lbool is_sat = m_qe->eliminate_exists(num_vars, vars, fml, fvs, false, &defs);
|
||||||
|
return is_sat != l_undef;
|
||||||
|
}
|
||||||
|
|
||||||
void expr_quant_elim::set_cancel(bool f) {
|
void expr_quant_elim::set_cancel(bool f) {
|
||||||
if (m_qe) {
|
if (m_qe) {
|
||||||
|
|
|
@ -226,8 +226,10 @@ namespace qe {
|
||||||
class def_vector {
|
class def_vector {
|
||||||
func_decl_ref_vector m_vars;
|
func_decl_ref_vector m_vars;
|
||||||
expr_ref_vector m_defs;
|
expr_ref_vector m_defs;
|
||||||
|
def_vector& operator=(def_vector const& other);
|
||||||
public:
|
public:
|
||||||
def_vector(ast_manager& m): m_vars(m), m_defs(m) {}
|
def_vector(ast_manager& m): m_vars(m), m_defs(m) {}
|
||||||
|
def_vector(def_vector const& other): m_vars(other.m_vars), m_defs(other.m_defs) {}
|
||||||
void push_back(func_decl* v, expr* e) {
|
void push_back(func_decl* v, expr* e) {
|
||||||
m_vars.push_back(v);
|
m_vars.push_back(v);
|
||||||
m_defs.push_back(e);
|
m_defs.push_back(e);
|
||||||
|
@ -240,6 +242,33 @@ namespace qe {
|
||||||
func_decl* var(unsigned i) const { return m_vars[i]; }
|
func_decl* var(unsigned i) const { return m_vars[i]; }
|
||||||
expr* def(unsigned i) const { return m_defs[i]; }
|
expr* def(unsigned i) const { return m_defs[i]; }
|
||||||
expr_ref_vector::element_ref def_ref(unsigned i) { return m_defs[i]; }
|
expr_ref_vector::element_ref def_ref(unsigned i) { return m_defs[i]; }
|
||||||
|
void normalize();
|
||||||
|
void project(unsigned num_vars, app* const* vars);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Guarded definitions.
|
||||||
|
|
||||||
|
A realizer to a an existential quantified formula is a disjunction
|
||||||
|
together with a substitution from the existentially quantified variables
|
||||||
|
to terms such that:
|
||||||
|
1. The original formula (exists (vars) fml) is equivalent to the disjunction of guards.
|
||||||
|
2. Each guard is equivalent to fml where 'vars' are replaced by the substitution associated
|
||||||
|
with the guard.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class guarded_defs {
|
||||||
|
expr_ref_vector m_guards;
|
||||||
|
vector<def_vector> m_defs;
|
||||||
|
bool inv();
|
||||||
|
public:
|
||||||
|
guarded_defs(ast_manager& m): m_guards(m) { SASSERT(inv()); }
|
||||||
|
void add(expr* guard, def_vector const& defs);
|
||||||
|
unsigned size() const { return m_guards.size(); }
|
||||||
|
def_vector const& defs(unsigned i) const { return m_defs[i]; }
|
||||||
|
expr* guard(unsigned i) const { return m_guards[i]; }
|
||||||
|
std::ostream& display(std::ostream& out) const;
|
||||||
|
void project(unsigned num_vars, app* const* vars);
|
||||||
};
|
};
|
||||||
|
|
||||||
class quant_elim;
|
class quant_elim;
|
||||||
|
@ -277,10 +306,12 @@ namespace qe {
|
||||||
\brief solve for (exists (var) fml).
|
\brief solve for (exists (var) fml).
|
||||||
Return false if operation failed.
|
Return false if operation failed.
|
||||||
Return true and list of pairs (t_i, fml_i) in <terms, fmls>
|
Return true and list of pairs (t_i, fml_i) in <terms, fmls>
|
||||||
such that fml[t_1] \/ ... \/ fml[t_n] == (exists (var) fml)
|
such that fml_1 \/ ... \/ fml_n == (exists (var) fml)
|
||||||
and fml_i == fml[t_1]
|
and fml_i => fml[t_i]
|
||||||
*/
|
*/
|
||||||
bool solve_for_var(app* var, expr* fml, expr_ref_vector& terms, expr_ref_vector& fmls);
|
bool solve_for_var(app* var, expr* fml, guarded_defs& defs);
|
||||||
|
|
||||||
|
bool solve_for_vars(unsigned num_vars, app* const* vars, expr* fml, guarded_defs& defs);
|
||||||
|
|
||||||
|
|
||||||
void set_cancel(bool f);
|
void set_cancel(bool f);
|
||||||
|
|
|
@ -367,16 +367,6 @@ namespace qe {
|
||||||
simplify(result);
|
simplify(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_ref mk_idiv(expr* a, numeral const & k) {
|
|
||||||
if (k.is_one()) {
|
|
||||||
return expr_ref(a, m);
|
|
||||||
}
|
|
||||||
expr_ref result(m);
|
|
||||||
result = m_arith.mk_idiv(a, m_arith.mk_numeral(k, true));
|
|
||||||
simplify(result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
expr* mk_numeral(numeral const& k, bool is_int = true) { return m_arith.mk_numeral(k, is_int); }
|
expr* mk_numeral(numeral const& k, bool is_int = true) { return m_arith.mk_numeral(k, is_int); }
|
||||||
|
|
||||||
expr* mk_numeral(int k, bool is_int) { return mk_numeral(numeral(k),is_int); }
|
expr* mk_numeral(int k, bool is_int) { return mk_numeral(numeral(k),is_int); }
|
||||||
|
@ -1699,6 +1689,40 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Compute least upper/greatest lower bounds for x.
|
||||||
|
|
||||||
|
Assume:
|
||||||
|
(not (= k 0))
|
||||||
|
(<= 0 (mod m k))
|
||||||
|
(< (mod m k) (abs k))
|
||||||
|
(= m (+ (* k (div m k)) (mod m k)))
|
||||||
|
i.e.
|
||||||
|
k * (e div k) + (e mod k) = e
|
||||||
|
|
||||||
|
|
||||||
|
When k is positive, least upper bound
|
||||||
|
for x such that: k*x <= e is e div k
|
||||||
|
|
||||||
|
When k is negative, greatest lower bound
|
||||||
|
for x such that k*x <= e is e div k
|
||||||
|
|
||||||
|
k * (e div k) + (e mod k) = e
|
||||||
|
*/
|
||||||
|
expr_ref mk_idiv(expr* e, numeral k) {
|
||||||
|
SASSERT(!k.is_zero());
|
||||||
|
arith_util& a = m_util.m_arith;
|
||||||
|
if (k.is_one()) {
|
||||||
|
return expr_ref(e, m);
|
||||||
|
}
|
||||||
|
if (k.is_minus_one()) {
|
||||||
|
return expr_ref(a.mk_uminus(e), m);
|
||||||
|
}
|
||||||
|
SASSERT(a.is_int(e));
|
||||||
|
return expr_ref(a.mk_idiv(e, a.mk_numeral(k, true)), m);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void get_def(contains_app& contains_x, unsigned v, expr* fml, expr_ref& def) {
|
void get_def(contains_app& contains_x, unsigned v, expr* fml, expr_ref& def) {
|
||||||
app* x = contains_x.x();
|
app* x = contains_x.x();
|
||||||
x_subst x_t(m_util);
|
x_subst x_t(m_util);
|
||||||
|
@ -1730,35 +1754,30 @@ public:
|
||||||
// a*x + term <= 0
|
// a*x + term <= 0
|
||||||
expr_ref term(bounds.exprs(is_strict, !is_lower)[i], m);
|
expr_ref term(bounds.exprs(is_strict, !is_lower)[i], m);
|
||||||
rational a = bounds.coeffs(is_strict, !is_lower)[i];
|
rational a = bounds.coeffs(is_strict, !is_lower)[i];
|
||||||
|
|
||||||
if (x_t.get_term()) {
|
if (x_t.get_term()) {
|
||||||
// a*(c*x' + s) + term <= 0
|
// x := coeff * x' + s
|
||||||
// term <- a*s + term
|
// solve instead for
|
||||||
// a <- a*c
|
// a*coeff*x' + term + a*s <= 0
|
||||||
term = m_util.mk_add(m_util.mk_mul(a,x_t.get_term()), term);
|
TRACE("qe", tout << x_t.get_coeff() << "* " << mk_pp(x,m) << " + "
|
||||||
a = a * x_t.get_coeff();
|
<< mk_pp(x_t.get_term(), m) << "\n";);
|
||||||
|
SASSERT(x_t.get_coeff().is_pos());
|
||||||
|
term = m_util.mk_add(term, m_util.mk_mul(a, x_t.get_term()));
|
||||||
|
a = a * x_t.get_coeff();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRACE("qe", tout << a << "* " << mk_pp(x,m) << " + " << mk_pp(term, m) << " <= 0\n";);
|
||||||
SASSERT(a.is_int());
|
SASSERT(a.is_int());
|
||||||
if (is_lower) {
|
|
||||||
// a*x + t <= 0
|
|
||||||
// <=
|
|
||||||
// x <= -t div a
|
|
||||||
SASSERT(a.is_pos());
|
|
||||||
term = m_util.mk_idiv(m_util.mk_uminus(term), a);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// -a*x + t <= 0
|
|
||||||
// <=>
|
|
||||||
// t <= a*x
|
|
||||||
// <=
|
|
||||||
// ((div t a) + 1) <= x
|
|
||||||
term = m_util.mk_idiv(term, abs(a));
|
|
||||||
if (!(abs(a).is_one())) {
|
|
||||||
term = m_util.mk_add(term, m_util.mk_one(x));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
terms.push_back(term);
|
|
||||||
SASSERT(is_lower == a.is_pos());
|
SASSERT(is_lower == a.is_pos());
|
||||||
TRACE("qe", tout << is_lower << " " << a << " " << mk_pp(term, m) << "\n";);
|
|
||||||
|
// a*x + t <= 0
|
||||||
|
// <=
|
||||||
|
// x <= -t div a + 1
|
||||||
|
|
||||||
|
term = m_util.mk_uminus(term);
|
||||||
|
term = mk_idiv(term, a);
|
||||||
|
terms.push_back(term);
|
||||||
|
TRACE("qe", tout << "a: " << a << " term: " << mk_pp(term, m) << "\n";);
|
||||||
}
|
}
|
||||||
is_strict = true;
|
is_strict = true;
|
||||||
sz = bounds.size(is_strict, !is_lower);
|
sz = bounds.size(is_strict, !is_lower);
|
||||||
|
@ -1788,14 +1807,11 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x_t.get_term()) {
|
if (x_t.get_term()) {
|
||||||
//
|
// x := coeff * x + s
|
||||||
// x = x_t.get_coeff()*x' + x_t.get_term()
|
TRACE("qe", tout << x_t.get_coeff() << "* " << mk_pp(x,m) << " + "
|
||||||
// =>
|
<< mk_pp(x_t.get_term(), m) << "\n";);
|
||||||
// x' = (x - x_t.get_term()) div x_t.get_coeff()
|
def = m_util.mk_add(m_util.mk_mul(x_t.get_coeff(), def), x_t.get_term());
|
||||||
//
|
|
||||||
def = m_util.mk_idiv(m_util.mk_sub(def, x_t.get_term()), x_t.get_coeff());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_util.simplify(def);
|
m_util.simplify(def);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1822,25 +1838,39 @@ public:
|
||||||
// assert v => (x <= t_i)
|
// assert v => (x <= t_i)
|
||||||
//
|
//
|
||||||
SASSERT(v < bounds.size(is_strict, is_lower));
|
SASSERT(v < bounds.size(is_strict, is_lower));
|
||||||
expr_ref t(bounds.exprs(is_strict, is_lower)[v], m);
|
def = bounds.exprs(is_strict, is_lower)[v];
|
||||||
rational a = bounds.coeffs(is_strict, is_lower)[v];
|
rational a = bounds.coeffs(is_strict, is_lower)[v];
|
||||||
|
|
||||||
t = x_t.mk_term(a, t);
|
|
||||||
a = x_t.mk_coeff(a);
|
|
||||||
|
|
||||||
def = t;
|
|
||||||
if (a.is_pos()) {
|
|
||||||
def = m_util.mk_uminus(def);
|
|
||||||
}
|
|
||||||
if (x_t.get_term()) {
|
if (x_t.get_term()) {
|
||||||
def = m_util.mk_idiv(m_util.mk_sub(def, x_t.get_term()), x_t.get_coeff());
|
// x := coeff * x' + s
|
||||||
|
// solve instead for
|
||||||
|
// a*coeff*x' + term + a*s <= 0
|
||||||
|
TRACE("qe", tout << x_t.get_coeff() << "* " << mk_pp(x,m) << " + "
|
||||||
|
<< mk_pp(x_t.get_term(), m) << "\n";);
|
||||||
|
SASSERT(x_t.get_coeff().is_pos());
|
||||||
|
def = m_util.mk_add(def, m_util.mk_mul(a, x_t.get_term()));
|
||||||
|
a = a * x_t.get_coeff();
|
||||||
}
|
}
|
||||||
if (!a.is_one()) {
|
|
||||||
def = m_util.mk_idiv(def, a);
|
SASSERT(a.is_int());
|
||||||
|
SASSERT(is_lower != a.is_pos());
|
||||||
|
|
||||||
|
// a*x + t <= 0
|
||||||
|
// <=
|
||||||
|
// x <= -t div a
|
||||||
|
|
||||||
|
def = m_util.mk_uminus(def);
|
||||||
|
def = mk_idiv(def, a);
|
||||||
|
|
||||||
|
if (x_t.get_term()) {
|
||||||
|
// x := coeff * x + s
|
||||||
|
def = m_util.mk_add(m_util.mk_mul(x_t.get_coeff(), def), x_t.get_term());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_util.simplify(def);
|
m_util.simplify(def);
|
||||||
|
|
||||||
TRACE("qe", tout << "TBD: " << a << " " << mk_pp(t, m) << "\n";);
|
|
||||||
|
TRACE("qe", tout << "TBD: " << a << " " << mk_pp(def, m) << "\n";);
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_ref mk_not(expr* e) {
|
expr_ref mk_not(expr* e) {
|
||||||
|
|
|
@ -467,10 +467,10 @@ namespace qe {
|
||||||
SASSERT(m_datatype_util.is_datatype(s));
|
SASSERT(m_datatype_util.is_datatype(s));
|
||||||
TRACE("quant_elim", tout << mk_pp(x.x(), m) << " " << vl << "\n";);
|
TRACE("quant_elim", tout << mk_pp(x.x(), m) << " " << vl << "\n";);
|
||||||
if (m_datatype_util.is_recursive(s)) {
|
if (m_datatype_util.is_recursive(s)) {
|
||||||
subst_rec(x, vl, fml);
|
subst_rec(x, vl, fml, def);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
subst_nonrec(x, vl, fml);
|
subst_nonrec(x, vl, fml, def);
|
||||||
}
|
}
|
||||||
if (def) {
|
if (def) {
|
||||||
*def = 0; // TBD
|
*def = 0; // TBD
|
||||||
|
@ -501,14 +501,21 @@ namespace qe {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void add_def(expr* term, expr_ref* def) {
|
||||||
|
if (def) {
|
||||||
|
*def = term;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// replace x by C(y1,..,yn) where y1,..,yn are fresh variables.
|
// replace x by C(y1,..,yn) where y1,..,yn are fresh variables.
|
||||||
//
|
//
|
||||||
void subst_constructor(contains_app& x, func_decl* c, expr_ref& fml) {
|
void subst_constructor(contains_app& x, func_decl* c, expr_ref& fml, expr_ref* def) {
|
||||||
subst_clos* sub = 0;
|
subst_clos* sub = 0;
|
||||||
|
|
||||||
if (m_subst_cache.find(x.x(), c, sub)) {
|
if (m_subst_cache.find(x.x(), c, sub)) {
|
||||||
m_replace->apply_substitution(x.x(), sub->first, 0, fml);
|
m_replace->apply_substitution(x.x(), sub->first, 0, fml);
|
||||||
|
add_def(sub->first, def);
|
||||||
for (unsigned i = 0; i < sub->second.size(); ++i) {
|
for (unsigned i = 0; i < sub->second.size(); ++i) {
|
||||||
m_ctx.add_var(sub->second[i]);
|
m_ctx.add_var(sub->second[i]);
|
||||||
}
|
}
|
||||||
|
@ -529,6 +536,7 @@ namespace qe {
|
||||||
m_trail.push_back(c);
|
m_trail.push_back(c);
|
||||||
m_trail.push_back(t);
|
m_trail.push_back(t);
|
||||||
|
|
||||||
|
add_def(t, def);
|
||||||
m_replace->apply_substitution(x.x(), t, 0, fml);
|
m_replace->apply_substitution(x.x(), t, 0, fml);
|
||||||
sub->first = t;
|
sub->first = t;
|
||||||
m_subst_cache.insert(x.x(), c, sub);
|
m_subst_cache.insert(x.x(), c, sub);
|
||||||
|
@ -643,7 +651,7 @@ namespace qe {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void subst_rec(contains_app& contains_x, rational const& vl, expr_ref& fml) {
|
void subst_rec(contains_app& contains_x, rational const& vl, expr_ref& fml, expr_ref* def) {
|
||||||
app* x = contains_x.x();
|
app* x = contains_x.x();
|
||||||
sort* s = x->get_decl()->get_range();
|
sort* s = x->get_decl()->get_range();
|
||||||
SASSERT(m_datatype_util.is_datatype(s));
|
SASSERT(m_datatype_util.is_datatype(s));
|
||||||
|
@ -661,6 +669,7 @@ namespace qe {
|
||||||
app_ref fresh_x(m.mk_fresh_const("x", s), m);
|
app_ref fresh_x(m.mk_fresh_const("x", s), m);
|
||||||
m_ctx.add_var(fresh_x);
|
m_ctx.add_var(fresh_x);
|
||||||
m_replace->apply_substitution(x, fresh_x, 0, fml);
|
m_replace->apply_substitution(x, fresh_x, 0, fml);
|
||||||
|
add_def(fresh_x, def);
|
||||||
TRACE("quant_elim", tout << "Add recognizer " << mk_pp(is_c, m) << "\n";);
|
TRACE("quant_elim", tout << "Add recognizer " << mk_pp(is_c, m) << "\n";);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +677,7 @@ namespace qe {
|
||||||
|
|
||||||
if (has_selector(contains_x, fml, c)) {
|
if (has_selector(contains_x, fml, c)) {
|
||||||
TRACE("quant_elim", tout << "Eliminate selector " << mk_ll_pp(c, m) << "\n";);
|
TRACE("quant_elim", tout << "Eliminate selector " << mk_ll_pp(c, m) << "\n";);
|
||||||
subst_constructor(contains_x, c, fml);
|
subst_constructor(contains_x, c, fml, def);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -697,6 +706,7 @@ namespace qe {
|
||||||
if (idx < eqs.num_eqs()) {
|
if (idx < eqs.num_eqs()) {
|
||||||
expr* t = eqs.eq(idx);
|
expr* t = eqs.eq(idx);
|
||||||
expr* c = eqs.eq_cond(idx);
|
expr* c = eqs.eq_cond(idx);
|
||||||
|
add_def(t, def);
|
||||||
m_replace->apply_substitution(x, t, fml);
|
m_replace->apply_substitution(x, t, fml);
|
||||||
if (!m.is_true(c)) {
|
if (!m.is_true(c)) {
|
||||||
fml = m.mk_and(c, fml);
|
fml = m.mk_and(c, fml);
|
||||||
|
@ -710,6 +720,10 @@ namespace qe {
|
||||||
for (unsigned i = 0; i < eqs.num_neqs(); ++i) {
|
for (unsigned i = 0; i < eqs.num_neqs(); ++i) {
|
||||||
m_replace->apply_substitution(eqs.neq_atom(i), m.mk_true(), fml);
|
m_replace->apply_substitution(eqs.neq_atom(i), m.mk_true(), fml);
|
||||||
}
|
}
|
||||||
|
if (def) {
|
||||||
|
NOT_IMPLEMENTED_YET();
|
||||||
|
// you need to create a diagonal term
|
||||||
|
}
|
||||||
}
|
}
|
||||||
TRACE("quant_elim", tout << "reduced " << mk_pp(fml.get(), m) << "\n";);
|
TRACE("quant_elim", tout << "reduced " << mk_pp(fml.get(), m) << "\n";);
|
||||||
}
|
}
|
||||||
|
@ -753,7 +767,7 @@ namespace qe {
|
||||||
m_ctx.add_constraint(true, is_c);
|
m_ctx.add_constraint(true, is_c);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void subst_nonrec(contains_app& x, rational const& vl, expr_ref& fml) {
|
virtual void subst_nonrec(contains_app& x, rational const& vl, expr_ref& fml, expr_ref* def) {
|
||||||
sort* s = x.x()->get_decl()->get_range();
|
sort* s = x.x()->get_decl()->get_range();
|
||||||
SASSERT(m_datatype_util.is_datatype(s));
|
SASSERT(m_datatype_util.is_datatype(s));
|
||||||
SASSERT(!m_datatype_util.is_recursive(s));
|
SASSERT(!m_datatype_util.is_recursive(s));
|
||||||
|
@ -767,7 +781,7 @@ namespace qe {
|
||||||
SASSERT(vl.get_unsigned() < sz);
|
SASSERT(vl.get_unsigned() < sz);
|
||||||
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
||||||
}
|
}
|
||||||
subst_constructor(x, c, fml);
|
subst_constructor(x, c, fml, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -19,11 +19,10 @@ Revision History:
|
||||||
#ifndef _SMT_PARSER_H_
|
#ifndef _SMT_PARSER_H_
|
||||||
#define _SMT_PARSER_H_
|
#define _SMT_PARSER_H_
|
||||||
|
|
||||||
#include "ast.h"
|
#include<iostream>
|
||||||
#include "vector.h"
|
#include"ast.h"
|
||||||
#include "smtlib.h"
|
#include"vector.h"
|
||||||
#include "z3.h"
|
#include"smtlib.h"
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
namespace smtlib {
|
namespace smtlib {
|
||||||
class parser {
|
class parser {
|
||||||
|
@ -42,8 +41,6 @@ namespace smtlib {
|
||||||
virtual bool parse_file(char const * path) = 0;
|
virtual bool parse_file(char const * path) = 0;
|
||||||
virtual bool parse_string(char const * string) = 0;
|
virtual bool parse_string(char const * string) = 0;
|
||||||
|
|
||||||
virtual bool parse_commands(Z3_context ctx, std::istream& is, std::ostream& os) = 0;
|
|
||||||
|
|
||||||
virtual benchmark * get_benchmark() = 0;
|
virtual benchmark * get_benchmark() = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -27,7 +27,7 @@ class tactic;
|
||||||
tactic * mk_propagate_values_tactic(ast_manager & m, params_ref const & p = params_ref());
|
tactic * mk_propagate_values_tactic(ast_manager & m, params_ref const & p = params_ref());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ADD_TACTIC_CMD("propagate-values", "propagate constants.", "mk_propagate_values_tactic(m, p)")
|
ADD_TACTIC("propagate-values", "propagate constants.", "mk_propagate_values_tactic(m, p)")
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue