proposition: Lemma memo_get_val_correct l1 : memo_get_val l1 (memo_make nil) = f l1.
proof: Proof. revert l1. assert (H : forall l1 l2, memo_get_val l1 (memo_make l2) = f (rev l2 ++ l1)). induction l1 as [ | a l1 Hrec]. intros l2; rewrite <- app_nil_end; auto. intros l2; case a; clear a; simpl; rewrite Hrec; simpl; rewrite app_ass; auto. intros l1; rewrite H; auto. Qed.
imports: PrimInt63 Cyclic63 List BasicRubik