Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Roqc/plugins/micromega/   (Beweissystem des Inria Version 9.1.0©)  Datei vom 15.8.2025 mit Größe 2 kB image not shown  

Quelle  linsolve.mli   Sprache: SML

 
(************************************************************************)
(*         *      The Rocq Prover / The Rocq Development Team           *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)

(** 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).
*)


type system

(** [var] is the type of variables *)
type var = int

(** [id] are used to identify equations in a system *)
type id = int

(** An equation [eqn] is of the form a1.x1 + ... + an.xn = a0
    where the ai are integer coefficients and xi are variables.
 *)

type eqn

(** [output_equations o l] prints the list of equations *)
val output_equations : out_channel -> eqn list -> unit

(** [empty] is the system with no equation *)
val empty : system

(** [set_constant i c s] returns the equation [i]
    of the system [s] where the constant a0 is set to [c] *)

val set_constant : id -> int -> system -> eqn

(** [make_mon i x a s] augments the system [s]
    with the equation a.x = 0 indexed by i *)

val make_mon : id -> var -> int -> system -> system

(** [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
*)

val merge : system -> system -> system

(** [solution] assigns a value to each variable *)
type solution = (var * int) list

(** [output_solutions o l] outputs the list of solutions *)
val output_solutions : out_channel -> solution list -> unit

(** [solve_and_enum l] solves the system of equations
    and enumerate  all the solutions *)

val solve_and_enum : eqn list -> solution list

Messung V0.5
C=90 H=98 G=94

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.