Talk:First-order logic

df-sb
I'm not convinced you need df-sb. My own development is to define df-sbc instead. Metamath does this through class abstraction, but I think the following definition is just as good, and more general:

stmt (df-subst   (<-> ([/] A x ph) (E. z (/\ (= z A) (E. x (/\ (= x z) ph))))))

It's based on sbc5 but has extra magic to isolate the variable substituted so it doesn't need to be disjoint from the substitution. Anyway, just my 2¢. Raph 05:30, 28 February 2010 (UTC)


 * I feel pretty over my head on such matters. Not only is it unfamiliar to me, but it seems like there isn't a standard way to do things (well, except for the syntactic definitions of free variable and proper substitution and so on, which aren't available in that form in JHilbert/metamath/ghilbert).  If you have some time to work on this and prove whatever theorems you think we'll want, I'd be very happy to let you pick whichever definition of subst you like. I would like to keep first-order logic separate from set theory if we can (which metamath, to some extent, does not), but it sounds like you have in mind doing that. Kingdon 13:58, 28 February 2010 (UTC)


 * Yes, it's separated from set theory. I can add the appropriate substitution theorems if you like, but would not be able to make any promises about when they'd be done - I had a little time this weekend, but now it's gone ☹. Raph 04:49, 1 March 2010 (UTC)


 * No worries. I'm still looking through your peano_thms.gh and to some extent trying to work from it, and still figuring out which subst theorems could be useful in applying Peano induction and which ones wouldn't be. Hopefully soon I'll have at least one way of doing this figured out, which works and that I find at least moderately aesthetically pleasing. Kingdon 13:17, 1 March 2010 (UTC)


 * I dug through what you've got, and see some other serious problems. In Interface:First-order_logic, you've got subst defined as "term (formula (subst object object formula))", where I think "object" is the kind corresponding to binding variables, but in Paradox1 (and other legitimate uses of subst) you're using nat instead. In Metamath and Ghilbert, this would be a kind mismatch, which would be an error. Is JHilbert not currently doing kind checking? If not, it's a serious unsoundness. Raph 05:11, 1 March 2010 (UTC)


 * The kinds object and nat are synonyms: see "kindbind (object nat)" in Interface:Peano axioms. I try to use object (variables x, y, z, etc) when I'm proving a generic first-order logic theorem and nat (variables n, m, k, etc) when it is something specific to arithmetic, but that is just a matter of style; it doesn't affect the meaning. Kingdon 13:17, 1 March 2010 (UTC)

The above definition now makes more sense to me. Translated to the current notation, it would be: def ((subst s x φ) (∃ y (((value y) = s) ∧ (∃ x (((value x) = (value y)) ∧ φ))))) Kingdon 22:35, 4 March 2010 (UTC)

Just a heads-up: I developed a set of similar substitution theorems in ghilbert. (see peano_thms.gh). Many of these you've already done, but you may find that some proofs can be significantly shortened or simplified with the approach I've taken: the key theorem is ceqsex, then everything follows straightforwardly. This includes the proof of sbcco, which I don't think you have yet (although it's possible I just missed it). Raph 18:48, 24 March 2010 (UTC)


 * Thanks. At a quick glance, it would seem fairly similar to what I've been doing here (your ceqsex appears to be the same, in essence, as the wikiproofs ImplicitSubstitutionThereExists), but it is entirely possible I'm doing something in a more roundabout way than necessary. I don't have as much time for wikiproofs as I did for a few months there, but I'll try to take a closer look. As for how I'm picking what to prove, it's driven by what I need for Peano arithmetic. So the previous push was about making induction work and the current one is less-than (defined, as it is, in terms of ∃). Kingdon 21:59, 27 March 2010 (UTC)