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.
Statement with defined notation
∀ k. ∀ a. ∀ b. ∀ c. ∀ d. ∀ e. ∀ f. ∀ g. ∀ h. ModEq(k,e · e + f · f + g · g + h · h,0) → ModEq(k,a,e) → ModEq(k,b,f) → ModEq(k,c,g) → ModEq(k,d,h) → ModEq(k,a · e + b · f + c · g + d · h,0) ∧ (ModEq(k,a · f + c · h,b · e + d · g) ∧ (ModEq(k,a · g + d · f,c · e + b · h) ∧ ModEq(k,a · h + b · g,d · e + c · f)))Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall k a b c d e f g h. (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_norm ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_norm. (e * e + f * f + g * g + h * h) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_norm = (0) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_norm) -> (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_0 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_0. (a) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_0 = (e) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_0) -> (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_1 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_1. (b) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_1 = (f) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_1) -> (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_2 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_2. (c) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_2 = (g) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_2) -> (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_3 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_3. (d) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_3 = (h) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_3) -> ((exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0. (a * e + b * f + c * g + d * h) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0 = (0) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0) /\ ((exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_1 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_1. (a * f + c * h) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_1 = (b * e + d * g) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_1) /\ ((exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_2 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_2. (a * g + d * f) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_2 = (c * e + b * h) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_2) /\ (exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_3 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_3. (a * h + b * g) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_3 = (d * e + c * f) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_3))))Proof neighborhood
Direct theorem prerequisites
FS005M four_square_signed_cross_positive FS005N four_square_signed_cross_negative FS005O four_square_signed_cross_mixed_zero FS005T four_square_signed_cross_mixed_zero_reversed FS005U four_square_signed_dot_positive FS005V four_square_signed_dot_negative_zero FS005P four_square_signed_mod_zero_add FS005Q four_square_signed_mod_zero_equivalent FS005W four_square_signed_mod_zero_plus_congruent FS005X four_square_signed_partition_balance mod_eq_add · Stable closed mod_eq_symm · Stable closed mod_eq_trans · Stable closed add_assoc · Stable closed add_comm · Stable closed FS0006 four_square_add_swap_right_tailDirect theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.
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 (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hpair01L15–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L15
have hpair01 : ModEq(k,a · f,b · e)Definitions: ModEq(k,a · f,b · e)Original native command in the exact edition - L16
specialize four_square_signed_cross_positive k - L17
specialize four_square_signed_cross_positive a - L18
specialize four_square_signed_cross_positive b - L19
specialize four_square_signed_cross_positive e - L20
specialize four_square_signed_cross_positive f - L21
apply four_square_signed_cross_positive - L22
exact horient0 - L23
exact horient1
04Establish hpair02L24–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L24
have hpair02 : ModEq(k,a · g,c · e)Definitions: ModEq(k,a · g,c · e)Original native command in the exact edition - L25
specialize four_square_signed_cross_positive k - L26
specialize four_square_signed_cross_positive a - L27
specialize four_square_signed_cross_positive c - L28
specialize four_square_signed_cross_positive e - L29
specialize four_square_signed_cross_positive g - L30
apply four_square_signed_cross_positive - L31
exact horient0 - L32
exact horient2
05Establish hpair03L33–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L33
have hpair03 : ModEq(k,a · h,d · e)Definitions: ModEq(k,a · h,d · e)Original native command in the exact edition - L34
specialize four_square_signed_cross_positive k - L35
specialize four_square_signed_cross_positive a - L36
specialize four_square_signed_cross_positive d - L37
specialize four_square_signed_cross_positive e - L38
specialize four_square_signed_cross_positive h - L39
apply four_square_signed_cross_positive - L40
exact horient0 - L41
exact horient3
06Establish hpair12L42–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L42
have hpair12 : ModEq(k,b · g,c · f)Definitions: ModEq(k,b · g,c · f)Original native command in the exact edition - L43
specialize four_square_signed_cross_positive k - L44
specialize four_square_signed_cross_positive b - L45
specialize four_square_signed_cross_positive c - L46
specialize four_square_signed_cross_positive f - L47
specialize four_square_signed_cross_positive g - L48
apply four_square_signed_cross_positive - L49
exact horient1 - L50
exact horient2
07Establish hpair13L51–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L51
have hpair13 : ModEq(k,b · h,d · f)Definitions: ModEq(k,b · h,d · f)Original native command in the exact edition - L52
specialize four_square_signed_cross_positive k - L53
specialize four_square_signed_cross_positive b - L54
specialize four_square_signed_cross_positive d - L55
specialize four_square_signed_cross_positive f - L56
specialize four_square_signed_cross_positive h - L57
apply four_square_signed_cross_positive - L58
exact horient1 - L59
exact horient3
08Establish hpair23L60–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed cross positive.
- L60
have hpair23 : ModEq(k,c · h,d · g)Definitions: ModEq(k,c · h,d · g)Original native command in the exact edition - L61
specialize four_square_signed_cross_positive k - L62
specialize four_square_signed_cross_positive c - L63
specialize four_square_signed_cross_positive d - L64
specialize four_square_signed_cross_positive g - L65
specialize four_square_signed_cross_positive h - L66
apply four_square_signed_cross_positive - L67
exact horient2 - L68
exact horient3
09Establish hdot0L69–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed dot positive.
- L69
have hdot0 : ModEq(k,a · e,e · e)Definitions: ModEq(k,a · e,e · e)Original native command in the exact edition - L70
specialize four_square_signed_dot_positive k - L71
specialize four_square_signed_dot_positive a - L72
specialize four_square_signed_dot_positive e - L73
apply four_square_signed_dot_positive - L74
exact horient0
10Establish hdot1L75–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed dot positive.
- L75
have hdot1 : ModEq(k,b · f,f · f)Definitions: ModEq(k,b · f,f · f)Original native command in the exact edition - L76
specialize four_square_signed_dot_positive k - L77
specialize four_square_signed_dot_positive b - L78
specialize four_square_signed_dot_positive f - L79
apply four_square_signed_dot_positive - L80
exact horient1
11Establish hdot2L81–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed dot positive.
- L81
have hdot2 : ModEq(k,c · g,g · g)Definitions: ModEq(k,c · g,g · g)Original native command in the exact edition - L82
specialize four_square_signed_dot_positive k - L83
specialize four_square_signed_dot_positive c - L84
specialize four_square_signed_dot_positive g - L85
apply four_square_signed_dot_positive - L86
exact horient2
12Establish hdot3L87–92
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square signed dot positive.
- L87
have hdot3 : ModEq(k,d · h,h · h)Definitions: ModEq(k,d · h,h · h)Original native command in the exact edition - L88
specialize four_square_signed_dot_positive k - L89
specialize four_square_signed_dot_positive d - L90
specialize four_square_signed_dot_positive h - L91
apply four_square_signed_dot_positive - L92
exact horient3
13Establish hpositive1L93–101
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L93
have hpositive1 : ModEq(k,a · e + b · f,e · e + f · f)Definitions: ModEq(k,a · e + b · f,e · e + f · f)Original native command in the exact edition - L94
specialize mod_eq_add k - L95
specialize mod_eq_add (a * e) - L96
specialize mod_eq_add (e * e) - L97
specialize mod_eq_add (b * f) - L98
specialize mod_eq_add (f * f) - L99
apply mod_eq_add - L100
exact hdot0 - L101
exact hdot1
14Establish hpositive2L102–110
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L102
have hpositive2 : ModEq(k,a · e + b · f + c · g,e · e + f · f + g · g)Definitions: ModEq(k,a · e + b · f + c · g,e · e + f · f + g · g)Original native command in the exact edition - L103
specialize mod_eq_add k - L104
specialize mod_eq_add ((a * e) + (b * f)) - L105
specialize mod_eq_add ((e * e) + (f * f)) - L106
specialize mod_eq_add (c * g) - L107
specialize mod_eq_add (g * g) - L108
apply mod_eq_add - L109
exact hpositive1 - L110
exact hdot2
15Establish hpositive3L111–119
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L111
have hpositive3 : ModEq(k,a · e + b · f + c · g + d · h,e · e + f · f + g · g + h · h)Definitions: ModEq(k,a · e + b · f + c · g + d · h,e · e + f · f + g · g + h · h)Original native command in the exact edition - L112
specialize mod_eq_add k - L113
specialize mod_eq_add (((a * e) + (b * f)) + (c * g)) - L114
specialize mod_eq_add (((e * e) + (f * f)) + (g * g)) - L115
specialize mod_eq_add (d * h) - L116
specialize mod_eq_add (h * h) - L117
apply mod_eq_add - L118
exact hpositive2 - L119
exact hdot3
16Establish hblock0L120–127
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L120
have hblock0 : ModEq(k,a · e + b · f + c · g + d · h,0)Definitions: ModEq(k,a · e + b · f + c · g + d · h,0)Original native command in the exact edition - L121
specialize mod_eq_trans k - L122
specialize mod_eq_trans (a * e + b * f + c * g + d * h) - L123
specialize mod_eq_trans (e * e + f * f + g * g + h * h) - L124
specialize mod_eq_trans 0 - L125
apply mod_eq_trans - L126
exact hpositive3 - L127
exact hnorm
17Establish hblock1L128–136
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L128
have hblock1 : ModEq(k,a · f + c · h,b · e + d · g)Definitions: ModEq(k,a · f + c · h,b · e + d · g)Original native command in the exact edition - L129
specialize mod_eq_add k - L130
specialize mod_eq_add (a * f) - L131
specialize mod_eq_add (b * e) - L132
specialize mod_eq_add (c * h) - L133
specialize mod_eq_add (d * g) - L134
apply mod_eq_add - L135
exact hpair01 - L136
exact hpair23
18Establish hpair13_reverseL137–142
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L137
have hpair13_reverse : ModEq(k,d · f,b · h)Definitions: ModEq(k,d · f,b · h)Original native command in the exact edition - L138
specialize mod_eq_symm k - L139
specialize mod_eq_symm (b * h) - L140
specialize mod_eq_symm (d * f) - L141
apply mod_eq_symm - L142
exact hpair13
19Establish hblock2L143–151
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L143
have hblock2 : ModEq(k,a · g + d · f,c · e + b · h)Definitions: ModEq(k,a · g + d · f,c · e + b · h)Original native command in the exact edition - L144
specialize mod_eq_add k - L145
specialize mod_eq_add (a * g) - L146
specialize mod_eq_add (c * e) - L147
specialize mod_eq_add (d * f) - L148
specialize mod_eq_add (b * h) - L149
apply mod_eq_add - L150
exact hpair02 - L151
exact hpair13_reverse
20Establish hblock3L152–160
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L152
have hblock3 : ModEq(k,a · h + b · g,d · e + c · f)Definitions: ModEq(k,a · h + b · g,d · e + c · f)Original native command in the exact edition - L153
specialize mod_eq_add k - L154
specialize mod_eq_add (a * h) - L155
specialize mod_eq_add (d * e) - L156
specialize mod_eq_add (b * g) - L157
specialize mod_eq_add (c * f) - L158
apply mod_eq_add - L159
exact hpair03 - L160
exact hpair12
21Separate the logical casesL161–161
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L161
split
22Use earlier factsL162–162
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L162
exact hblock0
23Separate the logical casesL163–163
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L163
split
24Use earlier factsL164–164
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L164
exact hblock1
25Separate the logical casesL165–165
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L165
split
Original defined command ledger · 167 lines
- 0001
intro k - 0002
intro a - 0003
intro b - 0004
intro c - 0005
intro d - 0006
intro e - 0007
intro f - 0008
intro g - 0009
intro h - 0010
intro hnorm - 0011
intro horient0 - 0012
intro horient1 - 0013
intro horient2 - 0014
intro horient3 - 0015
have hpair01 : ModEq(k,a · f,b · e)Exact native replay line
have hpair01 : exists ftcn_left_fssq_surface_pair_01 ftcn_right_fssq_surface_pair_01. (a * f) + (k) * ftcn_left_fssq_surface_pair_01 = (b * e) + (k) * ftcn_right_fssq_surface_pair_01 - 0016
specialize four_square_signed_cross_positive k - 0017
specialize four_square_signed_cross_positive a - 0018
specialize four_square_signed_cross_positive b - 0019
specialize four_square_signed_cross_positive e - 0020
specialize four_square_signed_cross_positive f - 0021
apply four_square_signed_cross_positive - 0022
exact horient0 - 0023
exact horient1 - 0024
have hpair02 : ModEq(k,a · g,c · e)Exact native replay line
have hpair02 : exists ftcn_left_fssq_surface_pair_02 ftcn_right_fssq_surface_pair_02. (a * g) + (k) * ftcn_left_fssq_surface_pair_02 = (c * e) + (k) * ftcn_right_fssq_surface_pair_02 - 0025
specialize four_square_signed_cross_positive k - 0026
specialize four_square_signed_cross_positive a - 0027
specialize four_square_signed_cross_positive c - 0028
specialize four_square_signed_cross_positive e - 0029
specialize four_square_signed_cross_positive g - 0030
apply four_square_signed_cross_positive - 0031
exact horient0 - 0032
exact horient2 - 0033
have hpair03 : ModEq(k,a · h,d · e)Exact native replay line
have hpair03 : exists ftcn_left_fssq_surface_pair_03 ftcn_right_fssq_surface_pair_03. (a * h) + (k) * ftcn_left_fssq_surface_pair_03 = (d * e) + (k) * ftcn_right_fssq_surface_pair_03 - 0034
specialize four_square_signed_cross_positive k - 0035
specialize four_square_signed_cross_positive a - 0036
specialize four_square_signed_cross_positive d - 0037
specialize four_square_signed_cross_positive e - 0038
specialize four_square_signed_cross_positive h - 0039
apply four_square_signed_cross_positive - 0040
exact horient0 - 0041
exact horient3 - 0042
have hpair12 : ModEq(k,b · g,c · f)Exact native replay line
have hpair12 : exists ftcn_left_fssq_surface_pair_12 ftcn_right_fssq_surface_pair_12. (b * g) + (k) * ftcn_left_fssq_surface_pair_12 = (c * f) + (k) * ftcn_right_fssq_surface_pair_12 - 0043
specialize four_square_signed_cross_positive k - 0044
specialize four_square_signed_cross_positive b - 0045
specialize four_square_signed_cross_positive c - 0046
specialize four_square_signed_cross_positive f - 0047
specialize four_square_signed_cross_positive g - 0048
apply four_square_signed_cross_positive - 0049
exact horient1 - 0050
exact horient2 - 0051
have hpair13 : ModEq(k,b · h,d · f)Exact native replay line
have hpair13 : exists ftcn_left_fssq_surface_pair_13 ftcn_right_fssq_surface_pair_13. (b * h) + (k) * ftcn_left_fssq_surface_pair_13 = (d * f) + (k) * ftcn_right_fssq_surface_pair_13 - 0052
specialize four_square_signed_cross_positive k - 0053
specialize four_square_signed_cross_positive b - 0054
specialize four_square_signed_cross_positive d - 0055
specialize four_square_signed_cross_positive f - 0056
specialize four_square_signed_cross_positive h - 0057
apply four_square_signed_cross_positive - 0058
exact horient1 - 0059
exact horient3 - 0060
have hpair23 : ModEq(k,c · h,d · g)Exact native replay line
have hpair23 : exists ftcn_left_fssq_surface_pair_23 ftcn_right_fssq_surface_pair_23. (c * h) + (k) * ftcn_left_fssq_surface_pair_23 = (d * g) + (k) * ftcn_right_fssq_surface_pair_23 - 0061
specialize four_square_signed_cross_positive k - 0062
specialize four_square_signed_cross_positive c - 0063
specialize four_square_signed_cross_positive d - 0064
specialize four_square_signed_cross_positive g - 0065
specialize four_square_signed_cross_positive h - 0066
apply four_square_signed_cross_positive - 0067
exact horient2 - 0068
exact horient3 - 0069
have hdot0 : ModEq(k,a · e,e · e)Exact native replay line
have hdot0 : exists ftcn_left_fssq_surface_dot_0 ftcn_right_fssq_surface_dot_0. (a * e) + (k) * ftcn_left_fssq_surface_dot_0 = (e * e) + (k) * ftcn_right_fssq_surface_dot_0 - 0070
specialize four_square_signed_dot_positive k - 0071
specialize four_square_signed_dot_positive a - 0072
specialize four_square_signed_dot_positive e - 0073
apply four_square_signed_dot_positive - 0074
exact horient0 - 0075
have hdot1 : ModEq(k,b · f,f · f)Exact native replay line
have hdot1 : exists ftcn_left_fssq_surface_dot_1 ftcn_right_fssq_surface_dot_1. (b * f) + (k) * ftcn_left_fssq_surface_dot_1 = (f * f) + (k) * ftcn_right_fssq_surface_dot_1 - 0076
specialize four_square_signed_dot_positive k - 0077
specialize four_square_signed_dot_positive b - 0078
specialize four_square_signed_dot_positive f - 0079
apply four_square_signed_dot_positive - 0080
exact horient1 - 0081
have hdot2 : ModEq(k,c · g,g · g)Exact native replay line
have hdot2 : exists ftcn_left_fssq_surface_dot_2 ftcn_right_fssq_surface_dot_2. (c * g) + (k) * ftcn_left_fssq_surface_dot_2 = (g * g) + (k) * ftcn_right_fssq_surface_dot_2 - 0082
specialize four_square_signed_dot_positive k - 0083
specialize four_square_signed_dot_positive c - 0084
specialize four_square_signed_dot_positive g - 0085
apply four_square_signed_dot_positive - 0086
exact horient2 - 0087
have hdot3 : ModEq(k,d · h,h · h)Exact native replay line
have hdot3 : exists ftcn_left_fssq_surface_dot_3 ftcn_right_fssq_surface_dot_3. (d * h) + (k) * ftcn_left_fssq_surface_dot_3 = (h * h) + (k) * ftcn_right_fssq_surface_dot_3 - 0088
specialize four_square_signed_dot_positive k - 0089
specialize four_square_signed_dot_positive d - 0090
specialize four_square_signed_dot_positive h - 0091
apply four_square_signed_dot_positive - 0092
exact horient3 - 0093
have hpositive1 : ModEq(k,a · e + b · f,e · e + f · f)Exact native replay line
have hpositive1 : exists ftcn_left_fssq_surface_hpositive1 ftcn_right_fssq_surface_hpositive1. ((a * e) + (b * f)) + (k) * ftcn_left_fssq_surface_hpositive1 = ((e * e) + (f * f)) + (k) * ftcn_right_fssq_surface_hpositive1 - 0094
specialize mod_eq_add k - 0095
specialize mod_eq_add (a * e) - 0096
specialize mod_eq_add (e * e) - 0097
specialize mod_eq_add (b * f) - 0098
specialize mod_eq_add (f * f) - 0099
apply mod_eq_add - 0100
exact hdot0 - 0101
exact hdot1 - 0102
have hpositive2 : ModEq(k,a · e + b · f + c · g,e · e + f · f + g · g)Exact native replay line
have hpositive2 : exists ftcn_left_fssq_surface_hpositive2 ftcn_right_fssq_surface_hpositive2. (((a * e) + (b * f)) + (c * g)) + (k) * ftcn_left_fssq_surface_hpositive2 = (((e * e) + (f * f)) + (g * g)) + (k) * ftcn_right_fssq_surface_hpositive2 - 0103
specialize mod_eq_add k - 0104
specialize mod_eq_add ((a * e) + (b * f)) - 0105
specialize mod_eq_add ((e * e) + (f * f)) - 0106
specialize mod_eq_add (c * g) - 0107
specialize mod_eq_add (g * g) - 0108
apply mod_eq_add - 0109
exact hpositive1 - 0110
exact hdot2 - 0111
have hpositive3 : ModEq(k,a · e + b · f + c · g + d · h,e · e + f · f + g · g + h · h)Exact native replay line
have hpositive3 : exists ftcn_left_fssq_surface_hpositive3 ftcn_right_fssq_surface_hpositive3. ((((a * e) + (b * f)) + (c * g)) + (d * h)) + (k) * ftcn_left_fssq_surface_hpositive3 = ((((e * e) + (f * f)) + (g * g)) + (h * h)) + (k) * ftcn_right_fssq_surface_hpositive3 - 0112
specialize mod_eq_add k - 0113
specialize mod_eq_add (((a * e) + (b * f)) + (c * g)) - 0114
specialize mod_eq_add (((e * e) + (f * f)) + (g * g)) - 0115
specialize mod_eq_add (d * h) - 0116
specialize mod_eq_add (h * h) - 0117
apply mod_eq_add - 0118
exact hpositive2 - 0119
exact hdot3 - 0120
have hblock0 : ModEq(k,a · e + b · f + c · g + d · h,0)Exact native replay line
have hblock0 : exists ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0 ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0. (a * e + b * f + c * g + d * h) + (k) * ftcn_left_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0 = (0) + (k) * ftcn_right_fssq_surface_four_square_signed_conjugate_positive_blocks_block_0 - 0121
specialize mod_eq_trans k - 0122
specialize mod_eq_trans (a * e + b * f + c * g + d * h) - 0123
specialize mod_eq_trans (e * e + f * f + g * g + h * h) - 0124
specialize mod_eq_trans 0 - 0125
apply mod_eq_trans - 0126
exact hpositive3 - 0127
exact hnorm - 0128
have hblock1 : ModEq(k,a · f + c · h,b · e + d · g)Exact native replay line
have hblock1 : exists ftcn_left_fssq_surface_hblock1 ftcn_right_fssq_surface_hblock1. ((a * f) + (c * h)) + (k) * ftcn_left_fssq_surface_hblock1 = ((b * e) + (d * g)) + (k) * ftcn_right_fssq_surface_hblock1 - 0129
specialize mod_eq_add k - 0130
specialize mod_eq_add (a * f) - 0131
specialize mod_eq_add (b * e) - 0132
specialize mod_eq_add (c * h) - 0133
specialize mod_eq_add (d * g) - 0134
apply mod_eq_add - 0135
exact hpair01 - 0136
exact hpair23 - 0137
have hpair13_reverse : ModEq(k,d · f,b · h)Exact native replay line
have hpair13_reverse : exists ftcn_left_fssq_surface_hpair13_reverse ftcn_right_fssq_surface_hpair13_reverse. (d * f) + (k) * ftcn_left_fssq_surface_hpair13_reverse = (b * h) + (k) * ftcn_right_fssq_surface_hpair13_reverse - 0138
specialize mod_eq_symm k - 0139
specialize mod_eq_symm (b * h) - 0140
specialize mod_eq_symm (d * f) - 0141
apply mod_eq_symm - 0142
exact hpair13 - 0143
have hblock2 : ModEq(k,a · g + d · f,c · e + b · h)Exact native replay line
have hblock2 : exists ftcn_left_fssq_surface_hblock2 ftcn_right_fssq_surface_hblock2. ((a * g) + (d * f)) + (k) * ftcn_left_fssq_surface_hblock2 = ((c * e) + (b * h)) + (k) * ftcn_right_fssq_surface_hblock2 - 0144
specialize mod_eq_add k - 0145
specialize mod_eq_add (a * g) - 0146
specialize mod_eq_add (c * e) - 0147
specialize mod_eq_add (d * f) - 0148
specialize mod_eq_add (b * h) - 0149
apply mod_eq_add - 0150
exact hpair02 - 0151
exact hpair13_reverse - 0152
have hblock3 : ModEq(k,a · h + b · g,d · e + c · f)Exact native replay line
have hblock3 : exists ftcn_left_fssq_surface_hblock3 ftcn_right_fssq_surface_hblock3. ((a * h) + (b * g)) + (k) * ftcn_left_fssq_surface_hblock3 = ((d * e) + (c * f)) + (k) * ftcn_right_fssq_surface_hblock3 - 0153
specialize mod_eq_add k - 0154
specialize mod_eq_add (a * h) - 0155
specialize mod_eq_add (d * e) - 0156
specialize mod_eq_add (b * g) - 0157
specialize mod_eq_add (c * f) - 0158
apply mod_eq_add - 0159
exact hpair03 - 0160
exact hpair12 - 0161
split - 0162
exact hblock0 - 0163
split - 0164
exact hblock1 - 0165
split - 0166
exact hblock2 - 0167
exact hblock3