proposition: Theorem make_listtc2ir l1 l2 p c ll : validtc2 (rev l1) -> validto5 (rev l2) -> valid63 p -> tc2i (rev l1) (rev l2) p c = true -> In (l1,l2,p) (tc2it _ make_list ll c).
proof: Proof. case c. now unfold tc2i; intros _ _ _ HH; discriminate. intros cc1 cc2 Hl1 Hl2 Hp. case (validtc2_inv _ Hl1); clear Hl1. intros p1 (l3, (HH, (HH1, Hl3))). rewrite HH. case HH1; intros HH2; rewrite HH2 in HH |- *; clear HH1 HH2; simpl; intros HH3; simpl app; rewrite <- (rev_involutive l1); rewrite HH; simpl rev; rewrite (app_nil_end l2). now apply make_listto5ir; auto; rewrite rev_involutive; auto. apply make_listto5irI; apply make_listto5ir; auto; rewrite rev_involutive; auto. Qed.
imports: PrimInt63 Cyclic63 List BasicRubik