\DOC new_axiom \TYPE {Compat.new_axiom : (string * term) -> thm} \SYNOPSIS

advertisement
\DOC new_axiom
\TYPE {Compat.new_axiom : (string * term) -> thm}
\SYNOPSIS
Sets up a new axiom in the current theory.
\DESCRIBE
If {tm} is a term of type {bool}, a call {new_axiom("name",tm)} creates a
theorem
{
|- !x1..xn. tm
}
and stores it away in the theory file. Note that all free variables
in {tm} are generalized automatically before the axiom is set up.
\FAILURE
Fails if HOL is not in draft mode, or there is already an axiom or
definition
of that name in the current theory, or it the given term does not have
type
{bool}.
\EXAMPLE
{
- new_theory "gurk";
() : unit
- new_axiom("untrue",--`x = 1`--));
|- !x. x = 1
}
\COMMENTS
hol90 doesn't have {new_axiom}; use {new_open_axiom} instead, which does
not automatically generalize the term being asserted as an axiom. For
most purposes, it is unnecessary to declare new axioms: all of classical
mathematics can be derived by definitional extension alone. Proceeding
by definition is not only more elegant, but also guarantees the
consistency of the deductions made. However, there are certain entities
which cannot be modelled in simple type theory without further axioms,
such as higher transfinite ordinals.
\SEEALSO
mk_thm, new_definition.
\ENDDOC
Download