Getting Started

Getting Started

Singular.jl is a Julia interface to the Singular computer algebra system. It was written by Oleksandr Motsak, William Hart and other contributors, and is maintained by William Hart, Hans Schoenemann and Andreas Steenpas. It is part of the Oscar project.

The features of Singular so far include:

Installation

To use Singular.jl we require Julia 0.6 or higher. Please see http://julialang.org/downloads for instructions on how to obtain julia for your system.

At the Julia prompt simply type

julia> Pkg.clone("https://github.com/wbhart/Singular.jl")
julia> Pkg.build("Singular")

Note that Singular.jl depends on Cxx.jl which is not supported on every system.

Quick start

Here is an example of using Singular.jl

julia> using Singular

julia> R, (x, y) = PolynomialRing(QQ, ["x", "y"])
(Singular Polynomial Ring (QQ),(x,y),(dp(2),C), Singular.spoly{Singular.n_Q}[x, y])

julia> I = Ideal(R, x^2 + 1, x*y + 1)
Singular Ideal over Singular Polynomial Ring (QQ),(x,y),(dp(2),C) with generators (x^2+1, x*y+1)

julia> G = std(I)
Singular Ideal over Singular Polynomial Ring (QQ),(x,y),(dp(2),C) with generators (x-y, y^2+1)

julia> Z = syz(G)
Singular Module over Singular Polynomial Ring (QQ),(x,y),(dp(2),C), with Generators:
y^2*gen(1)-x*gen(2)+y*gen(2)+gen(1)

julia> F = fres(G, 0)
Singular Resolution:
R^1 <- R^2 <- R^1

julia> F[1]
Singular Module over Singular Polynomial Ring (QQ),(x,y),(dp(2),C), with Generators:
x-y
y^2+1