use std::collections::HashSet;
use std::sync::LazyLock;
const PREFIXES: &[&str] = &["re", "un", "pre", "over"];
const BASE_VERBS: &[&str] = &[
"abstracted",
"abstracting",
"abstracts",
"added",
"adding",
"adds",
"allowed",
"allowing",
"allows",
"amended",
"amending",
"amends",
"appended",
"appending",
"appends",
"arranged",
"arranges",
"arranging",
"attached",
"attaches",
"attaching",
"automated",
"automates",
"automating",
"balanced",
"balances",
"balancing",
"building",
"builds",
"built",
"bumped",
"bumping",
"bumps",
"cached",
"caches",
"caching",
"calculated",
"calculates",
"calculating",
"changes",
"changing",
"checked",
"checking",
"checks",
"clarified",
"clarifies",
"clarifying",
"cleaned",
"cleaning",
"cleans",
"cloned",
"clones",
"cloning",
"compared",
"compares",
"comparing",
"compiled",
"compiles",
"compiling",
"composed",
"composes",
"composing",
"compressed",
"compresses",
"compressing",
"computed",
"computes",
"computing",
"configured",
"configures",
"configuring",
"consolidated",
"consolidates",
"consolidating",
"copied",
"copies",
"copying",
"corrected",
"correcting",
"corrects",
"created",
"creates",
"creating",
"decrypted",
"decrypting",
"decrypts",
"deleted",
"deletes",
"deleting",
"deployed",
"deploying",
"deploys",
"deprecated",
"deprecates",
"deprecating",
"determined",
"determines",
"determining",
"disabled",
"disables",
"disabling",
"dispatched",
"dispatches",
"dispatching",
"displayed",
"displaying",
"displays",
"documented",
"documenting",
"documents",
"dropped",
"dropping",
"drops",
"enabled",
"enables",
"enabling",
"encrypted",
"encrypting",
"encrypts",
"enforced",
"enforces",
"enforcing",
"enhanced",
"enhances",
"enhancing",
"enriched",
"enriches",
"enriching",
"evaluated",
"evaluates",
"evaluating",
"excluded",
"excludes",
"excluding",
"expanded",
"expanding",
"expands",
"extended",
"extending",
"extends",
"extracted",
"extracting",
"extracts",
"finalised",
"finalises",
"finalising",
"finalized",
"finalizes",
"finalizing",
"finished",
"finishes",
"finishing",
"fixed",
"fixes",
"fixing",
"forced",
"forces",
"forcing",
"freed",
"freeing",
"frees",
"generated",
"generates",
"generating",
"handled",
"handles",
"handling",
"hid",
"hides",
"hiding",
"ignored",
"ignores",
"ignoring",
"implemented",
"implementing",
"implements",
"improved",
"improves",
"improving",
"incorporated",
"incorporates",
"incorporating",
"indexed",
"indexes",
"indexing",
"initialised",
"initialises",
"initialising",
"initialized",
"initializes",
"initializing",
"initiated",
"initiates",
"initiating",
"installed",
"installing",
"installs",
"integrated",
"integrates",
"integrating",
"introduced",
"introduces",
"introducing",
"invoked",
"invokes",
"invoking",
"linted",
"linting",
"lints",
"listed",
"listing",
"lists",
"loaded",
"loading",
"loads",
"logged",
"made",
"makes",
"making",
"merged",
"merges",
"merging",
"migrated",
"migrates",
"migrating",
"moved",
"moves",
"moving",
"normalised",
"normalises",
"normalising",
"normalized",
"normalizes",
"normalizing",
"optimised",
"optimises",
"optimising",
"optimized",
"optimizes",
"optimizing",
"organised",
"organises",
"organising",
"organized",
"organizes",
"organizing",
"overrides",
"overriding",
"overrode",
"permits",
"permitted",
"permitting",
"polished",
"polishes",
"polishing",
"populated",
"populates",
"populating",
"prepended",
"prepending",
"prepends",
"prevented",
"preventing",
"prevents",
"pulled",
"pulling",
"pulls",
"purged",
"purges",
"purging",
"pushed",
"pushes",
"pushing",
"reading",
"reads",
"realigned",
"realigning",
"realigns",
"rearranged",
"rearranges",
"rearranging",
"rebased",
"rebases",
"rebasing",
"rebuilding",
"rebuilds",
"rebuilt",
"rectified",
"rectifies",
"rectifying",
"redrawed",
"redrawing",
"redraws",
"redrew",
"reduced",
"reduces",
"reducing",
"reduplicated",
"reduplicates",
"reduplicating",
"refactored",
"refactoring",
"refactors",
"refined",
"refines",
"refining",
"refits",
"refitting",
"released",
"releases",
"releasing",
"reloaded",
"reloading",
"reloads",
"removed",
"removes",
"removing",
"renamed",
"renames",
"renaming",
"reordered",
"reordering",
"reorders",
"replaced",
"replaces",
"replacing",
"replicated",
"replicates",
"replicating",
"retrieved",
"retrieves",
"retrieving",
"revamped",
"revamping",
"revamps",
"reverted",
"reverting",
"reverts",
"reviewed",
"reviewing",
"reviews",
"revised",
"revises",
"revising",
"reworded",
"rewording",
"rewords",
"scaled",
"scales",
"scaling",
"secured",
"secures",
"securing",
"serialized",
"serializes",
"serializing",
"sets",
"setting",
"simplified",
"simplifies",
"simplifying",
"skipped",
"skipping",
"skips",
"solved",
"solves",
"solving",
"sorted",
"sorting",
"sorts",
"specified",
"specifies",
"specifying",
"standardised",
"standardises",
"standardising",
"standardized",
"standardizes",
"standardizing",
"started",
"starting",
"starts",
"stopped",
"stopping",
"stops",
"streamlined",
"streamlines",
"streamlining",
"structured",
"structures",
"structuring",
"styled",
"styles",
"supported",
"supporting",
"supports",
"swapped",
"swapping",
"swaps",
"synced",
"synched",
"synching",
"synchronised",
"synchronises",
"synchronising",
"synchronized",
"synchronizes",
"synchronizing",
"synchs",
"syncing",
"syncs",
"tailored",
"tailoring",
"tailors",
"terminated",
"terminates",
"terminating",
"tested",
"testing",
"tests",
"threw",
"throwing",
"thrown",
"transitioned",
"transitioning",
"transitions",
"translated",
"translates",
"translating",
"truncated",
"truncates",
"truncating",
"turned",
"turning",
"turns",
"unified",
"unifies",
"unifying",
"updated",
"updates",
"updating",
"upgraded",
"upgrades",
"upgrading",
"used",
"uses",
"using",
"validated",
"validates",
"validating",
"whitelisted",
"whitelisting",
"whitelists",
"wrapped",
"wrapping",
"wraps",
"writes",
"writing",
"wrote",
];
fn generate_verbs() -> HashSet<String> {
let mut verbs = HashSet::new();
for &verb in BASE_VERBS {
verbs.insert(verb.to_string());
for &prefix in PREFIXES {
verbs.insert(format!("{prefix}{verb}"));
verbs.insert(format!("{prefix}-{verb}"));
}
}
verbs
}
pub static NON_IMPERATIVE_VERBS: LazyLock<HashSet<String>> = LazyLock::new(generate_verbs);