let a, b, n, m be Nat; :: thesis: ( not a < b or (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 )
set fm = modSeq (m,n);
assume A1: a < b ; :: thesis: ( (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 )
per cases ( (modSeq (m,n)) . a = 0 or (modSeq (m,n)) . a > 0 ) ;
suppose (modSeq (m,n)) . a = 0 ; :: thesis: ( (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 )
hence ( (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 ) ; :: thesis: verum
end;
suppose A2: (modSeq (m,n)) . a > 0 ; :: thesis: ( (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 )
defpred S1[ Nat] means ( a < $1 implies (modSeq (m,n)) . a > (modSeq (m,n)) . $1 );
A3: for x being Nat st S1[x] holds
S1[x + 1]
proof
let x be Nat; :: thesis: ( S1[x] implies S1[x + 1] )
assume A4: S1[x] ; :: thesis: S1[x + 1]
assume a < x + 1 ; :: thesis: (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1)
then A5: a <= x by NAT_1:13;
per cases ( a = x or a < x ) by A5, XXREAL_0:1;
suppose a = x ; :: thesis: (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1)
hence (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1) by A2, Lm2; :: thesis: verum
end;
suppose A6: a < x ; :: thesis: (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1)
thus (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1) :: thesis: verum
proof
per cases ( (modSeq (m,n)) . x > (modSeq (m,n)) . (x + 1) or (modSeq (m,n)) . x = 0 ) by Lm2;
suppose (modSeq (m,n)) . x > (modSeq (m,n)) . (x + 1) ; :: thesis: (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1)
hence (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1) by A4, A6, XXREAL_0:2; :: thesis: verum
end;
suppose (modSeq (m,n)) . x = 0 ; :: thesis: (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1)
hence (modSeq (m,n)) . a > (modSeq (m,n)) . (x + 1) by A2, Th14, NAT_1:11; :: thesis: verum
end;
end;
end;
end;
end;
end;
A7: S1[ 0 ] ;
for x being Nat holds S1[x] from NAT_1:sch 2(A7, A3);
hence ( (modSeq (m,n)) . a > (modSeq (m,n)) . b or (modSeq (m,n)) . a = 0 ) by A1; :: thesis: verum
end;
end;