GF0014

gaussian_multiply_commutative

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

The actual canonical Gaussian multiply graph is commutative; output code equality is not assumed.

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

Exact expanded first-order arithmetic statement

forall a b c. (exists ge_first_rp_commutative_given_multiply ge_first_rn_commutative_given_multiply ge_first_ip_commutative_given_multiply ge_first_in_commutative_given_multiply ge_second_rp_commutative_given_multiply ge_second_rn_commutative_given_multiply ge_second_ip_commutative_given_multiply ge_second_in_commutative_given_multiply. ((exists ge_representation_real_code_commutative_given_multiplyfirst ge_representation_imaginary_code_commutative_given_multiplyfirst. (((a) = ((ge_representation_real_code_commutative_given_multiplyfirst) + (ge_representation_imaginary_code_commutative_given_multiplyfirst)) * S ((ge_representation_real_code_commutative_given_multiplyfirst) + (ge_representation_imaginary_code_commutative_given_multiplyfirst)) + ((ge_representation_imaginary_code_commutative_given_multiplyfirst) + (ge_representation_imaginary_code_commutative_given_multiplyfirst))) /\ ((exists ge_balance_positive_commutative_given_multiplyfirstreal ge_balance_negative_commutative_given_multiplyfirstreal. (((((ge_representation_real_code_commutative_given_multiplyfirst) = 2 * (ge_balance_positive_commutative_given_multiplyfirstreal) /\ (ge_balance_negative_commutative_given_multiplyfirstreal) = 0) \/ exists ge_signed_half_commutative_given_multiplyfirstrealdecode. (((ge_representation_real_code_commutative_given_multiplyfirst) = 2 * ge_signed_half_commutative_given_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_commutative_given_multiplyfirstreal) = 0) /\ (ge_balance_negative_commutative_given_multiplyfirstreal) = S ge_signed_half_commutative_given_multiplyfirstrealdecode))) /\ ((ge_first_rp_commutative_given_multiply) + ge_balance_negative_commutative_given_multiplyfirstreal = (ge_first_rn_commutative_given_multiply) + ge_balance_positive_commutative_given_multiplyfirstreal))) /\ (exists ge_balance_positive_commutative_given_multiplyfirstimaginary ge_balance_negative_commutative_given_multiplyfirstimaginary. (((((ge_representation_imaginary_code_commutative_given_multiplyfirst) = 2 * (ge_balance_positive_commutative_given_multiplyfirstimaginary) /\ (ge_balance_negative_commutative_given_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_commutative_given_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_commutative_given_multiplyfirst) = 2 * ge_signed_half_commutative_given_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_commutative_given_multiplyfirstimaginary) = S ge_signed_half_commutative_given_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_commutative_given_multiply) + ge_balance_negative_commutative_given_multiplyfirstimaginary = (ge_first_in_commutative_given_multiply) + ge_balance_positive_commutative_given_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_commutative_given_multiplysecond ge_representation_imaginary_code_commutative_given_multiplysecond. (((b) = ((ge_representation_real_code_commutative_given_multiplysecond) + (ge_representation_imaginary_code_commutative_given_multiplysecond)) * S ((ge_representation_real_code_commutative_given_multiplysecond) + (ge_representation_imaginary_code_commutative_given_multiplysecond)) + ((ge_representation_imaginary_code_commutative_given_multiplysecond) + (ge_representation_imaginary_code_commutative_given_multiplysecond))) /\ ((exists ge_balance_positive_commutative_given_multiplysecondreal ge_balance_negative_commutative_given_multiplysecondreal. (((((ge_representation_real_code_commutative_given_multiplysecond) = 2 * (ge_balance_positive_commutative_given_multiplysecondreal) /\ (ge_balance_negative_commutative_given_multiplysecondreal) = 0) \/ exists ge_signed_half_commutative_given_multiplysecondrealdecode. (((ge_representation_real_code_commutative_given_multiplysecond) = 2 * ge_signed_half_commutative_given_multiplysecondrealdecode + 1 /\ (ge_balance_positive_commutative_given_multiplysecondreal) = 0) /\ (ge_balance_negative_commutative_given_multiplysecondreal) = S ge_signed_half_commutative_given_multiplysecondrealdecode))) /\ ((ge_second_rp_commutative_given_multiply) + ge_balance_negative_commutative_given_multiplysecondreal = (ge_second_rn_commutative_given_multiply) + ge_balance_positive_commutative_given_multiplysecondreal))) /\ (exists ge_balance_positive_commutative_given_multiplysecondimaginary ge_balance_negative_commutative_given_multiplysecondimaginary. (((((ge_representation_imaginary_code_commutative_given_multiplysecond) = 2 * (ge_balance_positive_commutative_given_multiplysecondimaginary) /\ (ge_balance_negative_commutative_given_multiplysecondimaginary) = 0) \/ exists ge_signed_half_commutative_given_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_commutative_given_multiplysecond) = 2 * ge_signed_half_commutative_given_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_multiplysecondimaginary) = 0) /\ (ge_balance_negative_commutative_given_multiplysecondimaginary) = S ge_signed_half_commutative_given_multiplysecondimaginarydecode))) /\ ((ge_second_ip_commutative_given_multiply) + ge_balance_negative_commutative_given_multiplysecondimaginary = (ge_second_in_commutative_given_multiply) + ge_balance_positive_commutative_given_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_commutative_given_multiplyoutput ge_representation_imaginary_code_commutative_given_multiplyoutput. (((c) = ((ge_representation_real_code_commutative_given_multiplyoutput) + (ge_representation_imaginary_code_commutative_given_multiplyoutput)) * S ((ge_representation_real_code_commutative_given_multiplyoutput) + (ge_representation_imaginary_code_commutative_given_multiplyoutput)) + ((ge_representation_imaginary_code_commutative_given_multiplyoutput) + (ge_representation_imaginary_code_commutative_given_multiplyoutput))) /\ ((exists ge_balance_positive_commutative_given_multiplyoutputreal ge_balance_negative_commutative_given_multiplyoutputreal. (((((ge_representation_real_code_commutative_given_multiplyoutput) = 2 * (ge_balance_positive_commutative_given_multiplyoutputreal) /\ (ge_balance_negative_commutative_given_multiplyoutputreal) = 0) \/ exists ge_signed_half_commutative_given_multiplyoutputrealdecode. (((ge_representation_real_code_commutative_given_multiplyoutput) = 2 * ge_signed_half_commutative_given_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_commutative_given_multiplyoutputreal) = 0) /\ (ge_balance_negative_commutative_given_multiplyoutputreal) = S ge_signed_half_commutative_given_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_commutative_given_multiply) * (ge_second_rp_commutative_given_multiply))) + (((ge_first_rn_commutative_given_multiply) * (ge_second_rn_commutative_given_multiply))))) + (((((ge_first_ip_commutative_given_multiply) * (ge_second_in_commutative_given_multiply))) + (((ge_first_in_commutative_given_multiply) * (ge_second_ip_commutative_given_multiply))))))) + ge_balance_negative_commutative_given_multiplyoutputreal = (((((((ge_first_rp_commutative_given_multiply) * (ge_second_rn_commutative_given_multiply))) + (((ge_first_rn_commutative_given_multiply) * (ge_second_rp_commutative_given_multiply))))) + (((((ge_first_ip_commutative_given_multiply) * (ge_second_ip_commutative_given_multiply))) + (((ge_first_in_commutative_given_multiply) * (ge_second_in_commutative_given_multiply))))))) + ge_balance_positive_commutative_given_multiplyoutputreal))) /\ (exists ge_balance_positive_commutative_given_multiplyoutputimaginary ge_balance_negative_commutative_given_multiplyoutputimaginary. (((((ge_representation_imaginary_code_commutative_given_multiplyoutput) = 2 * (ge_balance_positive_commutative_given_multiplyoutputimaginary) /\ (ge_balance_negative_commutative_given_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_commutative_given_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_commutative_given_multiplyoutput) = 2 * ge_signed_half_commutative_given_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_commutative_given_multiplyoutputimaginary) = S ge_signed_half_commutative_given_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_commutative_given_multiply) * (ge_second_ip_commutative_given_multiply))) + (((ge_first_rn_commutative_given_multiply) * (ge_second_in_commutative_given_multiply))))) + (((((ge_first_ip_commutative_given_multiply) * (ge_second_rp_commutative_given_multiply))) + (((ge_first_in_commutative_given_multiply) * (ge_second_rn_commutative_given_multiply))))))) + ge_balance_negative_commutative_given_multiplyoutputimaginary = (((((((ge_first_rp_commutative_given_multiply) * (ge_second_in_commutative_given_multiply))) + (((ge_first_rn_commutative_given_multiply) * (ge_second_ip_commutative_given_multiply))))) + (((((ge_first_ip_commutative_given_multiply) * (ge_second_rn_commutative_given_multiply))) + (((ge_first_in_commutative_given_multiply) * (ge_second_rp_commutative_given_multiply))))))) + ge_balance_positive_commutative_given_multiplyoutputimaginary))))))))) -> (exists ge_first_rp_commutative_result_multiply ge_first_rn_commutative_result_multiply ge_first_ip_commutative_result_multiply ge_first_in_commutative_result_multiply ge_second_rp_commutative_result_multiply ge_second_rn_commutative_result_multiply ge_second_ip_commutative_result_multiply ge_second_in_commutative_result_multiply. ((exists ge_representation_real_code_commutative_result_multiplyfirst ge_representation_imaginary_code_commutative_result_multiplyfirst. (((b) = ((ge_representation_real_code_commutative_result_multiplyfirst) + (ge_representation_imaginary_code_commutative_result_multiplyfirst)) * S ((ge_representation_real_code_commutative_result_multiplyfirst) + (ge_representation_imaginary_code_commutative_result_multiplyfirst)) + ((ge_representation_imaginary_code_commutative_result_multiplyfirst) + (ge_representation_imaginary_code_commutative_result_multiplyfirst))) /\ ((exists ge_balance_positive_commutative_result_multiplyfirstreal ge_balance_negative_commutative_result_multiplyfirstreal. (((((ge_representation_real_code_commutative_result_multiplyfirst) = 2 * (ge_balance_positive_commutative_result_multiplyfirstreal) /\ (ge_balance_negative_commutative_result_multiplyfirstreal) = 0) \/ exists ge_signed_half_commutative_result_multiplyfirstrealdecode. (((ge_representation_real_code_commutative_result_multiplyfirst) = 2 * ge_signed_half_commutative_result_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_commutative_result_multiplyfirstreal) = 0) /\ (ge_balance_negative_commutative_result_multiplyfirstreal) = S ge_signed_half_commutative_result_multiplyfirstrealdecode))) /\ ((ge_first_rp_commutative_result_multiply) + ge_balance_negative_commutative_result_multiplyfirstreal = (ge_first_rn_commutative_result_multiply) + ge_balance_positive_commutative_result_multiplyfirstreal))) /\ (exists ge_balance_positive_commutative_result_multiplyfirstimaginary ge_balance_negative_commutative_result_multiplyfirstimaginary. (((((ge_representation_imaginary_code_commutative_result_multiplyfirst) = 2 * (ge_balance_positive_commutative_result_multiplyfirstimaginary) /\ (ge_balance_negative_commutative_result_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_commutative_result_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_commutative_result_multiplyfirst) = 2 * ge_signed_half_commutative_result_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_commutative_result_multiplyfirstimaginary) = S ge_signed_half_commutative_result_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_commutative_result_multiply) + ge_balance_negative_commutative_result_multiplyfirstimaginary = (ge_first_in_commutative_result_multiply) + ge_balance_positive_commutative_result_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_commutative_result_multiplysecond ge_representation_imaginary_code_commutative_result_multiplysecond. (((a) = ((ge_representation_real_code_commutative_result_multiplysecond) + (ge_representation_imaginary_code_commutative_result_multiplysecond)) * S ((ge_representation_real_code_commutative_result_multiplysecond) + (ge_representation_imaginary_code_commutative_result_multiplysecond)) + ((ge_representation_imaginary_code_commutative_result_multiplysecond) + (ge_representation_imaginary_code_commutative_result_multiplysecond))) /\ ((exists ge_balance_positive_commutative_result_multiplysecondreal ge_balance_negative_commutative_result_multiplysecondreal. (((((ge_representation_real_code_commutative_result_multiplysecond) = 2 * (ge_balance_positive_commutative_result_multiplysecondreal) /\ (ge_balance_negative_commutative_result_multiplysecondreal) = 0) \/ exists ge_signed_half_commutative_result_multiplysecondrealdecode. (((ge_representation_real_code_commutative_result_multiplysecond) = 2 * ge_signed_half_commutative_result_multiplysecondrealdecode + 1 /\ (ge_balance_positive_commutative_result_multiplysecondreal) = 0) /\ (ge_balance_negative_commutative_result_multiplysecondreal) = S ge_signed_half_commutative_result_multiplysecondrealdecode))) /\ ((ge_second_rp_commutative_result_multiply) + ge_balance_negative_commutative_result_multiplysecondreal = (ge_second_rn_commutative_result_multiply) + ge_balance_positive_commutative_result_multiplysecondreal))) /\ (exists ge_balance_positive_commutative_result_multiplysecondimaginary ge_balance_negative_commutative_result_multiplysecondimaginary. (((((ge_representation_imaginary_code_commutative_result_multiplysecond) = 2 * (ge_balance_positive_commutative_result_multiplysecondimaginary) /\ (ge_balance_negative_commutative_result_multiplysecondimaginary) = 0) \/ exists ge_signed_half_commutative_result_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_commutative_result_multiplysecond) = 2 * ge_signed_half_commutative_result_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_multiplysecondimaginary) = 0) /\ (ge_balance_negative_commutative_result_multiplysecondimaginary) = S ge_signed_half_commutative_result_multiplysecondimaginarydecode))) /\ ((ge_second_ip_commutative_result_multiply) + ge_balance_negative_commutative_result_multiplysecondimaginary = (ge_second_in_commutative_result_multiply) + ge_balance_positive_commutative_result_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_commutative_result_multiplyoutput ge_representation_imaginary_code_commutative_result_multiplyoutput. (((c) = ((ge_representation_real_code_commutative_result_multiplyoutput) + (ge_representation_imaginary_code_commutative_result_multiplyoutput)) * S ((ge_representation_real_code_commutative_result_multiplyoutput) + (ge_representation_imaginary_code_commutative_result_multiplyoutput)) + ((ge_representation_imaginary_code_commutative_result_multiplyoutput) + (ge_representation_imaginary_code_commutative_result_multiplyoutput))) /\ ((exists ge_balance_positive_commutative_result_multiplyoutputreal ge_balance_negative_commutative_result_multiplyoutputreal. (((((ge_representation_real_code_commutative_result_multiplyoutput) = 2 * (ge_balance_positive_commutative_result_multiplyoutputreal) /\ (ge_balance_negative_commutative_result_multiplyoutputreal) = 0) \/ exists ge_signed_half_commutative_result_multiplyoutputrealdecode. (((ge_representation_real_code_commutative_result_multiplyoutput) = 2 * ge_signed_half_commutative_result_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_commutative_result_multiplyoutputreal) = 0) /\ (ge_balance_negative_commutative_result_multiplyoutputreal) = S ge_signed_half_commutative_result_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_commutative_result_multiply) * (ge_second_rp_commutative_result_multiply))) + (((ge_first_rn_commutative_result_multiply) * (ge_second_rn_commutative_result_multiply))))) + (((((ge_first_ip_commutative_result_multiply) * (ge_second_in_commutative_result_multiply))) + (((ge_first_in_commutative_result_multiply) * (ge_second_ip_commutative_result_multiply))))))) + ge_balance_negative_commutative_result_multiplyoutputreal = (((((((ge_first_rp_commutative_result_multiply) * (ge_second_rn_commutative_result_multiply))) + (((ge_first_rn_commutative_result_multiply) * (ge_second_rp_commutative_result_multiply))))) + (((((ge_first_ip_commutative_result_multiply) * (ge_second_ip_commutative_result_multiply))) + (((ge_first_in_commutative_result_multiply) * (ge_second_in_commutative_result_multiply))))))) + ge_balance_positive_commutative_result_multiplyoutputreal))) /\ (exists ge_balance_positive_commutative_result_multiplyoutputimaginary ge_balance_negative_commutative_result_multiplyoutputimaginary. (((((ge_representation_imaginary_code_commutative_result_multiplyoutput) = 2 * (ge_balance_positive_commutative_result_multiplyoutputimaginary) /\ (ge_balance_negative_commutative_result_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_commutative_result_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_commutative_result_multiplyoutput) = 2 * ge_signed_half_commutative_result_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_commutative_result_multiplyoutputimaginary) = S ge_signed_half_commutative_result_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_commutative_result_multiply) * (ge_second_ip_commutative_result_multiply))) + (((ge_first_rn_commutative_result_multiply) * (ge_second_in_commutative_result_multiply))))) + (((((ge_first_ip_commutative_result_multiply) * (ge_second_rp_commutative_result_multiply))) + (((ge_first_in_commutative_result_multiply) * (ge_second_rn_commutative_result_multiply))))))) + ge_balance_negative_commutative_result_multiplyoutputimaginary = (((((((ge_first_rp_commutative_result_multiply) * (ge_second_in_commutative_result_multiply))) + (((ge_first_rn_commutative_result_multiply) * (ge_second_ip_commutative_result_multiply))))) + (((((ge_first_ip_commutative_result_multiply) * (ge_second_rn_commutative_result_multiply))) + (((ge_first_in_commutative_result_multiply) * (ge_second_rp_commutative_result_multiply))))))) + ge_balance_positive_commutative_result_multiplyoutputimaginary)))))))))

