[isabelle-dev] Suc 0 necessary?

Brian Huffman brianh at cs.pdx.edu
Mon Feb 23 17:33:25 CET 2009

Quoting Tobias Nipkow <nipkow at in.tum.de>:

> IIRC, 1 used to abbreviate Suc 0. Making "1 = Suc 0" a simp rule
> mimiced that.

Aha! The real reason comes out. Now things are starting to make sense...

> It allows you to write 1 on the rhs of an equation
> because (if used as a simp rule) the 1 will be replaced by Suc 0. Of
> course this does not work on the lhs...

Yes, this is a real problem. There are even simp rules in the  
distribution that will never fire because they have "1::nat" on the lhs.

> Even if we did not make "1 = Suc 0" a simp rule, we would still need to
> decide how to phrase the library theorems. This would still bias the
> user.

This remains to be seen; I think the library theorems could probably  
remain agnostic about 1 vs. Suc 0. Theorems could come in both styles,  
and each theorem would ensure that the representation is preserved. I  
might have to try this out, and see how well it works. Actually, I  
suppose it wouldn't hurt to make sure the library theorems follow this  
policy, even with "1 = Suc 0" [simp] in place.

- Brian

More information about the isabelle-dev mailing list