/- Copyright (c) 2025 Lean FRO, LLC. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Henrik Böving, Markus Himmel -/ module prelude public import Init.Data.String.Pattern.Pred set_option doc.verso true /-! This module defines the necessary instances to register {name}`Char` with the pattern framework. -/ public section namespace String.Slice.Pattern namespace Char instance {c : Char} : ForwardPattern c where skipPrefixOfNonempty? s h := ForwardPattern.skipPrefixOfNonempty? (· == c) s h skipPrefix? s := ForwardPattern.skipPrefix? (· == c) s startsWith s := ForwardPattern.startsWith (· == c) s instance {c : Char} : StrictForwardPattern c where ne_startPos h q := StrictForwardPattern.ne_startPos (pat := (· == c)) h q instance {c : Char} : LawfulForwardPattern c where skipPrefixOfNonempty?_eq h := LawfulForwardPattern.skipPrefixOfNonempty?_eq (pat := (· == c)) h startsWith_eq s := LawfulForwardPattern.startsWith_eq (pat := (· == c)) s instance {c : Char} : ToForwardSearcher c (ToForwardSearcher.DefaultForwardSearcher (· == c)) where toSearcher s := ToForwardSearcher.toSearcher (· == c) s instance {c : Char} : BackwardPattern c where skipSuffixOfNonempty? s h := BackwardPattern.skipSuffixOfNonempty? (· == c) s h skipSuffix? s := BackwardPattern.skipSuffix? (· == c) s endsWith s := BackwardPattern.endsWith (· == c) s instance {c : Char} : StrictBackwardPattern c where ne_endPos h q := StrictBackwardPattern.ne_endPos (pat := (· == c)) h q instance {c : Char} : LawfulBackwardPattern c where skipSuffixOfNonempty?_eq h := LawfulBackwardPattern.skipSuffixOfNonempty?_eq (pat := (· == c)) h endsWith_eq s := LawfulBackwardPattern.endsWith_eq (pat := (· == c)) s instance {c : Char} : ToBackwardSearcher c (ToBackwardSearcher.DefaultBackwardSearcher c) := .defaultImplementation end Char end String.Slice.Pattern