proposition: Lemma COND3 : forall (A : nat -> Set) (p : nat), (p = three -> A p) -> (forall q : nat, p = two_power q -> A p) -> (forall q : nat, q < p -> two <= q -> A p) -> 0 < p -> A p.
proof: Proof. refine (fun A p case3 case_2n case_gamma h => match chain_cases p _ with | inleft b => match b with | inl b1 => match b1 with | exist q hq => case_gamma q _ _ end | inr b2 => match b2 with | exist q hq => case_2n q hq end end | inright h => case3 h end); auto; elim hq; auto. Qed.
imports: monoid spec Constants machine Euclid Le_lt_compl euclid shift two_power log2_spec develop Arith Peano_dec Compare_dec strategies Mult_compl Wf_nat Wf_compl