proposition: Theorem foo : forall (x y : nat) , x < 8.
proof: Proof. quickchick. Admitted. Theorem add_comm : forall n m : nat, n + m = m + n. Proof. quickchick. Admitted. Theorem add_assoc : forall n m p : nat, n + (m + p) = (n + m) + p. Proof. quickchick. Admitted. Local Open Scope nat_scope. Search (nat -> nat -> bool). Theorem plus_leb_compat_l : forall (n m p : nat), (Nat.leb n m = true) -> (((p + n) <=? (p + m)) = true). Proof. quickchick. Admitted. Inductive bin : Type := | Z | B0 (n : bin) | B1 (n : bin) . Derive (Arbitrary, Show) for bin. Fixpoint bineq (n m : bin) : bool := match n, m with | Z, Z => true | B0 n, B0 m => bineq n m | B1 n, B1 m => bineq n m | _,_ => false end. Fixpoint incr (m:bin) : bin := match m with | Z => B1 Z | B0 m' => B1 m' | B1 m' => B0 (incr m') end. Fixpoint bin_to_nat (m:bin) : nat := match m with | Z => O | B0 m' => double (bin_to_nat m') | B1 m' => S (double (bin_to_nat m')) end. Theorem bin_to_nat_pres_incr : forall b : bin, bin_to_nat (incr b) = 1 + bin_to_nat b. Proof. quickchick. Admitted. Fixpoint nat_to_bin (n:nat) : bin := match n with | O => Z | S n' => incr (nat_to_bin n') end. Theorem nat_bin_nat : forall n, bin_to_nat (nat_to_bin n) = n. Proof. quickchick. Admitted. Inductive natlist : Type := | nil' | cons' (n : nat) (l : natlist). Derive Show for natlist. Derive Arbitrary for natlist. #[global] Instance Dec_eq_natlist (l l' : natlist) : Dec (l = l'). Proof. dec_eq. Defined.
imports: QuickChick(QuickChick) Coq(Nat) Coq(Arith.Arith) Coq(Logic.FunctionalExtensionality)