Metamath Proof Explorer


Theorem lgssq

Description: The Legendre symbol at a square is equal to 1 . Together with lgsmod this implies that the Legendre symbol takes value 1 at every quadratic residue. (Contributed by Mario Carneiro, 5-Feb-2015) (Revised by AV, 20-Jul-2021)

Ref Expression
Assertion lgssq ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( 𝐴 ↑ 2 ) /L 𝑁 ) = 1 )

Proof

Step Hyp Ref Expression
1 simp1l ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → 𝐴 ∈ ℤ )
2 simp2 ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → 𝑁 ∈ ℤ )
3 simp1r ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → 𝐴 ≠ 0 )
4 lgsdir ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ∈ ℤ ∧ 𝑁 ∈ ℤ ) ∧ ( 𝐴 ≠ 0 ∧ 𝐴 ≠ 0 ) ) → ( ( 𝐴 · 𝐴 ) /L 𝑁 ) = ( ( 𝐴 /L 𝑁 ) · ( 𝐴 /L 𝑁 ) ) )
5 1 1 2 3 3 4 syl32anc ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( 𝐴 · 𝐴 ) /L 𝑁 ) = ( ( 𝐴 /L 𝑁 ) · ( 𝐴 /L 𝑁 ) ) )
6 zcn ( 𝐴 ∈ ℤ → 𝐴 ∈ ℂ )
7 6 adantr ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) → 𝐴 ∈ ℂ )
8 7 3ad2ant1 ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → 𝐴 ∈ ℂ )
9 8 sqvald ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( 𝐴 ↑ 2 ) = ( 𝐴 · 𝐴 ) )
10 9 oveq1d ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( 𝐴 ↑ 2 ) /L 𝑁 ) = ( ( 𝐴 · 𝐴 ) /L 𝑁 ) )
11 lgscl ( ( 𝐴 ∈ ℤ ∧ 𝑁 ∈ ℤ ) → ( 𝐴 /L 𝑁 ) ∈ ℤ )
12 1 2 11 syl2anc ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( 𝐴 /L 𝑁 ) ∈ ℤ )
13 12 zred ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( 𝐴 /L 𝑁 ) ∈ ℝ )
14 absresq ( ( 𝐴 /L 𝑁 ) ∈ ℝ → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) ↑ 2 ) = ( ( 𝐴 /L 𝑁 ) ↑ 2 ) )
15 13 14 syl ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) ↑ 2 ) = ( ( 𝐴 /L 𝑁 ) ↑ 2 ) )
16 lgsabs1 ( ( 𝐴 ∈ ℤ ∧ 𝑁 ∈ ℤ ) → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) = 1 ↔ ( 𝐴 gcd 𝑁 ) = 1 ) )
17 16 adantlr ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ) → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) = 1 ↔ ( 𝐴 gcd 𝑁 ) = 1 ) )
18 17 biimp3ar ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( abs ‘ ( 𝐴 /L 𝑁 ) ) = 1 )
19 18 oveq1d ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) ↑ 2 ) = ( 1 ↑ 2 ) )
20 sq1 ( 1 ↑ 2 ) = 1
21 19 20 eqtrdi ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( abs ‘ ( 𝐴 /L 𝑁 ) ) ↑ 2 ) = 1 )
22 12 zcnd ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( 𝐴 /L 𝑁 ) ∈ ℂ )
23 22 sqvald ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( 𝐴 /L 𝑁 ) ↑ 2 ) = ( ( 𝐴 /L 𝑁 ) · ( 𝐴 /L 𝑁 ) ) )
24 15 21 23 3eqtr3d ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → 1 = ( ( 𝐴 /L 𝑁 ) · ( 𝐴 /L 𝑁 ) ) )
25 5 10 24 3eqtr4d ( ( ( 𝐴 ∈ ℤ ∧ 𝐴 ≠ 0 ) ∧ 𝑁 ∈ ℤ ∧ ( 𝐴 gcd 𝑁 ) = 1 ) → ( ( 𝐴 ↑ 2 ) /L 𝑁 ) = 1 )