While working with Welder I faced the situtation where I have to proof that:
if content(l1) == content(l2) and f is an idempotent, associative and commutative operator then fold(f,z,l1) = fold(f,z,l2)
At one stage of my proof I wanted to show that for a list l1 of the form x::xs:
fold(f,z,without(x,xs)) == fold(f,z,without(x,l2))
Where without(x,.) removes the occurrences of x from the list. Therefore it is clear that the size of without(x,xs) is less than the size of x::xs and so if strong induction was allowed in Welder I should be getting the equality (contents are equal).
Currently, the system just tells me there is no induction hypotheses for without(x,xs). So how do you do strong induction on Welder?