JT001C

jordan_tuple_listed_decidable

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

Finite list membership is decided by actual outer entries and coordinate equality.

Exact expanded first-order arithmetic statement

forall b c k B C D E j. (exists jt_index_listedyes jt_code_listedyes jt_scale_listedyes. ((exists jt_gap_listedyesindex. jt_gap_listedyesindex+S (jt_index_listedyes)=(j)) /\ (((((((exists fs_h_jt_listedyescode. fs_h_jt_listedyescode + S (jt_code_listedyes) = S ((S (jt_index_listedyes)) * C)) /\ exists fs_q_jt_listedyescode. B = fs_q_jt_listedyescode * S ((S (jt_index_listedyes)) * C) + (jt_code_listedyes))) /\ (((exists fs_h_jt_listedyesscale. fs_h_jt_listedyesscale + S (jt_scale_listedyes) = S ((S (jt_index_listedyes)) * E)) /\ exists fs_q_jt_listedyesscale. D = fs_q_jt_listedyesscale * S ((S (jt_index_listedyes)) * E) + (jt_scale_listedyes))))) /\ (forall jt_index_listedyesequal jt_left_listedyesequal jt_right_listedyesequal. (exists jt_gap_listedyesequalindex. jt_gap_listedyesequalindex+S (jt_index_listedyesequal)=(k)) -> (((exists fs_h_jt_listedyesequalleft. fs_h_jt_listedyesequalleft + S (jt_left_listedyesequal) = S ((S (jt_index_listedyesequal)) * c)) /\ exists fs_q_jt_listedyesequalleft. b = fs_q_jt_listedyesequalleft * S ((S (jt_index_listedyesequal)) * c) + (jt_left_listedyesequal))) -> (((exists fs_h_jt_listedyesequalright. fs_h_jt_listedyesequalright + S (jt_right_listedyesequal) = S ((S (jt_index_listedyesequal)) * jt_scale_listedyes)) /\ exists fs_q_jt_listedyesequalright. jt_code_listedyes = fs_q_jt_listedyesequalright * S ((S (jt_index_listedyesequal)) * jt_scale_listedyes) + (jt_right_listedyesequal))) -> jt_left_listedyesequal=jt_right_listedyesequal))))) \/ ~(exists jt_index_listedno jt_code_listedno jt_scale_listedno. ((exists jt_gap_listednoindex. jt_gap_listednoindex+S (jt_index_listedno)=(j)) /\ (((((((exists fs_h_jt_listednocode. fs_h_jt_listednocode + S (jt_code_listedno) = S ((S (jt_index_listedno)) * C)) /\ exists fs_q_jt_listednocode. B = fs_q_jt_listednocode * S ((S (jt_index_listedno)) * C) + (jt_code_listedno))) /\ (((exists fs_h_jt_listednoscale. fs_h_jt_listednoscale + S (jt_scale_listedno) = S ((S (jt_index_listedno)) * E)) /\ exists fs_q_jt_listednoscale. D = fs_q_jt_listednoscale * S ((S (jt_index_listedno)) * E) + (jt_scale_listedno))))) /\ (forall jt_index_listednoequal jt_left_listednoequal jt_right_listednoequal. (exists jt_gap_listednoequalindex. jt_gap_listednoequalindex+S (jt_index_listednoequal)=(k)) -> (((exists fs_h_jt_listednoequalleft. fs_h_jt_listednoequalleft + S (jt_left_listednoequal) = S ((S (jt_index_listednoequal)) * c)) /\ exists fs_q_jt_listednoequalleft. b = fs_q_jt_listednoequalleft * S ((S (jt_index_listednoequal)) * c) + (jt_left_listednoequal))) -> (((exists fs_h_jt_listednoequalright. fs_h_jt_listednoequalright + S (jt_right_listednoequal) = S ((S (jt_index_listednoequal)) * jt_scale_listedno)) /\ exists fs_q_jt_listednoequalright. jt_code_listedno = fs_q_jt_listednoequalright * S ((S (jt_index_listednoequal)) * jt_scale_listedno) + (jt_right_listednoequal))) -> jt_left_listednoequal=jt_right_listednoequal)))))

