proposition: Lemma contract3_valid (cc : seq G) : sparse (insertE cc) -> size cc <= 3 -> forall p, ~ contract_ring cc p.
proof: Proof. move=> cc_sparse cc_le3 p cc_p; have [URp _ _] := cc_p. have: size p <= 4 by apply: leq_trans (contract_ring_max cc_p) _. rewrite -ltnS ltn_neqAle => /andP[/negPf p_not5 p_le5]. case/negP: (Birkhoff cexG p_le5 URp); rewrite p_not5. exact: sparse_contract_ring cc_p. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq choice) mathcomp(fintype path fingraph) fourcolor(hypermap walkup geometry color coloring patch) fourcolor(snip revsnip birkhoff)