Polynomial.ProofFormatProof format used by the proof-generating procedures. It is fairly close to Rocq format but a bit more liberal.
It is used for proofs over Z, Q, R. However, certain constructions e.g. CutPrf are only relevant for Z.
type prf_rule = | Annot of string * prf_rule |
| Hyp of int |
| Def of int |
| Ref of int |
| Cst of Micromega_core_plugin.NumCompat.Q.t |
| Zero |
| Square of Vect.t |
| MulC of Vect.t * prf_rule |
| Gcd of Micromega_core_plugin.NumCompat.Z.t * prf_rule |
| MulPrf of prf_rule * prf_rule |
| AddPrf of prf_rule * prf_rule |
| CutPrf of prf_rule |
| LetPrf of prf_rule * prf_rule |
val pr_size : prf_rule -> Micromega_core_plugin.NumCompat.Q.tval output_prf_rule : Stdlib.out_channel -> prf_rule -> unitval output_proof : Stdlib.out_channel -> proof -> unitval mul_cst_proof : Micromega_core_plugin.NumCompat.Q.t -> prf_rule -> prf_rulemodule Env : sig ... endval compile_proof : Env.t -> proof -> Micromega_core_plugin.Micromega.zArithProofval cmpl_prf_rule : ('a Micromega_core_plugin.Micromega.pExpr -> 'a Micromega_core_plugin.Micromega.pol) -> (Micromega_core_plugin.NumCompat.Q.t -> 'a) -> Env.t -> prf_rule -> 'a Micromega_core_plugin.Micromega.psatzval proof_of_farkas : prf_rule Micromega_core_plugin.Mutils.IMap.t -> Vect.t -> prf_ruleval simplify_proof : proof -> proof * Micromega_core_plugin.Mutils.ISet.t