# Question 19899: Use the Prime-Coprime Fermat Form Only under Both Hypotheses

[Return to catalogue page 100](https://ocme.evemisslab.com/en/questions/page/100/)

[← Question derivation index](https://ocme.evemisslab.com/en/questions/) · [Original question batch](https://ocme.evemisslab.com/en/practice/batch-20261014-advance-20261106-r05-fermat-little-theorem-foundations/#q-20261014-advance-20261106-r05-fermat-little-theorem-0024)

This teaching derivation has second-context AI mathematical and bilingual semantic review, limited to the model and assumptions stated in this question. It has no human review or new Lean proof and does not promote the original question or MKO to Canonical truth.

R0038-19899 · q-20261014-advance-20261106-r05-fermat-little-theorem-0024



## Original question and givens

Use integer base a=-25 and modulus=89, normalized residues in [0,modulus). Exact integer square-and-multiply computes powers; trial division checks primality. Every equality of residues here is a congruence modulo the stated modulus, not an unrestricted integer equality. The coprime form requires prime modulus and an invertible base; the all-integer form for prime p also allows p to divide a. Never cancel a noninvertible residue. Give (p, normalized_base, power_p_minus_1, congruence_certificate, boundary).


- G001 — Use integer base a=-25 and modulus=89, normalized residues in [0,modulus). Exact integer square-and-multiply computes powers; trial division checks primality. Every equality of residues here is a congruence modulo the stated modulus, not an unrestricted integer equality. The coprime form requires prime modulus and an invertible base; the all-integer form for prime p also allows p to divide a. Never cancel a noninvertible residue. Give (p, normalized_base, power_p_minus_1, congruence_certificate, boundary).





## Definition and scope

Use the original question domain, assumptions and cited MKO definitions. This item has second-context mathematical and bilingual review, with the model, answer and every arithmetic step independently recomputed from the original parameters; the source question remains a candidate.


- [mko-fermat-little-theorem](https://ocme.evemisslab.com/en/mko/mko-fermat-little-theorem/)





## Step-by-step derivation

S001 · impliesBefore

source operation=flt-prime-coprime;original snapshot and mathematics retained

After

explicit ordered source output fields=[p, normalized_base, power_p_minus_1, congruence_certificate, boundary]

Conditions: none

Keep the historical interface marker in the original snapshot while listing ordered source fields here,without JavaScript or external lookup.Field labels are not mathematical evidence,and No retains the operation's claim scope.

Step identifiers and dependenciesRule: source_ordered_interface_explicit_without_javascript · Uses: G001





S002 · impliesBefore

ACTUAL integer modulus=89;complete trial range2..floor_sqrt=9

After

checked rows[divisor,quotient,remainder]=[[2, 44, 1], [3, 29, 2], [4, 22, 1], [5, 17, 4], [6, 14, 5], [7, 12, 5], [8, 11, 1], [9, 9, 8]];first exact factor=null;prime=Yes

Conditions: none

An exact factor in the trial range witnesses compositeness.If the entire range has no factor,any composite decomposition would require one at most sqrt(n),so all composite cases are excluded.The empty range for2 is valid.This is not a primality inference from a Fermat test.

Step identifiers and dependenciesRule: flt_primality_complete_trial_or_actual_factor_not_Fermat_test · Uses: G001, S001





S003 · impliesBefore

original signed base=-25;positive modulus=89;use nonnegative gcd inputs=[25, 89]

After

ALL Euclidean rows[left,right,q,r]=[[25, 89, 0, 25], [89, 25, 3, 14], [25, 14, 1, 11], [14, 11, 1, 3], [11, 3, 3, 2], [3, 2, 1, 1], [2, 1, 2, 0]];terminal nonnegative gcd=1;coprime=Yes

Conditions: none

Euclidean replacements preserve common divisors and give the terminal gcd,including gcd(0,m)=m.Primality of the modulus and invertibility of the base remain separate flags.

Step identifiers and dependenciesRule: flt_actual_gcd_coprime_separate_from_primality · Uses: G001, S002





S004 · calculationBefore

Fermat original signed base exact quotient := div(-25, 89)

After

Fermat original signed base exact quotient = -25/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S003





S005 · calculationBefore

Fermat original signed base floor quotient multiple := mul(-1, 89)

After

Fermat original signed base floor quotient multiple = -89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S004





S006 · calculationBefore

Fermat original signed base normalized remainder := sub(-25, -89)

After

Fermat original signed base normalized remainder = 64

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S005





S007 · impliesBefore

Fermat original signed base:signed integer value=-25;positive modulus=89;exact quotient=-25/89;floor q=-1

After

value=q*modulus+remainder;normalized remainder=64 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S006





S008 · impliesBefore

Fermat original modular exponent:original normalized base=64;original exponent=88;modulus=89

After

initialize accumulator1,current_base=base,remaining=exponent;invariant accumulator*current_base^remaining congruent to original power

Conditions: none

The multiplicative identity gives the exponent0 convention.Each step preserves congruence to the same original power without constructing huge ordinary powers or replacing modular relations with real equalities.

Step identifiers and dependenciesRule: flt_modular_power_initial_invariant · Uses: G001, S007





S009 · calculationBefore

Fermat original modular exponent bit0 current base square := mul(64, 64)

After

Fermat original modular exponent bit0 current base square = 4096

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S008





S010 · calculationBefore

Fermat original modular exponent bit0 squared base reduction exact quotient := div(4096, 89)

After

Fermat original modular exponent bit0 squared base reduction exact quotient = 4096/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S009





S011 · calculationBefore

Fermat original modular exponent bit0 squared base reduction floor quotient multiple := mul(46, 89)

After

Fermat original modular exponent bit0 squared base reduction floor quotient multiple = 4094

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S010





S012 · calculationBefore

Fermat original modular exponent bit0 squared base reduction normalized remainder := sub(4096, 4094)

After

Fermat original modular exponent bit0 squared base reduction normalized remainder = 2

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S011





S013 · impliesBefore

Fermat original modular exponent bit0 squared base reduction:signed integer value=4096;positive modulus=89;exact quotient=4096/89;floor q=46

After

value=q*modulus+remainder;normalized remainder=2 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S012





S014 · impliesBefore

Fermat original modular exponent:step=0;previous[accumulator,base,exponent]=[1, 64, 88];low bit=0

After

next[accumulator,base,exponent]=[1, 2, 44];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S013





S015 · calculationBefore

Fermat original modular exponent bit1 current base square := mul(2, 2)

After

Fermat original modular exponent bit1 current base square = 4

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S014





S016 · calculationBefore

Fermat original modular exponent bit1 squared base reduction exact quotient := div(4, 89)

After

Fermat original modular exponent bit1 squared base reduction exact quotient = 4/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S015





S017 · calculationBefore

Fermat original modular exponent bit1 squared base reduction floor quotient multiple := mul(0, 89)

After

Fermat original modular exponent bit1 squared base reduction floor quotient multiple = 0

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S016





S018 · calculationBefore

Fermat original modular exponent bit1 squared base reduction normalized remainder := sub(4, 0)

After

Fermat original modular exponent bit1 squared base reduction normalized remainder = 4

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S017





S019 · impliesBefore

Fermat original modular exponent bit1 squared base reduction:signed integer value=4;positive modulus=89;exact quotient=4/89;floor q=0

After

value=q*modulus+remainder;normalized remainder=4 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S018





S020 · impliesBefore

Fermat original modular exponent:step=1;previous[accumulator,base,exponent]=[1, 2, 44];low bit=0

After

next[accumulator,base,exponent]=[1, 4, 22];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S019





S021 · calculationBefore

Fermat original modular exponent bit2 current base square := mul(4, 4)

After

Fermat original modular exponent bit2 current base square = 16

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S020





S022 · calculationBefore

Fermat original modular exponent bit2 squared base reduction exact quotient := div(16, 89)

After

Fermat original modular exponent bit2 squared base reduction exact quotient = 16/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S021





S023 · calculationBefore

Fermat original modular exponent bit2 squared base reduction floor quotient multiple := mul(0, 89)

After

Fermat original modular exponent bit2 squared base reduction floor quotient multiple = 0

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S022





S024 · calculationBefore

Fermat original modular exponent bit2 squared base reduction normalized remainder := sub(16, 0)

After

Fermat original modular exponent bit2 squared base reduction normalized remainder = 16

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S023





S025 · impliesBefore

Fermat original modular exponent bit2 squared base reduction:signed integer value=16;positive modulus=89;exact quotient=16/89;floor q=0

After

value=q*modulus+remainder;normalized remainder=16 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S024





S026 · impliesBefore

Fermat original modular exponent:step=2;previous[accumulator,base,exponent]=[1, 4, 22];low bit=0

After

next[accumulator,base,exponent]=[1, 16, 11];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S025





S027 · calculationBefore

Fermat original modular exponent bit3 accumulator product := mul(1, 16)

After

Fermat original modular exponent bit3 accumulator product = 16

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S026





S028 · calculationBefore

Fermat original modular exponent bit3 accumulator reduction exact quotient := div(16, 89)

After

Fermat original modular exponent bit3 accumulator reduction exact quotient = 16/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S027





S029 · calculationBefore

Fermat original modular exponent bit3 accumulator reduction floor quotient multiple := mul(0, 89)

After

Fermat original modular exponent bit3 accumulator reduction floor quotient multiple = 0

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S028





S030 · calculationBefore

Fermat original modular exponent bit3 accumulator reduction normalized remainder := sub(16, 0)

After

Fermat original modular exponent bit3 accumulator reduction normalized remainder = 16

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S029





S031 · impliesBefore

Fermat original modular exponent bit3 accumulator reduction:signed integer value=16;positive modulus=89;exact quotient=16/89;floor q=0

After

value=q*modulus+remainder;normalized remainder=16 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S030





S032 · calculationBefore

Fermat original modular exponent bit3 current base square := mul(16, 16)

After

Fermat original modular exponent bit3 current base square = 256

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S031





S033 · calculationBefore

Fermat original modular exponent bit3 squared base reduction exact quotient := div(256, 89)

After

Fermat original modular exponent bit3 squared base reduction exact quotient = 256/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S032





S034 · calculationBefore

Fermat original modular exponent bit3 squared base reduction floor quotient multiple := mul(2, 89)

After

Fermat original modular exponent bit3 squared base reduction floor quotient multiple = 178

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S033





S035 · calculationBefore

Fermat original modular exponent bit3 squared base reduction normalized remainder := sub(256, 178)

After

Fermat original modular exponent bit3 squared base reduction normalized remainder = 78

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S034





S036 · impliesBefore

Fermat original modular exponent bit3 squared base reduction:signed integer value=256;positive modulus=89;exact quotient=256/89;floor q=2

After

value=q*modulus+remainder;normalized remainder=78 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S035





S037 · impliesBefore

Fermat original modular exponent:step=3;previous[accumulator,base,exponent]=[1, 16, 11];low bit=1

After

next[accumulator,base,exponent]=[16, 78, 5];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S036





S038 · calculationBefore

Fermat original modular exponent bit4 accumulator product := mul(16, 78)

After

Fermat original modular exponent bit4 accumulator product = 1248

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S037





S039 · calculationBefore

Fermat original modular exponent bit4 accumulator reduction exact quotient := div(1248, 89)

After

Fermat original modular exponent bit4 accumulator reduction exact quotient = 1248/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S038





S040 · calculationBefore

Fermat original modular exponent bit4 accumulator reduction floor quotient multiple := mul(14, 89)

After

Fermat original modular exponent bit4 accumulator reduction floor quotient multiple = 1246

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S039





S041 · calculationBefore

Fermat original modular exponent bit4 accumulator reduction normalized remainder := sub(1248, 1246)

After

Fermat original modular exponent bit4 accumulator reduction normalized remainder = 2

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S040





S042 · impliesBefore

Fermat original modular exponent bit4 accumulator reduction:signed integer value=1248;positive modulus=89;exact quotient=1248/89;floor q=14

After

value=q*modulus+remainder;normalized remainder=2 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S041





S043 · calculationBefore

Fermat original modular exponent bit4 current base square := mul(78, 78)

After

Fermat original modular exponent bit4 current base square = 6084

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S042





S044 · calculationBefore

Fermat original modular exponent bit4 squared base reduction exact quotient := div(6084, 89)

After

Fermat original modular exponent bit4 squared base reduction exact quotient = 6084/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S043





S045 · calculationBefore

Fermat original modular exponent bit4 squared base reduction floor quotient multiple := mul(68, 89)

After

Fermat original modular exponent bit4 squared base reduction floor quotient multiple = 6052

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S044





S046 · calculationBefore

Fermat original modular exponent bit4 squared base reduction normalized remainder := sub(6084, 6052)

After

Fermat original modular exponent bit4 squared base reduction normalized remainder = 32

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S045





S047 · impliesBefore

Fermat original modular exponent bit4 squared base reduction:signed integer value=6084;positive modulus=89;exact quotient=6084/89;floor q=68

After

value=q*modulus+remainder;normalized remainder=32 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S046





S048 · impliesBefore

Fermat original modular exponent:step=4;previous[accumulator,base,exponent]=[16, 78, 5];low bit=1

After

next[accumulator,base,exponent]=[2, 32, 2];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S047





S049 · calculationBefore

Fermat original modular exponent bit5 current base square := mul(32, 32)

After

Fermat original modular exponent bit5 current base square = 1024

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S048





S050 · calculationBefore

Fermat original modular exponent bit5 squared base reduction exact quotient := div(1024, 89)

After

Fermat original modular exponent bit5 squared base reduction exact quotient = 1024/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S049





S051 · calculationBefore

Fermat original modular exponent bit5 squared base reduction floor quotient multiple := mul(11, 89)

After

Fermat original modular exponent bit5 squared base reduction floor quotient multiple = 979

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S050





S052 · calculationBefore

Fermat original modular exponent bit5 squared base reduction normalized remainder := sub(1024, 979)

After

Fermat original modular exponent bit5 squared base reduction normalized remainder = 45

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S051





S053 · impliesBefore

Fermat original modular exponent bit5 squared base reduction:signed integer value=1024;positive modulus=89;exact quotient=1024/89;floor q=11

After

value=q*modulus+remainder;normalized remainder=45 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S052





S054 · impliesBefore

Fermat original modular exponent:step=5;previous[accumulator,base,exponent]=[2, 32, 2];low bit=0

After

next[accumulator,base,exponent]=[2, 45, 1];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S053





S055 · calculationBefore

Fermat original modular exponent bit6 accumulator product := mul(2, 45)

After

Fermat original modular exponent bit6 accumulator product = 90

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S054





S056 · calculationBefore

Fermat original modular exponent bit6 accumulator reduction exact quotient := div(90, 89)

After

Fermat original modular exponent bit6 accumulator reduction exact quotient = 90/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S055





S057 · calculationBefore

Fermat original modular exponent bit6 accumulator reduction floor quotient multiple := mul(1, 89)

After

Fermat original modular exponent bit6 accumulator reduction floor quotient multiple = 89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S056





S058 · calculationBefore

Fermat original modular exponent bit6 accumulator reduction normalized remainder := sub(90, 89)

After

Fermat original modular exponent bit6 accumulator reduction normalized remainder = 1

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S057





S059 · impliesBefore

Fermat original modular exponent bit6 accumulator reduction:signed integer value=90;positive modulus=89;exact quotient=90/89;floor q=1

After

value=q*modulus+remainder;normalized remainder=1 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S058





S060 · calculationBefore

Fermat original modular exponent bit6 current base square := mul(45, 45)

After

Fermat original modular exponent bit6 current base square = 2025

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S059





S061 · calculationBefore

Fermat original modular exponent bit6 squared base reduction exact quotient := div(2025, 89)

After

Fermat original modular exponent bit6 squared base reduction exact quotient = 2025/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S060





S062 · calculationBefore

Fermat original modular exponent bit6 squared base reduction floor quotient multiple := mul(22, 89)

After

Fermat original modular exponent bit6 squared base reduction floor quotient multiple = 1958

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S061





S063 · calculationBefore

Fermat original modular exponent bit6 squared base reduction normalized remainder := sub(2025, 1958)

After

Fermat original modular exponent bit6 squared base reduction normalized remainder = 67

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S062





S064 · impliesBefore

Fermat original modular exponent bit6 squared base reduction:signed integer value=2025;positive modulus=89;exact quotient=2025/89;floor q=22

After

value=q*modulus+remainder;normalized remainder=67 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S063





S065 · impliesBefore

Fermat original modular exponent:step=6;previous[accumulator,base,exponent]=[2, 45, 1];low bit=1

After

next[accumulator,base,exponent]=[1, 67, 0];split exponent=2*q+bit preserves original-power invariant

Conditions: none

Replace an even power by a squared base;an odd power also contributes one base factor to the accumulator.Exact reductions preserve congruence and halving the remaining nonnegative exponent guarantees termination.

Step identifiers and dependenciesRule: flt_each_binary_power_step_exact_invariant · Uses: G001, S064





S066 · impliesBefore

Fermat original modular exponent:remaining exponent0;final normalized accumulator=1

After

EXACT original base^88 modulo89=1

Conditions: none

At remaining exponent0 the invariant leaves exactly the accumulator,giving the original power's residue.The arithmetic result alone does not certify a prime modulus.

Step identifiers and dependenciesRule: flt_modular_power_terminal_not_primality_converse · Uses: G001, S065





S067 · calculationBefore

Fermat actual unit inverse product := mul(64, 32)

After

Fermat actual unit inverse product = 2048

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S066





S068 · calculationBefore

Fermat actual inverse identity exact quotient := div(2048, 89)

After

Fermat actual inverse identity exact quotient = 2048/89

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S067





S069 · calculationBefore

Fermat actual inverse identity floor quotient multiple := mul(23, 89)

After

Fermat actual inverse identity floor quotient multiple = 2047

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S068





S070 · calculationBefore

Fermat actual inverse identity normalized remainder := sub(2048, 2047)

After

Fermat actual inverse identity normalized remainder = 1

Conditions: none

Substitute original roles and established intermediates exactly,retaining signs,denominators,indices and the relevant carrier.

Step identifiers and dependenciesRule: exact_rational_arithmetic · Uses: G001, S069





S071 · impliesBefore

Fermat actual inverse identity:signed integer value=2048;positive modulus=89;exact quotient=2048/89;floor q=23

After

value=q*modulus+remainder;normalized remainder=1 in[0,89)

Conditions: none

Use a positive modulus and floor quotient to obtain the nonnegative representative even for a negative base.Equal remainders express congruence modulo this modulus,not unrestricted integer equality.

Step identifiers and dependenciesRule: flt_exact_signed_modulo_not_integer_equality · Uses: G001, S070





S072 · impliesBefore

VERIFIED prime p=89;nonzero original base residue=64;ACTUAL inverse witness=32

After

multiplication r->a*r mod p permutes ALL nonzero residues1..p-1:inverse gives injectivity and finite self-injection gives surjectivity

Conditions: none

The actual inverse permits cancellation,so multiplication by a is a bijection of the full nonzero residue set.This is an argument for arbitrary residues,not a million-point enumeration or sampled permutation test.

Step identifiers and dependenciesRule: flt_prime_unit_permutation_all_residues_not_samples · Uses: G001, S071





S073 · impliesBefore

same verified prime p=89;ALL nonzero residues permuted by multiplication by a=64

After

product over r=1..p-1 gives a^(p-1)*(p-1)! congruent to (p-1)!;EVERY factor is a prime-field unit,so factorial is a UNIT;cancel ONLY this nonzero unit to obtain a^(p-1) congruent1

Conditions: none

For a prime modulus every factor1 through p−1 is coprime to p and has an inverse;their finite product is invertible as well.Cancel that factorial unit to obtain Fermat's coprime form.Never cancel0 or apply this argument to nonunits under a composite modulus.

Step identifiers and dependenciesRule: flt_nonzero_factorial_unit_cancellation_not_zero_or_composite · Uses: G001, S072









## Reverse checks


- S073 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S072 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S071 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S070 · premise_and_result_audit — Recompute Fermat actual inverse identity normalized remainder with exact rational arithmetic, not rounded decimals.
- S069 · premise_and_result_audit — Recompute Fermat actual inverse identity floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S068 · premise_and_result_audit — Recompute Fermat actual inverse identity exact quotient with exact rational arithmetic, not rounded decimals.
- S067 · premise_and_result_audit — Recompute Fermat actual unit inverse product with exact rational arithmetic, not rounded decimals.
- S066 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S065 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S064 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S063 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S062 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S061 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S060 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 current base square with exact rational arithmetic, not rounded decimals.
- S059 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S058 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 accumulator reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S057 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 accumulator reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S056 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 accumulator reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S055 · premise_and_result_audit — Recompute Fermat original modular exponent bit6 accumulator product with exact rational arithmetic, not rounded decimals.
- S054 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S053 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S052 · premise_and_result_audit — Recompute Fermat original modular exponent bit5 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S051 · premise_and_result_audit — Recompute Fermat original modular exponent bit5 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S050 · premise_and_result_audit — Recompute Fermat original modular exponent bit5 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S049 · premise_and_result_audit — Recompute Fermat original modular exponent bit5 current base square with exact rational arithmetic, not rounded decimals.
- S048 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S047 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S046 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S045 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S044 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S043 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 current base square with exact rational arithmetic, not rounded decimals.
- S042 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S041 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 accumulator reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S040 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 accumulator reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S039 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 accumulator reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S038 · premise_and_result_audit — Recompute Fermat original modular exponent bit4 accumulator product with exact rational arithmetic, not rounded decimals.
- S037 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S036 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S035 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S034 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S033 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S032 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 current base square with exact rational arithmetic, not rounded decimals.
- S031 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S030 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 accumulator reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S029 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 accumulator reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S028 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 accumulator reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S027 · premise_and_result_audit — Recompute Fermat original modular exponent bit3 accumulator product with exact rational arithmetic, not rounded decimals.
- S026 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S025 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S024 · premise_and_result_audit — Recompute Fermat original modular exponent bit2 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S023 · premise_and_result_audit — Recompute Fermat original modular exponent bit2 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S022 · premise_and_result_audit — Recompute Fermat original modular exponent bit2 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S021 · premise_and_result_audit — Recompute Fermat original modular exponent bit2 current base square with exact rational arithmetic, not rounded decimals.
- S020 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S019 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S018 · premise_and_result_audit — Recompute Fermat original modular exponent bit1 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S017 · premise_and_result_audit — Recompute Fermat original modular exponent bit1 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S016 · premise_and_result_audit — Recompute Fermat original modular exponent bit1 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S015 · premise_and_result_audit — Recompute Fermat original modular exponent bit1 current base square with exact rational arithmetic, not rounded decimals.
- S014 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S013 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S012 · premise_and_result_audit — Recompute Fermat original modular exponent bit0 squared base reduction normalized remainder with exact rational arithmetic, not rounded decimals.
- S011 · premise_and_result_audit — Recompute Fermat original modular exponent bit0 squared base reduction floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S010 · premise_and_result_audit — Recompute Fermat original modular exponent bit0 squared base reduction exact quotient with exact rational arithmetic, not rounded decimals.
- S009 · premise_and_result_audit — Recompute Fermat original modular exponent bit0 current base square with exact rational arithmetic, not rounded decimals.
- S008 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S007 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S006 · premise_and_result_audit — Recompute Fermat original signed base normalized remainder with exact rational arithmetic, not rounded decimals.
- S005 · premise_and_result_audit — Recompute Fermat original signed base floor quotient multiple with exact rational arithmetic, not rounded decimals.
- S004 · premise_and_result_audit — Recompute Fermat original signed base exact quotient with exact rational arithmetic, not rounded decimals.
- S003 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S002 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.
- S001 · premise_and_result_audit — Check against the original data and this step's premises; a one-way implication is not an equivalence.





## Result

(89, 64, 1, Yes, prime_coprime_form)

The full substitutions and premise checks give the original answer; source identity,format and status are unchanged.





## This question review and source binding

Review date: 2026-10-26

Original questions, answers, step expressions, numeric ASTs and historical records are retained. Source candidate labels remain historical and are not overwritten as formal proof.

Source hashes and review receipts
- input commit: 0f7be61e2c22317a4075561dc822c87d881a50db
- original question SHA-256: 347ce627d33090206064d66f3351fec33a02c0f4698957824fbaf832f136dd12
- candidate record SHA-256: 7987e07bf12d69b0d23a555b3f8aebeb85fbbdbe8a5f43fb29759882ee826475
- semantic review receipt SHA-256: d165cad30849a3aba67390a59c572c0d965269d4b405e43df36da19e28d85612
- question-first witness SHA-256: c222ca47a07939c019865a1e4d9ce633205cdee68db92bf96a96f5683a62ebc7
- Lean: NOT_RUN · human review: NOT_PERFORMED

[Same-source full JSON](https://ocme.evemisslab.com/data/question-derivations/questions/q-20261014-advance-20261106-r05-fermat-little-theorem-0024.json)




