In IndProp.v from Logical Foundations we have the following inductive property:
Inductive nostutter {X:Type} : list X -> Prop :=
| nos_nil : nostutter []
| nos_one : forall x, nostutter [x]
| nos_cons : forall x h l, nostutter (h :: l) -> (x <> h) -> (nostutter (x :: h :: l)).
Is it possible to solve this:
1 subgoal
X : Type
x : X
H : nostutter [] -> nostutter [x]
______________________________________(1/1)
False
Presumably one would need some sort of discriminate or contradiction since nostutter [] -> nostutter [x] seems like it makes no sense, but I don't see anything that would allow me to make progress. Is it just not possible to prove?
I think there is some confusion about the meaning of the implication.
nostutter [] -> nostutter [x]is a perfectly reasonable hypothesis -- indeed, it is a theorem:An implication
A -> Bsays that we can proveBby proving thatAis true. If we can proveBwithout additional hypotheses, as it is the case fornostutter [x], then the implication holds trivially.