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
∀ p. ∀ b. ∀ c. ∀ m. ∀ Q. (∀ x. ∀ y. ∀ z. Lt(x,m) → BetaAt(b,c,x + x,y) → BetaAt(b,c,S (x + x),z) → BalancedInverse(p,y,z)) → Product(b,c,m + m,Q) → ModEq(p,Q,1)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
6 occurrences
In local proof propositions
14 occurrences
Exact expanded native-PA statement
forall p b c m Q. (forall wpp_pair_pairs wpp_left_pairs wpp_right_pairs. (exists wpp_gap_pairs_pair_bound. wpp_gap_pairs_pair_bound + S (wpp_pair_pairs) = m) -> (((exists wpp_beta_height_pairs_left_entry. wpp_beta_height_pairs_left_entry + S (wpp_left_pairs) = S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_left_entry. b = wpp_beta_quotient_pairs_left_entry * S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_left_pairs))) -> (((exists wpp_beta_height_pairs_right_entry. wpp_beta_height_pairs_right_entry + S (wpp_right_pairs) = S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_right_entry. b = wpp_beta_quotient_pairs_right_entry * S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_right_pairs))) -> (exists wpp_mod_left_pairs_pair_mod wpp_mod_right_pairs_pair_mod. (wpp_left_pairs * wpp_right_pairs) + p * wpp_mod_left_pairs_pair_mod = (1) + p * wpp_mod_right_pairs_pair_mod)) -> (exists wpp_trace_code_pair_product wpp_trace_scale_pair_product. ((((exists wpp_beta_height_pair_product_start. wpp_beta_height_pair_product_start + S (1) = S ((S (0)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_start. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_start * S ((S (0)) * wpp_trace_scale_pair_product) + (1))) /\ ((((exists wpp_beta_height_pair_product_terminal. wpp_beta_height_pair_product_terminal + S (Q) = S ((S (m + m)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_terminal. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_terminal * S ((S (m + m)) * wpp_trace_scale_pair_product) + (Q))) /\ forall wpp_index_pair_product. (exists wpp_gap_pair_product_bound. wpp_gap_pair_product_bound + S (wpp_index_pair_product) = m + m) -> exists wpp_factor_pair_product wpp_prefix_pair_product wpp_successor_pair_product. ((((exists wpp_beta_height_pair_product_factor. wpp_beta_height_pair_product_factor + S (wpp_factor_pair_product) = S ((S (wpp_index_pair_product)) * c)) /\ exists wpp_beta_quotient_pair_product_factor. b = wpp_beta_quotient_pair_product_factor * S ((S (wpp_index_pair_product)) * c) + (wpp_factor_pair_product))) /\ ((((exists wpp_beta_height_pair_product_prefix. wpp_beta_height_pair_product_prefix + S (wpp_prefix_pair_product) = S ((S (wpp_index_pair_product)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_prefix. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_prefix * S ((S (wpp_index_pair_product)) * wpp_trace_scale_pair_product) + (wpp_prefix_pair_product))) /\ ((((exists wpp_beta_height_pair_product_successor. wpp_beta_height_pair_product_successor + S (wpp_successor_pair_product) = S ((S (S (wpp_index_pair_product))) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_successor. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_successor * S ((S (S (wpp_index_pair_product))) * wpp_trace_scale_pair_product) + (wpp_successor_pair_product))) /\ wpp_successor_pair_product = wpp_prefix_pair_product * wpp_factor_pair_product)))))) -> (exists wpp_mod_left_pair_result wpp_mod_right_pair_result. (Q) + p * wpp_mod_left_pair_result = (1) + p * wpp_mod_right_pair_result)Proof neighborhood
Direct theorem prerequisites
PA009Y beta_product_double_succ_decompose PA0049 beta_product_zero PA002O le_succ PA001A le_refl PA0023 mod_eq_refl PA004E mod_eq_mul PA000E add_succ_left PA000B mul_assoc PA000M one_mulDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed 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 (8)
01Fix variables and assumptionsL1–3
02Induction on mL4–7
03Establish hzeroL8–12
04Establish hQL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
05Fix variables and assumptionsL23–25
06Establish hdoubleL26–27
07Establish hdecompositionL28–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product double succ decompose.
- L28
have hdecomposition : ∃ wpp_left_factor_successor_decomposition. ∃ wpp_right_factor_successor_decomposition. ∃ wpp_prefix_product_successor_decomposition. BetaAt(b,c,m + m,wpp_left_factor_successor_decomposition) ∧ (BetaAt(b,c,S (m + m),wpp_right_factor_successor_decomposition) ∧ (Product(b,c,m + m,wpp_prefix_product_successor_decomposition) ∧ Q = wpp_prefix_product_successor_decomposition · wpp_left_factor_successor_decomposition · wpp_right_factor_successor_decomposition))Definitions: BetaAt(b,c,m + m,wpp_left_factor_successor_decomposition)BetaAt(b,c,S (m + m),wpp_right_factor_successor_decomposition)Product(b,c,m + m,wpp_prefix_product_successor_decomposition)Original native command in the exact edition - L29
specialize beta_product_double_succ_decompose b - L30
specialize beta_product_double_succ_decompose c - L31
specialize beta_product_double_succ_decompose (m + m) - L32
specialize beta_product_double_succ_decompose (S m + S m) - L33
specialize beta_product_double_succ_decompose Q - L34
apply beta_product_double_succ_decompose - L35
exact hdouble - L36
exact hproduct
08Separate the logical casesL37–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
09Establish hpairs_allL43–44
Establish this local claim before using it. It is not an additional assumption.
- L43
have hpairs_all : ∀ wpp_pair_all_successor_pairs. ∀ wpp_left_all_successor_pairs. ∀ wpp_right_all_successor_pairs. Lt(wpp_pair_all_successor_pairs,S m) → BetaAt(b,c,wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs,wpp_left_all_successor_pairs) → BetaAt(b,c,S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs),wpp_right_all_successor_pairs) → BalancedInverse(p,wpp_left_all_successor_pairs,wpp_right_all_successor_pairs)Definitions: Lt(wpp_pair_all_successor_pairs,S m)BetaAt(b,c,wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs,wpp_left_all_successor_pairs)BetaAt(b,c,S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs),wpp_right_all_successor_pairs)BalancedInverse(p,wpp_left_all_successor_pairs,wpp_right_all_successor_pairs)Original native command in the exact edition - L44
exact hpairs
10Establish hpairs_prefixL45–54
Establish this local claim before using it. It is not an additional assumption.
- L45
have hpairs_prefix : ∀ wpp_pair_prefix_pairs. ∀ wpp_left_prefix_pairs. ∀ wpp_right_prefix_pairs. Lt(wpp_pair_prefix_pairs,m) → BetaAt(b,c,wpp_pair_prefix_pairs + wpp_pair_prefix_pairs,wpp_left_prefix_pairs) → BetaAt(b,c,S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs),wpp_right_prefix_pairs) → BalancedInverse(p,wpp_left_prefix_pairs,wpp_right_prefix_pairs)Definitions: Lt(wpp_pair_prefix_pairs,m)BetaAt(b,c,wpp_pair_prefix_pairs + wpp_pair_prefix_pairs,wpp_left_prefix_pairs)BetaAt(b,c,S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs),wpp_right_prefix_pairs)BalancedInverse(p,wpp_left_prefix_pairs,wpp_right_prefix_pairs)Original native command in the exact edition - L46
intro t - L47
intro a - L48
intro d - L49
intro ht - L50
intro ha - L51
intro hd - L52
specialize hpairs_all t - L53
specialize hpairs_all a - L54
specialize hpairs_all d
11Use earlier factsL55–61
12Establish hprefixL62–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
13Establish hlastL67–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpairs.
- L67
have hlast : BalancedInverse(p,x,x1)Definitions: BalancedInverse(p,x,x1)Original native command in the exact edition - L68
specialize hpairs m - L69
specialize hpairs x - L70
specialize hpairs x1 - L71
apply hpairs - L72
specialize le_refl (S m) - L73
exact le_refl - L74
exact hdecomposition_witness_witness_witness_left - L75
exact hdecomposition_witness_witness_witness_right_left
14Establish hfoldL76–84
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul.
- L76
have hfold : ModEq(p,x2 · (x · x1),1 · 1)Definitions: ModEq(p,x2 · (x · x1),1 · 1)Original native command in the exact edition - L77
specialize mod_eq_mul p - L78
specialize mod_eq_mul x2 - L79
specialize mod_eq_mul 1 - L80
specialize mod_eq_mul (x * x1) - L81
specialize mod_eq_mul 1 - L82
apply mod_eq_mul - L83
exact hprefix - L84
exact hlast
15Establish honeL85–88
16Establish hassocL89–96
Establish this local claim before using it. It is not an additional assumption.
Original defined command ledger · 96 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
induction m - 0005
intro Q - 0006
intro hpairs - 0007
intro hproduct - 0008
have hzero : 0 + 0 = 0 - 0009
simp - 0010
rewrite hzero at hproduct - 0011
rewrite hzero at hproduct - 0012
rewrite hzero at hproduct - 0013
have hQ : Q = 1 - 0014
specialize beta_product_zero b - 0015
specialize beta_product_zero c - 0016
specialize beta_product_zero Q - 0017
apply beta_product_zero - 0018
exact hproduct - 0019
rewrite hQ - 0020
specialize mod_eq_refl p - 0021
specialize mod_eq_refl 1 - 0022
exact mod_eq_refl - 0023
intro Q - 0024
intro hpairs - 0025
intro hproduct - 0026
have hdouble : S m + S m = S (S (m + m)) - 0027
simp [add_succ_left] - 0028
have hdecomposition : ∃ wpp_left_factor_successor_decomposition. ∃ wpp_right_factor_successor_decomposition. ∃ wpp_prefix_product_successor_decomposition. BetaAt(b,c,m + m,wpp_left_factor_successor_decomposition) ∧ (BetaAt(b,c,S (m + m),wpp_right_factor_successor_decomposition) ∧ (Product(b,c,m + m,wpp_prefix_product_successor_decomposition) ∧ Q = wpp_prefix_product_successor_decomposition · wpp_left_factor_successor_decomposition · wpp_right_factor_successor_decomposition))Exact native replay line
have hdecomposition : exists wpp_left_factor_successor_decomposition wpp_right_factor_successor_decomposition wpp_prefix_product_successor_decomposition. (((exists wpp_beta_height_successor_decomposition_left_entry. wpp_beta_height_successor_decomposition_left_entry + S (wpp_left_factor_successor_decomposition) = S ((S (m + m)) * c)) /\ exists wpp_beta_quotient_successor_decomposition_left_entry. b = wpp_beta_quotient_successor_decomposition_left_entry * S ((S (m + m)) * c) + (wpp_left_factor_successor_decomposition))) /\ ((((exists wpp_beta_height_successor_decomposition_right_entry. wpp_beta_height_successor_decomposition_right_entry + S (wpp_right_factor_successor_decomposition) = S ((S (S (m + m))) * c)) /\ exists wpp_beta_quotient_successor_decomposition_right_entry. b = wpp_beta_quotient_successor_decomposition_right_entry * S ((S (S (m + m))) * c) + (wpp_right_factor_successor_decomposition))) /\ ((exists wpp_trace_code_successor_decomposition_prefix wpp_trace_scale_successor_decomposition_prefix. ((((exists wpp_beta_height_successor_decomposition_prefix_start. wpp_beta_height_successor_decomposition_prefix_start + S (1) = S ((S (0)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_start. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_start * S ((S (0)) * wpp_trace_scale_successor_decomposition_prefix) + (1))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_terminal. wpp_beta_height_successor_decomposition_prefix_terminal + S (wpp_prefix_product_successor_decomposition) = S ((S (m + m)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_terminal. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_terminal * S ((S (m + m)) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_prefix_product_successor_decomposition))) /\ forall wpp_index_successor_decomposition_prefix. (exists wpp_gap_successor_decomposition_prefix_bound. wpp_gap_successor_decomposition_prefix_bound + S (wpp_index_successor_decomposition_prefix) = m + m) -> exists wpp_factor_successor_decomposition_prefix wpp_prefix_successor_decomposition_prefix wpp_successor_successor_decomposition_prefix. ((((exists wpp_beta_height_successor_decomposition_prefix_factor. wpp_beta_height_successor_decomposition_prefix_factor + S (wpp_factor_successor_decomposition_prefix) = S ((S (wpp_index_successor_decomposition_prefix)) * c)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_factor. b = wpp_beta_quotient_successor_decomposition_prefix_factor * S ((S (wpp_index_successor_decomposition_prefix)) * c) + (wpp_factor_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_prefix. wpp_beta_height_successor_decomposition_prefix_prefix + S (wpp_prefix_successor_decomposition_prefix) = S ((S (wpp_index_successor_decomposition_prefix)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_prefix. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_prefix * S ((S (wpp_index_successor_decomposition_prefix)) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_prefix_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_successor. wpp_beta_height_successor_decomposition_prefix_successor + S (wpp_successor_successor_decomposition_prefix) = S ((S (S (wpp_index_successor_decomposition_prefix))) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_successor. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_successor * S ((S (S (wpp_index_successor_decomposition_prefix))) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_successor_successor_decomposition_prefix))) /\ wpp_successor_successor_decomposition_prefix = wpp_prefix_successor_decomposition_prefix * wpp_factor_successor_decomposition_prefix)))))) /\ Q = (wpp_prefix_product_successor_decomposition * wpp_left_factor_successor_decomposition) * wpp_right_factor_successor_decomposition)) - 0029
specialize beta_product_double_succ_decompose b - 0030
specialize beta_product_double_succ_decompose c - 0031
specialize beta_product_double_succ_decompose (m + m) - 0032
specialize beta_product_double_succ_decompose (S m + S m) - 0033
specialize beta_product_double_succ_decompose Q - 0034
apply beta_product_double_succ_decompose - 0035
exact hdouble - 0036
exact hproduct - 0037
cases hdecomposition - 0038
cases hdecomposition_witness - 0039
cases hdecomposition_witness_witness - 0040
cases hdecomposition_witness_witness_witness - 0041
cases hdecomposition_witness_witness_witness_right - 0042
cases hdecomposition_witness_witness_witness_right_right - 0043
have hpairs_all : ∀ wpp_pair_all_successor_pairs. ∀ wpp_left_all_successor_pairs. ∀ wpp_right_all_successor_pairs. Lt(wpp_pair_all_successor_pairs,S m) → BetaAt(b,c,wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs,wpp_left_all_successor_pairs) → BetaAt(b,c,S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs),wpp_right_all_successor_pairs) → BalancedInverse(p,wpp_left_all_successor_pairs,wpp_right_all_successor_pairs)Exact native replay line
have hpairs_all : forall wpp_pair_all_successor_pairs wpp_left_all_successor_pairs wpp_right_all_successor_pairs. (exists wpp_gap_all_successor_pairs_pair_bound. wpp_gap_all_successor_pairs_pair_bound + S (wpp_pair_all_successor_pairs) = S m) -> (((exists wpp_beta_height_all_successor_pairs_left_entry. wpp_beta_height_all_successor_pairs_left_entry + S (wpp_left_all_successor_pairs) = S ((S ((wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_all_successor_pairs_left_entry. b = wpp_beta_quotient_all_successor_pairs_left_entry * S ((S ((wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c) + (wpp_left_all_successor_pairs))) -> (((exists wpp_beta_height_all_successor_pairs_right_entry. wpp_beta_height_all_successor_pairs_right_entry + S (wpp_right_all_successor_pairs) = S ((S (S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_all_successor_pairs_right_entry. b = wpp_beta_quotient_all_successor_pairs_right_entry * S ((S (S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c) + (wpp_right_all_successor_pairs))) -> (exists wpp_mod_left_all_successor_pairs_pair_mod wpp_mod_right_all_successor_pairs_pair_mod. (wpp_left_all_successor_pairs * wpp_right_all_successor_pairs) + p * wpp_mod_left_all_successor_pairs_pair_mod = (1) + p * wpp_mod_right_all_successor_pairs_pair_mod) - 0044
exact hpairs - 0045
have hpairs_prefix : ∀ wpp_pair_prefix_pairs. ∀ wpp_left_prefix_pairs. ∀ wpp_right_prefix_pairs. Lt(wpp_pair_prefix_pairs,m) → BetaAt(b,c,wpp_pair_prefix_pairs + wpp_pair_prefix_pairs,wpp_left_prefix_pairs) → BetaAt(b,c,S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs),wpp_right_prefix_pairs) → BalancedInverse(p,wpp_left_prefix_pairs,wpp_right_prefix_pairs)Exact native replay line
have hpairs_prefix : forall wpp_pair_prefix_pairs wpp_left_prefix_pairs wpp_right_prefix_pairs. (exists wpp_gap_prefix_pairs_pair_bound. wpp_gap_prefix_pairs_pair_bound + S (wpp_pair_prefix_pairs) = m) -> (((exists wpp_beta_height_prefix_pairs_left_entry. wpp_beta_height_prefix_pairs_left_entry + S (wpp_left_prefix_pairs) = S ((S ((wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_prefix_pairs_left_entry. b = wpp_beta_quotient_prefix_pairs_left_entry * S ((S ((wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c) + (wpp_left_prefix_pairs))) -> (((exists wpp_beta_height_prefix_pairs_right_entry. wpp_beta_height_prefix_pairs_right_entry + S (wpp_right_prefix_pairs) = S ((S (S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_prefix_pairs_right_entry. b = wpp_beta_quotient_prefix_pairs_right_entry * S ((S (S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c) + (wpp_right_prefix_pairs))) -> (exists wpp_mod_left_prefix_pairs_pair_mod wpp_mod_right_prefix_pairs_pair_mod. (wpp_left_prefix_pairs * wpp_right_prefix_pairs) + p * wpp_mod_left_prefix_pairs_pair_mod = (1) + p * wpp_mod_right_prefix_pairs_pair_mod) - 0046
intro t - 0047
intro a - 0048
intro d - 0049
intro ht - 0050
intro ha - 0051
intro hd - 0052
specialize hpairs_all t - 0053
specialize hpairs_all a - 0054
specialize hpairs_all d - 0055
apply hpairs_all - 0056
specialize le_succ (S t) - 0057
specialize le_succ m - 0058
apply le_succ - 0059
exact ht - 0060
exact ha - 0061
exact hd - 0062
have hprefix : ModEq(p,x2,1)Exact native replay line
have hprefix : exists wpp_mod_left_prefix_congruence wpp_mod_right_prefix_congruence. (x2) + p * wpp_mod_left_prefix_congruence = (1) + p * wpp_mod_right_prefix_congruence - 0063
specialize IH x2 - 0064
apply IH - 0065
exact hpairs_prefix - 0066
exact hdecomposition_witness_witness_witness_right_right_left - 0067
have hlast : BalancedInverse(p,x,x1)Exact native replay line
have hlast : exists wpp_mod_left_last_pair_congruence wpp_mod_right_last_pair_congruence. (x * x1) + p * wpp_mod_left_last_pair_congruence = (1) + p * wpp_mod_right_last_pair_congruence - 0068
specialize hpairs m - 0069
specialize hpairs x - 0070
specialize hpairs x1 - 0071
apply hpairs - 0072
specialize le_refl (S m) - 0073
exact le_refl - 0074
exact hdecomposition_witness_witness_witness_left - 0075
exact hdecomposition_witness_witness_witness_right_left - 0076
have hfold : ModEq(p,x2 · (x · x1),1 · 1)Exact native replay line
have hfold : exists wpp_mod_left_folded_congruence wpp_mod_right_folded_congruence. (x2 * (x * x1)) + p * wpp_mod_left_folded_congruence = (1 * 1) + p * wpp_mod_right_folded_congruence - 0077
specialize mod_eq_mul p - 0078
specialize mod_eq_mul x2 - 0079
specialize mod_eq_mul 1 - 0080
specialize mod_eq_mul (x * x1) - 0081
specialize mod_eq_mul 1 - 0082
apply mod_eq_mul - 0083
exact hprefix - 0084
exact hlast - 0085
have hone : 1 * 1 = 1 - 0086
specialize one_mul 1 - 0087
exact one_mul - 0088
rewrite hone at hfold - 0089
have hassoc : (x2 * x) * x1 = x2 * (x * x1) - 0090
specialize mul_assoc x2 - 0091
specialize mul_assoc x - 0092
specialize mul_assoc x1 - 0093
exact mul_assoc - 0094
rewrite hdecomposition_witness_witness_witness_right_right_right - 0095
rewrite hassoc - 0096
exact hfold