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 ac bc. (exists ge_real_positive_multiply_total_first ge_real_negative_multiply_total_first ge_imaginary_positive_multiply_total_first ge_imaginary_negative_multiply_total_first. (exists ge_real_code_multiply_total_firstdecode ge_imaginary_code_multiply_total_firstdecode. (((ac) = ((ge_real_code_multiply_total_firstdecode) + (ge_imaginary_code_multiply_total_firstdecode)) * S ((ge_real_code_multiply_total_firstdecode) + (ge_imaginary_code_multiply_total_firstdecode)) + ((ge_imaginary_code_multiply_total_firstdecode) + (ge_imaginary_code_multiply_total_firstdecode))) /\ (((((ge_real_code_multiply_total_firstdecode) = 2 * (ge_real_positive_multiply_total_first) /\ (ge_real_negative_multiply_total_first) = 0) \/ exists ge_signed_half_ge_multiply_total_firstdecode_real. (((ge_real_code_multiply_total_firstdecode) = 2 * ge_signed_half_ge_multiply_total_firstdecode_real + 1 /\ (ge_real_positive_multiply_total_first) = 0) /\ (ge_real_negative_multiply_total_first) = S ge_signed_half_ge_multiply_total_firstdecode_real))) /\ ((((ge_imaginary_code_multiply_total_firstdecode) = 2 * (ge_imaginary_positive_multiply_total_first) /\ (ge_imaginary_negative_multiply_total_first) = 0) \/ exists ge_signed_half_ge_multiply_total_firstdecode_imaginary. (((ge_imaginary_code_multiply_total_firstdecode) = 2 * ge_signed_half_ge_multiply_total_firstdecode_imaginary + 1 /\ (ge_imaginary_positive_multiply_total_first) = 0) /\ (ge_imaginary_negative_multiply_total_first) = S ge_signed_half_ge_multiply_total_firstdecode_imaginary))))))) -> (exists ge_real_positive_multiply_total_second ge_real_negative_multiply_total_second ge_imaginary_positive_multiply_total_second ge_imaginary_negative_multiply_total_second. (exists ge_real_code_multiply_total_seconddecode ge_imaginary_code_multiply_total_seconddecode. (((bc) = ((ge_real_code_multiply_total_seconddecode) + (ge_imaginary_code_multiply_total_seconddecode)) * S ((ge_real_code_multiply_total_seconddecode) + (ge_imaginary_code_multiply_total_seconddecode)) + ((ge_imaginary_code_multiply_total_seconddecode) + (ge_imaginary_code_multiply_total_seconddecode))) /\ (((((ge_real_code_multiply_total_seconddecode) = 2 * (ge_real_positive_multiply_total_second) /\ (ge_real_negative_multiply_total_second) = 0) \/ exists ge_signed_half_ge_multiply_total_seconddecode_real. (((ge_real_code_multiply_total_seconddecode) = 2 * ge_signed_half_ge_multiply_total_seconddecode_real + 1 /\ (ge_real_positive_multiply_total_second) = 0) /\ (ge_real_negative_multiply_total_second) = S ge_signed_half_ge_multiply_total_seconddecode_real))) /\ ((((ge_imaginary_code_multiply_total_seconddecode) = 2 * (ge_imaginary_positive_multiply_total_second) /\ (ge_imaginary_negative_multiply_total_second) = 0) \/ exists ge_signed_half_ge_multiply_total_seconddecode_imaginary. (((ge_imaginary_code_multiply_total_seconddecode) = 2 * ge_signed_half_ge_multiply_total_seconddecode_imaginary + 1 /\ (ge_imaginary_positive_multiply_total_second) = 0) /\ (ge_imaginary_negative_multiply_total_second) = S ge_signed_half_ge_multiply_total_seconddecode_imaginary))))))) -> exists cc. (exists ge_first_rp_multiply_total_output ge_first_rn_multiply_total_output ge_first_ip_multiply_total_output ge_first_in_multiply_total_output ge_second_rp_multiply_total_output ge_second_rn_multiply_total_output ge_second_ip_multiply_total_output ge_second_in_multiply_total_output. ((exists ge_representation_real_code_multiply_total_outputfirst ge_representation_imaginary_code_multiply_total_outputfirst. (((ac) = ((ge_representation_real_code_multiply_total_outputfirst) + (ge_representation_imaginary_code_multiply_total_outputfirst)) * S ((ge_representation_real_code_multiply_total_outputfirst) + (ge_representation_imaginary_code_multiply_total_outputfirst)) + ((ge_representation_imaginary_code_multiply_total_outputfirst) + (ge_representation_imaginary_code_multiply_total_outputfirst))) /\ ((exists ge_balance_positive_multiply_total_outputfirstreal ge_balance_negative_multiply_total_outputfirstreal. (((((ge_representation_real_code_multiply_total_outputfirst) = 2 * (ge_balance_positive_multiply_total_outputfirstreal) /\ (ge_balance_negative_multiply_total_outputfirstreal) = 0) \/ exists ge_signed_half_multiply_total_outputfirstrealdecode. (((ge_representation_real_code_multiply_total_outputfirst) = 2 * ge_signed_half_multiply_total_outputfirstrealdecode + 1 /\ (ge_balance_positive_multiply_total_outputfirstreal) = 0) /\ (ge_balance_negative_multiply_total_outputfirstreal) = S ge_signed_half_multiply_total_outputfirstrealdecode))) /\ ((ge_first_rp_multiply_total_output) + ge_balance_negative_multiply_total_outputfirstreal = (ge_first_rn_multiply_total_output) + ge_balance_positive_multiply_total_outputfirstreal))) /\ (exists ge_balance_positive_multiply_total_outputfirstimaginary ge_balance_negative_multiply_total_outputfirstimaginary. (((((ge_representation_imaginary_code_multiply_total_outputfirst) = 2 * (ge_balance_positive_multiply_total_outputfirstimaginary) /\ (ge_balance_negative_multiply_total_outputfirstimaginary) = 0) \/ exists ge_signed_half_multiply_total_outputfirstimaginarydecode. (((ge_representation_imaginary_code_multiply_total_outputfirst) = 2 * ge_signed_half_multiply_total_outputfirstimaginarydecode + 1 /\ (ge_balance_positive_multiply_total_outputfirstimaginary) = 0) /\ (ge_balance_negative_multiply_total_outputfirstimaginary) = S ge_signed_half_multiply_total_outputfirstimaginarydecode))) /\ ((ge_first_ip_multiply_total_output) + ge_balance_negative_multiply_total_outputfirstimaginary = (ge_first_in_multiply_total_output) + ge_balance_positive_multiply_total_outputfirstimaginary)))))) /\ ((exists ge_representation_real_code_multiply_total_outputsecond ge_representation_imaginary_code_multiply_total_outputsecond. (((bc) = ((ge_representation_real_code_multiply_total_outputsecond) + (ge_representation_imaginary_code_multiply_total_outputsecond)) * S ((ge_representation_real_code_multiply_total_outputsecond) + (ge_representation_imaginary_code_multiply_total_outputsecond)) + ((ge_representation_imaginary_code_multiply_total_outputsecond) + (ge_representation_imaginary_code_multiply_total_outputsecond))) /\ ((exists ge_balance_positive_multiply_total_outputsecondreal ge_balance_negative_multiply_total_outputsecondreal. (((((ge_representation_real_code_multiply_total_outputsecond) = 2 * (ge_balance_positive_multiply_total_outputsecondreal) /\ (ge_balance_negative_multiply_total_outputsecondreal) = 0) \/ exists ge_signed_half_multiply_total_outputsecondrealdecode. (((ge_representation_real_code_multiply_total_outputsecond) = 2 * ge_signed_half_multiply_total_outputsecondrealdecode + 1 /\ (ge_balance_positive_multiply_total_outputsecondreal) = 0) /\ (ge_balance_negative_multiply_total_outputsecondreal) = S ge_signed_half_multiply_total_outputsecondrealdecode))) /\ ((ge_second_rp_multiply_total_output) + ge_balance_negative_multiply_total_outputsecondreal = (ge_second_rn_multiply_total_output) + ge_balance_positive_multiply_total_outputsecondreal))) /\ (exists ge_balance_positive_multiply_total_outputsecondimaginary ge_balance_negative_multiply_total_outputsecondimaginary. (((((ge_representation_imaginary_code_multiply_total_outputsecond) = 2 * (ge_balance_positive_multiply_total_outputsecondimaginary) /\ (ge_balance_negative_multiply_total_outputsecondimaginary) = 0) \/ exists ge_signed_half_multiply_total_outputsecondimaginarydecode. (((ge_representation_imaginary_code_multiply_total_outputsecond) = 2 * ge_signed_half_multiply_total_outputsecondimaginarydecode + 1 /\ (ge_balance_positive_multiply_total_outputsecondimaginary) = 0) /\ (ge_balance_negative_multiply_total_outputsecondimaginary) = S ge_signed_half_multiply_total_outputsecondimaginarydecode))) /\ ((ge_second_ip_multiply_total_output) + ge_balance_negative_multiply_total_outputsecondimaginary = (ge_second_in_multiply_total_output) + ge_balance_positive_multiply_total_outputsecondimaginary)))))) /\ (exists ge_representation_real_code_multiply_total_outputoutput ge_representation_imaginary_code_multiply_total_outputoutput. (((cc) = ((ge_representation_real_code_multiply_total_outputoutput) + (ge_representation_imaginary_code_multiply_total_outputoutput)) * S ((ge_representation_real_code_multiply_total_outputoutput) + (ge_representation_imaginary_code_multiply_total_outputoutput)) + ((ge_representation_imaginary_code_multiply_total_outputoutput) + (ge_representation_imaginary_code_multiply_total_outputoutput))) /\ ((exists ge_balance_positive_multiply_total_outputoutputreal ge_balance_negative_multiply_total_outputoutputreal. (((((ge_representation_real_code_multiply_total_outputoutput) = 2 * (ge_balance_positive_multiply_total_outputoutputreal) /\ (ge_balance_negative_multiply_total_outputoutputreal) = 0) \/ exists ge_signed_half_multiply_total_outputoutputrealdecode. (((ge_representation_real_code_multiply_total_outputoutput) = 2 * ge_signed_half_multiply_total_outputoutputrealdecode + 1 /\ (ge_balance_positive_multiply_total_outputoutputreal) = 0) /\ (ge_balance_negative_multiply_total_outputoutputreal) = S ge_signed_half_multiply_total_outputoutputrealdecode))) /\ ((((((((ge_first_rp_multiply_total_output) * (ge_second_rp_multiply_total_output))) + (((ge_first_rn_multiply_total_output) * (ge_second_rn_multiply_total_output))))) + (((((ge_first_ip_multiply_total_output) * (ge_second_in_multiply_total_output))) + (((ge_first_in_multiply_total_output) * (ge_second_ip_multiply_total_output))))))) + ge_balance_negative_multiply_total_outputoutputreal = (((((((ge_first_rp_multiply_total_output) * (ge_second_rn_multiply_total_output))) + (((ge_first_rn_multiply_total_output) * (ge_second_rp_multiply_total_output))))) + (((((ge_first_ip_multiply_total_output) * (ge_second_ip_multiply_total_output))) + (((ge_first_in_multiply_total_output) * (ge_second_in_multiply_total_output))))))) + ge_balance_positive_multiply_total_outputoutputreal))) /\ (exists ge_balance_positive_multiply_total_outputoutputimaginary ge_balance_negative_multiply_total_outputoutputimaginary. (((((ge_representation_imaginary_code_multiply_total_outputoutput) = 2 * (ge_balance_positive_multiply_total_outputoutputimaginary) /\ (ge_balance_negative_multiply_total_outputoutputimaginary) = 0) \/ exists ge_signed_half_multiply_total_outputoutputimaginarydecode. (((ge_representation_imaginary_code_multiply_total_outputoutput) = 2 * ge_signed_half_multiply_total_outputoutputimaginarydecode + 1 /\ (ge_balance_positive_multiply_total_outputoutputimaginary) = 0) /\ (ge_balance_negative_multiply_total_outputoutputimaginary) = S ge_signed_half_multiply_total_outputoutputimaginarydecode))) /\ ((((((((ge_first_rp_multiply_total_output) * (ge_second_ip_multiply_total_output))) + (((ge_first_rn_multiply_total_output) * (ge_second_in_multiply_total_output))))) + (((((ge_first_ip_multiply_total_output) * (ge_second_rp_multiply_total_output))) + (((ge_first_in_multiply_total_output) * (ge_second_rn_multiply_total_output))))))) + ge_balance_negative_multiply_total_outputoutputimaginary = (((((((ge_first_rp_multiply_total_output) * (ge_second_in_multiply_total_output))) + (((ge_first_rn_multiply_total_output) * (ge_second_ip_multiply_total_output))))) + (((((ge_first_ip_multiply_total_output) * (ge_second_rn_multiply_total_output))) + (((ge_first_in_multiply_total_output) * (ge_second_rp_multiply_total_output))))))) + ge_balance_positive_multiply_total_outputoutputimaginary)))))))))Constructive proof overview
Generated structural guide
Construct an actual canonical Gaussian multiply output for every pair of valid canonical Gaussian inputs.
The unchanged tactic script uses 3 declared prerequisites and contains 47 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
GI003F gaussian_representation_exists GI0057 gaussian_multiply_of_representations GI0044 gaussian_decode_representationDirect 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
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 (3)
01Fix variables and assumptionsL1–4
02Separate the logical casesL5–12
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
03Establish houtputL13–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian representation exists.
- L13
have houtput : ∃ cc. ZPairRep(cc,x · x4 + x1 · x5 + (x2 · x7 + x3 · x6),x · x5 + x1 · x4 + (x2 · x6 + x3 · x7),x · x6 + x1 · x7 + (x2 · x4 + x3 · x5),x · x7 + x1 · x6 + (x2 · x5 + x3 · x4))Definitions: ZPairRep - L14
specialize gaussian_representation_exists ((((((x) * (x4))) + (((x1) * (x5))))) + (((((x2) * (x7))) + (((x3) * (x6)))))) - L15
specialize gaussian_representation_exists ((((((x) * (x5))) + (((x1) * (x4))))) + (((((x2) * (x6))) + (((x3) * (x7)))))) - L16
specialize gaussian_representation_exists ((((((x) * (x6))) + (((x1) * (x7))))) + (((((x2) * (x4))) + (((x3) * (x5)))))) - L17
specialize gaussian_representation_exists ((((((x) * (x7))) + (((x1) * (x6))))) + (((((x2) * (x5))) + (((x3) * (x4)))))) - L18
apply gaussian_representation_exists
04Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
cases houtput
05Construct an explicit witnessL20–20
Supply the displayed value, then prove that it has the required property.
- L20
exists x8
06Use earlier factsL21–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L21
specialize gaussian_multiply_of_representations ac - L22
specialize gaussian_multiply_of_representations bc - L23
specialize gaussian_multiply_of_representations x8 - L24
specialize gaussian_multiply_of_representations x - L25
specialize gaussian_multiply_of_representations x1 - L26
specialize gaussian_multiply_of_representations x2 - L27
specialize gaussian_multiply_of_representations x3 - L28
specialize gaussian_multiply_of_representations x4 - L29
specialize gaussian_multiply_of_representations x5 - L30
specialize gaussian_multiply_of_representations x6
07Use earlier factsL31–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L31
specialize gaussian_multiply_of_representations x7 - L32
apply gaussian_multiply_of_representations - L33
specialize gaussian_decode_representation ac - L34
specialize gaussian_decode_representation x - L35
specialize gaussian_decode_representation x1 - L36
specialize gaussian_decode_representation x2 - L37
specialize gaussian_decode_representation x3 - L38
apply gaussian_decode_representation - L39
exact hfirst_witness_witness_witness_witness - L40
specialize gaussian_decode_representation bc
08Use earlier factsL41–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 47 lines
- 0001
intro ac - 0002
intro bc - 0003
intro hfirst - 0004
intro hsecond - 0005
cases hfirst - 0006
cases hfirst_witness - 0007
cases hfirst_witness_witness - 0008
cases hfirst_witness_witness_witness - 0009
cases hsecond - 0010
cases hsecond_witness - 0011
cases hsecond_witness_witness - 0012
cases hsecond_witness_witness_witness - 0013
have houtput : exists cc. (exists ge_representation_real_code_multiply_construct_output ge_representation_imaginary_code_multiply_construct_output. (((cc) = ((ge_representation_real_code_multiply_construct_output) + (ge_representation_imaginary_code_multiply_construct_output)) * S ((ge_representation_real_code_multiply_construct_output) + (ge_representation_imaginary_code_multiply_construct_output)) + ((ge_representation_imaginary_code_multiply_construct_output) + (ge_representation_imaginary_code_multiply_construct_output))) /\ ((exists ge_balance_positive_multiply_construct_outputreal ge_balance_negative_multiply_construct_outputreal. (((((ge_representation_real_code_multiply_construct_output) = 2 * (ge_balance_positive_multiply_construct_outputreal) /\ (ge_balance_negative_multiply_construct_outputreal) = 0) \/ exists ge_signed_half_multiply_construct_outputrealdecode. (((ge_representation_real_code_multiply_construct_output) = 2 * ge_signed_half_multiply_construct_outputrealdecode + 1 /\ (ge_balance_positive_multiply_construct_outputreal) = 0) /\ (ge_balance_negative_multiply_construct_outputreal) = S ge_signed_half_multiply_construct_outputrealdecode))) /\ ((((((((x) * (x4))) + (((x1) * (x5))))) + (((((x2) * (x7))) + (((x3) * (x6))))))) + ge_balance_negative_multiply_construct_outputreal = (((((((x) * (x5))) + (((x1) * (x4))))) + (((((x2) * (x6))) + (((x3) * (x7))))))) + ge_balance_positive_multiply_construct_outputreal))) /\ (exists ge_balance_positive_multiply_construct_outputimaginary ge_balance_negative_multiply_construct_outputimaginary. (((((ge_representation_imaginary_code_multiply_construct_output) = 2 * (ge_balance_positive_multiply_construct_outputimaginary) /\ (ge_balance_negative_multiply_construct_outputimaginary) = 0) \/ exists ge_signed_half_multiply_construct_outputimaginarydecode. (((ge_representation_imaginary_code_multiply_construct_output) = 2 * ge_signed_half_multiply_construct_outputimaginarydecode + 1 /\ (ge_balance_positive_multiply_construct_outputimaginary) = 0) /\ (ge_balance_negative_multiply_construct_outputimaginary) = S ge_signed_half_multiply_construct_outputimaginarydecode))) /\ ((((((((x) * (x6))) + (((x1) * (x7))))) + (((((x2) * (x4))) + (((x3) * (x5))))))) + ge_balance_negative_multiply_construct_outputimaginary = (((((((x) * (x7))) + (((x1) * (x6))))) + (((((x2) * (x5))) + (((x3) * (x4))))))) + ge_balance_positive_multiply_construct_outputimaginary)))))) - 0014
specialize gaussian_representation_exists ((((((x) * (x4))) + (((x1) * (x5))))) + (((((x2) * (x7))) + (((x3) * (x6)))))) - 0015
specialize gaussian_representation_exists ((((((x) * (x5))) + (((x1) * (x4))))) + (((((x2) * (x6))) + (((x3) * (x7)))))) - 0016
specialize gaussian_representation_exists ((((((x) * (x6))) + (((x1) * (x7))))) + (((((x2) * (x4))) + (((x3) * (x5)))))) - 0017
specialize gaussian_representation_exists ((((((x) * (x7))) + (((x1) * (x6))))) + (((((x2) * (x5))) + (((x3) * (x4)))))) - 0018
apply gaussian_representation_exists - 0019
cases houtput - 0020
exists x8 - 0021
specialize gaussian_multiply_of_representations ac - 0022
specialize gaussian_multiply_of_representations bc - 0023
specialize gaussian_multiply_of_representations x8 - 0024
specialize gaussian_multiply_of_representations x - 0025
specialize gaussian_multiply_of_representations x1 - 0026
specialize gaussian_multiply_of_representations x2 - 0027
specialize gaussian_multiply_of_representations x3 - 0028
specialize gaussian_multiply_of_representations x4 - 0029
specialize gaussian_multiply_of_representations x5 - 0030
specialize gaussian_multiply_of_representations x6 - 0031
specialize gaussian_multiply_of_representations x7 - 0032
apply gaussian_multiply_of_representations - 0033
specialize gaussian_decode_representation ac - 0034
specialize gaussian_decode_representation x - 0035
specialize gaussian_decode_representation x1 - 0036
specialize gaussian_decode_representation x2 - 0037
specialize gaussian_decode_representation x3 - 0038
apply gaussian_decode_representation - 0039
exact hfirst_witness_witness_witness_witness - 0040
specialize gaussian_decode_representation bc - 0041
specialize gaussian_decode_representation x4 - 0042
specialize gaussian_decode_representation x5 - 0043
specialize gaussian_decode_representation x6 - 0044
specialize gaussian_decode_representation x7 - 0045
apply gaussian_decode_representation - 0046
exact hsecond_witness_witness_witness_witness - 0047
exact houtput_witness