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 AS:
( y = x mod p & (ALGO_EXGCD (p,y)) `3_3 = 1 & p <> 0 )
; ((ALGO_INVERSE (x,p)) * x) mod p = 1 mod p
P3P:
( (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 Th2;
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 ;
P40C2:
p mod p = 0
by INT_1:50;
P4: (((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 INT_4:12, P40C2
;
reconsider I0 = 0 as Element of INT by INT_1:def 2;
P6: ((((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 LMTh3, P4
;