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:

• Singular integers, rationals Z/nZ, Z/pZ, Galois fields
• Multivariate polynomials
• Ideals over polynomial rings
• Free modules over polynomial rings and submodules given by a finite generating set
• Groebner basis over a field
• Free/minimal resolutions
• Syzygy modules
• Nemo.jl rings can be used as coefficient rings

## Installation

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
Singular Module over Singular Polynomial Ring (QQ),(x,y),(dp(2),C), with Generators:
x-y
y^2+1``````