Constructive proof overview

Generated structural guide

The actual canonical Gaussian multiply graph is commutative; output code equality is not assumed.

The unchanged tactic script uses 3 declared prerequisites and contains 48 exact native proof lines.

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

Proof neighborhood

Direct dependencies

GF0013 gaussian_ring_raw_multiply_commutative gaussian_multiply_of_representations Alpha theorem; checked-use authorized gaussian_representation_integer_transport Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

48 script commands · 6 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.

Named ingredients (1)
01Fix variables and assumptionsL1–4

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

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro h
02Separate the logical casesL5–14

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

  1. L5
    cases h
  2. L6
    cases h_witness
  3. L7
    cases h_witness_witness
  4. L8
    cases h_witness_witness_witness
  5. L9
    cases h_witness_witness_witness_witness
  6. L10
    cases h_witness_witness_witness_witness_witness
  7. L11
    cases h_witness_witness_witness_witness_witness_witness
  8. L12
    cases h_witness_witness_witness_witness_witness_witness_witness
  9. L13
    cases h_witness_witness_witness_witness_witness_witness_witness_witness
  10. L14
    cases h_witness_witness_witness_witness_witness_witness_witness_witness_right
03Use earlier factsL15–24

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

  1. L15
    specialize gaussian_multiply_of_representations (b)
  2. L16
    specialize gaussian_multiply_of_representations (a)
  3. L17
    specialize gaussian_multiply_of_representations (c)
  4. L18
    specialize gaussian_multiply_of_representations (x4)
  5. L19
    specialize gaussian_multiply_of_representations (x5)
  6. L20
    specialize gaussian_multiply_of_representations (x6)
  7. L21
    specialize gaussian_multiply_of_representations (x7)
  8. L22
    specialize gaussian_multiply_of_representations (x)
  9. L23
    specialize gaussian_multiply_of_representations (x1)
  10. L24
    specialize gaussian_multiply_of_representations (x2)
