induction A;simpl;split;try destruct IHA;try destruct IHA1;try destruct IHA2;apply ImpI;try (is_ass;fail).
eapply prov_and;try eassumption;in_solve.
apply ImpI. apply OrE with ¬A1 ¬A2.
eapply prov_or;try eassumption;in_solve.
mp;[|eapply AndE1];is_ass.
mp;[|eapply AndE2];is_ass.
eapply prov_or;try eassumption;in_solve.
apply ImpI. eapply OrE;[is_ass|mp;[|is_ass];eapply prov_impl;try eassumption..].
eapply AndE1;is_ass.
eapply AndE2;is_ass.
apply ImpI. apply OrE with ¬A1 A2.
eapply prov_or;try eassumption;in_solve.
apply BotC. eapply ImpE with A1;is_ass.
is_ass.
apply ImpI. apply ImpE with A2.
eapply prov_impl;try eassumption. eapply AndE2;is_ass.
mp.
is_ass.
eapply prov_impl;try eassumption. eapply AndE1;is_ass.
Qed.
(** * Completeness Theorem*)

(* Specifications: *)
Theorem Completeness : Prop_Completeness.
do 2 intro.