[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals - #7918

Merged
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d
Apr 29, 2026
Merged

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals#7918
Amaury Levé (Evangelink) merged 3 commits into
mainfrom
lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Extract a precise informal specification for CommandLineParseResult.Equals, the structural-equality implementation for the command-line parse result type.

The spec documents:

  • 19 properties across 6 groups (null-safety, extensionality, object.Equals consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
  • Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
  • Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
  • Lean modelling plan: Option String for nullable, List for collections

Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)

🔬 Lean Squad — automated FV agent

Fixes#7911

Extract a precise informal specification for CommandLineParseResult.Equals,
the structural-equality implementation for the command-line parse result type.
The spec documents:
- 19 properties across 6 groups (null-safety, extensionality, object.Equals
consistency, order-sensitivity, Empty-value behaviour, ToolName comparison)
- Algorithm walkthrough (O(n·m), pure, no exceptions for null input)
- Edge cases: null other, case-sensitive ToolName, order-sensitive errors/options
- Lean modelling plan: Option String for nullable, List for collections
Next: Task 3 — write ArgumentArity.lean (highest priority Lean target)
🔬 Lean Squad — automated FV agent
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 04:49

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an informal, source-derived specification for Microsoft.Testing.Platform.CommandLine.CommandLineParseResult.Equals, to support the Lean Squad FV workflow and future Lean modelling work.

Changes:

  • Introduces a new FV spec markdown document describing CommandLineParseResult.Equals.
  • Documents equality properties (null-safety, extensionality, order-sensitivity, Empty behavior, ToolName comparison) and an algorithm walkthrough.
  • Captures Lean modelling notes/approximations for translating the behavior into Lean.
Show a summary per file
FileDescription
formal-verification/specs/commandlineparseresult_equals_informal.mdNew informal spec for CommandLineParseResult.Equals intended as input to Lean formalisation.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 6

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

formal-verification/specs/commandlineparseresult_equals_informal.md:162

  • The statement that Equals models whether the command line was “exactly the same string” is not accurate for this type: the parser normalizes option prefixes (trims -/--) and may unescape/strip quotes in arguments, so distinct command-line strings can produce equal parse results. Consider rephrasing this as “exactly the same parsed/normalized structure” to match the actual semantics.
The equality is **order-preserving structural equality** over the full parse tree. This mirrors the semantics of a command-line invocation: `--foo bar --baz` is semantically different from `--baz --foo bar` even if both produce option sets that "contain" the same options. This contrasts with `IsOptionSet` and `TryGetOptionArgumentList`, which are lookup methods that aggregate over all options with a matching name and are case-insensitive. The `Equals` method deliberately models "was the command line *exactly* the same string?", not "do both command lines select the same options?".
  • Files reviewed: 1/1 changed files
  • Comments generated: 3

Comment threadformal-verification/specs/commandlineparseresult_equals_informal.md Outdated
…al.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 29, 2026 05:14

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

@Evangelink
Amaury Levé (Evangelink) merged commit 1ee148b into mainApr 29, 2026
21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the lean-squad/task2-parseresult-equals-spec-2026-04-29-87fea4e2e7e10b8d branch April 29, 2026 09:11
Amaury Levé (Evangelink) added a commit that referenced this pull request May 12, 2026
…ult.Equals (#7918)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Lean Squad] feat(fv): Task 2 — informal spec for CommandLineParseResult.Equals

2 participants

@Evangelink