[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
[mizar] a question
Dear All,
I asked the group a question on how to write recursive predicates in Mizar. The following is the
result of correspondce of emails back and forth. It gives a definition for an inductive factorial predicate.
definition
let n,x be natural number;
pred factorial(n,x) means
for Y being set st
[0,1] in Y & (for k,y being natural number st [k,y] in Y holds [k+1,y*(k+1)] in Y)
holds [n,x] in Y;
end;
First of all, there is not a unique set that satisfies the above definition. A set
{[0,0!], [1,1!], [2,2!], ..., [n,n!]} \/ [3,3] would satisfy the set consructed with the above
definition so that it is not possible to disprove
factorial 3,3.
Most of the time, a third item is mentioned in an inductive definition (after (i) base case, (ii)
inductive case) which is "the minimal set that satifies the first and second items (or the
generalized intersection of all sets that satify (i) and (ii))".
What I want to prove actually is the uniqueness so that
for i,m,n being Nat st factorial i,m & factorial i,n hols m = n
should hold.
I want to write the factorial definition in such a way that the above statement should be easy to
prove. Also, factorial 3,3 should be easy to disprove...
I was asked why I am not writing this definition as a recursive function before. There is some issue
of undecidablity of whether given an object, it is *not* decidable if it is in the domain of the
function I am trying to define. Factorial is just an example I am trying to bring the issue to your attention.
Thank you very much for all your help and hope you all are having a good break...
Adem Ozyavas
Texas Tech University