[Date Prev][Date Next] [Chronological] [Thread] [Top]

[mizar] reductions in Mizar



Hello,

in Mizar version 7.12.02, which will be issued officially soon,
a new mechanism, called reductions, has been implemented.

Reductions are an attempt to increase power of the Mizar checker.

Syntax is:

registration
  let x_1,...,x_n;
  reduce term1(x_1,...,x_n) to term2(x_1,...,x_n);
  reducibility
  proof
    thus term1(x_1,...,x_n) = term2(x_1,...,x_n);
  end;
end;

where term2 has to be a _subterm_ of term1. This restriction is a result of a Mizar principle, that the system does not generate new terms itself (with very few exceptions).

Correctness condition to be proved is "reducibility".

Examples of reductions are:

reduce X \/ {} to X

reduce union {} to {}


Reductions are treated by equalizer. Whenever system finds a term which can be matched to the 'term1', equivalence classes of 'term1' and its subterm 'term2' are joined.


An important restriction of usage reductions is that 'term1' has to occur explicitly in an equality. For example, having a reduction

registration
  let X be set;
  reduce X \/ {} to X;
  reducibility;
end;

a reasoning

now
  let X be set;
  X \/ {} = X;
end;

is accepted without any reference, while

now
  let X be set;
  set A = {};
  X \/ A = X;
            *4
end;

not.

The reason is that reductions are applied at the very beginning stage of building of the congruence closure performed by the equalizer.


Reductions are imported to a Mizar article through environment directive
"registrations".

Best regards
Artur