let x, y, p be Element of INT ; ( y = x mod p & (ALGO_EXGCD (p,y)) `3_3 = 1 & p <> 0 implies ((ALGO_INVERSE (x,p)) * x) mod p = 1 mod p )
assume A1:
( y = x mod p & (ALGO_EXGCD (p,y)) `3_3 = 1 & p <> 0 )
; ((ALGO_INVERSE (x,p)) * x) mod p = 1 mod p
A2:
( (ALGO_EXGCD (p,y)) `3_3 = p gcd y & (((ALGO_EXGCD (p,y)) `1_3) * p) + (((ALGO_EXGCD (p,y)) `2_3) * y) = p gcd y )
by Th6;
reconsider s1 = ((ALGO_EXGCD (p,y)) `1_3) * p as Integer ;
reconsider s2 = ((ALGO_EXGCD (p,y)) `2_3) * y as Integer ;
reconsider s3 = (ALGO_EXGCD (p,y)) `2_3 as Integer ;
A3:
p mod p = 0
by INT_1:50;
A4: (((ALGO_EXGCD (p,y)) `1_3) * p) mod p =
((((ALGO_EXGCD (p,y)) `1_3) mod p) * (p mod p)) mod p
by NAT_D:67
.=
0
by A3, INT_1:73
;
reconsider I0 = 0 as Element of INT by INT_1:def 2;
A5: ((((ALGO_EXGCD (p,y)) `1_3) * p) + (((ALGO_EXGCD (p,y)) `2_3) * y)) mod p =
((s1 mod p) + (s2 mod p)) mod p
by NAT_D:66
.=
(((ALGO_EXGCD (p,y)) `2_3) * y) mod p
by Th1, A4
;