Cc_plugin.CcproofSourcetype rule = | Ax of Ccalgo.axiomif ⊢ t = u :: A, then ⊢ t = u :: A
*)| SymAx of Ccalgo.axiomif ⊢ t = u : A, then ⊢ u = t :: A
*)| Refl of Ccalgo.ATerm.t| Trans of proof * proof⊢ t = u :: A -> ⊢ u = v :: A -> ⊢ t = v :: A
*)| Congr of proof * proof⊢ f = g :: forall x : A, B -> ⊢ t = u :: A -> f t = g u :: B
Assumes that B
≡ Bu for this to make sense!
| Inject of proof * Constr.pconstructor * int * int⊢ ci v = ci w :: Ind(args) -> ⊢ v = w :: T where T is the type of the n-th argument of ci, assuming they coincide
*)Main proof building function
val build_proof :
Environ.env ->
Evd.evar_map ->
Ccalgo.forest ->
[ `Discr of int * Ccalgo.pa_constructor * int * Ccalgo.pa_constructor
| `Prove of int * int ] ->
proof