Constructive proof overview

Generated structural guide

Finite list membership is decided by actual outer entries and coordinate equality.

The unchanged tactic script uses 7 declared prerequisites and contains 113 exact native proof lines.

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

Proof neighborhood

Direct dependencies

JT001A jordan_tuple_listed_empty JT001B jordan_tuple_listed_lift beta_at_exists Alpha theorem; checked-use authorized JT0019 jordan_tuple_equal_decidable le_refl Alpha theorem; checked-use authorized finite_lt_succ_eq_or_lt Alpha theorem; checked-use authorized beta_at_unique 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

113 script commands · 34 reading checkpoints · 6 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 (3)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–7

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

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro k
  4. L4
    intro B
  5. L5
    intro C
  6. L6
    intro D
  7. L7
    intro E
02Induction on jL8–8

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L8
    induction j
03Separate the logical casesL9–9

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

  1. L9
    right
04Fix variables and assumptionsL10–10

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

  1. L10
    intro hempty
05Use earlier factsL11–19

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

  1. L11
    specialize jordan_tuple_listed_empty (b)
  2. L12
    specialize jordan_tuple_listed_empty (c)
  3. L13
    specialize jordan_tuple_listed_empty (k)
  4. L14
    specialize jordan_tuple_listed_empty (B)
  5. L15
    specialize jordan_tuple_listed_empty (C)
  6. L16
    specialize jordan_tuple_listed_empty (D)
  7. L17
    specialize jordan_tuple_listed_empty (E)
  8. L18
    apply jordan_tuple_listed_empty
  9. L19
    exact hempty
06Separate the logical casesL20–21

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

  1. L20
    cases IH
  2. L21
    left
07Use earlier factsL22–31

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

  1. L22
    specialize jordan_tuple_listed_lift (b)
  2. L23
    specialize jordan_tuple_listed_lift (c)
  3. L24
    specialize jordan_tuple_listed_lift (k)
  4. L25
    specialize jordan_tuple_listed_lift (B)
  5. L26
    specialize jordan_tuple_listed_lift (C)
  6. L27
    specialize jordan_tuple_listed_lift (D)
  7. L28
    specialize jordan_tuple_listed_lift (E)
  8. L29
    specialize jordan_tuple_listed_lift (j)
  9. L30
    apply jordan_tuple_listed_lift
  10. L31
    exact IH_left
08Establish hdL32–36

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.

  1. L32
    have hd : exists d. ((exists fs_h_jt_listedlastcode. fs_h_jt_listedlastcode + S (d) = S ((S (j)) * C)) /\ exists fs_q_jt_listedlastcode. B = fs_q_jt_listedlastcode * S ((S (j)) * C) + (d))
  2. L33
    specialize beta_at_exists (B)
  3. L34
    specialize beta_at_exists (C)
  4. L35
    specialize beta_at_exists (j)
  5. L36
    apply beta_at_exists
09Separate the logical casesL37–37

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

  1. L37
    cases hd
10Establish heL38–42

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.

  1. L38
    have he : exists e. ((exists fs_h_jt_listedlastscale. fs_h_jt_listedlastscale + S (e) = S ((S (j)) * E)) /\ exists fs_q_jt_listedlastscale. D = fs_q_jt_listedlastscale * S ((S (j)) * E) + (e))
  2. L39
    specialize beta_at_exists (D)
  3. L40
    specialize beta_at_exists (E)
  4. L41
    specialize beta_at_exists (j)
  5. L42
    apply beta_at_exists
11Separate the logical casesL43–43

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

  1. L43
    cases he
