Our site saves small pieces of text information (cookies) on your device in order to deliver better content and for statistical purposes. You can disable the usage of cookies by changing the settings of your browser. By browsing our website without changing the browser settings you grant us permission to store that information on your device.

# [2018-Oct] Fun modulo 5

Could you believe it? Stefan was playing around with his favorite numbers, he wanted to practice taking the fifth power of them, when suddenly he realized, that the least significant digit of the result was the same as the original number's. Can you show him why?

That is, prove: `n mod 10 = (n ^ 5) mod 10`

## Resources

### Definitions File

```theory Defs
imports Main
begin
end```

### Template File

```theory Submission
imports Defs
begin

lemma modpower5: fixes n :: nat
shows "n mod 10 = (n ^ 5) mod 10" sorry

end```

### Check File

```theory Check
imports Submission
begin

lemma "(n::nat) mod 10 = (n ^ 5) mod 10"
by (rule Submission.modpower5)

end```

### Definitions File

`Require Export Arith Lia.`

### Template File

```Require Import Defs.

(* Proving this might be useful (but is not mandatory). *)
Lemma mod_power a b n :
((a mod b) ^ n) mod b = (a ^ n) mod b.

Theorem modpower5 : forall (n: nat),
n mod 10 = (n ^ 5) mod 10.
Proof.
(* todo *)

### Definitions File

```theory Defs
imports Main
begin
end```

### Template File

```theory Submission
imports Defs
begin

lemma modpower5: fixes n :: nat
shows "n mod 10 = (n ^ 5) mod 10" sorry

end```

### Check File

```theory Check
imports Submission
begin

lemma "(n::nat) mod 10 = (n ^ 5) mod 10"
by (rule Submission.modpower5)

end```

### Definitions File

```-- no definitions required
-- Lean version: 3.4.2
-- Mathlib version: 2019-07-31```

### Template File

```theorem mod_power_five : ∀ (n : ℕ), n % 10 = (n ^ 5) % 10 :=
sorry```

### Check File

```import .submission

theorem you_did_it : ∀ (n : ℕ), n % 10 = (n ^ 5) % 10 := mod_power_five```

### Definitions File

`(in-package "ACL2")`

### Template File

```(in-package "ACL2")

(defthm modpower5
(implies (natp n)
(equal (mod-expt n 5 10)
(mod n 10)))
)```

### Check File

```; The four lines just below are boilerplate, that is, the same for every
; problem.

(in-package "ACL2")
(include-book "Submission")
(set-enforce-redundancy t)
(include-book "Defs")

; The events below represent the theorem to be proved, and are copied from
; template.lisp.

(defthm modpower5
(implies (natp n)
(equal (mod-expt n 5 10)
(mod n 10)))
)```

Terms and Conditions