@[instance_reducible]
instance String.Slice.Pattern.Model.CharPred.Decidable.instPatternModelForallCharPropOfDecidablePred {p : Char → Prop} [DecidablePred p] :
Equations
theorem String.Slice.Pattern.Model.CharPred.Decidable.isRevMatch_iff_isRevMatch_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestMatch_iff_isLongestMatch_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestRevMatch_iff_isLongestRevMatch_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestMatchAt_iff_isLongestMatchAt_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos pos' : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestRevMatchAt_iff_isLongestRevMatchAt_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos pos' : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestMatchAtChain_iff_isLongestMatchAtChain_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos pos' : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestRevMatchAtChain_iff_isLongestRevMatchAtChain_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos pos' : s.Pos} :
IsLongestRevMatchAtChain p pos pos' ↔ IsLongestRevMatchAtChain (fun (x : Char) => decide (p x)) pos pos'
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestMatchAt_of_get {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} {h : pos ≠ s.endPos} (hc : p (pos.get h)) :
IsLongestMatchAt p pos (pos.next h)
theorem String.Slice.Pattern.Model.CharPred.Decidable.isLongestRevMatchAt_of_get {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} {h : pos ≠ s.startPos} (hc : p ((pos.prev h).get ⋯)) :
IsLongestRevMatchAt p (pos.prev h) pos
theorem String.Slice.Pattern.Model.CharPred.Decidable.revMatchesAt_iff_revMatchesAt_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.revMatchAt?_eq_revMatchAt?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.skipPrefix?_eq_skipPrefix?_decide {p : Char → Prop} [DecidablePred p] :
theorem String.Slice.Pattern.Model.CharPred.Decidable.skipSuffix?_eq_skipSuffix?_decide {p : Char → Prop} [DecidablePred p] :
theorem String.Slice.Pattern.Model.CharPred.Decidable.toSearcher_eq {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.toBackwardSearcher_eq {p : Char → Prop} [DecidablePred p] {s : Slice} :
ToBackwardSearcher.toSearcher p s = ToBackwardSearcher.toSearcher (fun (x : Char) => decide (p x)) s
theorem String.Slice.Pattern.Model.CharPred.Decidable.isValidSearchFrom_iff_isValidSearchFrom_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} {l : List (SearchStep s)} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.isValidRevSearchFrom_iff_isValidRevSearchFrom_decide {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} {l : List (SearchStep s)} :
theorem String.Slice.Pattern.Model.CharPred.Decidable.not_revMatchesAt_of_get {p : Char → Prop} [DecidablePred p] {s : Slice} {pos : s.Pos} {h : pos ≠ s.startPos} (hc : ¬p ((pos.prev h).get ⋯)) :
¬RevMatchesAt p pos
theorem String.Slice.startsWith_prop_eq_startsWith_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.dropPrefix?_prop_eq_dropPrefix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.dropPrefix_prop_eq_dropPrefix_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.skipPrefix?_prop_eq_skipPrefix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.Pattern.ForwardPattern.skipPrefix?_prop_eq_skipPrefix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.skipPrefixWhile_prop_eq_skipPrefixWhile_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.skipSuffix?_prop_eq_skipSuffix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.dropSuffix?_prop_eq_dropSuffix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.dropSuffix_prop_eq_dropSuffix_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.Pattern.BackwardPattern.skipSuffix?_prop_eq_skipSuffix?_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.Pos.revSkipWhile_prop_eq_revSkipWhile_decide {p : Char → Prop} [DecidablePred p] {s : Slice} (curr : s.Pos) :
theorem String.Slice.skipSuffixWhile_prop_eq_skipSuffixWhile_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.dropEndWhile_prop_eq_dropEndWhile_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :
theorem String.Slice.takeEndWhile_prop_eq_takeEndWhile_decide {p : Char → Prop} [DecidablePred p] {s : Slice} :