I just checked in a massive reorganization of the peano directory. I've kept the old version around because I did not finish getting everything in and I'm having a few issues with the new directory.
I've split peano_thms into more manageable and reasonable pieces. I've also reorganized the construction of the integers and rational numbers. I've created an interface file for the core components common to natural, integer, and rational arithmetic. We first prove it using the Peano axioms, then in the construction of the integers, and then in the construction of the rationals.
This gets tricky because I'm using the same theorem first proved for natural numbers to prove it for the integers. I'm using prefixes to avoid naming conflicts. (I only just discovered that they existed.) So I have two version of the operators (+ & n.+) and I have two versions of the theorems (addcom & n.addcom), but I don't want two different kinds so I'm using kindbind. This is causing problems. I haven't seen prefixes or kindbind used anywhere else, so this may be a new test for our verifier.
I've used kindbind to merge nat and n.nat, but I get errors like "expected nat got n.nat". I think we need to change the python verifier a little. The Javascript verifier doesn't have this problem. If I disable a couple of those checks everything verifies. The problem files are:
peano_new/arithmetic/division_NaN.gh
peano_new/arithmetic/
division_min.gh
Paul