new_infixl_definition : string * term * int -> thm
Let v_1 and v_2 be tuples of distinct variables, containing the variables
x_1,...,x_m. Evaluating new_infix_definition (name, ix v_1 v_2 = t)
declares the sequent ({},\v_1 v_2. t) to be a definition in the
current theory, and declares ix to be a new constant in the
current theory with this definition as its specification.
This constant specification is returned as a theorem with the form
|- !x_1 ... x_m. v_1 ix v_2 = t
and is saved in the current theory under
(the name) name. Optionally, the definitional term argument
may have any of its variables universally quantified.
The constant ix has infix status only after the infix
declaration has been processed. It is therefore necessary to use
the constant in normal prefix position when making the definition.
- new_infix_definition ("nand", --`$nand in_1 in_2 = ~(in_1 /\ in_2)`--, 500);; > val it = |- !in_1 in_2. in_1 nand in_2 = ~(in_1 /\ in_2) : thm
new_infixl_definition("ix_DEF", Term `$ix m n = ... `)This use of $ is not necessary; but after the definition has been made $ must, of course, be used if the syntactic status needs to be suppressed.
In releases of hol98 past Taupo 1, new_infixl_definition and its sister new_infixr_definition replace the old new_infix_definition, which has been superseded. Its behaviour was to define a right associative infix, so can be freely replaced by new_infixr_definition.