package rocq-runtime
Install
Dune Dependency
Authors
Maintainers
Sources
md5=8d522602d23e7a665631826dab9aa92b
sha512=f4f76a6a178e421c99ee7a331a2fd97a06e9c5d0168d7e60c44e3820d8e1a124370ea104ad90c7f87a9a1e9d87b2d0d7d2d387c998feeaed4a75ed04e176a4be
doc/micromega_plugin/Micromega_plugin/Linsolve/index.html
Module Micromega_plugin.Linsolve
Source
The purpose of the solver is to generate *all* the integer solutions of a system of linear equations of the following form: 1- all the variables are positive 2- all the coefficients are positive
We expect the systems and the number of solutions to be small. This motivates a simple solver which performs 1 - interval analysis 2 - substitutions 3 - enumeration
system
represents a system of equation. Each equation is indexed by a unique identifier id
(an integer).
var
is the type of variables
id
are used to identify equations in a system
An equation eqn
is of the form a1.x1 + ... + an.xn = a0 where the ai are integer coefficients and xi are variables.
output_equations o l
prints the list of equations
set_constant i c s
returns the equation i
of the system s
where the constant a0 is set to c
make_mon i x a s
augments the system s
with the equation a.x = 0 indexed by i
merge s1 s2
returns a system s
such that the equation i is obtained by adding of the equations s1(i) and s2(i) i.e. s(i) = s1(i) + s2(i) NB: the operation is only well-defined if the variables in s1(i) and s2(i) is disjoint
output_solutions o l
outputs the list of solutions