|
1 | 1 | export AlgebraicSet, BasicSemialgebraicSet, addequality!, addinequality! |
2 | 2 | # Semialgebraic set described by polynomials with coefficients in T |
3 | | -abstract AbstractSemialgebraicSet{T} |
| 3 | +abstract AbstractSemialgebraicSet |
4 | 4 |
|
5 | | -addequality!{T}(S::AbstractSemialgebraicSet{T}, p) = addequality!(S, VecPolynomial{T}(p)) |
6 | | -addinequality!{T}(S::AbstractSemialgebraicSet{T}, p) = addinequality!(S, VecPolynomial{T}(p)) |
| 5 | +abstract AbstractBasicSemialgebraicSet <: AbstractSemialgebraicSet |
| 6 | +abstract AbstractAlgebraicSet <: AbstractBasicSemialgebraicSet |
7 | 7 |
|
8 | | -abstract AbstractBasicSemialgebraicSet{T} <: AbstractSemialgebraicSet{T} |
9 | | -abstract AbstractAlgebraicSet{T} <: AbstractBasicSemialgebraicSet{T} |
| 8 | +addinequality!(S::AbstractAlgebraicSet, p) = throw(ArgumentError("Cannot add inequality to an algebraic set")) |
10 | 9 |
|
11 | | -addinequality!{T}(S::AbstractAlgebraicSet{T}, p) = throw(ArgumentError("Cannot add inequality to an algebraic set")) |
12 | | - |
13 | | -type AlgebraicSet{T} <: AbstractAlgebraicSet{T} |
14 | | - p::Vector{VecPolynomial{T}} |
15 | | -end |
16 | | -function (::Type{AlgebraicSet{T}}){T}() |
17 | | - AlgebraicSet{T}(VecPolynomial{T}[]) |
| 10 | +type AlgebraicSet <: AbstractAlgebraicSet |
| 11 | + p::Vector |
18 | 12 | end |
19 | | - |
20 | | - |
21 | | -function Base.convert{T,U}(::Type{AlgebraicSet{T}}, V::AlgebraicSet{U}) |
22 | | - AlgebraicSet{T}(Vector{VecPolynomial{T}}(V.p)) |
| 13 | +function (::Type{AlgebraicSet})() |
| 14 | + AlgebraicSet(Any[]) |
23 | 15 | end |
24 | 16 |
|
25 | | -addequality!{T}(V::AlgebraicSet{T}, p::VecPolynomial{T}) = push!(V.p, p) |
| 17 | +addequality!(V::AlgebraicSet, p) = push!(V.p, p) |
26 | 18 |
|
27 | | -type BasicSemialgebraicSet{T} <: AbstractBasicSemialgebraicSet{T} |
28 | | - V::AlgebraicSet{T} |
29 | | - p::Vector{VecPolynomial{T}} |
| 19 | +type BasicSemialgebraicSet <: AbstractBasicSemialgebraicSet |
| 20 | + V::AlgebraicSet |
| 21 | + p::Vector |
30 | 22 | end |
31 | | -function (::Type{BasicSemialgebraicSet{T}}){T}() |
32 | | - BasicSemialgebraicSet{T}(AlgebraicSet{T}(), VecPolynomial{T}[]) |
33 | | -end |
34 | | - |
35 | | - |
36 | | -function Base.convert{T,U}(::Type{BasicSemialgebraicSet{T}}, S::BasicSemialgebraicSet{U}) |
37 | | - BasicSemialgebraicSet{T}(convert(AlgebraicSet{T}, S.V), Vector{VecPolynomial{T}}(S.p)) |
| 23 | +function (::Type{BasicSemialgebraicSet})() |
| 24 | + BasicSemialgebraicSet(AlgebraicSet(), Any[]) |
38 | 25 | end |
39 | 26 |
|
40 | | -addequality!{T}(S::BasicSemialgebraicSet{T}, p::VecPolynomial{T}) = addequality!(S.V, p) |
41 | | -addinequality!{T}(S::BasicSemialgebraicSet{T}, p::VecPolynomial{T}) = push!(S.p, p) |
| 27 | +addequality!(S::BasicSemialgebraicSet, p) = addequality!(S.V, p) |
| 28 | +addinequality!(S::BasicSemialgebraicSet, p) = push!(S.p, p) |
0 commit comments