proposition: Theorem nocc_Cons_Cons : forall (n m p : nat) (x : list nat), nocc n (Cons nat m (Cons nat p x)) = nocc n (Cons nat p (Cons nat m x)).
proof: Proof. intros. rewrite (nocc_eq2 n p (Cons nat m x)). apply si_intro. intro. rewrite nocc_eq2. apply (si_intro nat (fun p : nat => p = S (nocc n (Cons nat m x)))). intro. rewrite nocc_eq2. rewrite H. rewrite si_eq1. rewrite nocc_eq2. rewrite H0. rewrite si_eq1. apply refl_equal. intro. rewrite nocc_eq2. rewrite H. rewrite si_eq1. rewrite nocc_eq2. rewrite H0. rewrite si_eq2. apply refl_equal. intro. rewrite (nocc_eq2 n m x). apply si_intro. intro. rewrite nocc_eq2. rewrite H0. rewrite si_eq1. rewrite nocc_eq2. rewrite H. rewrite si_eq2. apply refl_equal. intro. rewrite nocc_eq2. rewrite H0. rewrite si_eq2. rewrite nocc_eq2. rewrite H. rewrite si_eq2. apply refl_equal. Qed.