22 lines
710 B
Text
22 lines
710 B
Text
inductive test : nat -> list nat -> Prop
|
|
| zero: test 0 list.nil
|
|
--n remains even
|
|
| nil: forall {n: nat}, test n list.nil -> test (n+2) list.nil
|
|
--n flips between even and odd
|
|
| cons: forall {n i: nat} {is: list nat}, test n is -> test (n+3) (list.cons i is)
|
|
|
|
lemma example3 : forall (n m: nat), test (n+n) [m] -> false :=
|
|
begin
|
|
intros n m,
|
|
generalize def_n' : n + n = n',
|
|
generalize def_is : [m] = is,
|
|
intro h,
|
|
revert def_n' def_is,
|
|
cases h; try {intros, contradiction}, -- smart unfolding prevents the generation of unwieldy terms,
|
|
trace_state,
|
|
have : nat.succ (nat.add h_n (nat.add 2 0)) = h_n + 3, from rfl,
|
|
simp [this], intro h_1,
|
|
have : n + n = h_n + 3 → false, from sorry,
|
|
intros,
|
|
exact this h_1,
|
|
end
|