EU0021

euler_modular_unit_totient_power

The exact actual-inverse Unit graph suffices for a constructed Euler power; no prime-modulus restriction is introduced.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

The exact G014 theorem covers m>1 and genuinely invertible a. Phi counts coprime residues independently of the conclusion. The broader coprime theorem handles m=1 by congruence, not by asserting that one is a canonical remainder. Multiplicative-order and RSA statements are not claimed.

Exact theorem in conservative defined notation

∀ a. ∀ m. ∀ t. Unit(a,m)Phi(m,t) → ∃ x. Pow(a,t,x)ModEq(m,x,1)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall a m t. ((exists eut_gap_eu_unit_endpoint_domain. eut_gap_eu_unit_endpoint_domain + S (1) = (m)) /\ exists eu_inverse_unit_endpoint. (exists eut_gap_eu_unit_endpoint_bound. eut_gap_eu_unit_endpoint_bound + S (eu_inverse_unit_endpoint) = (m)) /\ (exists eu_mod_left_unit_endpoint_inverse eu_mod_right_unit_endpoint_inverse. ((a)*eu_inverse_unit_endpoint) + (m) * eu_mod_left_unit_endpoint_inverse = (1) + (m) * eu_mod_right_unit_endpoint_inverse)) -> ((~((m)=0) /\ (exists eut_code_eu_unit_endpoint_phi_count eut_scale_eu_unit_endpoint_phi_count. (forall eut_index_eu_unit_endpoint_phi_count_mask. (exists eut_gap_eu_unit_endpoint_phi_count_mask_bound. eut_gap_eu_unit_endpoint_phi_count_mask_bound + S (eut_index_eu_unit_endpoint_phi_count_mask) = (m)) -> exists eut_bit_eu_unit_endpoint_phi_count_mask. (((exists fs_h_eut_eu_unit_endpoint_phi_count_mask_entry. fs_h_eut_eu_unit_endpoint_phi_count_mask_entry + S (eut_bit_eu_unit_endpoint_phi_count_mask) = S ((S (eut_index_eu_unit_endpoint_phi_count_mask)) * eut_scale_eu_unit_endpoint_phi_count)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_mask_entry. eut_code_eu_unit_endpoint_phi_count = fs_q_eut_eu_unit_endpoint_phi_count_mask_entry * S ((S (eut_index_eu_unit_endpoint_phi_count_mask)) * eut_scale_eu_unit_endpoint_phi_count) + (eut_bit_eu_unit_endpoint_phi_count_mask))) /\ ((((forall eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime. (exists eut_left_eu_unit_endpoint_phi_count_mask_choice_coprime. (eut_index_eu_unit_endpoint_phi_count_mask) = eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime * eut_left_eu_unit_endpoint_phi_count_mask_choice_coprime) -> (exists eut_right_eu_unit_endpoint_phi_count_mask_choice_coprime. (m) = eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime * eut_right_eu_unit_endpoint_phi_count_mask_choice_coprime) -> eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime = 1) /\ (eut_bit_eu_unit_endpoint_phi_count_mask) = 1) \/ (~(forall eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime. (exists eut_left_eu_unit_endpoint_phi_count_mask_choice_coprime. (eut_index_eu_unit_endpoint_phi_count_mask) = eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime * eut_left_eu_unit_endpoint_phi_count_mask_choice_coprime) -> (exists eut_right_eu_unit_endpoint_phi_count_mask_choice_coprime. (m) = eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime * eut_right_eu_unit_endpoint_phi_count_mask_choice_coprime) -> eut_divisor_eu_unit_endpoint_phi_count_mask_choice_coprime = 1) /\ (eut_bit_eu_unit_endpoint_phi_count_mask) = 0)))) /\ (exists fs_u_eut_eu_unit_endpoint_phi_count_sum fs_v_eut_eu_unit_endpoint_phi_count_sum. ((((exists fs_h_eut_eu_unit_endpoint_phi_count_sum_body_start. fs_h_eut_eu_unit_endpoint_phi_count_sum_body_start + S (0) = S ((S (0)) * fs_v_eut_eu_unit_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_sum_body_start. fs_u_eut_eu_unit_endpoint_phi_count_sum = fs_q_eut_eu_unit_endpoint_phi_count_sum_body_start * S ((S (0)) * fs_v_eut_eu_unit_endpoint_phi_count_sum) + (0))) /\ ((((exists fs_h_eut_eu_unit_endpoint_phi_count_sum_body_terminal. fs_h_eut_eu_unit_endpoint_phi_count_sum_body_terminal + S (t) = S ((S (m)) * fs_v_eut_eu_unit_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_sum_body_terminal. fs_u_eut_eu_unit_endpoint_phi_count_sum = fs_q_eut_eu_unit_endpoint_phi_count_sum_body_terminal * S ((S (m)) * fs_v_eut_eu_unit_endpoint_phi_count_sum) + (t))) /\ forall fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps. (exists fs_lt_eut_eu_unit_endpoint_phi_count_sum_body_steps_bound. fs_lt_eut_eu_unit_endpoint_phi_count_sum_body_steps_bound + S fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps = m) -> exists fs_a_eut_eu_unit_endpoint_phi_count_sum_body_steps fs_r_eut_eu_unit_endpoint_phi_count_sum_body_steps fs_s_eut_eu_unit_endpoint_phi_count_sum_body_steps. ((((exists fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_summand. fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_summand + S (fs_a_eut_eu_unit_endpoint_phi_count_sum_body_steps) = S ((S (fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * eut_scale_eu_unit_endpoint_phi_count)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_summand. eut_code_eu_unit_endpoint_phi_count = fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_summand * S ((S (fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * eut_scale_eu_unit_endpoint_phi_count) + (fs_a_eut_eu_unit_endpoint_phi_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_partial. fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_partial + S (fs_r_eut_eu_unit_endpoint_phi_count_sum_body_steps) = S ((S (fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_unit_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_partial. fs_u_eut_eu_unit_endpoint_phi_count_sum = fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_partial * S ((S (fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_unit_endpoint_phi_count_sum) + (fs_r_eut_eu_unit_endpoint_phi_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_successor. fs_h_eut_eu_unit_endpoint_phi_count_sum_body_steps_successor + S (fs_s_eut_eu_unit_endpoint_phi_count_sum_body_steps) = S ((S (S fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_unit_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_successor. fs_u_eut_eu_unit_endpoint_phi_count_sum = fs_q_eut_eu_unit_endpoint_phi_count_sum_body_steps_successor * S ((S (S fs_i_eut_eu_unit_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_unit_endpoint_phi_count_sum) + (fs_s_eut_eu_unit_endpoint_phi_count_sum_body_steps))) /\ fs_s_eut_eu_unit_endpoint_phi_count_sum_body_steps = fs_r_eut_eu_unit_endpoint_phi_count_sum_body_steps + fs_a_eut_eu_unit_endpoint_phi_count_sum_body_steps))))))))) -> exists w. (exists pa_b_euta_eu_unit_endpoint_power pa_c_euta_eu_unit_endpoint_power. ((forall pa_i_euta_eu_unit_endpoint_power_repeat. (exists pa_lt_euta_eu_unit_endpoint_power_repeat_bound. pa_lt_euta_eu_unit_endpoint_power_repeat_bound + S pa_i_euta_eu_unit_endpoint_power_repeat = t) -> (((exists pa_h_euta_eu_unit_endpoint_power_repeat_decoded. pa_h_euta_eu_unit_endpoint_power_repeat_decoded + S (a) = S ((S (pa_i_euta_eu_unit_endpoint_power_repeat)) * pa_c_euta_eu_unit_endpoint_power)) /\ exists pa_q_euta_eu_unit_endpoint_power_repeat_decoded. pa_b_euta_eu_unit_endpoint_power = pa_q_euta_eu_unit_endpoint_power_repeat_decoded * S ((S (pa_i_euta_eu_unit_endpoint_power_repeat)) * pa_c_euta_eu_unit_endpoint_power) + (a)))) /\ (exists pa_u_euta_eu_unit_endpoint_power_product pa_v_euta_eu_unit_endpoint_power_product. ((((exists pa_h_euta_eu_unit_endpoint_power_product_start. pa_h_euta_eu_unit_endpoint_power_product_start + S (1) = S ((S (0)) * pa_v_euta_eu_unit_endpoint_power_product)) /\ exists pa_q_euta_eu_unit_endpoint_power_product_start. pa_u_euta_eu_unit_endpoint_power_product = pa_q_euta_eu_unit_endpoint_power_product_start * S ((S (0)) * pa_v_euta_eu_unit_endpoint_power_product) + (1))) /\ ((((exists pa_h_euta_eu_unit_endpoint_power_product_terminal. pa_h_euta_eu_unit_endpoint_power_product_terminal + S (w) = S ((S (t)) * pa_v_euta_eu_unit_endpoint_power_product)) /\ exists pa_q_euta_eu_unit_endpoint_power_product_terminal. pa_u_euta_eu_unit_endpoint_power_product = pa_q_euta_eu_unit_endpoint_power_product_terminal * S ((S (t)) * pa_v_euta_eu_unit_endpoint_power_product) + (w))) /\ forall pa_i_euta_eu_unit_endpoint_power_product. (exists pa_lt_euta_eu_unit_endpoint_power_product_bound. pa_lt_euta_eu_unit_endpoint_power_product_bound + S pa_i_euta_eu_unit_endpoint_power_product = t) -> exists pa_p_euta_eu_unit_endpoint_power_product pa_r_euta_eu_unit_endpoint_power_product pa_s_euta_eu_unit_endpoint_power_product. ((((exists pa_h_euta_eu_unit_endpoint_power_product_factor. pa_h_euta_eu_unit_endpoint_power_product_factor + S (pa_p_euta_eu_unit_endpoint_power_product) = S ((S (pa_i_euta_eu_unit_endpoint_power_product)) * pa_c_euta_eu_unit_endpoint_power)) /\ exists pa_q_euta_eu_unit_endpoint_power_product_factor. pa_b_euta_eu_unit_endpoint_power = pa_q_euta_eu_unit_endpoint_power_product_factor * S ((S (pa_i_euta_eu_unit_endpoint_power_product)) * pa_c_euta_eu_unit_endpoint_power) + (pa_p_euta_eu_unit_endpoint_power_product))) /\ ((((exists pa_h_euta_eu_unit_endpoint_power_product_partial. pa_h_euta_eu_unit_endpoint_power_product_partial + S (pa_r_euta_eu_unit_endpoint_power_product) = S ((S (pa_i_euta_eu_unit_endpoint_power_product)) * pa_v_euta_eu_unit_endpoint_power_product)) /\ exists pa_q_euta_eu_unit_endpoint_power_product_partial. pa_u_euta_eu_unit_endpoint_power_product = pa_q_euta_eu_unit_endpoint_power_product_partial * S ((S (pa_i_euta_eu_unit_endpoint_power_product)) * pa_v_euta_eu_unit_endpoint_power_product) + (pa_r_euta_eu_unit_endpoint_power_product))) /\ ((((exists pa_h_euta_eu_unit_endpoint_power_product_successor. pa_h_euta_eu_unit_endpoint_power_product_successor + S (pa_s_euta_eu_unit_endpoint_power_product) = S ((S (S pa_i_euta_eu_unit_endpoint_power_product)) * pa_v_euta_eu_unit_endpoint_power_product)) /\ exists pa_q_euta_eu_unit_endpoint_power_product_successor. pa_u_euta_eu_unit_endpoint_power_product = pa_q_euta_eu_unit_endpoint_power_product_successor * S ((S (S pa_i_euta_eu_unit_endpoint_power_product)) * pa_v_euta_eu_unit_endpoint_power_product) + (pa_s_euta_eu_unit_endpoint_power_product))) /\ pa_s_euta_eu_unit_endpoint_power_product = pa_r_euta_eu_unit_endpoint_power_product * pa_p_euta_eu_unit_endpoint_power_product)))))))) /\ (exists eu_mod_left_unit_endpoint_result eu_mod_right_unit_endpoint_result. (w) + (m) * eu_mod_left_unit_endpoint_result = (1) + (m) * eu_mod_right_unit_endpoint_result)

Complete tactic proof in conservative notation

All 20 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

20 script commands · 5 reading checkpoints · 0 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
01Fix variables and assumptionsL1–5

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro a
  2. L2
    intro m
  3. L3
    intro t
  4. L4
    intro hu
  5. L5
    intro ht
02Separate the logical casesL6–6

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L6
    cases hu
03Use earlier factsL7–10

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L7
    specialize euler_coprime_totient_power (a)
  2. L8
    specialize euler_coprime_totient_power (m)
  3. L9
    specialize euler_coprime_totient_power (t)
  4. L10
    apply euler_coprime_totient_power
04Fix variables and assumptionsL11–11

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro hz
05Use earlier factsL12–20

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L12
    specialize binary_modulus_nontrivial_nonzero (m)
  2. L13
    apply binary_modulus_nontrivial_nonzero
  3. L14
    exact hu_left
  4. L15
    exact hz
  5. L16
    specialize euler_modular_unit_coprime (a)
  6. L17
    specialize euler_modular_unit_coprime (m)
  7. L18
    apply euler_modular_unit_coprime
  8. L19
    exact hu
  9. L20
    exact ht

Library-wide reading audit

Original defined command ledger · 20 lines
  1. 0001intro a
  2. 0002intro m
  3. 0003intro t
  4. 0004intro hu
  5. 0005intro ht
  6. 0006cases hu
  7. 0007specialize euler_coprime_totient_power (a)
  8. 0008specialize euler_coprime_totient_power (m)
  9. 0009specialize euler_coprime_totient_power (t)
  10. 0010apply euler_coprime_totient_power
  11. 0011intro hz
  12. 0012specialize binary_modulus_nontrivial_nonzero (m)
  13. 0013apply binary_modulus_nontrivial_nonzero
  14. 0014exact hu_left
  15. 0015exact hz
  16. 0016specialize euler_modular_unit_coprime (a)
  17. 0017specialize euler_modular_unit_coprime (m)
  18. 0018apply euler_modular_unit_coprime
  19. 0019exact hu
  20. 0020exact ht