04Use earlier factsL25–34

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

  1. L25
    specialize gaussian_multiply_of_representations (x3)
  2. L26
    apply gaussian_multiply_of_representations
  3. L27
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  4. L28
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_left
  5. L29
    specialize gaussian_representation_integer_transport (c)
  6. L30
    specialize gaussian_representation_integer_transport (((((((x) * (x4))) + (((x1) * (x5))))) + (((((x2) * (x7))) + (((x3) * (x6)))))))
  7. L31
    specialize gaussian_representation_integer_transport (((((((x) * (x5))) + (((x1) * (x4))))) + (((((x2) * (x6))) + (((x3) * (x7)))))))
  8. L32
    specialize gaussian_representation_integer_transport (((((((x) * (x6))) + (((x1) * (x7))))) + (((((x2) * (x4))) + (((x3) * (x5)))))))
  9. L33
    specialize gaussian_representation_integer_transport (((((((x) * (x7))) + (((x1) * (x6))))) + (((((x2) * (x5))) + (((x3) * (x4)))))))
  10. L34
    specialize gaussian_representation_integer_transport (((((((x4) * (x))) + (((x5) * (x1))))) + (((((x6) * (x3))) + (((x7) * (x2)))))))
05Use earlier factsL35–44

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

  1. L35
    specialize gaussian_representation_integer_transport (((((((x4) * (x1))) + (((x5) * (x))))) + (((((x6) * (x2))) + (((x7) * (x3)))))))
  2. L36
    specialize gaussian_representation_integer_transport (((((((x4) * (x2))) + (((x5) * (x3))))) + (((((x6) * (x))) + (((x7) * (x1)))))))
  3. L37
    specialize gaussian_representation_integer_transport (((((((x4) * (x3))) + (((x5) * (x2))))) + (((((x6) * (x1))) + (((x7) * (x)))))))
  4. L38
    apply gaussian_representation_integer_transport
  5. L39
    specialize gaussian_ring_raw_multiply_commutative (x)
  6. L40
    specialize gaussian_ring_raw_multiply_commutative (x1)
  7. L41
    specialize gaussian_ring_raw_multiply_commutative (x2)
  8. L42
    specialize gaussian_ring_raw_multiply_commutative (x3)
  9. L43
    specialize gaussian_ring_raw_multiply_commutative (x4)
  10. L44
    specialize gaussian_ring_raw_multiply_commutative (x5)
