Module Polynomial.ProofFormat

type prf_rule =
| Annot of string * prf_rule
| Hyp of int
| Def of int
| Cst of NumCompat.Q.t
| Zero
| Square of Vect.t
| MulC of Vect.t * prf_rule
| Gcd of NumCompat.Z.t * prf_rule
| MulPrf of prf_rule * prf_rule
| AddPrf of prf_rule * prf_rule
| CutPrf of prf_rule
type proof =
| Done
| Step of int * prf_rule * proof
| Enum of int * prf_rule * Vect.t * prf_rule * proof list
| ExProof of int * int * int * var * var * var * proof
val pr_size : prf_rule -> NumCompat.Q.t
val pr_rule_max_id : prf_rule -> int
val proof_max_id : proof -> int
val normalise_proof : int -> proof -> int * proof
val output_prf_rule : Stdlib.out_channel -> prf_rule -> unit
val output_proof : Stdlib.out_channel -> proof -> unit
val add_proof : prf_rule -> prf_rule -> prf_rule
val mul_cst_proof : NumCompat.Q.t -> prf_rule -> prf_rule
val mul_proof : prf_rule -> prf_rule -> prf_rule
val compile_proof : int list -> proof -> Micromega.zArithProof
val cmpl_prf_rule : ('a Micromega.pExpr -> 'a Micromega.pol) -> (NumCompat.Q.t -> 'a) -> int list -> prf_rule -> 'a Micromega.psatz
val proof_of_farkas : prf_rule Micromega_plugin.Mutils.IMap.t -> Vect.t -> prf_rule
val eval_prf_rule : (int -> LinPoly.t * op) -> prf_rule -> LinPoly.t * op
val eval_proof : (LinPoly.t * op) Micromega_plugin.Mutils.IMap.t -> proof -> bool