12Establish heqL44–50

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan tuple equal decidable.

  1. L44
    have heq : IntegerVectorZero(b,c,x,x1,k) ∨ ¬IntegerVectorZero(b,c,x,x1,k)Definitions: IntegerVectorZero
  2. L45
    specialize jordan_tuple_equal_decidable (b)
  3. L46
    specialize jordan_tuple_equal_decidable (c)
  4. L47
    specialize jordan_tuple_equal_decidable (x)
  5. L48
    specialize jordan_tuple_equal_decidable (x1)
  6. L49
    specialize jordan_tuple_equal_decidable (k)
  7. L50
    apply jordan_tuple_equal_decidable
13Separate the logical casesL51–52

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

  1. L51
    cases heq
  2. L52
    left
14Construct an explicit witnessL53–55

Supply the displayed value, then prove that it has the required property.

  1. L53
    exists j
  2. L54
    exists x
  3. L55
    exists x1
15Separate the logical casesL56–56

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

  1. L56
    split
16Use earlier factsL57–58

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

  1. L57
    specialize le_refl (S j)
  2. L58
    apply le_refl
17Separate the logical casesL59–60

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

  1. L59
    split
  2. L60
    split
18Use earlier factsL61–63

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

  1. L61
    exact hd_witness
  2. L62
    exact he_witness
  3. L63
    exact heq_left
19Separate the logical casesL64–64

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

  1. L64
    right
20Fix variables and assumptionsL65–65

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

  1. L65
    intro h
21Separate the logical casesL66–70

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

  1. L66
    cases h
  2. L67
    cases h_witness
  3. L68
    cases h_witness_witness
  4. L69
    cases h_witness_witness_witness
  5. L70
    cases h_witness_witness_witness_right
22Establish hcL71–75

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.

  1. L71
    have hc : x2=j \/ (exists jt_gap_listedcase. jt_gap_listedcase+S (x2)=(j))
  2. L72
    specialize finite_lt_succ_eq_or_lt (j)
  3. L73
    specialize finite_lt_succ_eq_or_lt (x2)
  4. L74
    apply finite_lt_succ_eq_or_lt
  5. L75
    exact h_witness_witness_witness_left
23Separate the logical casesL76–77

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

  1. L76
    cases hc
  2. L77
    cases h_witness_witness_witness_right_left
24Establish hdvalL78–87

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.

  1. L78
    have hdval : x3=x
  2. L79
    specialize beta_at_unique (B)
  3. L80
    specialize beta_at_unique (C)
  4. L81
    specialize beta_at_unique (j)
  5. L82
    specialize beta_at_unique (x3)
  6. L83
    specialize beta_at_unique (x)
  7. L84
    apply beta_at_unique
  8. L85
    rewrite hc_left at h_witness_witness_witness_right_left_left
  9. L86
    rewrite hc_left at h_witness_witness_witness_right_left_left
  10. L87
    exact h_witness_witness_witness_right_left_left
25Use earlier factsL88–88

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

  1. L88
    exact hd_witness
26Establish hevalL89–98

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.

  1. L89
    have heval : x4=x1
  2. L90
    specialize beta_at_unique (D)
  3. L91
    specialize beta_at_unique (E)
  4. L92
    specialize beta_at_unique (j)
  5. L93
    specialize beta_at_unique (x4)
  6. L94
    specialize beta_at_unique (x1)
  7. L95
    apply beta_at_unique
  8. L96
    rewrite hc_left at h_witness_witness_witness_right_left_right
  9. L97
    rewrite hc_left at h_witness_witness_witness_right_left_right
  10. L98
    exact h_witness_witness_witness_right_left_right
27Use earlier factsL99–100

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

  1. L99
    exact he_witness
  2. L100
    apply heq_right
28Calculate and transport equalitiesL101–103

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L101
    rewrite hdval at h_witness_witness_witness_right_right
  2. L102
    rewrite heval at h_witness_witness_witness_right_right
  3. L103
    rewrite heval at h_witness_witness_witness_right_right
29Use earlier factsL104–105

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

  1. L104
    exact h_witness_witness_witness_right_right
  2. L105
    apply IH_right
30Construct an explicit witnessL106–108

Supply the displayed value, then prove that it has the required property.

  1. L106
    exists x2
  2. L107
    exists x3
  3. L108
    exists x4
