Polynomial.ProofFormat
Proof 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.t
val output_prf_rule : Stdlib.out_channel -> prf_rule -> unit
val output_proof : Stdlib.out_channel -> proof -> unit
val mul_cst_proof : Micromega_core_plugin.NumCompat.Q.t -> prf_rule -> prf_rule
module Env : sig ... end
val compile_proof : Env.t -> proof -> Micromega_core_plugin.Micromega.zArithProof
val 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.psatz
val proof_of_farkas : prf_rule Micromega_core_plugin.Mutils.IMap.t -> Vect.t -> prf_rule
val simplify_proof : proof -> proof * Micromega_core_plugin.Mutils.ISet.t