Giter VIP home page Giter VIP logo

lean-groebner's Introduction

Lean4 formalization of Gröbner basis

(sorry for my bad English and bad math)

I am learning computational algebraic geometry, and have formalized Gröbner basis (and other things it needs) of multivariate polynomial in Lean 4.

Mainly based on the book Ideals, Varieties, and Algorithms.

Definitions

Main statements

(rem_is_rem and exists_rem) With a term order defined, such a multivariable polynomial $r\in k[x_i:x\in\sigma]$ exists for every multivariable polynomial $p$ and $G'$ a finite set of multivariable polynomial:

  • for every $g\in G'\backslash\{0\}$, any terms of $s$ is not divisible by the leading term of $g$;
  • such a function $q:G'\rightarrow k[x_i:x\in\sigma]$ exists:
    • for every $g\in G'$. $\text{multideg}(q(g)g)\le\text{multideg}(p)$,
    • $p=\sum_{g\in G'}q(g)g+r$.

I prove this statement by definition the division algorithm (mv_div, quo, rem) and proving its properties.

  • exists_groebner_basis: with a term order defined, if the indexes of variables is finite, then all the ideals of the multivariable ring have Gröbner basis
  • groebner_basis_self: Gröbner basis of a ideal is the Gröbner basis of the span of itself
  • groebner_basis_rem_eq_zero_iff: the remainder of every elements in a ideal divided by the Gröbner basis of the ideal must be 0
  • groebner_basis_def: for finite set $G'\subseteq k[x_i:x\in\sigma]$ and ideal $I$, $G'$ is a groebner basis of $I$ if and only if $G'\subseteq I$ and $0$ is a reminder of every $p\in I$ divided by $G'$
  • groebner_basis_is_basis: every ideal is equal to the span of its Gröbner basis
  • groebner_basis_unique_rem: the remainder of a multivariable divided by a Gröbner basis exists and is unique

TODO

  • Refactor to allow to deal with different kinds of term orders (there is a related zulip topic)
  • Lexicographic order is a term order
  • remove multideg'
  • More properties of Gröbner basis
  • Submit to Mathlib4 (maybe partically, because I think the quality of most of my code is not high enough for Mathlib4)
  • Improve the readability of the code, and write more comments and documents

License

Apache License 2.0

lean-groebner's People

Contributors

hagb avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.