31Separate the logical casesL109–109

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

  1. L109
    split
32Use earlier factsL110–110

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

  1. L110
    exact hc_right
33Separate the logical casesL111–111

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

  1. L111
    split
34Use earlier factsL112–113

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

  1. L112
    exact h_witness_witness_witness_right_left
  2. L113
    exact h_witness_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 113 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro k
  4. 0004intro B
  5. 0005intro C
  6. 0006intro D
  7. 0007intro E
  8. 0008induction j
  9. 0009right
  10. 0010intro hempty
  11. 0011specialize jordan_tuple_listed_empty (b)
  12. 0012specialize jordan_tuple_listed_empty (c)
  13. 0013specialize jordan_tuple_listed_empty (k)
  14. 0014specialize jordan_tuple_listed_empty (B)
  15. 0015specialize jordan_tuple_listed_empty (C)
  16. 0016specialize jordan_tuple_listed_empty (D)
  17. 0017specialize jordan_tuple_listed_empty (E)
  18. 0018apply jordan_tuple_listed_empty
  19. 0019exact hempty
  20. 0020cases IH
  21. 0021left
  22. 0022specialize jordan_tuple_listed_lift (b)
  23. 0023specialize jordan_tuple_listed_lift (c)
  24. 0024specialize jordan_tuple_listed_lift (k)
  25. 0025specialize jordan_tuple_listed_lift (B)
  26. 0026specialize jordan_tuple_listed_lift (C)
  27. 0027specialize jordan_tuple_listed_lift (D)
  28. 0028specialize jordan_tuple_listed_lift (E)
  29. 0029specialize jordan_tuple_listed_lift (j)
  30. 0030apply jordan_tuple_listed_lift
  31. 0031exact IH_left
  32. 0032have hd : exists d. ((exists fs_h_jt_listedlastcode. fs_h_jt_listedlastcode + S (d) = S ((S (j)) * C)) /\ exists fs_q_jt_listedlastcode. B = fs_q_jt_listedlastcode * S ((S (j)) * C) + (d))
  33. 0033specialize beta_at_exists (B)
  34. 0034specialize beta_at_exists (C)
  35. 0035specialize beta_at_exists (j)
  36. 0036apply beta_at_exists
  37. 0037cases hd
  38. 0038have he : exists e. ((exists fs_h_jt_listedlastscale. fs_h_jt_listedlastscale + S (e) = S ((S (j)) * E)) /\ exists fs_q_jt_listedlastscale. D = fs_q_jt_listedlastscale * S ((S (j)) * E) + (e))
  39. 0039specialize beta_at_exists (D)
  40. 0040specialize beta_at_exists (E)
  41. 0041specialize beta_at_exists (j)
  42. 0042apply beta_at_exists
  43. 0043cases he
  44. 0044have heq : (forall jt_index_listedyes jt_left_listedyes jt_right_listedyes. (exists jt_gap_listedyesindex. jt_gap_listedyesindex+S (jt_index_listedyes)=(k)) -> (((exists fs_h_jt_listedyesleft. fs_h_jt_listedyesleft + S (jt_left_listedyes) = S ((S (jt_index_listedyes)) * c)) /\ exists fs_q_jt_listedyesleft. b = fs_q_jt_listedyesleft * S ((S (jt_index_listedyes)) * c) + (jt_left_listedyes))) -> (((exists fs_h_jt_listedyesright. fs_h_jt_listedyesright + S (jt_right_listedyes) = S ((S (jt_index_listedyes)) * x1)) /\ exists fs_q_jt_listedyesright. x = fs_q_jt_listedyesright * S ((S (jt_index_listedyes)) * x1) + (jt_right_listedyes))) -> jt_left_listedyes=jt_right_listedyes) \/ ~(forall jt_index_listedno jt_left_listedno jt_right_listedno. (exists jt_gap_listednoindex. jt_gap_listednoindex+S (jt_index_listedno)=(k)) -> (((exists fs_h_jt_listednoleft. fs_h_jt_listednoleft + S (jt_left_listedno) = S ((S (jt_index_listedno)) * c)) /\ exists fs_q_jt_listednoleft. b = fs_q_jt_listednoleft * S ((S (jt_index_listedno)) * c) + (jt_left_listedno))) -> (((exists fs_h_jt_listednoright. fs_h_jt_listednoright + S (jt_right_listedno) = S ((S (jt_index_listedno)) * x1)) /\ exists fs_q_jt_listednoright. x = fs_q_jt_listednoright * S ((S (jt_index_listedno)) * x1) + (jt_right_listedno))) -> jt_left_listedno=jt_right_listedno)
  45. 0045specialize jordan_tuple_equal_decidable (b)
  46. 0046specialize jordan_tuple_equal_decidable (c)
  47. 0047specialize jordan_tuple_equal_decidable (x)
  48. 0048specialize jordan_tuple_equal_decidable (x1)
  49. 0049specialize jordan_tuple_equal_decidable (k)
  50. 0050apply jordan_tuple_equal_decidable
  51. 0051cases heq
  52. 0052left
  53. 0053exists j
  54. 0054exists x
  55. 0055exists x1
  56. 0056split
  57. 0057specialize le_refl (S j)
  58. 0058apply le_refl
  59. 0059split
  60. 0060split
  61. 0061exact hd_witness
  62. 0062exact he_witness
  63. 0063exact heq_left
  64. 0064right
  65. 0065intro h
  66. 0066cases h
  67. 0067cases h_witness
  68. 0068cases h_witness_witness
  69. 0069cases h_witness_witness_witness
  70. 0070cases h_witness_witness_witness_right
  71. 0071have hc : x2=j \/ (exists jt_gap_listedcase. jt_gap_listedcase+S (x2)=(j))
  72. 0072specialize finite_lt_succ_eq_or_lt (j)
  73. 0073specialize finite_lt_succ_eq_or_lt (x2)
  74. 0074apply finite_lt_succ_eq_or_lt
  75. 0075exact h_witness_witness_witness_left
  76. 0076cases hc
  77. 0077cases h_witness_witness_witness_right_left
  78. 0078have hdval : x3=x
  79. 0079specialize beta_at_unique (B)
  80. 0080specialize beta_at_unique (C)
  81. 0081specialize beta_at_unique (j)
  82. 0082specialize beta_at_unique (x3)
  83. 0083specialize beta_at_unique (x)
  84. 0084apply beta_at_unique
  85. 0085rewrite hc_left at h_witness_witness_witness_right_left_left
  86. 0086rewrite hc_left at h_witness_witness_witness_right_left_left
  87. 0087exact h_witness_witness_witness_right_left_left
  88. 0088exact hd_witness
  89. 0089have heval : x4=x1
  90. 0090specialize beta_at_unique (D)
  91. 0091specialize beta_at_unique (E)
  92. 0092specialize beta_at_unique (j)
  93. 0093specialize beta_at_unique (x4)
  94. 0094specialize beta_at_unique (x1)
  95. 0095apply beta_at_unique
  96. 0096rewrite hc_left at h_witness_witness_witness_right_left_right
  97. 0097rewrite hc_left at h_witness_witness_witness_right_left_right
  98. 0098exact h_witness_witness_witness_right_left_right
  99. 0099exact he_witness
  100. 0100apply heq_right
  101. 0101rewrite hdval at h_witness_witness_witness_right_right
  102. 0102rewrite heval at h_witness_witness_witness_right_right
  103. 0103rewrite heval at h_witness_witness_witness_right_right
  104. 0104exact h_witness_witness_witness_right_right
  105. 0105apply IH_right
  106. 0106exists x2
  107. 0107exists x3
  108. 0108exists x4
  109. 0109split
  110. 0110exact hc_right
  111. 0111split
  112. 0112exact h_witness_witness_witness_right_left
  113. 0113exact h_witness_witness_witness_right_right