inversion H. apply plus_is_O in H2 as (?&?).
apply size_O_atomic in H1 as (?&?);apply size_O_atomic in H2 as (?&?);subst.
remember (fun P => if (in_dec Atomic_eqdec (AVar P) x) then true else false) as v.
destruct (in_dec Atomic_eqdec ABot x).
constructor 2;change ⊥ with (AtomicF ABot);eapply in_map;assumption.
destruct (H0 v) as (?&?&?).
intros ? ?. apply in_map_iff in H1 as (?&?&?);subst A;simpl;destruct x1.
rewrite Heqv;simpl. destruct (in_dec Atomic_eqdec (AVar p) x);[exact I|contradiction].
contradiction.
apply in_map_iff in H1 as (?&?&?);subst x1. destruct x2.
constructor 1 with p.
change #p with (AtomicF (AVar p));apply in_map.
simpl in H2;rewrite Heqv in H2. destruct (in_dec Atomic_eqdec (AVar p));[assumption|contradiction].
change #p with (AtomicF (AVar p)). apply in_map. assumption.
contradiction.
inversion H;[clear H|apply IHn;assumption];destruct (size_S _ _ H2) as (A&B&[|[|[|[|[]]]]]);
apply in_split in H as (?&?&?);subst;constr;apply IHn;
try (apply le_S_n;rewrite <- H2;apply sizes_decr);temp5 A B H0.
Qed.

Theorem Gcf_complete : forall Γ Δ, Γ =⊃ Δ -> Γ ⊃c Δ.
intros;eapply Gcf_complete_induction;[constructor|assumption].