# Wikiproofs:JHilbert definition soundness

From Wikiproofs

Definition soundness in JHilbert and related systems |

This page attempts to serve as a link hub to the various proposals and discussions concerning safe definitions in JHilbert, Ghilbert and possibly other related systems. |

In metamath's `set.mm`

, definitions are just axioms. Ghilbert and later JHilbert strove to provide a definition mechanism capable of ending the "pollution" of the axiom space in metamath. Unfortunately, initial attempts failed. The main problem is the handling of dummy variables (i.e., variables that appear in the definiens but not in the definiendum) in combination with disjoint variable constraints, or free and bound variables.

## Failed attempts[edit]

- The old Ghilbert had a definition mechanism in which definitions were folded (the definiens replaced by the definiendum) at the end of each proof. This leads to unsoundness because term functors are treated differently from variables. It appears that Dan Krejsa was the first to notice this. Later, Carl Witty provided a method to expose unsoundness in Ghilbert expressed in metamath, which was later adapted to Ghilbert syntax in User:GrafZahl/unsound-def.gh.

- JHilbert was initially intended to provide a much more flexible definition mechanism. Definitions were treated as abbreviations applied automatically. However, in combination with dummy variables, this opened quite some cans of worms and an attempt to prove definition soundness ultimately failed.

## Current proposals[edit]

- GrafZahl proposed to reduce the strength of the definition mechanism, so that only true abbreviations (identical set of apparent variables in definiens and definiendum) are allowed. Thus, the set of apparent variables in a proof is never altered through the expansions of definitions. Such an abbreviation mechanism is only applicable in a limited number of situations, though, because very many first-order definitions require dummy variables. However, such a mechanism would be sufficient to overcome bootstrap difficulties with certain sequential calculi, such as the Nicod system.

There are some further proposals which are somewhat orthogonal to the above one in that they might be implemented independently of abbreviations. They propose non-automatic definitions as a replacement of the metamath definition axioms.

- Carl Witty's proposal suggests the splitting of
*kinds*into pure variable kinds and kinds of variables which may be substituted for more complex expressions. Term functors may only be of the latter kind, while disjoint variable pairs must always include at least one variable of the former type of kind. - Raph's new Ghilbert proposal [1] ([2] in particular) suggests the introduction of two types of
*variables*(instead of kinds as in Carl's proposal): binding variables and term variables. In this proposal, Ghilbert would know about the freeness of variables through user-provided information in the`term`

command.