GitHunt
OS

oscar-system/Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.

Oscar.jl

Documentation Build Status

Welcome to the OSCAR project, a visionary new computer algebra system
which combines the capabilities of four cornerstone systems: GAP,
Polymake, Antic and Singular.

Installation

OSCAR requires Julia 1.10 or newer. In principle it can be installed and used
like any other Julia package; doing so will take a couple of minutes:

julia> using Pkg
julia> Pkg.add("Oscar")
julia> using Oscar

However, some of OSCAR's components have additional requirements.
For more detailed information, please consult the installation
instructions
on our website.

Contributing to OSCAR

Please read the introduction for new developers
in the OSCAR manual to learn more on how to contribute to OSCAR.

Examples of usage

julia> using Oscar
  ___   ___   ___    _    ____
 / _ \ / __\ / __\  / \  |  _ \  | Combining and extending ANTIC, GAP,
| |_| |\__ \| |__  / ^ \ |  ´ /  | Polymake and Singular
 \___/ \___/ \___//_/ \_\|_|\_\  | Type "?Oscar" for more information
o--------o-----o-----o--------o  | Documentation: https://docs.oscar-system.org
  S Y M B O L I C   T O O L S    | Version 1.8.0-DEV

julia> k, a = quadratic_field(-5)
(Imaginary quadratic field defined by x^2 + 5, sqrt(-5))

julia> zk = maximal_order(k)
Maximal order
  of imaginary quadratic field defined by x^2 + 5
with Z-basis [1, sqrt(-5)]

julia> factorizations(zk(6))
2-element Vector{Fac{AbsSimpleNumFieldOrderElem}}:
 -1 * -3 * 2
 -1 * (sqrt(-5) + 1) * (sqrt(-5) - 1)

julia> Qx, x = polynomial_ring(QQ, [:x1,:x2])
(Multivariate polynomial ring in 2 variables over QQ, QQMPolyRingElem[x1, x2])

julia> R = grade(Qx, [1,2])[1]
Multivariate polynomial ring in 2 variables over QQ graded by
  x1 -> [1]
  x2 -> [2]

julia> f = R(x[1]^2+x[2])
x1^2 + x2

julia> degree(f)
[2]

julia> F = free_module(R, 1)
Free module of rank 1 over R

julia> s = sub(F, [f*F[1]])[1]
Submodule with 1 generator
  1: (x1^2 + x2)*e[1]
represented as subquotient with no relations

julia> H, mH = hom(s, quo(F, s)[1])
(hom of (s, Subquotient of submodule with 1 generator
  1: e[1]
by submodule with 1 generator
  1: (x1^2 + x2)*e[1]), Map: H -> set of all homomorphisms from s to subquotient of submodule with 1 generator
  1: e[1]
by submodule with 1 generator
  1: (x1^2 + x2)*e[1])

julia> mH(H[1])
Module homomorphism
  from s
  to subquotient of submodule with 1 generator
    1: e[1]
  by submodule with 1 generator
    1: (x1^2 + x2)*e[1]

Of course, the cornerstones are also available directly. For example:

julia> C = Polymake.polytope.cube(3);

julia> C.F_VECTOR
pm::Vector<pm::Integer>
8 12 6

julia> RP2 = Polymake.topaz.real_projective_plane();

julia> RP2.HOMOLOGY
pm::Array<topaz::HomologyGroup<pm::Integer> >
({} 0)
({(2 1)} 0)
({} 0)

Citing OSCAR

If you have used OSCAR in the preparation of a paper please cite it as described
on our website.

Funding

The development of this Julia package is supported by the
German Research Foundation (DFG) within the
Collaborative Research Center TRR 195.

Languages

Julia99.5%GAP0.5%Shell0.0%Fantom0.0%
Other
Created September 20, 2019
Updated March 10, 2026
oscar-system/Oscar.jl | GitHunt