@@ -532,19 +532,6 @@ theorem checkLowerHex_encodeHex :
532532 generalize val / 16 ^ k % 16 = c at h''
533533 decide +revert
534534
535- /-
536- {
537- offset :=
538- {
539- byteIdx :=
540- ((s.push 'x').posBetween
541- (encodeHex 2 pc.val.toNat ++
542- (pt.mangle ++
543- mangleSuffix (b || tailUnderscore (String.singleton pc ++ pt)) nm))).offset.byteIdx +
544- 2 },
545- isValid := ⋯ }
546- -/
547-
548535@[simp]
549536theorem utf8ByteSize_encodeHex {n val : Nat} :
550537 (encodeHex n val).utf8ByteSize = n := by
@@ -1039,95 +1026,6 @@ theorem demangleAux_decodeNum_cast {s t : String} (h : s = t) {p : s.ValidPos}
10391026 demangleAux.decodeNum t (p.cast h) res n = demangleAux.decodeNum s p res n := by
10401027 cases h; rfl
10411028
1042- macro " term_tactic" : tactic =>
1043- `(tactic| all_goals first
1044- | with_reducible apply String.ValidPos.remainingBytes_next_lt
1045- | apply String.ValidPos.remainingBytes_next_lt_of_lt
1046- apply String.ValidPos.lt_trans (String.ValidPos.lt_next _)
1047- first
1048- | with_reducible apply String.ValidPos.lt_next _
1049- | apply Nat.lt_add_of_pos_right (by decide))
1050-
1051- /-theorem demangleAux_normalize2 {s : String} {p : s.ValidPos}
1052- (res : Name) (acc : String) {ucount : Nat} :
1053- demangleAux s p res acc (ucount + 2) = res +-+ (demangleAux s p .anonymous "" ucount).prependStr acc := by-/
1054-
1055- mutual
1056-
1057- theorem demangleAux_normalize {s : String} {p : s.ValidPos}
1058- (res : Name) (acc : String) {ucount : Nat} :
1059- demangleAux s p res acc ucount = res +-+ (demangleAux s p .anonymous " " ucount).prependStr acc := by
1060- fun_cases demangleAux s p res acc ucount
1061- · rw [demangleAux, dif_pos ‹_›, prependStr, extend, extend, String.pushn_normalize]
1062- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_pos ‹_›]
1063- rw [demangleAux_normalize]
1064- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_pos ‹_›]
1065- conv => lhs; rw [demangleAux_normalize]
1066- conv => rhs; rw [demangleAux_normalize]
1067- rw [anonymous_extend, String.pushn_normalize, prependStr_prependStr, String.append_push]
1068- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_pos ‹_›, dif_pos ‹_›]
1069- conv => lhs; rw [demangleAux_normalize]
1070- conv => rhs; rw [demangleAux_normalize]
1071- rw [prependStr_empty, prependStr_str_anonymous_extend, ← extend_assoc, extend, extend,
1072- ← String.pushn_normalize]
1073- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_pos ‹_›, dif_neg ‹_›]
1074- conv => lhs; rw [demangleAux_decodeNum_normalize]
1075- conv => rhs; rw [demangleAux_decodeNum_normalize]
1076- rw [prependStr_str_anonymous_extend, ← String.pushn_normalize, ← extend_assoc, extend, extend]
1077- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_neg ‹_›, dif_pos ‹_›]
1078- conv => lhs; rw [demangleAux_normalize]
1079- conv => rhs; rw [demangleAux_normalize]
1080- rw [anonymous_extend, prependStr_prependStr, String.append_push, ← String.pushn_normalize]
1081- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_neg ‹_›, dif_neg ‹_›, dif_pos ‹_›]
1082- conv => lhs; rw [demangleAux_normalize]
1083- conv => rhs; rw [demangleAux_normalize]
1084- rw [anonymous_extend, prependStr_prependStr, String.append_push, ← String.pushn_normalize]
1085- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_neg ‹_›, dif_neg ‹_›, dif_neg ‹_›, dif_pos ‹_›]
1086- conv => lhs; rw [demangleAux_normalize]
1087- conv => rhs; rw [demangleAux_normalize]
1088- rw [anonymous_extend, prependStr_prependStr, String.append_push, ← String.pushn_normalize]
1089- · conv => rhs; rw [demangleAux, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›, if_neg ‹_›, dif_neg ‹_›, dif_neg ‹_›, dif_neg ‹_›]
1090- conv => lhs; rw [demangleAux_normalize]
1091- conv => rhs; rw [demangleAux_normalize]
1092- rw [prependStr_str_anonymous_extend, String.append_empty, ← extend_assoc, extend, extend]
1093- termination_by p.remainingBytes
1094- decreasing_by term_tactic
1095-
1096- theorem demangleAux_decodeNum_normalize {s : String} {p : s.ValidPos} (res : Name) {i : Nat} :
1097- demangleAux.decodeNum s p res i = res +-+ demangleAux.decodeNum s p .anonymous i := by
1098- fun_cases demangleAux.decodeNum s p res i
1099- · rw [demangleAux.decodeNum, dif_pos ‹_›, extend, extend]
1100- · rw [demangleAux.decodeNum.eq_def _ _ anonymous, dif_neg ‹_›, if_pos ‹_›]
1101- rw [demangleAux_decodeNum_normalize]
1102- · rw [demangleAux.decodeNum, dif_neg ‹_›, if_neg ‹_›, dif_pos ‹_›]
1103- rfl
1104- · rw [demangleAux.decodeNum, dif_neg ‹_›, if_neg ‹_›, dif_neg ‹_›]
1105- conv => lhs; rw [demangleAux_nameStart_normalize]
1106- conv => rhs; rw [demangleAux_nameStart_normalize]
1107- rw [← extend_assoc]
1108- rfl
1109- termination_by p.remainingBytes
1110- decreasing_by term_tactic
1111-
1112- theorem demangleAux_nameStart_normalize {s : String} {p : s.ValidPos} (res : Name) :
1113- demangleAux.nameStart s p res = res +-+ demangleAux.nameStart s p .anonymous := by
1114- fun_cases demangleAux.nameStart s p res
1115- · rw [demangleAux.nameStart, dif_pos ‹_›, extend]
1116- · rw [demangleAux.nameStart, dif_neg ‹_›, if_pos ‹_›, dif_pos ‹_›]
1117- rw [demangleAux_normalize, prependStr_empty]
1118- · rw [demangleAux.nameStart, dif_neg ‹_›, if_pos ‹_›, dif_neg ‹_›]
1119- rw [demangleAux_decodeNum_normalize]
1120- · rw [demangleAux.nameStart, dif_neg ‹_›, if_neg ‹_›, if_pos ‹_›]
1121- rw [demangleAux_normalize, prependStr_empty]
1122- · rw [demangleAux.nameStart, dif_neg ‹_›, if_neg ‹_›, if_neg ‹_›]
1123- conv => lhs; rw [demangleAux_normalize]
1124- conv => rhs; rw [demangleAux_normalize]
1125- rw [anonymous_extend]
1126- termination_by p.remainingBytes
1127- decreasing_by term_tactic
1128-
1129- end
1130-
11311029def tailUnderscore (s : String) : Bool :=
11321030 ∃ h, (s.endValidPos.prev h).get (by simp) = '_'
11331031
@@ -1634,10 +1532,6 @@ theorem demangleAux_nameStart_normal_str {s s' t : String} {n res : Name}
16341532 · rintro rfl
16351533 simp only [checkDisambiguation_pushHex__U, Bool.true_eq_false] at h
16361534
1637- /-macro_rules
1638- | `(tactic| induction $[using $t]? $[generalizing $g*]? $(alts?)?) =>
1639- `(tactic| induction $(⟨#[]⟩):elimTarget,* $[using $t:term]? $[generalizing $g*]? $(alts?)?)-/
1640-
16411535@[simp]
16421536theorem tailUnderscore_or (b : Bool) (pc : Char) (pt : String) :
16431537 (b || tailUnderscore (String.singleton pc ++ pt) || tailUnderscore pt) =
@@ -1646,29 +1540,6 @@ theorem tailUnderscore_or (b : Bool) (pc : Char) (pt : String) :
16461540 rintro ⟨t, rfl⟩
16471541 exact .inr ⟨String.singleton pc ++ t, String.append_push _⟩
16481542
1649- /-
1650- t s : String
1651- res : Name
1652- acc : String
1653- nm : Name
1654- b : Bool
1655- tc : Char
1656- t' : String
1657- htc : t = String.singleton tc ++ t'
1658- htc1 : ¬tc = '_'
1659- pc : Char
1660- pt : String
1661- h✝¹ : ¬(pc.isAlpha || pc.isDigit) = true
1662- h✝ : pc = '_'
1663- u : Nat
1664- hu : (2 * (u + 1) + 1) % 2 = 1
1665- h : pt.mangle ++ mangleSuffix (b || tailUnderscore (String.singleton pc ++ pt)) nm =
1666- "".pushn '_' (2 * u + 1) ++ (String.singleton tc ++ t')
1667- ⊢ Lean.Name.demangleAux✝ (s ++ (String.singleton tc ++ t')) (s.posBetween (String.singleton tc ++ t')) res acc
1668- (2 * u + 2 + 1) =
1669- res.str (acc ++ (String.singleton pc ++ pt)) +-+! nm
1670- -/
1671-
16721543theorem checkDisambiguation_of_mangle_append_mangleSuffix_eq
16731544 (h : pt.mangle ++ mangleSuffix b nm =
16741545 " " .pushn '_' (2 * u + 1 ) ++ t)
@@ -1754,7 +1625,7 @@ theorem demangleAux_ucount_output (hc : c ≠ '_')
17541625 · exfalso
17551626 replace h := checkDisambiguation_of_mangle_append_mangleSuffix_eq (sl := s) h (by simpa using Or.inr) hc rfl
17561627 rename_i ch p hu _ hds h_x h_u h_U
1757- simp only [String.get_posBetween_singleton_append, ↓Char.isValue, Bool.not_eq_true,
1628+ simp only [String.get_posBetween_singleton_append, Bool.not_eq_true,
17581629 String.next_posBetween_singleton_append, checkLowerHex_cast, not_and, ch, p]
17591630 at hu hds h_x h_u h_U
17601631 rw [Bool.eq_false_iff, ne_eq, Char.isDigit, ← Bool.decide_and, decide_eq_true_eq, ge_iff_le] at hds
0 commit comments