06Use earlier factsL45–48

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

  1. L45
    specialize gaussian_ring_raw_multiply_commutative (x6)
  2. L46
    specialize gaussian_ring_raw_multiply_commutative (x7)
  3. L47
    apply gaussian_ring_raw_multiply_commutative
  4. L48
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 48 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro c
  4. 0004intro h
  5. 0005cases h
  6. 0006cases h_witness
  7. 0007cases h_witness_witness
  8. 0008cases h_witness_witness_witness
  9. 0009cases h_witness_witness_witness_witness
  10. 0010cases h_witness_witness_witness_witness_witness
  11. 0011cases h_witness_witness_witness_witness_witness_witness
  12. 0012cases h_witness_witness_witness_witness_witness_witness_witness
  13. 0013cases h_witness_witness_witness_witness_witness_witness_witness_witness
  14. 0014cases h_witness_witness_witness_witness_witness_witness_witness_witness_right
  15. 0015specialize gaussian_multiply_of_representations (b)
  16. 0016specialize gaussian_multiply_of_representations (a)
  17. 0017specialize gaussian_multiply_of_representations (c)
  18. 0018specialize gaussian_multiply_of_representations (x4)
  19. 0019specialize gaussian_multiply_of_representations (x5)
  20. 0020specialize gaussian_multiply_of_representations (x6)
  21. 0021specialize gaussian_multiply_of_representations (x7)
  22. 0022specialize gaussian_multiply_of_representations (x)
  23. 0023specialize gaussian_multiply_of_representations (x1)
  24. 0024specialize gaussian_multiply_of_representations (x2)
  25. 0025specialize gaussian_multiply_of_representations (x3)
  26. 0026apply gaussian_multiply_of_representations
  27. 0027exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  28. 0028exact h_witness_witness_witness_witness_witness_witness_witness_witness_left
  29. 0029specialize gaussian_representation_integer_transport (c)
  30. 0030specialize gaussian_representation_integer_transport (((((((x) * (x4))) + (((x1) * (x5))))) + (((((x2) * (x7))) + (((x3) * (x6)))))))
  31. 0031specialize gaussian_representation_integer_transport (((((((x) * (x5))) + (((x1) * (x4))))) + (((((x2) * (x6))) + (((x3) * (x7)))))))
  32. 0032specialize gaussian_representation_integer_transport (((((((x) * (x6))) + (((x1) * (x7))))) + (((((x2) * (x4))) + (((x3) * (x5)))))))
  33. 0033specialize gaussian_representation_integer_transport (((((((x) * (x7))) + (((x1) * (x6))))) + (((((x2) * (x5))) + (((x3) * (x4)))))))
  34. 0034specialize gaussian_representation_integer_transport (((((((x4) * (x))) + (((x5) * (x1))))) + (((((x6) * (x3))) + (((x7) * (x2)))))))
  35. 0035specialize gaussian_representation_integer_transport (((((((x4) * (x1))) + (((x5) * (x))))) + (((((x6) * (x2))) + (((x7) * (x3)))))))
  36. 0036specialize gaussian_representation_integer_transport (((((((x4) * (x2))) + (((x5) * (x3))))) + (((((x6) * (x))) + (((x7) * (x1)))))))
  37. 0037specialize gaussian_representation_integer_transport (((((((x4) * (x3))) + (((x5) * (x2))))) + (((((x6) * (x1))) + (((x7) * (x)))))))
  38. 0038apply gaussian_representation_integer_transport
  39. 0039specialize gaussian_ring_raw_multiply_commutative (x)
  40. 0040specialize gaussian_ring_raw_multiply_commutative (x1)
  41. 0041specialize gaussian_ring_raw_multiply_commutative (x2)
  42. 0042specialize gaussian_ring_raw_multiply_commutative (x3)
  43. 0043specialize gaussian_ring_raw_multiply_commutative (x4)
  44. 0044specialize gaussian_ring_raw_multiply_commutative (x5)
  45. 0045specialize gaussian_ring_raw_multiply_commutative (x6)
  46. 0046specialize gaussian_ring_raw_multiply_commutative (x7)
  47. 0047apply gaussian_ring_raw_multiply_commutative
  48. 0048exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_right