Re: [isabelle] Stuck with proofs about inductive functions
> So I have this:
> inductive cf :: "nat => nat => bool" where
> "cnat n ==> cf (cn n) n" |
> "cf m n ==> cf (cn m) n"
> fun cfe :: "nat => nat => bool" where
> "cfe m n = ((m = n) | (cf m n))"
> And want to show these:
> lemma cfef:
> assumes "cnat a"
> assumes "cf b a"
> shows "cfe b (cn a)"
I tried to prove this by induction:
lemma cfef: "cf b a ==> cnat a ==> cfe b (cn a)"
proof(induct rule: cf.induct)
case cnf show ?case by simp
case (cff m n) thus ?case
But this leads to the goal
1. [| cf (cn n) n; cnat n; cn (cn n) ~= cn n |] ==> cf n (cn n)
I don't see how to prove this. In fact, I doubt that the lemma is
provable: the def of cf never forces cn into the second argument, but
your lemmas requires to show that cn shows up in the second argument.
Maybe it is provable given the actual definition of cn.
> - Way(s) to prove this using structured Isar proof.
> - Way(s) to prove this using automated tactics.
> - Explanation about those tactics.
> - Link to manual pages, which do not assume too wide knowledge about
> Isabelle as prerequisite (but the ones, which do, would also be better than
See my already advertised slides.
> As it is very commonly needed thing to prove things about similar functions,
> I would like to catch the underlying logic, thus a few words of explanation
> would be very nice.
This archive was generated by a fusion of
Pipermail (Mailman edition) and