(* QuickChick Prelude *)
Set Warnings "-extraction-opaque-accessed,-extraction".
Set Warnings "-notation-overridden,-parsing".
Set Bullet Behavior "Strict Subproofs".
(* End prelude *)
Require Export Basics.
Admitted. (* QuickChick plus_n_O_firsttry. *)
Admitted. (* QuickChick minus_diag. *)
Admitted. (* QuickChick mult_0_r. *)
Admitted. (* QuickChick plus_n_Sm. *)
Admitted. (* QuickChick plus_comm. *)
Admitted. (* QuickChick plus_comm *)
Fixpoint double (n:nat) :=
match n with
| O => O
| S n' => S (S (double n'))
end.
Admitted. (* QuickChick double_plus. *)
Admitted. (* QuickChick evenb_S. *)
Admitted. (* QuickChick mult_0_plus'. *)
Admitted. (* QuickChick plus_rearrange. *)
Admitted. (* QuickChick plus_assoc'. *)
Admitted. (* QuickChick plus_swap. *)
Admitted. (* QuickChick mult_comm. *)
Admitted. (* QuickChick leb_refl. *)
Admitted. (* QuickChick zero_nbeq_S. *)
Admitted. (* QuickChick andb_false_r. *)
Derive ArbitrarySizedSuchThat for (fun m => le n m).
Derive SizeMonotonicSuchThatOpt for (fun m => le n m).
Derive GenSizedSuchThatSizeMonotonicOpt for (fun m => le n m).
Derive SizedProofEqs for (fun m => le n m).
Derive GenSizedSuchThatCorrect for (fun m => le n m).
Admitted.
Admitted. (* QuickChick S_nbeq_0 *)
Admitted. (* QuickChick mult_1_l. *)
Admitted. (* QuickChick all3_spec.*)
Admitted. (* QuickChick mult_plus_distr_r. *)
Admitted. (* QuickChick mult_assoc. *)
Admitted. (* QuickChick beq_nat_refl. *)

Theorem plus_swap' : forall n m p : nat,
n + (m + p) = m + (n + p).