apply ImpI;eapply OrI1;is_ass.
prov_impl_in IHll1;apply ImpI; apply OrE with (ClausetoPropF a) (CNFtoPropF ll2).
eapply prov_impl;[apply CNF_add_clause_prov|].
eapply AndE1;eapply prov_impl;[apply CNF_and_prov|is_ass].
apply OrE with (CNFtoPropF ll1) (CNFtoPropF ll2).
apply K;eapply AndE2;eapply prov_impl;[apply CNF_and_prov|is_ass].
apply OrI1;apply AndI;is_ass.
apply OrI2;is_ass.
apply OrI2;is_ass.
Qed.

(* Specifications: *)
Theorem CNF_impl_prov : forall A, Provable (CNFtoPropF (MakeCNF A) → NNFtoPropF A).
induction A;simpl;
try (unfold CNFtoPropF; unfold ClausetoPropF;simpl;
apply ImpI;eapply OrE;
[eapply AndE1;is_ass|
is_ass|
apply BotC;is_ass];fail).