Skip to content

Demo

A proof assistant is a program that checks proofs. It cannot be talked into accepting one: it type-checks the text it is given and answers with an exit code. Here the proof assistant is Agda, the writer is a language model, and Agda's answer is the only judge of what the model wrote.

agda-mcp is a server that lets the model ask Agda questions while it works, the way a person does in an editor: what is the type of this expression, what does this module export, does this file check. This page shows the server doing that, with nothing invented. The clocks are measured from archived sessions, the sessions are replayed from their transcripts, and every figure comes from a file beside this page that names the run it was read from.

Three clocks

What the server changes is the price of a question, not the price of a verdict. A question about a file the server already holds is answered from the loaded file, in milliseconds. A verdict, whether the file type-checks, is a fresh run of Agda every time, on the server and off it, and costs seconds. In a real development the same verdict from a shell takes longer still: the third bar is one module's check in the field, and the whole-library check a development finally gates on runs from tens of seconds to minutes. The bars start together, and each stops when its measured time is up.

  1. A question about a file the server already holds3 ms

    The median of 165 questions the interaction lane answered about a file it already held (p90 22 ms, longest 93 ms); the same questions when the file had to be loaded first took 4.8 s at the median. Measured on arm-surface-mcp-1 and arm-surface-mcp-2 and arm-surface-both-1 and arm-verdict-mcp-1 and arm-verdict-mcp-2, Sonnet 5 on the server of 2026-09-26.

  2. A verdict: check_file, a fresh batch run of Agda2.0 s

    The median of 283 calls of check_file on the same runs (p90 5.5 s, longest 7.9 s), each a run of agda over the file, answered from its exit code.

  3. The same verdict from a shell, in a real development10 s

    Not from the runs above: the archive holds no shell timings. This is the median of the single-module agda checks a shell ran in an agda-algebras session, as agda-native-air issue 83 recorded them and ADR 0002 § 2 quotes them; the whole-library check those sessions gate on runs 20 s to 10 min (ADR 0002 § 12).

One scale: a bar’s length is its time, and the bars start together. Every figure is in numbers.json beside this page, with the run ids and the field it was read from.

Six sessions, one lemma

The lemma is about algebras: if one algebra sits inside a second as a subalgebra, and the second is isomorphic to a third, then the first sits inside the third. The library it comes from already proves it. The statement was put to the model with that proof removed and a hole in its place, and the model was free to read the library. The same model met it six times: with the server, with a shell that had Agda on it, and with both, and each of those twice. The first time, the file's header carried two comment lines the benchmark's fixtures used to carry, one naming the module that holds the library's proof and one naming the proof's shape in a word, pairing; every run archived before 2026-09-29 had such lines in view (agda-native-air issue 219). The second time, eight days later, the header had been stripped of them. The server had been trimmed and the shell's prompt now named the library's directories in between, so the two rows are not a controlled experiment on the header alone; the page shows what the six sessions did and says no more than that. Each tab replays what the model typed and what it was told back, in the order it happened. A call types the way the model typed it; the answer under it appears whole, because the tool answered in one response, and it is here in full behind a control that says how long it is. The verdict at the end of each session is the archive's judge's, not this page's.

instrumentfixture headerthe judgeturnsquestions to Agdacorpus searcheslibrary readseditsverdictseach verdict, in order
server onlyhints in viewsolved1252111accepted
shell onlyhints in viewsolved1500922refused, accepted
server and shellhints in viewsolved1400822refused, accepted
server onlyheader-freerestated510011accepted
shell onlyheader-freerestated900511accepted
server and shellheader-freerestated1300811accepted

Counted from each session’s steps: a question is a lane-answered tool (type_of, exports_of, definition_of, get_goal); a search is a corpus tool; a library read is a shell command the archive’s audit classed as one, or a read of a file outside the work directory; a verdict is check_file or agda run in the shell, accepted or refused as the tool answered. The judge’s column is the archive’s: a file that type-checks by calling the library’s own lemma for the statement is restated, never solved.

Six sessions on one lemma settle nothing about a sweep, and the score below says how the sweeps went. What they show is the shape of the difference, twice over. Across the instruments: with the server alone, the model asked Agda what things were before it wrote, and its one verdict was accepted; with a shell, alone or beside the server, it read the library through grep and wrote from what it found, and with the hint in view it had its first verdict refused for a name out of scope, which is the kind of question the first session had asked. Across the header: with the proof's shape named, the model wrote the proof out in all three sessions, and the judge counted three solves; with the line gone, all three found the library's own lemma, one by asking the server what a module exports and two by grepping the sources, and called it, which the judge counts as a restatement and never as a solve. The row did not get harder. agda-native-air's reading of the rows that moved this way across its sweeps is that the line decided whether a found answer was written out or cited, and that is what the two rows of tabs show on this one. Opus 5 met the same row header-free, was shown by one probe that the citation would do, and wrote the proof out anyway; that session is suite219-opus5-mcp-1 in the archive and is linked rather than replayed, because the tabs are one model. These six are here because the row is in every archived arm of the mined tier, and because the second row of tabs is the same model on the same row with the same three instruments and the header gone.

≤-trans-≅′, server only, hints in view

Server only, with the hint in view. The corpus is searched, definition_of pays for loading the file, and the questions after it are answered on the loaded file in milliseconds. Then one edit that writes the proof out, and one verdict, which is a fresh run of Agda.

model
Sonnet 5 (claude-sonnet-5)
instrument
server only
run
arm162-mcp-1 2026-09-21
fixture header
hints in view: Source: Setoid.Subalgebras.Properties (agda-algebras); Strategy: pairing
server
the server of 2026-09-21 (fourteen tools, the libraries' sources readable on every arm)
client
2.1.261 (Claude Code)
turns
12
tool calls
11 Read ×2, search_by_name ×1, search_by_type ×1, definition_of ×1, exports_of ×2, type_of ×2, Edit ×1, check_file ×1
wall clock
48 s (indicative: subjects ran three at a time)
cost, list price
USD 0.39
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 12 turns and 11 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (963 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Source: Setoid.Subalgebras.Properties (agda-algebras)
    8	-- Import stratum: wholesale
    9	-- Strategy: pairing
    10	--
    11	module Subalgebras-sub-trans-iso where
    12	
    13	open import AgdaDojang.Debug
    14	
    15	open import Agda.Primitive   using ( Level )
    16	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    17	
    18	open import Overture              using ( Signature )
    19	open import Setoid.Algebras       using ( Algebra )
    20	open import Setoid.Functions
    21	open import Setoid.Homomorphisms
    22	open import Setoid.Subalgebras
    23	
    24	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    25	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    26	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    27	≤-trans-≅′ p B≅C = {!!}
    28	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. agda-mcp
    search_by_name(pattern: ≤-trans-≅)
    answered
    results: 1
    the whole answer, as the model saw it (507 characters of JSON)
    [{"defKind":"function","hasBody":true,"module":"Setoid.Subalgebras.Properties","prettyQname":"Setoid.Subalgebras.Properties.≤-trans-≅","type":"{𝑆.𝓞 𝑆.𝓥 : Agda.Primitive.Level}\n{𝑆 : Overture.Signatures.Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ β ρᵇ γ ρᶜ : Agda.Primitive.Level}\n{𝑨 : Setoid.Algebras.Basic.Algebra α ρᵃ}\n{𝑩 : Setoid.Algebras.Basic.Algebra β ρᵇ}\n{𝑪 : Setoid.Algebras.Basic.Algebra γ ρᶜ} →\n𝑨 Setoid.Subalgebras.Basic._.≤ 𝑩 →\n𝑩 Setoid.Homomorphisms.Isomorphisms._.≅ 𝑪 →\n𝑨 Setoid.Subalgebras.Basic._.≤ 𝑪"}]
  5. agda-mcp
    search_by_type(pattern: ≤, limit: 30)
    answered
    results: 30
    the whole answer, as the model saw it (18,762 characters of JSON)
    [{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.FiniteOrder","prettyQname":"Classical.Properties.Lattice.FiniteOrder._≤?_","type":"{n : Agda.Builtin.Nat.Nat}\n(_∧_\n : Data.Fin.Base.Fin n → Data.Fin.Base.Fin n → Data.Fin.Base.Fin n)\n(a b : Data.Fin.Base.Fin n) →\nRelation.Nullary.Decidable.Core.Dec\n((_∧_ Classical.Properties.Lattice.FiniteOrder.≤ a) b)"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∧-greatest","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y z\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ z) x →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ z) y →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ z)\n((𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∧ x) y)"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∧-lowerʳ","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Structures.Lattice.Basic.Lattice-Op.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤\n (𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∧ x) y)\ny"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∧-lowerˡ","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Structures.Lattice.Basic.Lattice-Op.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤\n (𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∧ x) y)\nx"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∨-least","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y z\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) z →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ y) z →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤\n (𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∨ x) y)\nz"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∨-upperʳ","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Structures.Lattice.Basic.Lattice-Op.𝑨 𝑳))}\n{y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ y)\n((𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∨ x) y)"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.∨-upperˡ","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))}\n{y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Structures.Lattice.Basic.Lattice-Op.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x)\n((𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∨ x) y)"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-antisym","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ y) x →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈ x)\ny"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-from-∨","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Structures.Lattice.Basic.Lattice-Op.𝑨 𝑳))} →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈\n (𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∨ x) y)\ny →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-refl","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) x"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-reflexive","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈ x)\ny →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-respʳ-≈","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y y'\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈ y)\ny' →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y'"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-respˡ-≈","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x x' y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈ x)\nx' →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x') y"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-trans","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y z\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ y) z →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) z"},{"defKind":"function","hasBody":true,"module":"Classical.Properties.Lattice.Lattice-Order","prettyQname":"Classical.Properties.Lattice.Lattice-Order.≤-via-∨","type":"{α ρ : Agda.Primitive.Level}\n(𝑳 : Classical.Structures.Lattice.Basic.Lattice α ρ)\n{x y\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Algebras.Basic.Algebra.Domain\n    (Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳))} →\n(𝑳 Classical.Properties.Lattice.Lattice-Order.≤ x) y →\n(Setoid.Algebras.Basic.𝔻[\n Classical.Properties.Lattice.Lattice-Order.𝑨 𝑳 ]\n Relation.Binary.Bundles.Setoid.≈\n (𝑳 Classical.Structures.Lattice.Basic.Lattice-Op.∨ x) y)\ny"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.congruenceOf-mono","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level}\n(𝑴 𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢 ℓ) →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑴)\n𝑵 →\nClassical.Structures.Group.Congruences.GroupCongruences.congruenceOf\n𝒢 𝑴\nSetoid.Congruences.Lattice._.⊆\nClassical.Structures.Group.Congruences.GroupCongruences.congruenceOf\n𝒢 𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.fwd","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level}\n(𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢 ℓ) →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ\n Classical.Structures.Group.Congruences.GroupCongruences.normalOf 𝒢\n (Classical.Structures.Group.Congruences.GroupCongruences.congruenceOf\n  𝒢 𝑵))\n𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.normalOf-mono","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level}\n(θ φ\n : Setoid.Congruences.Basic.Con\n   (Classical.Structures.Group.Congruences.GroupCongruences.𝑮 𝒢) ℓ) →\nθ Setoid.Congruences.Lattice._.⊆ φ →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ\n Classical.Structures.Group.Congruences.GroupCongruences.normalOf 𝒢\n θ)\n(Classical.Structures.Group.Congruences.GroupCongruences.normalOf 𝒢\n φ)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ-isPartialOrder","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level} →\nRelation.Binary.Structures.IsPartialOrder\n(Classical.Structures.Group.Congruences.GroupCongruences._≈ⁿ_ 𝒢)\n(Classical.Structures.Group.Congruences.GroupCongruences._≤ⁿ_ 𝒢)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ-refl","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level}\n{𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢 ℓ} →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑵) 𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.Congruences.GroupCongruences","prettyQname":"Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ-trans","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n{ℓ : Agda.Primitive.Level}\n{𝑳 𝑴 𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢 ℓ} →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑳)\n𝑴 →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑴)\n𝑵 →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑳) 𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent","prettyQname":"Classical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.∥∥-mono","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(𝑭\n : Setoid.Algebras.Finite.FiniteAlgebra\n   (Agda.Builtin.Sigma.Σ.fst 𝒢))\n(𝑴 𝑵\n : Classical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.Normalᵈ\n   𝒢 𝑭) →\nClassical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.setᵈ\n𝒢 𝑭 𝑴\nRelation.Unary.⊆\nClassical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.setᵈ\n𝒢 𝑭 𝑵 →\nClassical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.∥\n𝒢 ∥\n𝑭 𝑴\nData.Nat.Base.≤\nClassical.Structures.Group.MinimalNormalDescent.MinimalNormalDescent.∥\n𝒢 ∥\n𝑭 𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalClosure.NormalClosureᵈ","prettyQname":"Classical.Structures.Group.NormalClosure.NormalClosureᵈ.⟪⟫-least","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(𝑭\n : Setoid.Algebras.Finite.FiniteAlgebra\n   (Agda.Builtin.Sigma.Σ.fst 𝒢))\n(y : Classical.Structures.Group.NormalClosure.NormalClosureᵈ.G 𝒢 𝑭)\n(𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢\n   (Classical.Structures.Group.NormalClosure.NormalClosureᵈ.L 𝒢 𝑭)) →\ny Relation.Unary.∈\nClassical.Structures.Group.Congruences.GroupCongruences.set 𝒢 𝑵 →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ\n Classical.Structures.Group.NormalClosure.NormalClosureᵈ.⟪ 𝒢 ⟫ 𝑭 y)\n𝑵"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.Nrm-isBoundedLattice","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level) →\nRelation.Binary.Lattice.Structures.IsBoundedLattice\n(Classical.Structures.Group.Congruences.GroupCongruences._≈ⁿ_ 𝒢)\n(Classical.Structures.Group.Congruences.GroupCongruences._≤ⁿ_ 𝒢)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n ℓ₀)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∩ⁿ\n ℓ₀)\n(Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.𝟙ⁿ\n 𝒢 ℓ₀)\n(Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.𝟘ⁿ\n 𝒢 ℓ₀)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.Nrm-isLattice","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level) →\nRelation.Binary.Lattice.Structures.IsLattice\n(Classical.Structures.Group.Congruences.GroupCongruences._≈ⁿ_ 𝒢)\n(Classical.Structures.Group.Congruences.GroupCongruences._≤ⁿ_ 𝒢)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n ℓ₀)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∩ⁿ\n ℓ₀)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.least","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level)\n(𝑴 𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢\n   (Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.L\n    𝒢 ℓ₀))\n(𝑷\n : Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.Nrmᴸ\n   𝒢 ℓ₀) →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑴)\n𝑷 →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑵)\n𝑷 →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ\n (𝒢\n  Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n  ℓ₀)\n 𝑴 𝑵)\n𝑷"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.upperʳ","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level)\n(𝑴 𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢\n   (Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.L\n    𝒢 ℓ₀)) →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑵)\n((𝒢\n  Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n  ℓ₀)\n 𝑴 𝑵)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.upperˡ","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level)\n(𝑴 𝑵\n : Classical.Structures.Group.Congruences.GroupCongruences.NormalSubgroup\n   𝒢\n   (Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.L\n    𝒢 ℓ₀)) →\n(𝒢 Classical.Structures.Group.Congruences.GroupCongruences.≤ⁿ 𝑴)\n((𝒢\n  Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n  ℓ₀)\n 𝑴 𝑵)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ-supremum","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level) →\nRelation.Binary.Lattice.Definitions.Supremum\n(Classical.Structures.Group.Congruences.GroupCongruences._≤ⁿ_ 𝒢)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∨ⁿ\n ℓ₀)"},{"defKind":"function","hasBody":true,"module":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice","prettyQname":"Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∩ⁿ-infimum","type":"{α ρ : Agda.Primitive.Level}\n(𝒢 : Classical.Structures.Group.Basic.Group α ρ)\n(ℓ₀ : Agda.Primitive.Level) →\nRelation.Binary.Lattice.Definitions.Infimum\n(Classical.Structures.Group.Congruences.GroupCongruences._≤ⁿ_ 𝒢)\n(𝒢\n Classical.Structures.Group.NormalSubgroupLattice.NormalSubgroupLattice.∩ⁿ\n ℓ₀)"}]
  6. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  7. agda-mcp
    definition_of(name: Setoid.Subalgebras.Properties.≤-trans-≅)
    answered5.8 s (loading the file first)
    elapsedMs: 5849definitions: 11
    the whole answer, as the model saw it (5,760 characters of JSON)
    {"checkedFromSource":true,"command":{"args":["--interaction-json"],"binary":"agda","cwd":"<repo>"},"definitions":[{"col":1,"endCol":8,"endLine":140,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md","line":140,"qualified":"Setoid.Homomorphisms.Isomorphisms.≅-trans"},{"col":3,"endCol":12,"endLine":85,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":85,"qualified":"Setoid.Subalgebras.Properties._.≅-trans-≤"},{"col":3,"endCol":10,"endLine":78,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":78,"qualified":"Setoid.Subalgebras.Properties._.≤-trans"},{"col":3,"endCol":12,"endLine":81,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":81,"qualified":"Setoid.Subalgebras.Properties._.≤-trans-≅"},{"col":3,"endCol":10,"endLine":90,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":90,"qualified":"Setoid.Subalgebras.Properties._.≥-trans"},{"col":1,"endCol":8,"endLine":140,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md","line":140,"qualified":"Setoid.Homomorphisms.Isomorphisms.≅-trans"},{"col":3,"endCol":12,"endLine":85,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":85,"qualified":"Setoid.Subalgebras.Properties._.≅-trans-≤"},{"col":3,"endCol":10,"endLine":78,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":78,"qualified":"Setoid.Subalgebras.Properties._.≤-trans"},{"col":3,"endCol":12,"endLine":81,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":81,"qualified":"Setoid.Subalgebras.Properties._.≤-trans-≅"},{"col":1,"endCol":11,"endLine":24,"file":"<work>/Subalgebras-sub-trans-iso.agda","line":24,"qualified":"Subalgebras-sub-trans-iso.≤-trans-≅′"},{"col":3,"endCol":10,"endLine":90,"file":"<nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md","line":90,"qualified":"Setoid.Subalgebras.Properties._.≥-trans"}],"elapsedMs":5849,"lane":{"agdaVersion":"2.8.0","iotcm":["IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_load \"<work>/Subalgebras-sub-trans-iso.agda\" [\"-i\",\"agda-dojang/agda\",\"--library-file=agda/libraries\",\"-l\",\"agda-dojang\",\"-l\",\"standard-library\",\"-l\",\"agda-algebras\",\"--safe\",\"-i\",\"<work>\"])","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Subalgebras.Properties.\\8804-trans-\\8773\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_infer_toplevel Normalised \"Setoid.Subalgebras.Properties.\\8804-trans-\\8773\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Homomorphisms.\\8773-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Subalgebras.\\8773-trans-\\8804\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Subalgebras.\\8804-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Subalgebras.\\8804-trans-\\8773\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"Setoid.Subalgebras.\\8805-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8773-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8773-trans-\\8804\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8804-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8804-trans-\\8773\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8804-trans-\\8773\\8242\")","IOTCM \"<work>\" None Direct (Cmd_show_version)","IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_why_in_scope_toplevel \"\\8805-trans\")","IOTCM \"<work>\" None Direct (Cmd_show_version)"],"load":"first","loadElapsedMs":5806,"pid":1368034,"root":"<work>","spawned":true},"name":"Setoid.Subalgebras.Properties.≤-trans-≅","project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"recovered":"did-you-mean","scope":"toplevel","unlocated":[]}
  8. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  9. files
    Read(file_path: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md, offset: 1, limit: 95)
    answered
    1 ---
    the whole answer, as the model saw it (4,347 characters of text)
    1	---
    2	layout: default
    3	title : "Setoid.Subalgebras.Properties module (The Agda Universal Algebra Library)"
    4	date : "2021-07-18"
    5	author: "agda-algebras development team"
    6	---
    7	
    8	#### Properties of the subalgebra relation for setoid algebras
    9	
    10	This is the [Setoid.Subalgebras.Properties][] module of the [Agda Universal Algebra Library][].
    11	
    12	This module establishes the order-theoretic facts about the subalgebra relation
    13	`_≤_`{.AgdaFunction} that the rest of the library relies on: that it is a
    14	preorder, that isomorphism refines it in either direction, that it survives
    15	universe lifting, and that it is preserved by products.
    16	
    17	The preorder is stated with respect to isomorphism rather than equality
    18	(`≤-preorder`{.AgdaFunction}), which is the only sensible choice, since mutual
    19	embeddings do not make two algebras equal.  The universe-lifting group is the
    20	part used most often, for the reason recorded in [Setoid.Algebras.Basic][]:
    21	Agda's universes are not cumulative, so a `≤` established at one level has to be
    22	transported explicitly before it can be used at another.
    23	
    24	<!--
    25	```agda
    26	{-# OPTIONS --cubical-compatible --exact-split --safe #-}
    27	
    28	module Setoid.Subalgebras.Properties where
    29	
    30	open import Agda.Primitive using () renaming ( Set to Type )
    31	
    32	-- Imports from the Agda Standard Library -------------------------------------------
    33	open import Data.Product              using ( _,_ )
    34	open import Function                  using ( _∘_ )  renaming ( Func to _⟶_ )
    35	open import Level                     using ( Level ; _⊔_ )
    36	open import Relation.Binary           using ( Setoid )
    37	open import Relation.Unary            using ( Pred ; _⊆_ )
    38	import Relation.Binary.Structures as RelStructs
    39	
    40	import Relation.Binary.Reasoning.Setoid as SetoidReasoning
    41	
    42	-- Imports from the Agda Universal Algebra Library ----------------------------------
    43	open import Overture                  using  ( proj₁ ; proj₂ ; 𝓞 ; 𝓥 ; Signature ; 𝑆 )
    44	open import Setoid.Algebras           using  ( Algebra ; Lift-Algˡ ; Lift-Algʳ
    45	                                             ; Lift-Alg ; ov ; ⨅ ; 𝔻[_] )
    46	open import Setoid.Functions          using  ( id-is-injective ; IsInjective ; ⊙-injective )
    47	open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    48	                                             ; ≅toInjective ; ≅fromInjective ; mkiso
    49	                                             ; ≅-sym ; ≅-refl ; ≅-trans
    50	                                             ; Lift-≅ˡ ; Lift-≅ ; Lift-≅ʳ)
    51	open import Setoid.Subalgebras.Basic  using  ( _≤_ ; _≥_ ; _≤c_ )
    52	
    53	private variable α ρᵃ β ρᵇ γ ρᶜ ι : Level
    54	```
    55	-->
    56	
    57	The subalgebra relation is a *preorder*, i.e., a reflexive, transitive binary relation.
    58	
    59	```agda
    60	open _≅_
    61	
    62	≅→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    63	≅→≤ φ = (to φ) , ≅toInjective φ
    64	
    65	≅→≥ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    66	≅→≥ φ = (from φ) , ≅fromInjective φ
    67	
    68	≤-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    69	≤-refl = ≅→≤
    70	
    71	≥-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    72	≥-refl = ≅→≤ ∘ ≅-sym
    73	
    74	≤-reflexive : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≤ 𝑨
    75	≤-reflexive {𝑨 = 𝑨} = 𝒾𝒹 , id-is-injective {𝑨 = 𝔻[ 𝑨 ]}
    76	
    77	module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    78	  ≤-trans : 𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    79	  ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    80	
    81	  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    82	  ≤-trans-≅ (h , hinj) B≅C =
    83	    ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    84	
    85	  ≅-trans-≤ : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    86	  ≅-trans-≤ A≅B (h , hinj) =
    87	    ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    88	
    89	module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    90	  ≥-trans : 𝑨 ≥ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪
    91	  ≥-trans A≥B B≥C = ≤-trans B≥C A≥B
    92	
    93	≤→≤c→≤c : {𝑨 : Algebra {𝑆 = 𝑆} α α}{𝑩 : Algebra {𝑆 = 𝑆} α α}{𝒦 : Pred(Algebra {𝑆 = 𝑆} α α) (ov {𝑆 = 𝑆} α)}
    94	  → 𝑨 ≤ 𝑩 → 𝑩 ≤c 𝒦 → 𝑨 ≤c 𝒦
    95	≤→≤c→≤c A≤B sB = (proj₁ sB) , (proj₁ (proj₂ sB) , ≤-trans A≤B (proj₂ (proj₂ sB)))
  10. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  11. agda-mcp
    exports_of(module: Setoid.Homomorphisms)
    answered56 ms (the file already loaded)
    elapsedMs: 56exports: 91modules: 4
    the whole answer, as the model saw it (25,119 characters of JSON)
    {"checkedFromSource":false,"command":{"args":["--interaction-json"],"binary":"agda","cwd":"<repo>"},"elapsedMs":56,"exports":[{"name":"_IsHomImageOf_","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {β ρᵇ α ρᵃ : Level}\n(𝑩 : Algebra β ρᵇ) (𝑨 : Algebra α ρᵃ) →\nSet\n(𝑆.𝓞 Agda.Primitive.⊔ 𝑆.𝓥 Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ\n Agda.Primitive.⊔ α\n Agda.Primitive.⊔ ρᵃ)"},{"name":"_≅_","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"Bijective→≅","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩) →\nIsInjective (proj₁ h) → IsSurjective (proj₁ h) → 𝑨 ≅ 𝑩"},{"name":"Cg⊆ker","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ β ρᵇ : Level} {ℓ = ℓ₁ : Level} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩)\n{R : Relation.Binary.Core.Rel Setoid.Algebras.𝕌[ 𝑨 ] ℓ₁} →\nR Relation.Binary.Core.⇒ proj₁ (kercon h) →\nSetoid.Congruences.Generation.Gen R Relation.Binary.Core.⇒\nproj₁ (kercon h)"},{"name":"FirstHomTheorem","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (hh : hom 𝑨 𝑩) →\nSetoid.Algebras.Σ-syntax (hom (kerquo hh) 𝑩)\n(λ .patternInTele0 →\n   ((a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n    (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n     Setoid.Homomorphisms.Noether.h hh a)\n    (Function.Bundles.Func.to (.patternInTele0 .proj₁)\n     (Function.Bundles.Func.to (πker hh .proj₁) a)))\n   Data.Product.× IsInjective (.patternInTele0 .proj₁))"},{"name":"FirstHomUnique","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (hh : hom 𝑨 𝑩)\n{.patternInTele0 .patternInTele1 : hom (kerquo hh) 𝑩} →\n((a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n  Setoid.Homomorphisms.Noether.h hh a)\n (Function.Bundles.Func.to (.patternInTele0 .proj₁)\n  (Function.Bundles.Func.to (πker hh .proj₁) a))) →\n((a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n  Setoid.Homomorphisms.Noether.h hh a)\n (Function.Bundles.Func.to (.patternInTele1 .proj₁)\n  (Function.Bundles.Func.to (πker hh .proj₁) a))) →\n([a]\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Algebra.Domain (kerquo hh))) →\n(Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to (.patternInTele0 .proj₁) [a])\n(Function.Bundles.Func.to (.patternInTele1 .proj₁) [a])"},{"name":"FromLift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {r : Level} →\nhom (Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r) 𝑨"},{"name":"FromLiftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\nhom (Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁) 𝑨"},{"name":"FromLiftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\nhom (Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁) 𝑨"},{"name":"FromToLiftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level}\n(a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n(Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) a"},{"name":"FromToLiftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level}\n(a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n(Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) a"},{"name":"HomFactor","type":"{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} (.patternInTele0 : hom 𝑨 𝑩)\n(.patternInTele1 : hom 𝑨 𝑪) →\nOverture.kernelRel\n(Relation.Binary.Bundles.Setoid._≈_ Setoid.Algebras.𝔻[ 𝑪 ])\n(Setoid.Homomorphisms.Factor.h .patternInTele0 .patternInTele1)\nRelation.Unary.⊆\nOverture.kernelRel\n(Relation.Binary.Bundles.Setoid._≈_ Setoid.Algebras.𝔻[ 𝑩 ])\n(Setoid.Homomorphisms.Factor.g .patternInTele0 .patternInTele1) →\nIsSurjective (.patternInTele1 .proj₁) →\nSetoid.Algebras.Σ-syntax (hom 𝑪 𝑩)\n(λ .patternInTele2 →\n   (a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n   (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n    Setoid.Homomorphisms.Factor.g .patternInTele0 .patternInTele1 a)\n   (Function.Bundles.Func.to (.patternInTele2 .proj₁)\n    (Setoid.Homomorphisms.Factor.h .patternInTele0 .patternInTele1 a)))"},{"name":"HomFactorEpi","type":"{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} (.patternInTele0 : hom 𝑨 𝑩)\n(.patternInTele1 : hom 𝑨 𝑪) →\nOverture.kernelRel\n(Relation.Binary.Bundles.Setoid._≈_ Setoid.Algebras.𝔻[ 𝑪 ])\n(Setoid.Homomorphisms.Factor.h .patternInTele0 .patternInTele1)\nRelation.Unary.⊆\nOverture.kernelRel\n(Relation.Binary.Bundles.Setoid._≈_ Setoid.Algebras.𝔻[ 𝑩 ])\n(Setoid.Homomorphisms.Factor.g .patternInTele0 .patternInTele1) →\nIsSurjective (.patternInTele1 .proj₁) →\nIsSurjective (.patternInTele0 .proj₁) →\nSetoid.Algebras.Σ-syntax (epi 𝑪 𝑩)\n(λ .patternInTele2 →\n   (a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n   (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n    Setoid.Homomorphisms.Factor.g .patternInTele0 .patternInTele1 a)\n   (Function.Bundles.Func.to (.patternInTele2 .proj₁)\n    (Setoid.Homomorphisms.Factor.h .patternInTele0 .patternInTele1 a)))"},{"name":"HomImage-≅","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 𝑨' : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\n𝑨 IsHomImageOf 𝑨' → 𝑨 ≅ 𝑩 → 𝑩 IsHomImageOf 𝑨'"},{"name":"HomImage-≅'","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 𝑨' : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\n𝑨 IsHomImageOf 𝑨' → 𝑨' ≅ 𝑩 → 𝑨 IsHomImageOf 𝑩"},{"name":"HomImageOfClass","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level} →\nRelation.Unary.Pred (Algebra α ρᵃ) (Agda.Primitive.lsuc α) →\nSet\n(𝑆.𝓞 Agda.Primitive.⊔ 𝑆.𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ)"},{"name":"HomImageOf[_]","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 → Algebra (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ) ρᵇ"},{"name":"HomImages","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level} →\nAlgebra α ρᵃ →\nSet\n(𝑆.𝓞 Agda.Primitive.⊔ 𝑆.𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ)"},{"name":"HomKerComp","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (.patternInTele0 : hom 𝑨 𝑩) →\n𝑨 Setoid.Congruences.Basic.∣≈\nOverture.kerRel\n(Relation.Binary.Bundles.Setoid._≈_ (Algebra.Domain 𝑩))\n(Setoid.Homomorphisms.Kernels.h .patternInTele0)"},{"name":"IdHomImage","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} →\n𝑨 IsHomImageOf 𝑨"},{"name":"IsEpi","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ)\n(h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"IsHom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ)\n(h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ ρᵇ)"},{"name":"IsHomImageOfClass","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝒦 : Relation.Unary.Pred (Algebra α ρᵃ) (Agda.Primitive.lsuc α)} →\nAlgebra α ρᵃ →\nSet\n(𝑆.𝓞 Agda.Primitive.⊔ 𝑆.𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ)"},{"name":"IsMon","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ)\n(h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"Lift-Alg-hom-imageˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (ℓᵃ ℓᵇ : Level) →\n𝑩 IsHomImageOf 𝑨 →\nSetoid.Algebras.Lift-Algˡ 𝑩 ℓᵇ IsHomImageOf\nSetoid.Algebras.Lift-Algˡ 𝑨 ℓᵃ"},{"name":"Lift-Alg-iso","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓᵃ rᵃ ℓᵇ rᵇ : Level} →\n𝑨 ≅ 𝑩 →\nSetoid.Algebras.Lift-Alg 𝑨 ℓᵃ rᵃ ≅ Setoid.Algebras.Lift-Alg 𝑩 ℓᵇ rᵇ"},{"name":"Lift-Alg-isoʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓᵃ ℓᵇ : Level} →\n𝑨 ≅ 𝑩 →\nSetoid.Algebras.Lift-Algʳ 𝑨 ℓᵃ ≅ Setoid.Algebras.Lift-Algʳ 𝑩 ℓᵇ"},{"name":"Lift-Alg-isoˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓᵃ ℓᵇ : Level} →\n𝑨 ≅ 𝑩 →\nSetoid.Algebras.Lift-Algˡ 𝑨 ℓᵃ ≅ Setoid.Algebras.Lift-Algˡ 𝑩 ℓᵇ"},{"name":"Lift-Alg-⨅≅ˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ γ β ρᵇ : Level} {𝓘 : Level} {I : Set 𝓘}\n{𝒜 : I → Algebra α ρᵃ} {ℬ : Level.Lift γ I → Algebra β ρᵇ} →\n((i : I) → 𝒜 i ≅ ℬ (Level.lift i)) →\nSetoid.Algebras.Lift-Algˡ (Setoid.Algebras.⨅ 𝒜) γ ≅\nSetoid.Algebras.⨅ ℬ"},{"name":"Lift-HomImage-lemma","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {γ : Level} →\nSetoid.Algebras.Lift-Alg 𝑨 γ γ IsHomImageOf 𝑩 → 𝑨 IsHomImageOf 𝑩"},{"name":"Lift-assoc","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {ρ : Level} →\nSetoid.Algebras.Lift-Alg 𝑨 ℓ₁ ρ ≅\nSetoid.Algebras.Lift-Algʳ (Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁) ρ"},{"name":"Lift-assoc'","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α : Level}\n{𝑨 : Algebra α α} {β γ : Level} →\nSetoid.Algebras.Lift-Alg 𝑨 (β Agda.Primitive.⊔ γ)\n(β Agda.Primitive.⊔ γ)\n≅ Setoid.Algebras.Lift-Alg (Setoid.Algebras.Lift-Alg 𝑨 β β) γ γ"},{"name":"Lift-assocʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ₁ ℓ₂ : Level} →\nSetoid.Algebras.Lift-Algʳ 𝑨 (ℓ₁ Agda.Primitive.⊔ ℓ₂) ≅\nSetoid.Algebras.Lift-Algʳ (Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁) ℓ₂"},{"name":"Lift-assocˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ₁ ℓ₂ : Level} →\nSetoid.Algebras.Lift-Algˡ 𝑨 (ℓ₁ Agda.Primitive.⊔ ℓ₂) ≅\nSetoid.Algebras.Lift-Algˡ (Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁) ℓ₂"},{"name":"Lift-epi-is-epiˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩)\n(ℓᵃ ℓᵇ : Level) →\nIsSurjective (proj₁ h) → IsSurjective (proj₁ (Lift-homˡ h ℓᵃ ℓᵇ))"},{"name":"Lift-hom","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 →\n(ℓᵃ rᵃ ℓᵇ rᵇ : Level) →\nhom (Setoid.Algebras.Lift-Alg 𝑨 ℓᵃ rᵃ)\n(Setoid.Algebras.Lift-Alg 𝑩 ℓᵇ rᵇ)"},{"name":"Lift-hom-fst","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 → (ℓ₁ r : Level) → hom (Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r) 𝑩"},{"name":"Lift-hom-snd","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 → (ℓ₁ r : Level) → hom 𝑨 (Setoid.Algebras.Lift-Alg 𝑩 ℓ₁ r)"},{"name":"Lift-homʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 →\n(rᵃ rᵇ : Level) →\nhom (Setoid.Algebras.Lift-Algʳ 𝑨 rᵃ)\n(Setoid.Algebras.Lift-Algʳ 𝑩 rᵇ)"},{"name":"Lift-homˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 →\n(ℓᵃ ℓᵇ : Level) →\nhom (Setoid.Algebras.Lift-Algˡ 𝑨 ℓᵃ)\n(Setoid.Algebras.Lift-Algˡ 𝑩 ℓᵇ)"},{"name":"Lift-≅","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {ρ : Level} →\n𝑨 ≅ Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ ρ"},{"name":"Lift-≅ʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\n𝑨 ≅ Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁"},{"name":"Lift-≅ˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\n𝑨 ≅ Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁"},{"name":"ToFromLift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {r : Level}\n{b\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Algebra.Domain (Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r))} →\n(Setoid.Algebras.𝔻[ Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r ]\n Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to (ToLift .proj₁)\n (Function.Bundles.Func.to (FromLift .proj₁) b))\nb"},{"name":"ToFromLiftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level}\n(b\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Algebra.Domain (Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁))) →\n(Setoid.Algebras.𝔻[ Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁ ]\n Relation.Binary.Bundles.Setoid.≈ b)\nb"},{"name":"ToFromLiftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level}\n(b\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Algebra.Domain (Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁))) →\n(Setoid.Algebras.𝔻[ Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁ ]\n Relation.Binary.Bundles.Setoid.≈ Level.lift (Level.Lift.lower b))\nb"},{"name":"ToLift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {r : Level} →\nhom 𝑨 (Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r)"},{"name":"ToLift-epi","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} {r : Level} →\nepi 𝑨 (Setoid.Algebras.Lift-Alg 𝑨 ℓ₁ r)"},{"name":"ToLiftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\nhom 𝑨 (Setoid.Algebras.Lift-Algʳ 𝑨 ℓ₁)"},{"name":"ToLiftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ℓ = ℓ₁ : Level} →\nhom 𝑨 (Setoid.Algebras.Lift-Algˡ 𝑨 ℓ₁)"},{"name":"compatible-map","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nFunction.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\nSetoid.Algebras.𝔻[ 𝑩 ] →\nSet (𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵇ)"},{"name":"compatible-map-op","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nFunction.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\nSetoid.Algebras.𝔻[ 𝑩 ] →\nOverture.OperationSymbolsOf 𝑆 →\nSet (𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵇ)"},{"name":"epi","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ) →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"epi→hom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nepi 𝑨 𝑩 → hom 𝑨 𝑩"},{"name":"epi→ontohom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nepi 𝑨 𝑩 →\nSetoid.Algebras.Σ-syntax (hom 𝑨 𝑩) (λ h → IsSurjective (proj₁ h))"},{"name":"hom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ) →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"ker-in-con","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩) {ℓ = ℓ₁ : Level}\n{θ : Setoid.Congruences.Basic.Con 𝑨 ℓ₁}\n{x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)} →\nkercon (πhom h θ) .proj₁ x y → θ .proj₁ x y"},{"name":"ker[_⇒_]_","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nhom 𝑨 𝑩 → Algebra α ρᵇ"},{"name":"kercon","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (.patternInTele0 : hom 𝑨 𝑩) →\nSetoid.Congruences.Basic.Con 𝑨 ρᵇ"},{"name":"kerquo","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (.patternInTele0 : hom 𝑨 𝑩) →\nAlgebra α ρᵇ"},{"name":"lift-hom-lemma","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩)\n(a : Setoid.Algebras.𝕌[ 𝑨 ]) (ℓᵃ ℓᵇ : Level) →\n(Setoid.Algebras.𝔻[ Setoid.Algebras.Lift-Algˡ 𝑩 ℓᵇ ]\n Relation.Binary.Bundles.Setoid.≈\n Level.lift (Function.Bundles.Func.to (h .proj₁) a))\n(Function.Bundles.Func.to (Lift-homˡ h ℓᵃ ℓᵇ .proj₁)\n (Level.lift a))"},{"name":"mkIsHom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ}\n{h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]}\n(compatible : compatible-map 𝑨 𝑩 h) →\nIsHom 𝑨 𝑩 h"},{"name":"mkhom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ)\n(h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]) →\ncompatible-map 𝑨 𝑩 h → hom 𝑨 𝑩"},{"name":"mkiso","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (to : hom 𝑨 𝑩) (from : hom 𝑩 𝑨)\n(to∼from\n : (b : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑩)) →\n   (Setoid.Algebras.𝔻[ 𝑩 ] Relation.Binary.Bundles.Setoid.≈\n    Function.Bundles.Func.to (to .proj₁)\n    (Function.Bundles.Func.to (from .proj₁) b))\n   b)\n(from∼to\n : (a : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈\n    Function.Bundles.Func.to (from .proj₁)\n    (Function.Bundles.Func.to (to .proj₁) a))\n   a) →\n𝑨 ≅ 𝑩"},{"name":"mon","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ) →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"mon→hom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nmon 𝑨 𝑩 → hom 𝑨 𝑩"},{"name":"mon→intohom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n(𝑩 : Algebra β ρᵇ) →\nmon 𝑨 𝑩 →\nSetoid.Algebras.Σ-syntax (hom 𝑨 𝑩) (λ h → IsInjective (proj₁ h))"},{"name":"πepi","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 →\n{ℓ = ℓ₁ : Level} (θ : Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nepi 𝑨 (𝑨 Setoid.Congruences.Basic._.╱ θ)"},{"name":"πhom","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} →\nhom 𝑨 𝑩 →\n{ℓ = ℓ₁ : Level} (θ : Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nhom 𝑨 (𝑨 Setoid.Congruences.Basic._.╱ θ)"},{"name":"πker","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} (h : hom 𝑨 𝑩) →\nepi 𝑨 (ker[ 𝑨 ⇒ 𝑩 ] h)"},{"name":"ℓ⨅≅⨅ℓ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ : Level} {ℓᵃ : Level} {I : Set ℓᵃ} {𝒜 : I → Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level} →\nSetoid.Algebras.Lift-Alg (Setoid.Algebras.⨅ 𝒜) ℓ₁ ℓ₁ ≅\nSetoid.Algebras.⨅\n(λ i → Setoid.Algebras.Lift-Alg (𝒜 (Level.Lift.lower i)) ℓ₁ ℓ₁)"},{"name":"≅-mkAlgebra","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ}\n(f\n : (o : Overture.OperationSymbolsOf 𝑆) →\n   Overture.Op (Overture.ArityOf 𝑆 o) Setoid.Algebras.𝕌[ 𝑨 ])\n(cong-f\n : (o : Overture.OperationSymbolsOf 𝑆)\n   {u v : Overture.ArityOf 𝑆 o → Setoid.Algebras.𝕌[ 𝑨 ]} →\n   ((i : Overture.ArityOf 𝑆 o) →\n    (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ u i)\n    (v i)) →\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ f o u)\n   (f o v)) →\n((o : 𝑆 .proj₁)\n (a\n  : Overture.ArityOf 𝑆 o →\n    Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈\n  (o Setoid.Algebras.^ 𝑨) a)\n (f o a)) →\n𝑨 ≅ Setoid.Algebras.mkAlgebra Setoid.Algebras.𝔻[ 𝑨 ] f cong-f"},{"name":"≅-refl","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} →\n𝑨 ≅ 𝑨"},{"name":"≅-sym","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\n𝑨 ≅ 𝑩 → 𝑩 ≅ 𝑨"},{"name":"≅-trans","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≅ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≅ 𝑪"},{"name":"≅fromInjective","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (φ : 𝑨 ≅ 𝑩) →\nIsInjective (_≅_.from φ .proj₁)"},{"name":"≅toInjective","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (φ : 𝑨 ≅ 𝑩) →\nIsInjective (proj₁ (_≅_.to φ))"},{"name":"≅⨅-refl","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} →\n𝑨 ≅ Setoid.Algebras.⨅ (λ i → 𝑨)"},{"name":"≅⨅⁺-refl","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ : Level} {ι : Level} {𝑨 : Algebra α ρᵃ} →\n𝑨 ≅ Setoid.Algebras.⨅ (λ i → 𝑨)"},{"name":"⊙-epi","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\nepi 𝑨 𝑩 → epi 𝑩 𝑪 → epi 𝑨 𝑪"},{"name":"⊙-hom","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\nhom 𝑨 𝑩 → hom 𝑩 𝑪 → hom 𝑨 𝑪"},{"name":"⊙-is-epi","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}\n{g\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]}\n{h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑩 ]\n   Setoid.Algebras.𝔻[ 𝑪 ]} →\nIsEpi 𝑨 𝑩 g → IsEpi 𝑩 𝑪 h → IsEpi 𝑨 𝑪 (h ⊙ g)"},{"name":"⊙-is-hom","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}\n{g\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑨 ]\n   Setoid.Algebras.𝔻[ 𝑩 ]}\n{h\n : Function.Bundles.Func Setoid.Algebras.𝔻[ 𝑩 ]\n   Setoid.Algebras.𝔻[ 𝑪 ]} →\nIsHom 𝑨 𝑩 g → IsHom 𝑩 𝑪 h → IsHom 𝑨 𝑪 (h ⊙ g)"},{"name":"⨅-hom","type":"{𝓞 𝓥 𝓘 α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set 𝓘}\n(𝒜 : I → Algebra α ρ) {β ρᵇ : Level} (ℬ : I → Algebra β ρᵇ) →\n((i : I) → hom (𝒜 i) (ℬ i)) →\nhom (Setoid.Algebras.⨅ 𝒜) (Setoid.Algebras.⨅ ℬ)"},{"name":"⨅-hom-co","type":"{𝓞 𝓥 α ρ 𝓘 β ρᵇ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n{I : Set 𝓘} (ℬ : I → Algebra β ρᵇ) →\n((i : I) → hom 𝑨 (ℬ i)) → hom 𝑨 (Setoid.Algebras.⨅ ℬ)"},{"name":"⨅-proj","type":"{𝓞 𝓥 𝓘 α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set 𝓘}\n(𝒜 : I → Algebra α ρ) (i : I) →\nhom (Setoid.Algebras.⨅ 𝒜) (𝒜 i)"},{"name":"⨅≅","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ β ρᵇ : Level} {𝓘 : Level} {I : Set 𝓘} {𝒜 : I → Algebra α ρᵃ}\n{ℬ : I → Algebra β ρᵇ} →\n((i : I) → 𝒜 i ≅ ℬ i) → Setoid.Algebras.⨅ 𝒜 ≅ Setoid.Algebras.⨅ ℬ"},{"name":"⨅≅⨅lowerℓρ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ : Level} {ℓᵃ : Level} {I : Set ℓᵃ} {𝒜 : I → Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level} {ρ : Level} →\nSetoid.Algebras.⨅ 𝒜 ≅\nSetoid.Algebras.⨅\n(λ i → Setoid.Algebras.Lift-Alg (𝒜 (Level.Lift.lower i)) ℓ₁ ρ)"},{"name":"⨅≅⨅ℓ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ : Level} {𝓘 : Level} {I : Set 𝓘} {𝒜 : I → Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level} →\nSetoid.Algebras.⨅ 𝒜 ≅\nSetoid.Algebras.⨅\n(λ i → Setoid.Algebras.Lift-Alg (𝒜 (Level.Lift.lower i)) ℓ₁ ℓ₁)"},{"name":"⨅≅⨅ℓρ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ : Level} {ι : Level} {I : Set ι} {𝒜 : I → Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level} {ρ : Level} →\nSetoid.Algebras.⨅ 𝒜 ≅\nSetoid.Algebras.⨅ (λ i → Setoid.Algebras.Lift-Alg (𝒜 i) ℓ₁ ρ)"},{"name":"𝒾𝒹","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ} → hom 𝑨 𝑨"}],"lane":{"agdaVersion":"2.8.0","iotcm":["IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_show_module_contents_toplevel Simplified \"Setoid.Homomorphisms\")","IOTCM \"<work>\" None Direct (Cmd_show_version)"],"load":"reused","pid":1368034,"root":"<work>","spawned":false},"module":"Setoid.Homomorphisms","modules":["_≅_","IsEpi","IsHom","IsMon"],"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]}}
  12. agda-mcp
    exports_of(module: Setoid.Functions)
    answered25 ms (the file already loaded)
    elapsedMs: 25exports: 51modules: 2
    the whole answer, as the model saw it (14,833 characters of JSON)
    {"checkedFromSource":false,"command":{"args":["--interaction-json"],"binary":"agda","cwd":"<repo>"},"elapsedMs":25,"exports":[{"name":"_⊙_","type":"{α ρᵃ β ρᵇ γ ρᶜ : Level} {A : Relation.Binary.Bundles.Setoid α ρᵃ}\n{B : Relation.Binary.Bundles.Setoid β ρᵇ}\n{C : Relation.Binary.Bundles.Setoid γ ρᶜ} →\nFunction.Bundles.Func B C →\nFunction.Bundles.Func A B → Function.Bundles.Func A C"},{"name":"BijInv","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(f : Function.Bundles.Func 𝑨 𝑩) →\nIsBijective f → Function.Bundles.Func 𝑩 𝑨"},{"name":"Dom","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 → Relation.Binary.Bundles.Setoid α ρᵇ"},{"name":"Image_∋_","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nRelation.Binary.Bundles.Setoid.Carrier 𝑩 →\nSet (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"Imagef∋f","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{a : Relation.Binary.Bundles.Setoid.Carrier 𝑨} →\nImage F ∋ Function.Bundles.Func.to F a"},{"name":"Image⊆Range","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\nImage F ∋ b → b Relation.Unary.∈ IsInRange F"},{"name":"Img_∋_","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\n(Relation.Binary.Bundles.Setoid.Carrier 𝑨 →\n Relation.Binary.Bundles.Setoid.Carrier 𝑩) →\nRelation.Binary.Bundles.Setoid.Carrier 𝑩 →\nSet (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"Inv","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩)\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\nImage F ∋ b → Relation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"Inv'","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩)\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\nb Relation.Unary.∈ IsInRange F →\nRelation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"InvIsInverseʳ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} (q : Image F ∋ b) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to F (Inv F q))\nb"},{"name":"InvIsInverseˡ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{a : Relation.Binary.Bundles.Setoid.Carrier 𝑨} →\n(𝑨 Relation.Binary.Bundles.Setoid.≈ a) a"},{"name":"IsBijective","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nSet (α Agda.Primitive.⊔ ρᵃ Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"IsInRange","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nRelation.Unary.Pred (Relation.Binary.Bundles.Setoid.Carrier 𝑩)\n(α Agda.Primitive.⊔ ρᵇ)"},{"name":"IsInRange→IsInImage","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\nb Relation.Unary.∈ IsInRange F → Image F ∋ b"},{"name":"IsInjective","type":"{a α b β : Level} {𝑨 : Relation.Binary.Bundles.Setoid a α}\n{𝑩 : Relation.Binary.Bundles.Setoid b β} →\nFunction.Bundles.Func 𝑨 𝑩 →\nSet (a Agda.Primitive.⊔ α Agda.Primitive.⊔ β)"},{"name":"IsSurjective","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nSet (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"LeftInvPreserves≈","type":"{a α b β : Level} {𝑨 : Relation.Binary.Bundles.Setoid a α}\n{𝑩 : Relation.Binary.Bundles.Setoid b β}\n(F : Function.Bundles.Injection 𝑨 𝑩)\n{b₀ b₁ : Relation.Binary.Bundles.Setoid.Carrier 𝑩}\n(u : Image Function.Bundles.Injection.function F ∋ b₀)\n(v : Image Function.Bundles.Injection.function F ∋ b₁) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈ b₀) b₁ →\n(𝑨 Relation.Binary.Bundles.Setoid.≈\n Inv (Function.Bundles.Injection.function F) u)\n(Inv (Function.Bundles.Injection.function F) v)"},{"name":"RRan","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nRelation.Binary.Bundles.Setoid\n(α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ) (ρᵃ Agda.Primitive.⊔ ρᵇ)"},{"name":"Ran","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nRelation.Binary.Bundles.Setoid\n(α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ) ρᵇ"},{"name":"SurjInv","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(f : Function.Bundles.Func 𝑨 𝑩) →\nIsSurjective f →\nRelation.Binary.Bundles.Setoid.Carrier 𝑩 →\nRelation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"SurjInvIsInverseʳ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(f : Function.Bundles.Func 𝑨 𝑩) (fE : IsSurjective f)\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\n(𝑩 Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to f (SurjInv f fE b))\nb"},{"name":"SurjectionIsSurjection","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Surjection 𝑨 𝑩 →\nSetoid.Algebras.Σ-syntax (Function.Bundles.Func 𝑨 𝑩)\n(λ g →\n   Function.Structures.IsSurjection\n   (Relation.Binary.Bundles.Setoid._≈_ 𝑨)\n   (Relation.Binary.Bundles.Setoid._≈_ 𝑩)\n   (Function.Bundles.Func.to g))"},{"name":"SurjectionIsSurjective","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Surjection 𝑨 𝑩 →\nSetoid.Algebras.Σ-syntax (Function.Bundles.Func 𝑨 𝑩) IsSurjective"},{"name":"[_]⁻¹","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nrange F → Relation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"epic-factor","type":"{α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{𝑪 : Relation.Binary.Bundles.Setoid γ ρᶜ}\n(f : Function.Bundles.Func 𝑨 𝑩) (g : Function.Bundles.Func 𝑨 𝑪)\n(h : Function.Bundles.Func 𝑪 𝑩) →\nIsSurjective f →\n((i : Relation.Binary.Bundles.Setoid.Carrier 𝑨) →\n (𝑩 Relation.Binary.Bundles.Setoid.≈ Function.Bundles.Func.to f i)\n (Function.Bundles.Func.to h (Function.Bundles.Func.to g i))) →\nIsSurjective h"},{"name":"eq","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{f\n : Relation.Binary.Bundles.Setoid.Carrier 𝑨 →\n   Relation.Binary.Bundles.Setoid.Carrier 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩}\n(a : Relation.Binary.Bundles.Setoid.Carrier 𝑨) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈ b) (f a) → Img f ∋ b"},{"name":"eq","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩}\n(a : Relation.Binary.Bundles.Setoid.Carrier 𝑨) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈ b)\n(Function.Bundles.Func.to F a) →\nImage F ∋ b"},{"name":"f∈range","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩} →\nRelation.Binary.Bundles.Setoid.Carrier 𝑨 → range F"},{"name":"id-is-injective","type":"{a α : Level} {𝑨 : Relation.Binary.Bundles.Setoid a α} →\nIsInjective 𝑖𝑑"},{"name":"image","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nrange F → Relation.Binary.Bundles.Setoid.Carrier 𝑩"},{"name":"inv","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(f\n : Relation.Binary.Bundles.Setoid.Carrier 𝑨 →\n   Relation.Binary.Bundles.Setoid.Carrier 𝑩)\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} →\nImg f ∋ b → Relation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"invIsInvʳ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{f\n : Relation.Binary.Bundles.Setoid.Carrier 𝑨 →\n   Relation.Binary.Bundles.Setoid.Carrier 𝑩}\n{b : Relation.Binary.Bundles.Setoid.Carrier 𝑩} (q : Img f ∋ b) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈ f (inv f q)) b"},{"name":"isSurj","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\n(Relation.Binary.Bundles.Setoid.Carrier 𝑨 →\n Relation.Binary.Bundles.Setoid.Carrier 𝑩) →\nSet (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"isSurj→IsSurjective","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nisSurj (Function.Bundles.Func.to F) → IsSurjective F"},{"name":"liftFunc","type":"{α ρᵃ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{ℓ = ℓ₁ : Level} →\nFunction.Bundles.Func 𝑨 (𝑙𝑖𝑓𝑡 ℓ₁)"},{"name":"lift∼lower","type":"{α ρᵃ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{β : Level}\n(a : Level.Lift β (Relation.Binary.Bundles.Setoid.Carrier 𝑨)) →\n(𝑨 Relation.Binary.Bundles.Setoid.≈ Level.Lift.lower a)\n(Level.Lift.lower a)"},{"name":"lower∼lift","type":"{α ρᵃ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{β : Level} (a : Relation.Binary.Bundles.Setoid.Carrier 𝑨) →\n(𝑨 Relation.Binary.Bundles.Setoid.≈ a) a"},{"name":"preimage","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nrange F → Relation.Binary.Bundles.Setoid.Carrier 𝑨"},{"name":"preimage≈image","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) (r : range F) →\n(𝑩 Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to F (preimage F r))\n(image F r)"},{"name":"range","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ} →\nFunction.Bundles.Func 𝑨 𝑩 →\nSet (α Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ)"},{"name":"⁻¹IsInverseʳ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩} {bap : range F} →\n(𝑩 Relation.Binary.Bundles.Setoid.≈\n Function.Bundles.Func.to F ([ F ]⁻¹ bap))\n(bap .proj₁)"},{"name":"⁻¹IsInverseˡ","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{F : Function.Bundles.Func 𝑨 𝑩}\n{a : Relation.Binary.Bundles.Setoid.Carrier 𝑨} →\n(𝑨 Relation.Binary.Bundles.Setoid.≈ [ F ]⁻¹ (f∈range a)) a"},{"name":"∘-epic","type":"{α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{𝑪 : Relation.Binary.Bundles.Setoid γ ρᶜ} →\nFunction.Bundles.Surjection 𝑨 𝑪 →\nFunction.Bundles.Surjection 𝑪 𝑩 → Function.Bundles.Surjection 𝑨 𝑩"},{"name":"∘-injective-bare","type":"{a α b β c γ : Level} {A : Set a}\n(_≈₁_ : Relation.Binary.Core.Rel A α) {B : Set b}\n(_≈₂_ : Relation.Binary.Core.Rel B β) {C : Set c}\n(_≈₃_ : Relation.Binary.Core.Rel C γ) {f : A → B} {g : B → C} →\nFunction.Definitions.Injective _≈₁_ _≈₂_ f →\nFunction.Definitions.Injective _≈₂_ _≈₃_ g →\nFunction.Definitions.Injective _≈₁_ _≈₃_ (g Function.Base.∘ f)"},{"name":"⊙-IsSurjective","type":"{α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n{𝑪 : Relation.Binary.Bundles.Setoid γ ρᶜ}\n{G : Function.Bundles.Func 𝑨 𝑪} {H : Function.Bundles.Func 𝑪 𝑩} →\nIsSurjective G → IsSurjective H → IsSurjective (H ⊙ G)"},{"name":"⊙-injection","type":"{a α b β c γ : Level} {𝑨 : Relation.Binary.Bundles.Setoid a α}\n{𝑩 : Relation.Binary.Bundles.Setoid b β}\n{𝑪 : Relation.Binary.Bundles.Setoid c γ} →\nFunction.Bundles.Injection 𝑨 𝑩 →\nFunction.Bundles.Injection 𝑩 𝑪 → Function.Bundles.Injection 𝑨 𝑪"},{"name":"⊙-injective","type":"{a α b β c γ : Level} {𝑨 : Relation.Binary.Bundles.Setoid a α}\n{𝑩 : Relation.Binary.Bundles.Setoid b β}\n{𝑪 : Relation.Binary.Bundles.Setoid c γ}\n(f : Function.Bundles.Func 𝑨 𝑩) (g : Function.Bundles.Func 𝑩 𝑪) →\nIsInjective f → IsInjective g → IsInjective (g ⊙ f)"},{"name":"⌜_⌝","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nRelation.Binary.Bundles.Setoid.Carrier 𝑨 → range F"},{"name":"⟦_⟧⁻¹","type":"{α ρᵃ β ρᵇ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n{𝑩 : Relation.Binary.Bundles.Setoid β ρᵇ}\n(F : Function.Bundles.Func 𝑨 𝑩) →\nFunction.Bundles.Func (Ran F) (Dom F)"},{"name":"𝑖𝑑","type":"{α ρᵃ : Level} {A : Relation.Binary.Bundles.Setoid α ρᵃ} →\nFunction.Bundles.Func A A"},{"name":"𝑙𝑖𝑓𝑡","type":"{α ρᵃ : Level} {𝑨 : Relation.Binary.Bundles.Setoid α ρᵃ}\n(ℓ₁ : Level) →\nRelation.Binary.Bundles.Setoid (α Agda.Primitive.⊔ ℓ₁) ρᵃ"}],"lane":{"agdaVersion":"2.8.0","iotcm":["IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_show_module_contents_toplevel Simplified \"Setoid.Functions\")","IOTCM \"<work>\" None Direct (Cmd_show_version)"],"load":"reused","pid":1368034,"root":"<work>","spawned":false},"module":"Setoid.Functions","modules":["Image_∋_","Img_∋_"],"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]}}
  13. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  14. agda-mcp
    type_of(expr: _≅_.to)
    answered3 ms (the file already loaded)
    type: {𝓞 𝓥 α ρᵃ β ρᵇ : Level} {𝑆 : Data.Product.Σ (Set 𝓞) (λ F → F → Set 𝓥)} {𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} → 𝑨 ≅ 𝑩 → Data.Product.Σ (Function.Bundles.Func (Algebra.Domain 𝑨) (Algebra.Domain 𝑩)) (IsHom 𝑨 𝑩)elapsedMs: 3
    the whole answer, as the model saw it (1,315 characters of JSON)
    {"checkedFromSource":false,"command":{"args":["--interaction-json"],"binary":"agda","cwd":"<repo>"},"elapsedMs":3,"expr":"_≅_.to","lane":{"agdaVersion":"2.8.0","iotcm":["IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_infer_toplevel Normalised \"_\\8773_.to\")","IOTCM \"<work>\" None Direct (Cmd_show_version)"],"load":"reused","pid":1368034,"root":"<work>","spawned":false},"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"scope":"toplevel","type":"{𝓞 𝓥 α ρᵃ β ρᵇ : Level}\n{𝑆 : Data.Product.Σ (Set 𝓞) (λ F → F → Set 𝓥)} {𝑨 : Algebra α ρᵃ}\n{𝑩 : Algebra β ρᵇ} →\n𝑨 ≅ 𝑩 →\nData.Product.Σ\n(Function.Bundles.Func (Algebra.Domain 𝑨) (Algebra.Domain 𝑩))\n(IsHom 𝑨 𝑩)"}
  15. the model
    Good, `_≅_.to` resolves fine. Now let's check the type of `_≤_` to confirm `p` unfolds to `(f , finj)` shape.
  16. agda-mcp
    type_of(expr: _≤_)
    answered2 ms (the file already loaded)
    type: {𝓞 𝓥 : Level} {𝑆 = ρᵃ : Data.Product.Σ (Set 𝓞) (λ α → α → Set 𝓥)} {α = β : Level} {ρᵃ = ρᵇ : Level} {β = F : Level} {ρᵇ = 𝑆 : Level} → Algebra β ρᵇ → Algebra F 𝑆 → Set (𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ β Agda.Primit…elapsedMs: 2
    the whole answer, as the model saw it (1,373 characters of JSON)
    {"checkedFromSource":false,"command":{"args":["--interaction-json"],"binary":"agda","cwd":"<repo>"},"elapsedMs":2,"expr":"_≤_","lane":{"agdaVersion":"2.8.0","iotcm":["IOTCM \"<work>/Subalgebras-sub-trans-iso.agda\" None Direct (Cmd_infer_toplevel Normalised \"_\\8804_\")","IOTCM \"<work>\" None Direct (Cmd_show_version)"],"load":"reused","pid":1368034,"root":"<work>","spawned":false},"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"scope":"toplevel","type":"{𝓞 𝓥 : Level} {𝑆 = ρᵃ : Data.Product.Σ (Set 𝓞) (λ α → α → Set 𝓥)}\n{α = β : Level} {ρᵃ = ρᵇ : Level} {β = F : Level}\n{ρᵇ = 𝑆 : Level} →\nAlgebra β ρᵇ →\nAlgebra F 𝑆 →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ\n Agda.Primitive.⊔ F\n Agda.Primitive.⊔ 𝑆)"}
  17. the model
    Now let's fill the hole using pattern matching on `p` directly, mirroring the library proof.
  18. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ (h , hinj) B≅C = ⊙-hom h (_≅_.to B≅C) , ⊙-injective (proj₁ h) (proj₁ (_≅_.to B≅C)) hinj (≅toInjective B≅C))
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  19. agda-mcp
    check_file()
    answered5.5 s
    success: trueholesCount: 0diagnosticsTotal: 0verdict.exitCode: 0elapsedMs: 5485diagnostics: 0holes: 0
    the whole answer, as the model saw it (1,818 characters of JSON)
    {"checkedFromSource":true,"command":{"args":["-i","agda-dojang/agda","--library-file=agda/libraries","-l","agda-dojang","-l","standard-library","-l","agda-algebras","--safe","-i","<work>","<work>/Subalgebras-sub-trans-iso.agda"],"binary":"<nix>/agdaWithPackages-2.8.0/bin/agda","cwd":"<repo>"},"diagnostics":[],"diagnosticsTotal":0,"elapsedMs":5485,"holes":[],"holesCount":0,"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"success":true,"timedOut":false,"verdict":{"equivalentTo":"equivalent-to: <nix>/agdaWithPackages-2.8.0/bin/agda -i agda-dojang/agda --library-file=agda/libraries -l agda-dojang -l standard-library -l agda-algebras --safe -i <work> <work>/Subalgebras-sub-trans-iso.agda","exitCode":0,"meaning":"success is true if and only if that command exited 0, so it means exactly what green means in a batch build. Unsolved metavariables, unsolved constraints, and open holes all make agda exit non-zero and so make success false; there is no interaction mode anywhere in this server. The verdict is read from the exit code alone — never from the diagnostics text — so a change in Agda's message format can empty the diagnostics list but cannot turn a failing build green."}}
  20. the model
    check_file reports success (exit code 0, no diagnostics, no holes) on the final file.

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 1,030 thinking tokens over the session; their text is not in the archive.

solvedthe judge, in outcome.json

Every gate passed, and the definition does not refer to the library’s own lemma for this statement, so the row counts as a solve.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from check_file
the library’s own proof in view before the edit yes, the model read the file that holds it
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Source: Setoid.Subalgebras.Properties (agda-algebras)
-- Import stratum: wholesale
-- Strategy: pairing
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ (h , hinj) B≅C =
  ⊙-hom h (_≅_.to B≅C) , ⊙-injective (proj₁ h) (proj₁ (_≅_.to B≅C)) hinj (≅toInjective B≅C)

reports/agent-bench/arm162-mcp-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

≤-trans-≅′, shell only, hints in view

Shell only, with the hint in view. The same model finds the same lemmas with grep and find over the library's sources, writes the proof out, and takes its verdicts from agda in the shell, which the archive does not time: the first is refused, the second accepted.

model
Sonnet 5 (claude-sonnet-5)
instrument
shell only
run
arm162-shell-1 2026-09-21
fixture header
hints in view: Source: Setoid.Subalgebras.Properties (agda-algebras); Strategy: pairing
server
the server of 2026-09-21 (fourteen tools, the libraries' sources readable on every arm)
client
2.1.261 (Claude Code)
turns
15
tool calls
14 Read ×1, Bash ×11, Edit ×2
wall clock
1.2 min (indicative: subjects ran three at a time)
cost, list price
USD 0.17
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 15 turns and 14 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (963 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Source: Setoid.Subalgebras.Properties (agda-algebras)
    8	-- Import stratum: wholesale
    9	-- Strategy: pairing
    10	--
    11	module Subalgebras-sub-trans-iso where
    12	
    13	open import AgdaDojang.Debug
    14	
    15	open import Agda.Primitive   using ( Level )
    16	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    17	
    18	open import Overture              using ( Signature )
    19	open import Setoid.Algebras       using ( Algebra )
    20	open import Setoid.Functions
    21	open import Setoid.Homomorphisms
    22	open import Setoid.Subalgebras
    23	
    24	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    25	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    26	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    27	≤-trans-≅′ p B≅C = {!!}
    28	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. shell
    Bash(command: grep -n "≤-trans-≅\|_≤_\|_≅_" -r <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/*.agda | head -80)
    answered
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/*.agda: No such file or directory
    the whole answer, as the model saw it (112 characters of text)
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/*.agda: No such file or directory
  5. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07 -iname "*Subalgebras*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    the whole answer, as the model saw it (818 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/_build/2.8.0/agda/src/Setoid/Subalgebras.agdai
    <nix>/agda-algebras-unstable-2026-09-07/_build/2.8.0/agda/src/Setoid/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/_build/2.8.0/agda/src/Legacy/Base/Subalgebras.agdai
    <nix>/agda-algebras-unstable-2026-09-07/_build/2.8.0/agda/src/Legacy/Base/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/_build/2.8.0/agda/src/Legacy/Base/Subalgebras/Subalgebras.agdai
  6. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras -iname "*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
    the whole answer, as the model saw it (915 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subuniverses.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/CompleteLattice.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Finite.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/BirkhoffSI.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Irreducible.lagda.md
  7. shell
    Bash(command: grep -n "≤-trans-≅\|≅\|≤" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md | head -100)
    answered
    13:`_≤_`{.AgdaFunction} that the rest of the library relies on: that it is a
    the whole answer, as the model saw it (4,561 characters of text)
    13:`_≤_`{.AgdaFunction} that the rest of the library relies on: that it is a
    18:(`≤-preorder`{.AgdaFunction}), which is the only sensible choice, since mutual
    21:Agda's universes are not cumulative, so a `≤` established at one level has to be
    47:open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    48:                                             ; ≅toInjective ; ≅fromInjective ; mkiso
    49:                                             ; ≅-sym ; ≅-refl ; ≅-trans
    50:                                             ; Lift-≅ˡ ; Lift-≅ ; Lift-≅ʳ)
    51:open import Setoid.Subalgebras.Basic  using  ( _≤_ ; _≥_ ; _≤c_ )
    60:open _≅_
    62:≅→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    63:≅→≤ φ = (to φ) , ≅toInjective φ
    65:≅→≥ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    66:≅→≥ φ = (from φ) , ≅fromInjective φ
    68:≤-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    69:≤-refl = ≅→≤
    71:≥-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    72:≥-refl = ≅→≤ ∘ ≅-sym
    74:≤-reflexive : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≤ 𝑨
    75:≤-reflexive {𝑨 = 𝑨} = 𝒾𝒹 , id-is-injective {𝑨 = 𝔻[ 𝑨 ]}
    78:  ≤-trans : 𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    79:  ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    81:  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    82:  ≤-trans-≅ (h , hinj) B≅C =
    83:    ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    85:  ≅-trans-≤ : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    86:  ≅-trans-≤ A≅B (h , hinj) =
    87:    ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    91:  ≥-trans A≥B B≥C = ≤-trans B≥C A≥B
    93:≤→≤c→≤c : {𝑨 : Algebra {𝑆 = 𝑆} α α}{𝑩 : Algebra {𝑆 = 𝑆} α α}{𝒦 : Pred(Algebra {𝑆 = 𝑆} α α) (ov {𝑆 = 𝑆} α)}
    94:  → 𝑨 ≤ 𝑩 → 𝑩 ≤c 𝒦 → 𝑨 ≤c 𝒦
    95:≤→≤c→≤c A≤B sB = (proj₁ sB) , (proj₁ (proj₂ sB) , ≤-trans A≤B (proj₂ (proj₂ sB)))
    99:  open RelStructs {a = ov {𝑆 = 𝑆} (α ⊔ ρᵃ)} {ℓ = 𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ} (_≅_ {α = α}{ρᵃ = ρᵃ}{𝑆 = 𝑆})
    102:  ≤-preorder : IsPreorder _≤_
    103:  isEquivalence  ≤-preorder = record { refl = ≅-refl ; sym = ≅-sym ; trans = ≅-trans }
    104:  reflexive      ≤-preorder = ≤-refl
    105:  trans          ≤-preorder A≤B B≤C = ≤-trans A≤B B≤C
    108:  A≥B×B≅C→A≥C : 𝑨 ≥ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≥ 𝑪
    109:  A≥B×B≅C→A≥C A≥B B≅C  = ≥-trans A≥B (≅→≥ B≅C)
    111:  A≤B×B≅C→A≤C : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    112:  A≤B×B≅C→A≤C A≤B B≅C = ≤-trans  A≤B (≅→≤ B≅C)
    114:  A≅B×B≥C→A≥C : 𝑨 ≅ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪
    115:  A≅B×B≥C→A≥C A≅B B≥C = ≥-trans (≅→≥ A≅B) B≥C
    117:  A≅B×B≤C→A≤C : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    118:  A≅B×B≤C→A≤C A≅B B≤C = ≤-trans (≅→≤ A≅B) B≤C
    123:  (φ : 𝑨 ≅ 𝑩) → IsInjective (proj₁ (to φ))
    132:≤-mono : {𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝒦 𝒦' : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) γ}
    133:  → 𝒦 ⊆ 𝒦' → 𝑩 ≤c 𝒦 → 𝑩 ≤c 𝒦'
    134:≤-mono KK' (𝑨 , (KA , B≤A)) = 𝑨 , ((KK' KA) , B≤A)
    139:Ten lemmas of one shape: transport a `≤` or a `≥` across the isomorphism between
    141:of a mixed transitivity lemma from above to one of the `Lift-≅`{.AgdaFunction}
    143:`Lift-≤-Lift`{.AgdaFunction} variants then compose two of those.  Either way no
    152:+  `≤-Liftˡ`{.AgdaFunction}, `≤-Liftʳ`{.AgdaFunction} and
    153:   `≤-Lift`{.AgdaFunction} lift the algebra on the right of `≤`, the larger one;
    156:+  `Lift-≤-Liftˡ`{.AgdaFunction}, `Lift-≤-Liftʳ`{.AgdaFunction} and
    157:   `Lift-≤-Lift`{.AgdaFunction} lift both algebras at once, and are literally the
    166:  → 𝑩 ≤c 𝒦 → (Lift-Algˡ 𝑩 ℓ) ≤c 𝒦
    167:Lift-is-sub (𝑨 , (KA , B≤A)) = 𝑨 , (KA , A≥B×B≅C→A≥C B≤A Lift-≅ˡ)
    170:  ≤-Liftˡ : {ℓ : Level} → 𝑨 ≤ 𝑩 → 𝑨 ≤ Lift-Algˡ 𝑩 ℓ
    171:  ≤-Liftˡ A≤B = A≤B×B≅C→A≤C A≤B Lift-≅ˡ
    173:  ≤-Liftʳ : {ρ : Level} → 𝑨 ≤ 𝑩 → 𝑨 ≤ Lift-Algʳ 𝑩 ρ
    174:  ≤-Liftʳ A≤B = A≤B×B≅C→A≤C A≤B Lift-≅ʳ
    176:  ≤-Lift : {ℓ ρ : Level} → 𝑨 ≤ 𝑩 → 𝑨 ≤ Lift-Alg 𝑩 ℓ ρ
    177:  ≤-Lift A≤B = A≤B×B≅C→A≤C  A≤B Lift-≅
    180:  ≥-Liftˡ A≥B = A≥B×B≅C→A≥C A≥B Lift-≅ˡ
    183:  ≥-Liftʳ A≥B = A≥B×B≅C→A≥C A≥B Lift-≅ʳ
    186:  ≥-Lift A≥B = A≥B×B≅C→A≥C A≥B Lift-≅
    189:  Lift-≤-Liftˡ : {ℓᵃ ℓᵇ : Level} → 𝑨 ≤ 𝑩 → Lift-Algˡ 𝑨 ℓᵃ ≤ Lift-Algˡ 𝑩 ℓᵇ
    190:  Lift-≤-Liftˡ A≤B = ≥-Liftˡ (≤-Liftˡ A≤B)
    192:  Lift-≤-Liftʳ : {rᵃ rᵇ : Level} → 𝑨 ≤ 𝑩 → Lift-Algʳ 𝑨 rᵃ ≤ Lift-Algʳ 𝑩 rᵇ
    193:  Lift-≤-Liftʳ A≤B = ≥-Liftʳ (≤-Liftʳ A≤B)
    195:  Lift-≤-Lift : {a rᵃ b rᵇ : Level}
    196:    → 𝑨 ≤ 𝑩 → Lift-Alg 𝑨 a rᵃ ≤ Lift-Alg 𝑩 b rᵇ
    197:  Lift-≤-Lift A≤B = ≥-Lift (≤-Lift A≤B)
    202:`⨅-≤`{.AgdaFunction} is the compatibility of the subalgebra relation with
    203:products: if `ℬ i ≤ 𝒜 i` for every index `i`, then `⨅ ℬ ≤ ⨅ 𝒜`.  The embedding is
    221:  ⨅-≤ : (∀ i → ℬ i ≤ 𝒜 i) → ⨅ ℬ ≤ ⨅ 𝒜
    222:  ⨅-≤ B≤A = h , hM
    228:      homAt = λ i → proj₁ (B≤A i)
    241:    hM = λ xy i → (proj₂ (B≤A i)) (xy i)
  8. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  9. shell
    Bash(command: grep -n "⊙-hom\|⊙-injective\b" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/*.lagda.md | head -30 echo --- grep -n "^_≤_\|_≤_ " <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md | head -20)
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:34:+ **composition**, `⊙-hom`{.AgdaFunc…
    the whole answer, as the model saw it (2,433 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:34:+  **composition**, `⊙-hom`{.AgdaFunction}, and the homomorphisms that witness
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:39:                                                      ; lift-hom-lemma ; ⊙-hom )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:182:  Lift-HomImage-lemma {γ} φ =  ⊙-hom (φ .proj₁) (from Lift-≅) ,
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:188:  HomImage-≅ φ A≅B = ⊙-hom (φ .proj₁) (to A≅B) , ⊙-IsSurjective (φ .proj₂) (toIsSurjective A≅B)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:191:  HomImage-≅' φ A'≅B = (⊙-hom (from A'≅B) (proj₁ φ)) , ⊙-IsSurjective (fromIsSurjective A'≅B) (φ .proj₂)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:66:open import Setoid.Homomorphisms.Properties  using  ( ⊙-hom ; ToLiftˡ ; FromLiftˡ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:145:  f = ⊙-hom (to ab) (to bc)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:148:  g = ⊙-hom (from bc) (from ab)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:73:+  `⊙-hom`{.AgdaFunction} and `⊙-epi`{.AgdaFunction} are the bundled forms.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:78:`⊙-hom f g` is read as "apply `f`, then `g`".
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:102:  ⊙-hom : hom 𝑨 𝑩 → hom 𝑩 𝑪  → hom 𝑨 𝑪
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:103:  ⊙-hom (h , hhom) (g , ghom) = g ⊙ h , ⊙-is-hom hhom ghom
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:182:  ToLift = ⊙-hom ToLiftˡ ToLiftʳ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:185:  FromLift = ⊙-hom FromLiftʳ FromLiftˡ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:255:  Lift-hom-fst φ _ _ = ⊙-hom FromLift φ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Properties.lagda.md:258:  Lift-hom-snd φ _ _ = ⊙-hom φ ToLift
    ---
    102:  _≤_   -- alias for subalgebra relation
  10. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  11. shell
    Bash(command: grep -n "⊙-injective" -r <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/ 2>/dev/null | head -20 echo --- sed -n '1,40p' <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md)
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Functions/Injective.lagda.md:91: ⊙-injective : (f : 𝑨 ⟶ 𝑩)(g : 𝑩 ⟶…
    the whole answer, as the model saw it (3,246 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Functions/Injective.lagda.md:91:  ⊙-injective :  (f : 𝑨 ⟶ 𝑩)(g : 𝑩 ⟶ 𝑪)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Functions/Injective.lagda.md:95:  ⊙-injective _ _ finj ginj = finj ∘ ginj
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Functions/Injective.lagda.md:101:   ; injective = ⊙-injective (function fi) (function gi) (injective fi) (injective gi)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:46:open import Setoid.Functions          using  ( id-is-injective ; IsInjective ; ⊙-injective )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:79:  ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:83:    ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:87:    ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    ---
    ---
    layout: default
    title : "Setoid.Subalgebras.Basic module (The Agda Universal Algebra Library)"
    date : "2021-07-17"
    author: "agda-algebras development team"
    ---
    
    #### Subalgebras of setoid algebras
    
    This is the [Setoid.Subalgebras.Basic][] module of the [Agda Universal Algebra Library][].
    
    `𝑨` is a **subalgebra** of `𝑩`, written `𝑨 ≤ 𝑩`, just in case `𝑨` can be
    *homomorphically embedded* in `𝑩`: there is a homomorphism from `𝑨` to `𝑩` whose
    underlying map is injective.
    
    Note that the notion of subalgebra that we define here is different from the
    standard textbook definition, which defines a *subuniverse* to be a subset of
    the carrier of an algebra that is closed under the operations (as we do in the
    [Setoid.Subalgebras.Subuniverses][] module); a subalgebra is then a subuniverse
    together with the operations of the larger algebra restricted to it.  Nothing in
    our definition requires the carrier of a subalgebra of `𝑩` to be a subset of the
    carrier of `𝑩`.[^1]
    
    Our subalgebra relation `_≤_`{.AgdaFunction} is clearly reflexive and transitive,
    so it is a *preorder*; that is exactly what [Setoid.Subalgebras.Properties][]
    proves, as `≤-preorder`{.AgdaFunction}, and it is the only order-theoretic fact
    about `_≤_`{.AgdaFunction} that this subtree establishes.
    
    It is not a partial order.  Antisymmetry would require that `𝑨 ≤ 𝑩` and `𝑩 ≤ 𝑨`
    imply `𝑨 ≈ 𝑩` for some suitable `≈`, and read as "on the nose" equality that
    plainly fails.  The tempting repair is to read `≈` as isomorphism, but that fails
    too: `𝑨 ≤ 𝑩` and `𝑩 ≤ 𝑨` supply injective homomorphisms in both directions, and a
    pair of injections is not an isomorphism.  Neither map need invert the other, and
    in general no isomorphism need exist at all — the free groups on two and on three
    generators embed in each other yet are not isomorphic, as their abelianizations
    `ℤ²` and `ℤ³` already show.  Extracting a bijection from two injections is
    Cantor–Bernstein, which is unavailable constructively, and the bijection it
    yields classically need not be a homomorphism.
    
    For **finite** algebras the repair does work, and that is the setting much of this
  12. the model
    Now let me write the fix, adding needed imports and the definition.
  13. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ (h , hinj) B≅C = ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C))
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  14. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  15. shell
    Bash(command: grep -n "⊙-hom\|⊙-injective\|≅toInjective\|^open\|to \b" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms.lagda.md echo ---FUNCTIONS--- grep -n "^open\|⊙-injective" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Functions.lagda.md)
    answered
    25:+ [Setoid.Homomorphisms.Products][]: the homomorphism into a product induced by a
    the whole answer, as the model saw it (852 characters of text)
    25:+  [Setoid.Homomorphisms.Products][]: the homomorphism into a product induced by a
    40:open import Setoid.Homomorphisms.Basic              public
    41:open import Setoid.Homomorphisms.Kernels            public
    42:open import Setoid.Homomorphisms.Products           public
    43:open import Setoid.Homomorphisms.Noether            public
    44:open import Setoid.Homomorphisms.Factor             public
    45:open import Setoid.Homomorphisms.Isomorphisms       public
    46:open import Setoid.Homomorphisms.HomomorphicImages  public
    47:open import Setoid.Homomorphisms.Properties         public
    ---FUNCTIONS---
    45:open import Setoid.Functions.Basic       public
    46:open import Setoid.Functions.Bijective   public
    47:open import Setoid.Functions.Injective   public
    48:open import Setoid.Functions.Inverses    public
    49:open import Setoid.Functions.Surjective  public
  16. the model
    Good, those are all re-exported publicly. Let's check `≅toInjective` and `to` field, and `_≅_` module in Isomorphisms.lagda.md, then typecheck.
  17. shell
    Bash(command: grep -n "≅toInjective\|record _≅_\|to :\|to \b" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md | head -20)
    answered
    13:both directions that are mutually inverse up to the setoid equalities of the two
    the whole answer, as the model saw it (1,407 characters of text)
    13:both directions that are mutually inverse up to the setoid equalities of the two
    27:+  `≅toInjective`{.AgdaFunction}: the forward map of an isomorphism is injective;
    31:+  `Lift-≅`{.AgdaFunction}: an algebra is isomorphic to each of its universe
    45:open import Agda.Primitive              using () renaming ( Set to Type )
    49:open import Function                    using ()  renaming ( Func to _⟶_ )
    71:open _⟶_ using ( cong ) renaming ( to to _⟨$⟩_ )
    87:However, with four components, an equivalent record type is easier to work with.
    91:  open Setoid 𝔻[ 𝑨 ] using ( sym ; trans ) renaming ( _≈_ to _≈₁_ )
    92:  open Setoid 𝔻[ 𝑩 ] using () renaming ( _≈_ to _≈₂_ ; sym to sym₂ ; trans to trans₂)
    94:  record _≅_ : Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ) where
    97:      to : hom 𝑨 𝑩
    100:      from∼to : ∀ a → from .proj₁ ⟨$⟩ (to .proj₁ ⟨$⟩ a) ≈₁ a
    111:      Goal = trans (sym (from∼to x)) (trans ξ (from∼to y))
    114:    fromIsSurjective {y} = eq (to .proj₁ ⟨$⟩ y) (sym (from∼to y))
    126:and forth between them which compose to the identity map.
    145:  f = ⊙-hom (to ab) (to bc)
    150:  open Setoid 𝔻[ 𝑪 ] using () renaming ( _≈_ to _≈₃_ ; trans to trans₃ )
    152:  τ b = trans₃ (cong (to bc .proj₁) (to∼from ab (from bc .proj₁ ⟨$⟩ b))) (to∼from bc b)
    154:  open Setoid 𝔻[ 𝑨 ] using () renaming ( _≈_ to _≈₁_ ; trans to trans₁ )
    156:  ν a = trans₁ (cong (from ab .proj₁) (from∼to bc (to ab .proj₁ ⟨$⟩ a))) (from∼to ab a)
  18. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  19. shell
    Bash(command: grep -n "open _≅_\|module _≅_\|open.*_≅_" -r <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms* <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms.lagda.md)
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:37:open import Setoid.Homomo…
    the whole answer, as the model saw it (479 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:37:open import Setoid.Homomorphisms.Isomorphisms  using  ( _≅_ ; Lift-≅ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:180:  open _≅_
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/HomomorphicImages.lagda.md:186:  open _≅_
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:132:open _≅_
  20. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  21. shell
    Bash(command: agda --no-default-libraries --library-file <repo>/agda/libraries --library standard-library --library agda-dojang --library agda-algebras --safe -i . Subalgebras-sub-trans-iso.agda)
    refusedno timing in the archive
    Exit code 42
    the whole answer, as the model saw it (326 characters of text)
    Exit code 42
    Checking Subalgebras-sub-trans-iso (<work>/Subalgebras-sub-trans-iso.agda).
    <work>/Subalgebras-sub-trans-iso.agda:28.12-14: error: [NotInScope]
    Not in scope:
      to
      at <work>/Subalgebras-sub-trans-iso.agda:28.12-14
        (did you mean
           '_≅_.to' or
           'Setoid.Homomorphisms._≅_.to'?)
    when scope checking to
  22. the model
    Need to open `_≅_`. Let me add that import/open line.
  23. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: open import Setoid.Subalgebras ≤-trans-≅′, new_string: open import Setoid.Subalgebras open _≅_ ≤-trans-≅′)
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  24. shell
    Bash(command: agda --no-default-libraries --library-file <repo>/agda/libraries --library standard-library --library agda-dojang --library agda-algebras --safe -i . Subalgebras-sub-trans-iso.agda)
    answeredno timing in the archive
    Checking Subalgebras-sub-trans-iso (<work>/Subalgebras-sub-trans-iso.agda).
    the whole answer, as the model saw it (75 characters of text)
    Checking Subalgebras-sub-trans-iso (<work>/Subalgebras-sub-trans-iso.agda).
  25. the model
    The file now type-checks successfully with the exact judging command, confirming success.

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 704 thinking tokens over the session; their text is not in the archive.

solvedthe judge, in outcome.json

Every gate passed, and the definition does not refer to the library’s own lemma for this statement, so the row counts as a solve.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from agda in the shell
the library’s own proof in view before the edit yes, the model read the file that holds it
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Source: Setoid.Subalgebras.Properties (agda-algebras)
-- Import stratum: wholesale
-- Strategy: pairing
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

open _≅_

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ (h , hinj) B≅C =
  ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)

reports/agent-bench/arm162-shell-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

≤-trans-≅′, server and shell, hints in view

Server and shell, with the hint in view. Given both, the model reads the library through the shell, writes the proof out, and takes its verdicts from check_file: the first says no and names what is out of scope, the second says yes.

model
Sonnet 5 (claude-sonnet-5)
instrument
server and shell
run
arm162-both-1 2026-09-21
fixture header
hints in view: Source: Setoid.Subalgebras.Properties (agda-algebras); Strategy: pairing
server
the server of 2026-09-21 (fourteen tools, the libraries' sources readable on every arm)
client
2.1.261 (Claude Code)
turns
14
tool calls
13 Read ×3, Bash ×6, Edit ×2, check_file ×2
wall clock
46 s (indicative: subjects ran three at a time)
cost, list price
USD 0.19
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 14 turns and 13 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (963 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Source: Setoid.Subalgebras.Properties (agda-algebras)
    8	-- Import stratum: wholesale
    9	-- Strategy: pairing
    10	--
    11	module Subalgebras-sub-trans-iso where
    12	
    13	open import AgdaDojang.Debug
    14	
    15	open import Agda.Primitive   using ( Level )
    16	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    17	
    18	open import Overture              using ( Signature )
    19	open import Setoid.Algebras       using ( Algebra )
    20	open import Setoid.Functions
    21	open import Setoid.Homomorphisms
    22	open import Setoid.Subalgebras
    23	
    24	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    25	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    26	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    27	≤-trans-≅′ p B≅C = {!!}
    28	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. shell
    Bash(command: grep -n "≤-trans-≅\|_≤_\|_≅_" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/*.agda 2>/dev/null | head -80)
    answered
    (Bash completed with no output)
    the whole answer, as the model saw it (31 characters of text)
    (Bash completed with no output)
  5. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07/src/Setoid -iname "*Subalgebra*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    the whole answer, as the model saw it (134 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
  6. shell
    Bash(command: ls <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/)
    answered
    Basic.lagda.md
    the whole answer, as the model saw it (110 characters of text)
    Basic.lagda.md
    CompleteLattice.lagda.md
    Properties.lagda.md
    Subdirect
    Subdirect.lagda.md
    Subuniverses.lagda.md
  7. shell
    Bash(command: grep -n "≤-trans-≅\|^_≤_\|_≤_ \|≅-refl\|module\|open import" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md)
    answered
    3:title : "Setoid.Subalgebras.Properties module (The Agda Universal Algebra Library)"
    the whole answer, as the model saw it (1,855 characters of text)
    3:title : "Setoid.Subalgebras.Properties module (The Agda Universal Algebra Library)"
    10:This is the [Setoid.Subalgebras.Properties][] module of the [Agda Universal Algebra Library][].
    12:This module establishes the order-theoretic facts about the subalgebra relation
    28:module Setoid.Subalgebras.Properties where
    30:open import Agda.Primitive using () renaming ( Set to Type )
    33:open import Data.Product              using ( _,_ )
    34:open import Function                  using ( _∘_ )  renaming ( Func to _⟶_ )
    35:open import Level                     using ( Level ; _⊔_ )
    36:open import Relation.Binary           using ( Setoid )
    37:open import Relation.Unary            using ( Pred ; _⊆_ )
    43:open import Overture                  using  ( proj₁ ; proj₂ ; 𝓞 ; 𝓥 ; Signature ; 𝑆 )
    44:open import Setoid.Algebras           using  ( Algebra ; Lift-Algˡ ; Lift-Algʳ
    46:open import Setoid.Functions          using  ( id-is-injective ; IsInjective ; ⊙-injective )
    47:open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    49:                                             ; ≅-sym ; ≅-refl ; ≅-trans
    51:open import Setoid.Subalgebras.Basic  using  ( _≤_ ; _≥_ ; _≤c_ )
    77:module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    81:  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    82:  ≤-trans-≅ (h , hinj) B≅C =
    89:module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    97:module _ {𝑆 : Signature 𝓞 𝓥} {α ρᵃ ρ : Level} where
    103:  isEquivalence  ≤-preorder = record { refl = ≅-refl ; sym = ≅-sym ; trans = ≅-trans }
    107:module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    169:module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} where
    188:module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} where
    214:module _
  8. the model
    Found the existing `≤-trans-≅` proof. Let's read it.
  9. files
    Read(file_path: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md, offset: 70, limit: 40)
    answered
    70
    the whole answer, as the model saw it (1,777 characters of text)
    70	
    71	≥-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    72	≥-refl = ≅→≤ ∘ ≅-sym
    73	
    74	≤-reflexive : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≤ 𝑨
    75	≤-reflexive {𝑨 = 𝑨} = 𝒾𝒹 , id-is-injective {𝑨 = 𝔻[ 𝑨 ]}
    76	
    77	module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    78	  ≤-trans : 𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    79	  ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    80	
    81	  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    82	  ≤-trans-≅ (h , hinj) B≅C =
    83	    ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    84	
    85	  ≅-trans-≤ : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    86	  ≅-trans-≤ A≅B (h , hinj) =
    87	    ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    88	
    89	module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    90	  ≥-trans : 𝑨 ≥ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪
    91	  ≥-trans A≥B B≥C = ≤-trans B≥C A≥B
    92	
    93	≤→≤c→≤c : {𝑨 : Algebra {𝑆 = 𝑆} α α}{𝑩 : Algebra {𝑆 = 𝑆} α α}{𝒦 : Pred(Algebra {𝑆 = 𝑆} α α) (ov {𝑆 = 𝑆} α)}
    94	  → 𝑨 ≤ 𝑩 → 𝑩 ≤c 𝒦 → 𝑨 ≤c 𝒦
    95	≤→≤c→≤c A≤B sB = (proj₁ sB) , (proj₁ (proj₂ sB) , ≤-trans A≤B (proj₂ (proj₂ sB)))
    96	
    97	module _ {𝑆 : Signature 𝓞 𝓥} {α ρᵃ ρ : Level} where
    98	
    99	  open RelStructs {a = ov {𝑆 = 𝑆} (α ⊔ ρᵃ)} {ℓ = 𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ} (_≅_ {α = α}{ρᵃ = ρᵃ}{𝑆 = 𝑆})
    100	  open IsPreorder
    101	
    102	  ≤-preorder : IsPreorder _≤_
    103	  isEquivalence  ≤-preorder = record { refl = ≅-refl ; sym = ≅-sym ; trans = ≅-trans }
    104	  reflexive      ≤-preorder = ≤-refl
    105	  trans          ≤-preorder A≤B B≤C = ≤-trans A≤B B≤C
    106	
    107	module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
    108	  A≥B×B≅C→A≥C : 𝑨 ≥ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≥ 𝑪
    109	  A≥B×B≅C→A≥C A≥B B≅C  = ≥-trans A≥B (≅→≥ B≅C)
  10. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  11. shell
    Bash(command: grep -n "_≤_\|_≥_" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md | head -20)
    answered
    24:Our subalgebra relation `_≤_`{.AgdaFunction} is clearly reflexive and transitive,
    the whole answer, as the model saw it (743 characters of text)
    24:Our subalgebra relation `_≤_`{.AgdaFunction} is clearly reflexive and transitive,
    27:about `_≤_`{.AgdaFunction} that this subtree establishes.
    45:finite algebras `_≤_`{.AgdaFunction} is antisymmetric up to isomorphism, hence a
    49:This module defines the subalgebra relation `_≤_`{.AgdaFunction} and the several
    81:+  `_IsSubalgebraOf_`{.AgdaFunction}, with the infix alias `_≤_`{.AgdaFunction},
    84:+  `_IsSupalgebraOf_`{.AgdaFunction}, aliased `_≥_`{.AgdaFunction}, is the
    98:  _≥_   -- alias for supalgebra (aka overalgebra)
    102:  _≤_   -- alias for subalgebra relation
    181:      same symbol, `_≤_`{.AgdaFunction}.  The two do not collide, because the
    186:      as `_≤_`{.AgdaFunction} only where `Sublattice`{.AgdaModule} is opened, as in
  12. the model
    Good, matches. Now fill the hole using the same pattern.
  13. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ (h , hinj) B≅C = ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C))
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  14. agda-mcp
    check_file()
    answered5.1 s
    success: falseholesCount: 0diagnosticsTotal: 1verdict.exitCode: 42elapsedMs: 5060diagnostics: 1holes: 0
    the whole answer, as the model saw it (2,245 characters of JSON)
    {"checkedFromSource":true,"command":{"args":["-i","agda-dojang/agda","--library-file=agda/libraries","-l","agda-dojang","-l","standard-library","-l","agda-algebras","--safe","-i","<work>","<work>/Subalgebras-sub-trans-iso.agda"],"binary":"<nix>/agdaWithPackages-2.8.0/bin/agda","cwd":"<repo>"},"diagnostics":[{"code":"NotInScope","col":12,"file":"<work>/Subalgebras-sub-trans-iso.agda","involved":{"candidates":["_≅_.to","Setoid.Homomorphisms._≅_.to"]},"line":28,"message":"Not in scope:\n  to\n  at <work>/Subalgebras-sub-trans-iso.agda:28.12-14\n    (did you mean\n       '_≅_.to' or\n       'Setoid.Homomorphisms._≅_.to'?)\nwhen scope checking to","range":{"endCol":14,"endLine":28,"startCol":12,"startLine":28},"severity":"error"}],"diagnosticsTotal":1,"elapsedMs":5060,"holes":[],"holesCount":0,"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"success":false,"timedOut":false,"verdict":{"equivalentTo":"equivalent-to: <nix>/agdaWithPackages-2.8.0/bin/agda -i agda-dojang/agda --library-file=agda/libraries -l agda-dojang -l standard-library -l agda-algebras --safe -i <work> <work>/Subalgebras-sub-trans-iso.agda","exitCode":42,"meaning":"success is true if and only if that command exited 0, so it means exactly what green means in a batch build. Unsolved metavariables, unsolved constraints, and open holes all make agda exit non-zero and so make success false; there is no interaction mode anywhere in this server. The verdict is read from the exit code alone — never from the diagnostics text — so a change in Agda's message format can empty the diagnostics list but cannot turn a failing build green."}}
  15. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  16. shell
    Bash(command: grep -n "record _≅_\|to \|from \|≅toInjective\|module.*≅" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/*.lagda.md 2>/dev/null | grep -i "to\|≅" | head -40)
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:14:`h`: there is a homomorphism `φ` fro…
    the whole answer, as the model saw it (6,291 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:14:`h`: there is a homomorphism `φ` from the codomain of `h` to the codomain of `g`
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:31:-- Imports from Agda and the Agda Standard Library -------------------------------------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:33:open import Function     renaming ( Func to _⟶_ )  using ( _∘_ ; _$_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:40:-- Imports from the Agda Universal Algebra Library ------------------------------------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:72:  open Setoid 𝔻[ 𝑩 ]  using ()         renaming ( _≈_ to _≈₂_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:73:  open Setoid 𝔻[ 𝑪 ]  using ( trans )  renaming ( _≈_ to _≈₃_ ; sym to sym₃ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:74:  open _⟶_            using ( cong )   renaming ( to to _⟨$⟩_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:119:      open _⟶_ φ using () renaming (cong to φcong)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Factor.lagda.md:157:      is obtained from `HomFactor`{.AgdaFunction}.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:12:A **homomorphism** from `𝑨` to `𝑩` is a setoid function `h : 𝔻[ 𝑨 ] ⟶ 𝔻[ 𝑩 ]`
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:17:Two things distinguish this from an ordinary type-based definition, where
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:21:    cannot fail to send equal arguments to equal results.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:22:2.  Compatibility is asserted up to the equality *of the codomain*, not up to
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:25:    appeal to extensionality.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:50:-- Imports from Agda and the Agda Standard Library ------------------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:51:open import Agda.Primitive           using () renaming ( Set to Type )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:53:open import Function.Bundles         using () renaming ( Func to _⟶_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:58:-- Imports from the Agda Universal Algebra Library ---------------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:75:setoid function `h` from the domain of `𝑨` to that of `𝑩`, together with a proof
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:79:`h` and a `compatible-map`{.AgdaFunction} proof never has to write the `Σ`-pair
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:84:  open _⟶_ {a = α}{ρᵃ}{β}{ρᵇ}{From = 𝔻[ 𝑨 ]}{To = 𝔻[ 𝑩 ]} renaming (to to _⟨$⟩_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:88:    where open Setoid 𝔻[ 𝑩 ] using() renaming ( _≈_ to _≈₂_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Basic.lagda.md:128:monomorphism into a subalgebra and an epimorphism into a homomorphic image.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:13:both directions that are mutually inverse up to the setoid equalities of the two
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:18:`from∼to`{.AgdaField}, and derives from it that each direction is both injective
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:27:+  `≅toInjective`{.AgdaFunction}: the forward map of an isomorphism is injective;
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:31:+  `Lift-≅`{.AgdaFunction}: an algebra is isomorphic to each of its universe
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:44:-- Imports from Agda (builtin/primitive) and the Agda Standard Library ---------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:45:open import Agda.Primitive              using () renaming ( Set to Type )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:47:open import Data.Unit.Polymorphic.Base  using ()      renaming ( ⊤ to 𝟙 ; tt to ∗ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:49:open import Function                    using ()  renaming ( Func to _⟶_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:55:-- Imports from the Agda Universal Algebra Library -----------------------------------------
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:71:open _⟶_ using ( cong ) renaming ( to to _⟨$⟩_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:87:However, with four components, an equivalent record type is easier to work with.
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:91:  open Setoid 𝔻[ 𝑨 ] using ( sym ; trans ) renaming ( _≈_ to _≈₁_ )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:92:  open Setoid 𝔻[ 𝑩 ] using () renaming ( _≈_ to _≈₂_ ; sym to sym₂ ; trans to trans₂)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:94:  record _≅_ : Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ) where
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:97:      to : hom 𝑨 𝑩
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:98:      from : hom 𝑩 𝑨
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:99:      to∼from : ∀ b → to .proj₁ ⟨$⟩ (from .proj₁ ⟨$⟩ b) ≈₂ b
  17. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  18. files
    Read(file_path: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md, offset: 40, limit: 30)
    answered
    40 import Relation.Binary.Reasoning.Setoid as SetoidReasoning
    the whole answer, as the model saw it (1,390 characters of text)
    40	import Relation.Binary.Reasoning.Setoid as SetoidReasoning
    41	
    42	-- Imports from the Agda Universal Algebra Library ----------------------------------
    43	open import Overture                  using  ( proj₁ ; proj₂ ; 𝓞 ; 𝓥 ; Signature ; 𝑆 )
    44	open import Setoid.Algebras           using  ( Algebra ; Lift-Algˡ ; Lift-Algʳ
    45	                                             ; Lift-Alg ; ov ; ⨅ ; 𝔻[_] )
    46	open import Setoid.Functions          using  ( id-is-injective ; IsInjective ; ⊙-injective )
    47	open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    48	                                             ; ≅toInjective ; ≅fromInjective ; mkiso
    49	                                             ; ≅-sym ; ≅-refl ; ≅-trans
    50	                                             ; Lift-≅ˡ ; Lift-≅ ; Lift-≅ʳ)
    51	open import Setoid.Subalgebras.Basic  using  ( _≤_ ; _≥_ ; _≤c_ )
    52	
    53	private variable α ρᵃ β ρᵇ γ ρᶜ ι : Level
    54	```
    55	-->
    56	
    57	The subalgebra relation is a *preorder*, i.e., a reflexive, transitive binary relation.
    58	
    59	```agda
    60	open _≅_
    61	
    62	≅→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    63	≅→≤ φ = (to φ) , ≅toInjective φ
    64	
    65	≅→≥ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    66	≅→≥ φ = (from φ) , ≅fromInjective φ
    67	
    68	≤-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    69	≤-refl = ≅→≤
  19. the model
    They have `open _≅_` at top level. I'll use `_≅_.to` directly instead of adding an open, to avoid extra top-level opens interfering (though allowed). Simplest: use qualified `_≅_.to`.
  20. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ (h , hinj) B≅C = ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C), new_string: ≤-trans-≅′ (h , hinj) B≅C = ⊙-hom h (_≅_.to B≅C) , ⊙-injective (proj₁ h) (proj₁ (_≅_.to B≅C)) hinj (≅toInjective B≅C))
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  21. agda-mcp
    check_file()
    answered6.0 s
    success: trueholesCount: 0diagnosticsTotal: 0verdict.exitCode: 0elapsedMs: 5982diagnostics: 0holes: 0
    the whole answer, as the model saw it (1,818 characters of JSON)
    {"checkedFromSource":true,"command":{"args":["-i","agda-dojang/agda","--library-file=agda/libraries","-l","agda-dojang","-l","standard-library","-l","agda-algebras","--safe","-i","<work>","<work>/Subalgebras-sub-trans-iso.agda"],"binary":"<nix>/agdaWithPackages-2.8.0/bin/agda","cwd":"<repo>"},"diagnostics":[],"diagnosticsTotal":0,"elapsedMs":5982,"holes":[],"holesCount":0,"project":{"includePaths":["agda-dojang/agda","<work>"],"librariesFile":"<repo>/agda/libraries","registeredLibraries":[{"includes":["agda"],"libFile":"<repo>/agda-dojang/agda-dojang.agda-lib","name":"agda-dojang","root":"<repo>/agda-dojang"},{"includes":["src"],"libFile":"<nix>/standard-library-2.3/standard-library.agda-lib","name":"standard-library-2.3","root":"<nix>/standard-library-2.3"},{"includes":["src"],"libFile":"<nix>/agda-algebras-unstable-2026-09-07/agda-algebras.agda-lib","name":"agda-algebras","root":"<nix>/agda-algebras-unstable-2026-09-07"}],"root":"<work>","rootSource":"server-config","selectedLibraries":["agda-dojang","standard-library","agda-algebras"]},"success":true,"timedOut":false,"verdict":{"equivalentTo":"equivalent-to: <nix>/agdaWithPackages-2.8.0/bin/agda -i agda-dojang/agda --library-file=agda/libraries -l agda-dojang -l standard-library -l agda-algebras --safe -i <work> <work>/Subalgebras-sub-trans-iso.agda","exitCode":0,"meaning":"success is true if and only if that command exited 0, so it means exactly what green means in a batch build. Unsolved metavariables, unsolved constraints, and open holes all make agda exit non-zero and so make success false; there is no interaction mode anywhere in this server. The verdict is read from the exit code alone — never from the diagnostics text — so a change in Agda's message format can empty the diagnostics list but cannot turn a failing build green."}}
  22. the model
    The verdict on the final file is success (exit code 0, no diagnostics).

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 496 thinking tokens over the session; their text is not in the archive.

solvedthe judge, in outcome.json

Every gate passed, and the definition does not refer to the library’s own lemma for this statement, so the row counts as a solve.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from check_file
the library’s own proof in view before the edit yes, the model read the file that holds it
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Source: Setoid.Subalgebras.Properties (agda-algebras)
-- Import stratum: wholesale
-- Strategy: pairing
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ (h , hinj) B≅C =
  ⊙-hom h (_≅_.to B≅C) , ⊙-injective (proj₁ h) (proj₁ (_≅_.to B≅C)) hinj (≅toInjective B≅C)

reports/agent-bench/arm162-both-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

≤-trans-≅′, server only, header-free

Server only, header-free. One question, exports_of on a module the file imports, lists a lemma of exactly this type; the model calls it, and the one verdict is accepted. A proof that names the library's own lemma for the statement is counted restated by the judge, never solved.

model
Sonnet 5 (claude-sonnet-5)
instrument
server only
fixture header
header-free: no header line named a source, a needle or the proof’s shape
server
the server of 2026-09-29 (the same surface, frozen for the header-free arms (PR 223))
client
2.1.282 (Claude Code)
turns
5
tool calls
4 Read ×1, exports_of ×1, Edit ×1, check_file ×1
wall clock
32 s (indicative: subjects ran three at a time)
cost, list price
USD 0.18
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 5 turns and 4 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (879 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Import stratum: wholesale
    8	--
    9	module Subalgebras-sub-trans-iso where
    10	
    11	open import AgdaDojang.Debug
    12	
    13	open import Agda.Primitive   using ( Level )
    14	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    15	
    16	open import Overture              using ( Signature )
    17	open import Setoid.Algebras       using ( Algebra )
    18	open import Setoid.Functions
    19	open import Setoid.Homomorphisms
    20	open import Setoid.Subalgebras
    21	
    22	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    23	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    24	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    25	≤-trans-≅′ p B≅C = {!!}
    26	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. agda-mcp
    exports_of(module: Setoid.Subalgebras, limit: 0)
    answered5.7 s (loading the file first)
    elapsedMs: 5679exports: 125modules: 8
    the whole answer, as the model saw it (38,695 characters of JSON)
    {"checkedFromSource":true,"elapsedMs":5679,"exports":[{"name":"_IsSubalgebraOf_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level} →\nAlgebra α ρᵃ →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"_IsSubalgebraOfClass_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥}\n{β ρᵇ α ρᵃ : Level} {ℓ = ℓ₁ : Level} →\nAlgebra β ρᵇ →\nRelation.Unary.Pred (Algebra α ρᵃ) ℓ₁ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ\n Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ ℓ₁)"},{"name":"_IsSupalgebraOf_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level} →\nAlgebra α ρᵃ →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"_∈?_","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(.patternInTele0\n : Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card)\n   Data.Product.×\n   Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card))\n(d : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\nRelation.Nullary.Decidable.Core.Dec\n(Setoid.Congruences.Finite.Basic.ConRel d\n (𝑭 .Setoid.Algebras.FiniteAlgebra.enum (.patternInTele0 .proj₁))\n (𝑭 .Setoid.Algebras.FiniteAlgebra.enum (.patternInTele0 .proj₂)))"},{"name":"_≤_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level} →\nAlgebra α ρᵃ →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"_≤c_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥}\n{β ρᵇ α ρᵃ : Level} {ℓ = ℓ₁ : Level} →\nAlgebra β ρᵇ →\nRelation.Unary.Pred (Algebra α ρᵃ) ℓ₁ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ\n Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ ℓ₁)"},{"name":"_≥_","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level} →\nAlgebra α ρᵃ →\nAlgebra β ρᵇ →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ)"},{"name":"_⊆ᶜ_","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nSetoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪) →\nSetoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪) →\nSet (α Agda.Primitive.⊔ ρ Agda.Primitive.⊔ 𝓞 Agda.Primitive.⊔ 𝓥)"},{"name":"_⊆ᶜ?_","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(d e : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\nRelation.Nullary.Decidable.Core.Dec ((𝑭 ⊆ᶜ 𝑪) d e)"},{"name":"A≅B×B≤C→A≤C","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪"},{"name":"A≅B×B≥C→A≥C","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≅ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪"},{"name":"A≤B×B≅C→A≤C","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪"},{"name":"A≥B×B≅C→A≥C","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≥ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≥ 𝑪"},{"name":"B-onlyif-TermImageB","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ} →\nB Relation.Unary.⊆ TermImage B"},{"name":"Birkhoff-subdirect","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρ : Level} {ℓ = ℓ₁ : Level} {ι : Level} →\n((𝑨 : Algebra α ρ) → SubdirectSIRep 𝑨 ℓ₁ ι) →\n(𝑨 : Algebra α ρ) → SubdirectlyRepresentable 𝑨 ℓ₁ ι"},{"name":"FirstHomCorollary","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} (hh : hom 𝑨 𝑩) →\nkerquo hh IsSubalgebraOf 𝑩"},{"name":"IsSubdirectEmbedding","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} (𝒜 : I → Algebra α ρ)\n(h : hom 𝑩 (Setoid.Algebras.⨅ 𝒜)) →\nSet\n(ι Agda.Primitive.⊔ β Agda.Primitive.⊔ ρᵇ Agda.Primitive.⊔ α\n Agda.Primitive.⊔ ρ)"},{"name":"IsoToFactor","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι} →\nAlgebra α ρ →\n(I → Algebra αᵃ ρ) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ ι Agda.Primitive.⊔ α\n Agda.Primitive.⊔ ρ\n Agda.Primitive.⊔ αᵃ)"},{"name":"Lift-is-sub","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝒦 : Relation.Unary.Pred (Algebra α ρᵃ) (Setoid.Algebras.ov α)}\n{𝑩 : Algebra β ρᵇ} {ℓ = ℓ₁ : Level} →\n𝑩 ≤c 𝒦 → Setoid.Algebras.Lift-Algˡ 𝑩 ℓ₁ ≤c 𝒦"},{"name":"Lift-≤-Lift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {a rᵃ b rᵇ : Level} →\n𝑨 ≤ 𝑩 →\nSetoid.Algebras.Lift-Alg 𝑨 a rᵃ ≤ Setoid.Algebras.Lift-Alg 𝑩 b rᵇ"},{"name":"Lift-≤-Liftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {rᵃ rᵇ : Level} →\n𝑨 ≤ 𝑩 →\nSetoid.Algebras.Lift-Algʳ 𝑨 rᵃ ≤ Setoid.Algebras.Lift-Algʳ 𝑩 rᵇ"},{"name":"Lift-≤-Liftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓᵃ ℓᵇ : Level} →\n𝑨 ≤ 𝑩 →\nSetoid.Algebras.Lift-Algˡ 𝑨 ℓᵃ ≤ Setoid.Algebras.Lift-Algˡ 𝑩 ℓᵇ"},{"name":"Q","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nAlgebra α (ℓ 𝑭 𝑪)"},{"name":"Q→A","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Basic.Con (Q 𝑭 𝑪 a b a≢b) (ℓ 𝑭 𝑪) →\nSetoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪)"},{"name":"Rₐᵦ","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nRelation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ] →\nRelation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ] →\nSet α"},{"name":"SI-Q","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Monolith.IsSubdirectlyIrreducible\n(Q 𝑭 𝑪 a b a≢b)"},{"name":"SIRep→Representable","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρ : Level} {ℓ = ℓ₁ : Level} {ι : Level} {𝑨 : Algebra α ρ} →\nSubdirectSIRep 𝑨 ℓ₁ ι → SubdirectlyRepresentable 𝑨 ℓ₁ ι"},{"name":"Separates","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ} →\n(I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nSet (ι Agda.Primitive.⊔ α Agda.Primitive.⊔ ρ Agda.Primitive.⊔ ℓ₁)"},{"name":"Sg","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n{ℓ = ℓ₁ : Level} →\nRelation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁ →\nSetoid.Subalgebras.Subuniverses.A 𝑨 →\nSet (𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ℓ₁)"},{"name":"SgB-onlyif-TermImageB","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n(B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ) →\nSg 𝑨 B Relation.Unary.⊆ TermImage B"},{"name":"Subalgebra","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ : Level} →\nAlgebra α ρᵃ →\n{β ρᵇ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ)"},{"name":"SubalgebraOf","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α β ρᵃ ρᵇ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ)"},{"name":"SubalgebraOfClass","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥}\n{α β ρᵃ ρᵇ : Level} {ℓ = ℓ₁ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ℓ₁)"},{"name":"SubalgebraOfClass'","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥}\n{α β ρᵃ ρᵇ : Level} {ℓ = ℓ₁ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ℓ₁)"},{"name":"SubalgebrasOfClass","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ : Level} {ℓ = ℓ₁ : Level} →\nRelation.Unary.Pred (Algebra α ρᵃ) ℓ₁ →\n{β ρᵇ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵃ\n Agda.Primitive.⊔ ℓ₁\n Agda.Primitive.⊔ Agda.Primitive.lsuc β\n Agda.Primitive.⊔ Agda.Primitive.lsuc ρᵇ)"},{"name":"SubdirectEmbedding","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} →\n(I → Algebra α ρ) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ ι Agda.Primitive.⊔ β\n Agda.Primitive.⊔ ρᵇ\n Agda.Primitive.⊔ α\n Agda.Primitive.⊔ ρ)"},{"name":"SubdirectSIRep","type":"{𝓞 𝓥 α ρ : Level} {𝑆 : Signature 𝓞 𝓥} →\nAlgebra α ρ →\n(ℓ₁ ι : Level) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ℓ₁\n Agda.Primitive.⊔ Agda.Primitive.lsuc ι)"},{"name":"SubdirectlyRepresentable","type":"{𝓞 𝓥 α ρ : Level} {𝑆 : Signature 𝓞 𝓥} →\nAlgebra α ρ →\n(ℓ₁ ι : Level) →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ ρ\n Agda.Primitive.⊔ Agda.Primitive.lsuc ℓ₁\n Agda.Primitive.⊔ Agda.Primitive.lsuc ι)"},{"name":"Subuniverse","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n{ℓ = ℓ₁ : Level} →\nSet\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ Agda.Primitive.lsuc α\n Agda.Primitive.⊔ Agda.Primitive.lsuc ℓ₁)"},{"name":"Subuniverses","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n{ℓ = ℓ₁ : Level} →\nRelation.Unary.Pred\n(Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁)\n(𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ℓ₁)"},{"name":"TermImage","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ} →\nRelation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ →\nSetoid.Subalgebras.Subuniverses.A →\nSet (𝓞 Agda.Primitive.⊔ 𝓥 Agda.Primitive.⊔ α Agda.Primitive.⊔ ρᵃ)"},{"name":"TermImageB-onlyif-SgB","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n(B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ) →\nTermImage B Relation.Unary.⊆ Sg 𝑨 B"},{"name":"TermImageIsSub","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ} →\nTermImage B Relation.Unary.∈ Subuniverses 𝑨"},{"name":"app","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level}\n{G : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁}\n(f : 𝑆 .proj₁)\n(a : Overture.ArityOf 𝑆 f → Setoid.Subalgebras.Subuniverses.A 𝑨) →\nOverture.Im a ⊆ Sg 𝑨 G →\n(f Setoid.Algebras.^ 𝑨) a Relation.Unary.∈ Sg 𝑨 G"},{"name":"app","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ}\n(f : Overture.OperationSymbolsOf 𝑆)\n(ts\n : Overture.ArityOf 𝑆 f →\n   Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n((i : Overture.ArityOf 𝑆 f) → ts i Relation.Unary.∈ TermImage B) →\n(f Setoid.Algebras.^ 𝑨) ts Relation.Unary.∈ TermImage B"},{"name":"a≢bCons","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nAgda.Builtin.List.List\n(Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪))"},{"name":"below→coord-inj","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) {i : I} →\nSetoid.Congruences.Monolith.BelowDiagonal 𝑨 (kerfam 𝒜 h i) →\nIsInjective (proj₁ (coord 𝒜 h i))"},{"name":"carrier-lift","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(R S : Setoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪)) →\n((i j\n  : Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card)) →\n proj₁ R (𝑭 .Setoid.Algebras.FiniteAlgebra.enum i)\n (𝑭 .Setoid.Algebras.FiniteAlgebra.enum j) →\n proj₁ S (𝑭 .Setoid.Algebras.FiniteAlgebra.enum i)\n (𝑭 .Setoid.Algebras.FiniteAlgebra.enum j)) →\nR Setoid.Congruences.Lattice._.⊆ S"},{"name":"coord","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} (𝒜 : I → Algebra α ρ) →\nhom 𝑩 (Setoid.Algebras.⨅ 𝒜) → (i : I) → hom 𝑩 (𝒜 i)"},{"name":"coord-inj→below","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) {i : I} →\nIsInjective (proj₁ (coord 𝒜 h i)) →\nSetoid.Congruences.Monolith.BelowDiagonal 𝑨 (kerfam 𝒜 h i)"},{"name":"coord-iso","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) {i : I} →\nIsInjective (proj₁ (coord 𝒜 h i)) →\nIsSurjective (proj₁ (coord 𝒜 h i)) → 𝑨 ≅ 𝒜 i"},{"name":"count","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nSetoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪) →\nAgda.Builtin.Nat.Nat"},{"name":"count-mono","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(d e : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\nproj₁ d Setoid.Congruences.Lattice._.⊆ proj₁ e →\ncount 𝑭 𝑪 d Data.Nat.Base.≤ count 𝑭 𝑪 e"},{"name":"count-strict","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(d e : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪))\n(i j : Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card)) →\nproj₁ d Setoid.Congruences.Lattice._.⊆ proj₁ e →\nSetoid.Congruences.Finite.Basic.ConRel e\n(𝑭 .Setoid.Algebras.FiniteAlgebra.enum i)\n(𝑭 .Setoid.Algebras.FiniteAlgebra.enum j) →\nRelation.Nullary.Negation.Core.¬\nSetoid.Congruences.Finite.Basic.ConRel d\n(𝑭 .Setoid.Algebras.FiniteAlgebra.enum i)\n(𝑭 .Setoid.Algebras.FiniteAlgebra.enum j) →\ncount 𝑭 𝑪 d Data.Nat.Base.< count 𝑭 𝑪 e"},{"name":"embed-inj","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} {𝒜 : I → Algebra α ρ}\n{h : hom 𝑩 (Setoid.Algebras.⨅ 𝒜)} →\nIsSubdirectEmbedding 𝒜 h → IsInjective (proj₁ h)"},{"name":"embed→separates","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\nIsInjective (proj₁ h) → Separates (kerfam 𝒜 h)"},{"name":"embed↔separates","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\nIsInjective (proj₁ h) Agda.Builtin.Equality.≡\nSeparates (kerfam 𝒜 h)"},{"name":"finite-Birkhoff","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nSubdirectlyRepresentable 𝑨 (ℓ 𝑭 𝑪) (α Agda.Primitive.⊔ ρ)"},{"name":"finiteSubdirectSIRep","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nSubdirectSIRep 𝑨 (ℓ 𝑭 𝑪) (α Agda.Primitive.⊔ ρ)"},{"name":"hom-unique","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{β ρᵇ : Level} {𝑩 : Algebra β ρᵇ} (gh hh : hom 𝑨 𝑩)\n{ℓ = ℓ₁ : Level}\n(G : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ℓ₁) →\n((x : Setoid.Subalgebras.Subuniverses.A) →\n x Relation.Unary.∈ G →\n (Algebra.Domain 𝑩 Relation.Binary.Bundles.Setoid.≈\n  Setoid.Subalgebras.Subuniverses.g gh hh x)\n (Setoid.Subalgebras.Subuniverses.h gh hh x)) →\n(a : Setoid.Subalgebras.Subuniverses.A) →\na Relation.Unary.∈ Sg 𝑨 G →\n(Algebra.Domain 𝑩 Relation.Binary.Bundles.Setoid.≈\n Setoid.Subalgebras.Subuniverses.g gh hh a)\n(Setoid.Subalgebras.Subuniverses.h gh hh a)"},{"name":"injective↔0kernel","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) {i : I} →\nIsInjective (proj₁ (coord 𝒜 h i)) Agda.Builtin.Equality.≡\nSetoid.Congruences.Monolith.BelowDiagonal 𝑨 (kerfam 𝒜 h i)"},{"name":"injective⇔0kernel","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\n(λ {i} → IsInjective (proj₁ (coord 𝒜 h i))) Agda.Builtin.Equality.≡\n(λ {i} →\n   Setoid.Congruences.Monolith.BelowDiagonal 𝑨 (kerfam 𝒜 h i))"},{"name":"iso-coord⟹¬all-proper","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} {𝒜 : I → Algebra αᵃ ρ}\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\nData.Product.∃-syntax (λ i → IsInjective (proj₁ (coord 𝒜 h i))) →\nRelation.Nullary.Negation.Core.¬\n((i : I) → Setoid.Congruences.Monolith.Nonzero 𝑨 (kerfam 𝒜 h i))"},{"name":"iso→injective","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n(𝑨 : Algebra α ρᵃ) {𝑩 : Algebra β ρᵇ} (φ : 𝑨 ≅ 𝑩) →\nIsInjective (proj₁ (_≅_.to φ))"},{"name":"kerfam","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\nI → Setoid.Congruences.Basic.Con 𝑨 ρ"},{"name":"mksub","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level}\n(sset\n : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁)\n(isSub : sset Relation.Unary.∈ Subuniverses 𝑨) →\nSubuniverse 𝑨"},{"name":"monolith⇒¬all-nonzero","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ : Level}\n{𝑨 : Algebra α ρ} {ι : Level} →\nSetoid.Congruences.Monolith.HasMonolith 𝑨 →\n{I : Set ι} (θ : I → Setoid.Congruences.Basic.Con 𝑨 ρ) →\nSeparates θ →\nRelation.Nullary.Negation.Core.¬\n((i : I) → Setoid.Congruences.Monolith.Nonzero 𝑨 (θ i))"},{"name":"mon→≤","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\nmon 𝑨 𝑩 → 𝑨 ≤ 𝑩"},{"name":"natmap","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nhom 𝑨 (Setoid.Algebras.⨅ (𝑨╱ θ))"},{"name":"natmap-injective","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nSeparates θ → IsInjective (proj₁ (natmap θ))"},{"name":"natmap-proj-onto","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) (i : I) →\nIsSurjective (proj₁ (coord (𝑨╱ θ) (natmap θ) i))"},{"name":"natmap-separates","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nIsInjective (proj₁ (natmap θ)) → Separates θ"},{"name":"notRel?","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ]) →\nRelation.Nullary.Negation.Core.¬\n(Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b →\n(d : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\nRelation.Nullary.Decidable.Core.Dec\n(Relation.Nullary.Negation.Core.¬\n Setoid.Congruences.Finite.Basic.ConRel d a b)"},{"name":"pairs","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nAgda.Builtin.List.List\n(Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card)\n Data.Product.×\n Data.Fin.Base.Fin (𝑭 .Setoid.Algebras.FiniteAlgebra.card))"},{"name":"proj-onto","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} {𝒜 : I → Algebra α ρ}\n{h : hom 𝑩 (Setoid.Algebras.⨅ 𝒜)} →\nIsSubdirectEmbedding 𝒜 h →\n(i : I) → IsSurjective (proj₁ (coord 𝒜 h i))"},{"name":"separates→embed","type":"{𝓞 𝓥 ι α ρ αᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑨 : Algebra α ρ} (𝒜 : I → Algebra αᵃ ρ)\n(h : hom 𝑨 (Setoid.Algebras.⨅ 𝒜)) →\nSeparates (kerfam 𝒜 h) → IsInjective (proj₁ h)"},{"name":"separates≡below-meet","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ : Level}\n{𝑨 : Algebra α ρ} {I : Set ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ρ) →\nSeparates θ Agda.Builtin.Equality.≡\nSetoid.Congruences.Monolith.BelowDiagonal 𝑨\n(Setoid.Congruences.Monolith.⋂ 𝑨 θ)"},{"name":"separating→SubdirectEmbedding","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nSeparates θ → SubdirectEmbedding (𝑨╱ θ)"},{"name":"separating→subdirect","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nSeparates θ → IsSubdirectEmbedding (𝑨╱ θ) (natmap θ)"},{"name":"sgIsSmallest","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n{ℓ = ℓ₁ : Level} {ρᵇ : Level}\n{G : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁}\n(B\n : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ρᵇ) →\nB Relation.Unary.∈ Subuniverses 𝑨 →\nG Relation.Unary.⊆ B → Sg 𝑨 G Relation.Unary.⊆ B"},{"name":"sgIsSub","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} (𝑨 : Algebra α ρᵃ)\n{ℓ = ℓ₁ : Level}\n{G\n : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁} →\nSg 𝑨 G Relation.Unary.∈ Subuniverses 𝑨"},{"name":"si⇒iso-coord","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ αᵃ : Level}\n{n : Agda.Builtin.Nat.Nat} {𝑨 : Algebra α ρ}\n{𝒜 : Data.Fin.Base.Fin n → Algebra αᵃ ρ}\n(.patternInTele0\n : Setoid.Congruences.Monolith.IsSubdirectlyIrreducible 𝑨)\n(.patternInTele1 : SubdirectEmbedding 𝒜)\n(dec\n : (i : Data.Fin.Base.Fin n) →\n   Relation.Nullary.Decidable.Core.Dec\n   (Setoid.Congruences.Monolith.BelowDiagonal 𝑨\n    (kerfam 𝒜 (.patternInTele1 .proj₁) i))) →\nIsoToFactor 𝑨 𝒜"},{"name":"si⇒¬all-proper","type":"{ι 𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ αᵃ : Level}\n{I : Set ι} {𝑨 : Algebra α ρ} {𝒜 : I → Algebra αᵃ ρ}\n(si : Setoid.Congruences.Monolith.IsSubdirectlyIrreducible 𝑨)\n(sub : SubdirectEmbedding 𝒜) →\nRelation.Nullary.Negation.Core.¬\n((i : I) →\n Setoid.Congruences.Monolith.Nonzero 𝑨\n (kerfam 𝒜 (Setoid.Subalgebras.Subdirect.Irreducible.h si sub) i))"},{"name":"si⇒¬no-iso-coord","type":"{ι 𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ αᵃ : Level}\n{I : Set ι} {𝑨 : Algebra α ρ} {𝒜 : I → Algebra αᵃ ρ}\n(si : Setoid.Congruences.Monolith.IsSubdirectlyIrreducible 𝑨)\n(sub : SubdirectEmbedding 𝒜) →\nRelation.Nullary.Negation.Core.¬\n((i : I) → Relation.Nullary.Negation.Core.¬ (𝑨 ≅ 𝒜 i))"},{"name":"sub-separates","type":"{ι 𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρ αᵃ : Level}\n{I : Set ι} {𝑨 : Algebra α ρ} {𝒜 : I → Algebra αᵃ ρ}\n(si : Setoid.Congruences.Monolith.IsSubdirectlyIrreducible 𝑨)\n(sub : SubdirectEmbedding 𝒜) →\nSeparates\n(kerfam 𝒜 (Setoid.Subalgebras.Subdirect.Irreducible.h si sub))"},{"name":"sub-term-closed","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level} {X.χ : Level} {X : Set X.χ}\n(B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ℓ₁) →\nB Relation.Unary.∈ Subuniverses 𝑨 →\n(t : Overture.Term X)\n(b\n : Relation.Binary.Bundles.Setoid.Carrier\n   (Setoid.Terms.Basic.Environment.Env 𝑨 X)) →\n((x : X) → b x Relation.Unary.∈ B) →\nFunction.Bundles.Func.to (Setoid.Terms.Basic.Environment.⟦ 𝑨 ⟧ t) b\nRelation.Unary.∈ B"},{"name":"subdirect→≤","type":"{𝓞 𝓥 ι β ρᵇ α ρ : Level} {𝑆 : Signature 𝓞 𝓥} {I : Set ι}\n{𝑩 : Algebra β ρᵇ} (𝒜 : I → Algebra α ρ) →\nSubdirectEmbedding 𝒜 → 𝑩 ≤ Setoid.Algebras.⨅ 𝒜"},{"name":"var","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{ℓ = ℓ₁ : Level}\n{G : Relation.Unary.Pred (Setoid.Subalgebras.Subuniverses.A 𝑨) ℓ₁}\n{v : Setoid.Subalgebras.Subuniverses.A 𝑨} →\nv Relation.Unary.∈ G → v Relation.Unary.∈ Sg 𝑨 G"},{"name":"var","type":"{𝓞 𝓥 α ρᵃ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρᵃ}\n{B : Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρᵃ}\n{b : Setoid.Subalgebras.Subuniverses.A} →\nb Relation.Unary.∈ B → b Relation.Unary.∈ TermImage B"},{"name":"¬Δab","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nRelation.Nullary.Negation.Core.¬\nSetoid.Congruences.Finite.Basic.ConRel\n(Setoid.Congruences.Finite.Basic.FiniteCongruences.witness 𝑪\n (Δ 𝑭 𝑪))\na b"},{"name":"¬Θab","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nRelation.Nullary.Negation.Core.¬ proj₁ (Θ 𝑭 𝑪 a b a≢b) a b"},{"name":"Δ","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nSetoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪)"},{"name":"Δ∈a≢bCons","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\n(Relation.Binary.PropositionalEquality.Properties.setoid\n (Data.Product.Σ\n  (Setoid.Congruences.Basic.Con 𝑨\n   (α Agda.Primitive.⊔ ρ Agda.Primitive.⊔ 𝓞 Agda.Primitive.⊔ 𝓥))\n  (λ .patternInTele0 →\n     (x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n     Relation.Nullary.Decidable.Core.Dec (.patternInTele0 .proj₁ x y)))\n Data.List.Membership.Setoid.∈\n Setoid.Congruences.Finite.Basic.FiniteCongruences.witness 𝑪\n (Δ 𝑭 𝑪))\n(a≢bCons 𝑭 𝑪 a b a≢b)"},{"name":"Θ","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪)"},{"name":"Θ-dec","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)"},{"name":"Θ-dec∈filtered","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\n(Relation.Binary.PropositionalEquality.Properties.setoid\n (Data.Product.Σ (Setoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪))\n  (λ .patternInTele0 →\n     (x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n     Relation.Nullary.Decidable.Core.Dec (.patternInTele0 .proj₁ x y)))\n Data.List.Membership.Setoid.∈ Θ-dec 𝑭 𝑪 a b a≢b)\n(a≢bCons 𝑭 𝑪 a b a≢b)"},{"name":"Θ-max","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b)\n(.patternInTele0\n : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\n(Relation.Binary.PropositionalEquality.Properties.setoid\n (Data.Product.Σ\n  (Data.Product.Σ\n   (Relation.Binary.Core.Rel\n    (Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨))\n    (ℓ 𝑭 𝑪))\n   (Setoid.Congruences.Basic.IsCongruence 𝑨))\n  (λ v →\n     (x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n     Relation.Nullary.Decidable.Core.Dec (v .proj₁ x y)))\n Data.List.Membership.Setoid.∈ .patternInTele0)\n(a≢bCons 𝑭 𝑪 a b a≢b) →\nΘ 𝑭 𝑪 a b a≢b Setoid.Congruences.Lattice._.⊆\n.patternInTele0 .proj₁ →\n.patternInTele0 .proj₁ Setoid.Congruences.Lattice._.⊆ Θ 𝑭 𝑪 a b a≢b"},{"name":"Θ-max-count","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b)\n(d : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\n(Relation.Binary.PropositionalEquality.Properties.setoid\n (Data.Product.Σ (Setoid.Congruences.Basic.Con 𝑨 (ℓ 𝑭 𝑪))\n  (λ .patternInTele0 →\n     (x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n     Relation.Nullary.Decidable.Core.Dec (.patternInTele0 .proj₁ x y)))\n Data.List.Membership.Setoid.∈ d)\n(a≢bCons 𝑭 𝑪 a b a≢b) →\ncount 𝑭 𝑪 d Data.Nat.Base.≤ count 𝑭 𝑪 (Θ-dec 𝑭 𝑪 a b a≢b)"},{"name":"Θ-max-of","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b)\n(.patternInTele0\n : Setoid.Congruences.Finite.Basic.DecCon 𝑨 (ℓ 𝑭 𝑪)) →\n(Relation.Binary.PropositionalEquality.Properties.setoid\n (Data.Product.Σ\n  (Data.Product.Σ\n   (Relation.Binary.Core.Rel\n    (Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨))\n    (ℓ 𝑭 𝑪))\n   (Setoid.Congruences.Basic.IsCongruence 𝑨))\n  (λ v →\n     (x y : Relation.Binary.Bundles.Setoid.Carrier (Algebra.Domain 𝑨)) →\n     Relation.Nullary.Decidable.Core.Dec (v .proj₁ x y)))\n Data.List.Membership.Setoid.∈ .patternInTele0)\n(a≢bCons 𝑭 𝑪 a b a≢b) →\nΘ 𝑭 𝑪 a b a≢b Setoid.Congruences.Lattice._.⊆\n.patternInTele0 .proj₁ →\nRelation.Nullary.Decidable.Core.Dec\n((𝑭 ⊆ᶜ 𝑪) .patternInTele0 (Θ-dec 𝑭 𝑪 a b a≢b)) →\n.patternInTele0 .proj₁ Setoid.Congruences.Lattice._.⊆ Θ 𝑭 𝑪 a b a≢b"},{"name":"μ","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Basic.Con (Q 𝑭 𝑪 a b a≢b) (ℓ 𝑭 𝑪)"},{"name":"μ-least","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b)\n(ψ : Setoid.Congruences.Basic.Con (Q 𝑭 𝑪 a b a≢b) (ℓ 𝑭 𝑪)) →\nSetoid.Congruences.Monolith.Nonzero (Q 𝑭 𝑪 a b a≢b) ψ →\nμ 𝑭 𝑪 a b a≢b Setoid.Congruences.Lattice._.⊆ ψ"},{"name":"μ-nonzero","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨)\n(a b\n : Relation.Binary.Bundles.Setoid.Carrier Setoid.Algebras.𝔻[ 𝑨 ])\n(a≢b\n : Relation.Nullary.Negation.Core.¬\n   (Setoid.Algebras.𝔻[ 𝑨 ] Relation.Binary.Bundles.Setoid.≈ a) b) →\nSetoid.Congruences.Monolith.Nonzero (Q 𝑭 𝑪 a b a≢b) (μ 𝑭 𝑪 a b a≢b)"},{"name":"ℓ","type":"{α ρ : Level} {𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra α ρ}\n(𝑭 : Setoid.Algebras.FiniteAlgebra 𝑨)\n(𝑪 : Setoid.Congruences.Finite.Basic.FiniteCongruences 𝑨) →\nLevel"},{"name":"≅-trans-≤","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪"},{"name":"≅→≤","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\n𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩"},{"name":"≅→≥","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} →\n𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩"},{"name":"≤-Lift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ}\n{ℓ = ℓ₁ : Level} {ρ : Level} →\n𝑨 ≤ 𝑩 → 𝑨 ≤ Setoid.Algebras.Lift-Alg 𝑩 ℓ₁ ρ"},{"name":"≤-Liftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ρ : Level} →\n𝑨 ≤ 𝑩 → 𝑨 ≤ Setoid.Algebras.Lift-Algʳ 𝑩 ρ"},{"name":"≤-Liftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓ = ℓ₁ : Level} →\n𝑨 ≤ 𝑩 → 𝑨 ≤ Setoid.Algebras.Lift-Algˡ 𝑩 ℓ₁"},{"name":"≤-mono","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {β ρᵇ α ρᵃ γ : Level}\n{𝑩 : Algebra β ρᵇ} {𝒦 𝒦' : Relation.Unary.Pred (Algebra α ρᵃ) γ} →\n𝒦 Relation.Unary.⊆ 𝒦' → 𝑩 ≤c 𝒦 → 𝑩 ≤c 𝒦'"},{"name":"≤-preorder","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} {α ρᵃ ρ : Level} →\nRelation.Binary.Structures.IsPreorder _≅_ _≤_"},{"name":"≤-refl","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 𝑩 : Algebra α ρᵃ} →\n𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩"},{"name":"≤-reflexive","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} →\n𝑨 ≤ 𝑨"},{"name":"≤-trans","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪"},{"name":"≤-trans-≅","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪"},{"name":"≤→≤c→≤c","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α : Level}\n{𝑨 𝑩 : Algebra α α}\n{𝒦 : Relation.Unary.Pred (Algebra α α) (Setoid.Algebras.ov α)} →\n𝑨 ≤ 𝑩 → 𝑩 ≤c 𝒦 → 𝑨 ≤c 𝒦"},{"name":"≥-Lift","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ}\n{ℓ = ℓ₁ : Level} {ρ : Level} →\n𝑨 ≥ 𝑩 → 𝑨 ≥ Setoid.Algebras.Lift-Alg 𝑩 ℓ₁ ρ"},{"name":"≥-Liftʳ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ρ : Level} →\n𝑨 ≥ 𝑩 → 𝑨 ≥ Setoid.Algebras.Lift-Algʳ 𝑩 ρ"},{"name":"≥-Liftˡ","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {ℓ = ℓ₁ : Level} →\n𝑨 ≥ 𝑩 → 𝑨 ≥ Setoid.Algebras.Lift-Algˡ 𝑩 ℓ₁"},{"name":"≥-refl","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 𝑩 : Algebra α ρᵃ} →\n𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩"},{"name":"≥-trans","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ γ ρᶜ : Level}\n{𝑨 : Algebra α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →\n𝑨 ≥ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪"},{"name":"⋂s","type":"{𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ : Level}\n{𝑨 : Algebra α ρᵃ} {ι : Level} (I : Set ι) {ρ : Level}\n{𝒜 : I → Relation.Unary.Pred Setoid.Subalgebras.Subuniverses.A ρ} →\n((i : I) → 𝒜 i Relation.Unary.∈ Subuniverses 𝑨) →\nRelation.Unary.⋂ I 𝒜 Relation.Unary.∈ Subuniverses 𝑨"},{"name":"⨅-≤","type":"{ι 𝑆.𝓞 𝑆.𝓥 : Level} {𝑆 : Signature 𝑆.𝓞 𝑆.𝓥} {α ρᵃ β ρᵇ : Level}\n{I : Set ι} {𝒜 : I → Algebra α ρᵃ} {ℬ : I → Algebra β ρᵇ} →\n((i : I) → ℬ i ≤ 𝒜 i) → Setoid.Algebras.⨅ ℬ ≤ Setoid.Algebras.⨅ 𝒜"},{"name":"𝑨╱","type":"{𝓞 𝓥 ι α ρ : Level} {ℓ = ℓ₁ : Level} {𝑆 : Signature 𝓞 𝓥}\n{I : Set ι} {𝑨 : Algebra α ρ}\n(θ : I → Setoid.Congruences.Basic.Con 𝑨 ℓ₁) →\nI → Algebra α ℓ₁"},{"name":"𝟏-SubdirectlyRepresentable","type":"{𝓞 𝓥 : Level} {𝑆 : Signature 𝓞 𝓥} →\nSubdirectlyRepresentable Setoid.Algebras.𝟏 (𝓞 Agda.Primitive.⊔ 𝓥)\nLevel.0ℓ"}],"lane":{"load":"first","loadElapsedMs":5549},"module":"Setoid.Subalgebras","modules":["IsSubdirectEmbedding","Sg","SubalgebraOf","SubalgebraOfClass","SubalgebraOfClass'","Sublattice","Subuniverse","TermImage"],"project":{"root":"<work>","rootSource":"server-config"},"total":125,"truncated":false}
  5. the model
    There's already `≤-trans-≅` with exactly this type. I'll just use it.
  6. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C)
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  7. agda-mcp
    check_file()
    answered6.0 s
    success: trueholesCount: 0diagnosticsTotal: 0verdict.exitCode: 0elapsedMs: 6050diagnostics: 0holes: 0
    the whole answer, as the model saw it (221 characters of JSON)
    {"checkedFromSource":true,"diagnostics":[],"diagnosticsTotal":0,"elapsedMs":6050,"holes":[],"holesCount":0,"project":{"root":"<work>","rootSource":"server-config"},"success":true,"timedOut":false,"verdict":{"exitCode":0}}
  8. the model
    check_file reports success on the final file (exit code 0, no diagnostics, no holes).

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 66 thinking tokens over the session; their text is not in the archive.

restatedthe judge, in outcome.json

Every gate passed, including the type-check, and the definition refers to the library’s own lemma for this statement (ref Setoid.Subalgebras.Properties.≤-trans-≅), so the row is counted restated and never solved.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from check_file
the library’s own proof in view before the edit no
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Import stratum: wholesale
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C

reports/agent-bench/suite219-sonnet5-mcp-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

≤-trans-≅′, shell only, header-free

Shell only, header-free. The same greps find the same module and, in it, the library's own proof; with no line naming the proof's shape, the model cites the lemma instead of writing it out, and agda in the shell accepts at the first try.

model
Sonnet 5 (claude-sonnet-5)
instrument
shell only
fixture header
header-free: no header line named a source, a needle or the proof’s shape
server
the server of 2026-09-29 (the same surface, frozen for the header-free arms (PR 223))
client
2.1.282 (Claude Code)
turns
9
tool calls
8 Read ×1, Bash ×6, Edit ×1
wall clock
25 s (indicative: subjects ran three at a time)
cost, list price
USD 0.11
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 9 turns and 8 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (879 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Import stratum: wholesale
    8	--
    9	module Subalgebras-sub-trans-iso where
    10	
    11	open import AgdaDojang.Debug
    12	
    13	open import Agda.Primitive   using ( Level )
    14	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    15	
    16	open import Overture              using ( Signature )
    17	open import Setoid.Algebras       using ( Algebra )
    18	open import Setoid.Functions
    19	open import Setoid.Homomorphisms
    20	open import Setoid.Subalgebras
    21	
    22	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    23	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    24	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    25	≤-trans-≅′ p B≅C = {!!}
    26	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. shell
    Bash(command: grep -rn "≤-trans-≅\|_≤_\|_≅_" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda | head -80)
    answered
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda: No such file or directory
    the whole answer, as the model saw it (110 characters of text)
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda: No such file or directory
  5. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07/src -ipath "*Subalgebras*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    the whole answer, as the model saw it (1,399 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subuniverses.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/CompleteLattice.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Finite.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/BirkhoffSI.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Irreducible.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras/Subuniverses.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Legacy/Base/Subalgebras/Properties.lagda.md
  6. shell
    Bash(command: cat <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md)
    answered
    ---
    the whole answer, as the model saw it (8,843 characters of text)
    ---
    layout: default
    title : "Setoid.Subalgebras.Basic module (The Agda Universal Algebra Library)"
    date : "2021-07-17"
    author: "agda-algebras development team"
    ---
    
    #### Subalgebras of setoid algebras
    
    This is the [Setoid.Subalgebras.Basic][] module of the [Agda Universal Algebra Library][].
    
    `𝑨` is a **subalgebra** of `𝑩`, written `𝑨 ≤ 𝑩`, just in case `𝑨` can be
    *homomorphically embedded* in `𝑩`: there is a homomorphism from `𝑨` to `𝑩` whose
    underlying map is injective.
    
    Note that the notion of subalgebra that we define here is different from the
    standard textbook definition, which defines a *subuniverse* to be a subset of
    the carrier of an algebra that is closed under the operations (as we do in the
    [Setoid.Subalgebras.Subuniverses][] module); a subalgebra is then a subuniverse
    together with the operations of the larger algebra restricted to it.  Nothing in
    our definition requires the carrier of a subalgebra of `𝑩` to be a subset of the
    carrier of `𝑩`.[^1]
    
    Our subalgebra relation `_≤_`{.AgdaFunction} is clearly reflexive and transitive,
    so it is a *preorder*; that is exactly what [Setoid.Subalgebras.Properties][]
    proves, as `≤-preorder`{.AgdaFunction}, and it is the only order-theoretic fact
    about `_≤_`{.AgdaFunction} that this subtree establishes.
    
    It is not a partial order.  Antisymmetry would require that `𝑨 ≤ 𝑩` and `𝑩 ≤ 𝑨`
    imply `𝑨 ≈ 𝑩` for some suitable `≈`, and read as "on the nose" equality that
    plainly fails.  The tempting repair is to read `≈` as isomorphism, but that fails
    too: `𝑨 ≤ 𝑩` and `𝑩 ≤ 𝑨` supply injective homomorphisms in both directions, and a
    pair of injections is not an isomorphism.  Neither map need invert the other, and
    in general no isomorphism need exist at all — the free groups on two and on three
    generators embed in each other yet are not isomorphic, as their abelianizations
    `ℤ²` and `ℤ³` already show.  Extracting a bijection from two injections is
    Cantor–Bernstein, which is unavailable constructively, and the bijection it
    yields classically need not be a homomorphism.
    
    For **finite** algebras the repair does work, and that is the setting much of this
    library's later work lives in.  Mutual injections between finite carriers force
    equal cardinality; an injective map between finite sets of equal cardinality is
    surjective; and an injective, surjective homomorphism is an isomorphism, by
    `Bijective→≅`{.AgdaFunction} of [Setoid.Homomorphisms.Isomorphisms][].  So on
    finite algebras `_≤_`{.AgdaFunction} is antisymmetric up to isomorphism, hence a
    partial order on isomorphism classes.  That chain of reasoning is *not* formalized
    here; only `Bijective→≅`{.AgdaFunction}, its last step, is.
    
    This module defines the subalgebra relation `_≤_`{.AgdaFunction} and the several
    ways of packaging it: as a record bundling both algebras, as a Σ-type over the
    smaller algebra with the larger one fixed, and relative to a whole class rather
    than to a single algebra.  The class-relative form `_≤c_`{.AgdaFunction} is the
    one the closure operator `S`{.AgdaFunction} of [Setoid.Varieties.Closure][] is
    built from.
    
    <!--
    ```agda
    {-# OPTIONS --cubical-compatible --exact-split --safe #-}
    
    module Setoid.Subalgebras.Basic where
    
    open import Agda.Primitive using () renaming ( Set to Type )
    
    -- imports from the Agda Standard Library ---------------------------------------------------
    open import Data.Product          using ( _,_ ; Σ-syntax ) renaming ( _×_ to _∧_ )
    open import Level                 using ( Level ; _⊔_ )
    open import Relation.Unary        using ( Pred ; _∈_ )
    
    -- Imports from the Agda Universal Algebra Library ------------------------------------------
    open import Overture              using ( proj₁ ; proj₂ ; Signature ; 𝓞 ; 𝓥 )
    open import Setoid.Algebras       using ( Algebra ; ov )
    open import Setoid.Functions      using ( IsInjective )
    open import Setoid.Homomorphisms  using ( hom ; mon ; mon→intohom ; kerquo ; FirstHomTheorem )
    
    private variable α ρᵃ β ρᵇ ℓ : Level
    ```
    -->
    
    The relation comes in two directions and three packagings.
    
    +  `_IsSubalgebraOf_`{.AgdaFunction}, with the infix alias `_≤_`{.AgdaFunction},
       is the relation itself: `𝑨 ≤ 𝑩` is the type of pairs `(h , inj)` with
       `h : hom 𝑨 𝑩` and `inj` a proof that the underlying map of `h` is injective.
    +  `_IsSupalgebraOf_`{.AgdaFunction}, aliased `_≥_`{.AgdaFunction}, is the
       converse, and is *definitionally* the same type read the other way round:
       `𝑨 ≤ 𝑩` and `𝑩 ≥ 𝑨` both unfold to an injective homomorphism from `𝑨` into
       `𝑩`.
    +  `mon→≤`{.AgdaFunction} turns a monomorphism into a proof of the subalgebra
       relation.  It is immediate, because `mon→intohom`{.AgdaFunction} of
       [Setoid.Homomorphisms.Basic][] already produces exactly this type.
    +  `SubalgebraOf`{.AgdaRecord} bundles both algebras and the proof into a single
       record.  `Subalgebra`{.AgdaFunction} instead fixes the larger algebra and
       collects the smaller one with its embedding, so an inhabitant of
       `Subalgebra 𝑨` is a pair `(𝑩 , p)` with `p : 𝑩 ≤ 𝑨`.
    
    ```agda
    module _ {𝑆 : Signature 𝓞 𝓥} where
      _≥_   -- alias for supalgebra (aka overalgebra)
        _IsSupalgebraOf_ : Algebra {𝑆 = 𝑆} α ρᵃ → Algebra {𝑆 = 𝑆} β ρᵇ → Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ ⊔ β ⊔ ρᵇ)
      𝑨 IsSupalgebraOf 𝑩 = Σ[ h ∈ hom 𝑩 𝑨 ] IsInjective (proj₁ h)
    
      _≤_   -- alias for subalgebra relation
        _IsSubalgebraOf_ : Algebra {𝑆 = 𝑆} α ρᵃ → Algebra {𝑆 = 𝑆} β ρᵇ → Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ ⊔ β ⊔ ρᵇ)
      𝑨 IsSubalgebraOf 𝑩 = Σ[ h ∈ hom 𝑨 𝑩 ] IsInjective (proj₁ h)
    
      -- Syntactic sugar for sup/sub-algebra relations.
      𝑨 ≥ 𝑩 = 𝑨 IsSupalgebraOf 𝑩
      𝑨 ≤ 𝑩 = 𝑨 IsSubalgebraOf 𝑩
    
      mon→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → mon 𝑨 𝑩 → 𝑨 ≤ 𝑩
      mon→≤ {𝑨 = 𝑨}{𝑩} x = mon→intohom 𝑨 𝑩 x
    
      record SubalgebraOf : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ)) where
        field
          algebra : Algebra {𝑆 = 𝑆} α ρᵃ
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebra : subalgebra ≤ algebra
    
      Subalgebra : Algebra {𝑆 = 𝑆} α ρᵃ → {β ρᵇ : Level} → Type _
      Subalgebra 𝑨 {β}{ρᵇ} = Σ[ 𝑩 ∈ (Algebra β ρᵇ) ] 𝑩 ≤ 𝑨
    
    {- usage note: for 𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ, an inhabitant of `Subalgebra 𝑨` is a pair
       `(𝑩 , p) : Subalgebra 𝑨`  providing
       - `𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ` and
       - `p : 𝑩 ≤ 𝑨`, a proof that 𝑩 is a subalgebra of 𝐴. -}
    ```
    
    From now on we will use `𝑩 ≤ 𝑨` to express the assertion that `𝑩` is a subalgebra of `𝑨`.
    
    #### Subalgebras of classes of setoid algebras
    
    Suppose `𝒦 : Pred (Algebra α 𝑆) γ` denotes a class of `𝑆`-algebras and `𝑩 : Algebra β ρᵇ`
    denotes an arbitrary `𝑆`-algebra.  Consider the assertion that `𝑩` is a subalgebra of
    an algebra in the class `𝒦`.  With the next definition we can express this
    assertion as `𝑩 IsSubalgebraOfClass 𝒦`.
    
    ```agda
      _≤c_
        _IsSubalgebraOfClass_ : Algebra {𝑆 = 𝑆} β ρᵇ → Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ → Type _
      𝑩 IsSubalgebraOfClass 𝒦 = Σ[ 𝑨 ∈ Algebra _ _ ] ((𝑨 ∈ 𝒦) ∧ (𝑩 ≤ 𝑨))
    
      𝑩 ≤c 𝒦 = 𝑩 IsSubalgebraOfClass 𝒦  -- (alias)
    
      record SubalgebraOfClass : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ⊔ ℓ)) where
        field
          class : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebraofclass : subalgebra ≤c class
    
      record SubalgebraOfClass' : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ⊔ ℓ)) where
        field
          class : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ
          classalgebra : Algebra {𝑆 = 𝑆} α ρᵃ
          isclassalgebra : classalgebra ∈ class
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebra : subalgebra ≤ classalgebra
    
      -- The collection of subalgebras of algebras in class 𝒦.
      SubalgebrasOfClass : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ → {β ρᵇ : Level} → Type _
      SubalgebrasOfClass 𝒦 {β}{ρᵇ} = Σ[ 𝑩 ∈ Algebra β ρᵇ ] 𝑩 ≤c 𝒦
    ```
    
    
    #### Consequences of First Homomorphism Theorem
    
    As an example use-case of the `IsSubalgebraOf` type defined above, we prove the
    following easy but useful corollary of the First Homomorphism Theorem (proved
    in the [Setoid.Homomorphisms.Noether][] module): If `𝑨` and `𝑩` are `𝑆`-algebras
    and `h : hom 𝑨 𝑩` a homomorphism from `𝑨` to `𝑩`, then the quotient `𝑨 ╱ ker h`
    is (isomorphic to) a subalgebra of `𝑩`.
    
    ```agda
      FirstHomCorollary : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}
        (hh : hom 𝑨 𝑩) → (kerquo hh) IsSubalgebraOf 𝑩
      FirstHomCorollary hh = proj₁ (FirstHomTheorem hh) , proj₂ (proj₂ (FirstHomTheorem hh))
    ```
    
    ---
    
    [^1]: Note that we denote both the subalgebra and subuniverse relations by the
          same symbol, `_≤_`{.AgdaFunction}.  The two do not collide, because the
          subuniverse order lives inside the named module `Sublattice`{.AgdaModule} of
          [Setoid.Subalgebras.CompleteLattice][], which qualifies it rather than
          exporting it.  So importing the [Setoid.Subalgebras][] barrel gives the
          subalgebra relation unqualified, and the subuniverse order becomes available
          as `_≤_`{.AgdaFunction} only where `Sublattice`{.AgdaModule} is opened, as in
          `open Sublattice 𝑨 ℓ₀`.
  7. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  8. shell
    Bash(command: grep -n "≅\|≤-trans" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md | head -60)
    answered
    47:open import Setoid.Homomorphisms using ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    the whole answer, as the model saw it (2,373 characters of text)
    47:open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
    48:                                             ; ≅toInjective ; ≅fromInjective ; mkiso
    49:                                             ; ≅-sym ; ≅-refl ; ≅-trans
    50:                                             ; Lift-≅ˡ ; Lift-≅ ; Lift-≅ʳ)
    60:open _≅_
    62:≅→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    63:≅→≤ φ = (to φ) , ≅toInjective φ
    65:≅→≥ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    66:≅→≥ φ = (from φ) , ≅fromInjective φ
    68:≤-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    69:≤-refl = ≅→≤
    71:≥-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    72:≥-refl = ≅→≤ ∘ ≅-sym
    78:  ≤-trans : 𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    79:  ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    81:  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    82:  ≤-trans-≅ (h , hinj) B≅C =
    83:    ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    85:  ≅-trans-≤ : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    86:  ≅-trans-≤ A≅B (h , hinj) =
    87:    ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    91:  ≥-trans A≥B B≥C = ≤-trans B≥C A≥B
    95:≤→≤c→≤c A≤B sB = (proj₁ sB) , (proj₁ (proj₂ sB) , ≤-trans A≤B (proj₂ (proj₂ sB)))
    99:  open RelStructs {a = ov {𝑆 = 𝑆} (α ⊔ ρᵃ)} {ℓ = 𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ} (_≅_ {α = α}{ρᵃ = ρᵃ}{𝑆 = 𝑆})
    103:  isEquivalence  ≤-preorder = record { refl = ≅-refl ; sym = ≅-sym ; trans = ≅-trans }
    105:  trans          ≤-preorder A≤B B≤C = ≤-trans A≤B B≤C
    108:  A≥B×B≅C→A≥C : 𝑨 ≥ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≥ 𝑪
    109:  A≥B×B≅C→A≥C A≥B B≅C  = ≥-trans A≥B (≅→≥ B≅C)
    111:  A≤B×B≅C→A≤C : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    112:  A≤B×B≅C→A≤C A≤B B≅C = ≤-trans  A≤B (≅→≤ B≅C)
    114:  A≅B×B≥C→A≥C : 𝑨 ≅ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪
    115:  A≅B×B≥C→A≥C A≅B B≥C = ≥-trans (≅→≥ A≅B) B≥C
    117:  A≅B×B≤C→A≤C : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
    118:  A≅B×B≤C→A≤C A≅B B≤C = ≤-trans (≅→≤ A≅B) B≤C
    123:  (φ : 𝑨 ≅ 𝑩) → IsInjective (proj₁ (to φ))
    141:of a mixed transitivity lemma from above to one of the `Lift-≅`{.AgdaFunction}
    167:Lift-is-sub (𝑨 , (KA , B≤A)) = 𝑨 , (KA , A≥B×B≅C→A≥C B≤A Lift-≅ˡ)
    171:  ≤-Liftˡ A≤B = A≤B×B≅C→A≤C A≤B Lift-≅ˡ
    174:  ≤-Liftʳ A≤B = A≤B×B≅C→A≤C A≤B Lift-≅ʳ
    177:  ≤-Lift A≤B = A≤B×B≅C→A≤C  A≤B Lift-≅
    180:  ≥-Liftˡ A≥B = A≥B×B≅C→A≥C A≥B Lift-≅ˡ
    183:  ≥-Liftʳ A≥B = A≥B×B≅C→A≥C A≥B Lift-≅ʳ
    186:  ≥-Lift A≥B = A≥B×B≅C→A≥C A≥B Lift-≅
  9. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  10. shell
    Bash(command: cat <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md 2>/dev/null | head -50 find <nix>/agda-algebras-unstable-2026-09-07/src -maxdepth 1 -iname "Subalgebras*")
    answered
    ---
    the whole answer, as the model saw it (2,603 characters of text)
    ---
    layout: default
    title : "Setoid.Subalgebras module (The Agda Universal Algebra Library)"
    date : "2021-07-26"
    author: "agda-algebras development team"
    ---
    
    ### Subalgebras over setoids
    
    This is the [Setoid.Subalgebras][] module of the [Agda Universal Algebra Library][].
    
    This is a barrel module: it declares nothing of its own and re-exports the five
    modules that make up the theory of subalgebras over setoids.
    
    In this library, we call an algebra `𝑨` a **subalgebra** of `𝑩`, written `𝑨 ≤ 𝑩`,
    provided `𝑨` can be homomorphically embedded in `𝑩`, that is, when some
    homomorphism from `𝑨` to `𝑩` has an injective underlying map.  This is not the
    standard textbook definition, but is essentially (*algebraically*) equivalent to
    it.
    
    Normally one defines a **subuniverse** to be a subset of the carrier of an algebra
    that is closed under the operations; a subalgebra is then a subuniverse
    together with the operations of the larger algebra restricted to it.
    We *do* define subuniverses in the standard way in the
    [Setoid.Subalgebras.Subuniverses][] module, so the textbook definition of
    subalgebra is available to us.  But the homomorphic embedding interpretation of
    the subalgebra relation turns out to be more convenient for our purposes.
    
    Taking subalgebras is one of the three closure operations whose composite defines
    a variety, and `S`{.AgdaFunction} of [Setoid.Varieties.Closure][] is defined
    directly in terms of the `_≤_`{.AgdaFunction} introduced here.
    
    #### Guide to the submodules of <span class="AgdaModule">Setoid.Subalgebras</span>
    
    +  [Setoid.Subalgebras.Basic][]: the relation `_≤_`{.AgdaFunction}, its converse
       `_≥_`{.AgdaFunction}, the bundled `SubalgebraOf`{.AgdaRecord} and
       `Subalgebra`{.AgdaFunction} forms, the class-relative `_≤c_`{.AgdaFunction},
       and `mon→≤`{.AgdaFunction};
    +  [Setoid.Subalgebras.Properties][]: that `_≤_`{.AgdaFunction} is a preorder,
       which is as far as it goes (mutual embeddings do not yield an isomorphism in
       general, though they do for finite algebras); how `_≤_`{.AgdaFunction}
       interacts with isomorphism and with universe lifting; and that it is preserved
       by products;
    +  [Setoid.Subalgebras.Subuniverses][]: the subsets of a carrier closed under the
       operations, the subuniverse they generate, and the induction principle that
       makes generation usable;
    +  [Setoid.Subalgebras.CompleteLattice][]: the subuniverses of a fixed algebra,
       ordered by inclusion, as a complete lattice;
    +  [Setoid.Subalgebras.Subdirect][]: subdirect products, subdirect
       irreducibility, and Birkhoff's subdirect representation theorem, which is
  11. the model
    Good, `Setoid.Subalgebras` is a barrel re-exporting `Properties`, so `≤-trans-≅` should already be in scope. Let's just use it.
  12. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C)
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  13. shell
    Bash(command: agda --no-default-libraries --library-file <repo>/agda/libraries --library standard-library --library agda-dojang --library agda-algebras --safe -i <work> <work>/Subalgebras-sub-trans-iso.agda)
    answeredno timing in the archive
    Checking Subalgebras-sub-trans-iso (<work>/Subalgebras-sub-trans-iso.agda).
    the whole answer, as the model saw it (75 characters of text)
    Checking Subalgebras-sub-trans-iso (<work>/Subalgebras-sub-trans-iso.agda).
  14. the model
    The command reports success (the module type-checks with no errors or warnings) on the final file.

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 207 thinking tokens over the session; their text is not in the archive.

restatedthe judge, in outcome.json

Every gate passed, including the type-check, and the definition refers to the library’s own lemma for this statement (ref Setoid.Subalgebras.Properties.≤-trans-≅), so the row is counted restated and never solved.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from agda in the shell
the library’s own proof in view before the edit yes, the model read the file that holds it
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Import stratum: wholesale
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C

reports/agent-bench/suite219-sonnet5-shell-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

≤-trans-≅′, server and shell, header-free

Server and shell, header-free. The shell does the reading, a grep of the row's corpus among it, and check_file gives the one verdict; the edit cites the lemma the reading found, and the row is restated.

model
Sonnet 5 (claude-sonnet-5)
instrument
server and shell
fixture header
header-free: no header line named a source, a needle or the proof’s shape
server
the server of 2026-09-29 (the same surface, frozen for the header-free arms (PR 223))
client
2.1.282 (Claude Code)
turns
13
tool calls
12 Read ×1, Bash ×9, Edit ×1, check_file ×1
wall clock
50 s (indicative: subjects ran three at a time)
cost, list price
USD 0.18
the statement, as the obligation states it, with the proof removed
{𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥} {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ} →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
the session, 13 turns and 12 tool calls
  1. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  2. files
    Read(file_path: <work>/Subalgebras-sub-trans-iso.agda)
    answered
    1 -- Subalgebras-sub-trans-iso.agda
    the whole answer, as the model saw it (879 characters of text)
    1	-- Subalgebras-sub-trans-iso.agda
    2	--
    3	-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
    4	--
    5	-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
    6	-- Difficulty: non-obvious
    7	-- Import stratum: wholesale
    8	--
    9	module Subalgebras-sub-trans-iso where
    10	
    11	open import AgdaDojang.Debug
    12	
    13	open import Agda.Primitive   using ( Level )
    14	open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )
    15	
    16	open import Overture              using ( Signature )
    17	open import Setoid.Algebras       using ( Algebra )
    18	open import Setoid.Functions
    19	open import Setoid.Homomorphisms
    20	open import Setoid.Subalgebras
    21	
    22	≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
    23	             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
    24	  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    25	≤-trans-≅′ p B≅C = {!!}
    26	
  3. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  4. shell
    Bash(command: grep -n "≤-trans-≅\|_≤_\|_≅_" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda | head -80)
    answered
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda: No such file or directory
    the whole answer, as the model saw it (110 characters of text)
    ugrep: warning: <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.agda: No such file or directory
  5. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07/src -ipath "*Setoid*Subalgebra*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    the whole answer, as the model saw it (1,074 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras
    <nix>/agda-algebras-unstable-2026-09-07/src/Examples/Setoid/SubalgebraLattice.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subuniverses.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/CompleteLattice.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Basic.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Finite.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/BirkhoffSI.lagda.md
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Subdirect/Irreducible.lagda.md
  6. shell
    Bash(command: grep -n "≤-trans-≅\|^_≤_\|record _≤_\|_≅_\|≤-refl\|≤-trans" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md)
    answered
    (Bash completed with no output)
    the whole answer, as the model saw it (31 characters of text)
    (Bash completed with no output)
  7. shell
    Bash(command: grep -n "_≤_\|_≅_\|module\|open" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md)
    answered
    3:title : "Setoid.Subalgebras.Basic module (The Agda Universal Algebra Library)"
    the whole answer, as the model saw it (1,720 characters of text)
    3:title : "Setoid.Subalgebras.Basic module (The Agda Universal Algebra Library)"
    10:This is the [Setoid.Subalgebras.Basic][] module of the [Agda Universal Algebra Library][].
    19:[Setoid.Subalgebras.Subuniverses][] module); a subalgebra is then a subuniverse
    24:Our subalgebra relation `_≤_`{.AgdaFunction} is clearly reflexive and transitive,
    27:about `_≤_`{.AgdaFunction} that this subtree establishes.
    45:finite algebras `_≤_`{.AgdaFunction} is antisymmetric up to isomorphism, hence a
    49:This module defines the subalgebra relation `_≤_`{.AgdaFunction} and the several
    60:module Setoid.Subalgebras.Basic where
    62:open import Agda.Primitive using () renaming ( Set to Type )
    65:open import Data.Product          using ( _,_ ; Σ-syntax ) renaming ( _×_ to _∧_ )
    66:open import Level                 using ( Level ; _⊔_ )
    67:open import Relation.Unary        using ( Pred ; _∈_ )
    70:open import Overture              using ( proj₁ ; proj₂ ; Signature ; 𝓞 ; 𝓥 )
    71:open import Setoid.Algebras       using ( Algebra ; ov )
    72:open import Setoid.Functions      using ( IsInjective )
    73:open import Setoid.Homomorphisms  using ( hom ; mon ; mon→intohom ; kerquo ; FirstHomTheorem )
    81:+  `_IsSubalgebraOf_`{.AgdaFunction}, with the infix alias `_≤_`{.AgdaFunction},
    97:module _ {𝑆 : Signature 𝓞 𝓥} where
    102:  _≤_   -- alias for subalgebra relation
    168:in the [Setoid.Homomorphisms.Noether][] module): If `𝑨` and `𝑩` are `𝑆`-algebras
    181:      same symbol, `_≤_`{.AgdaFunction}.  The two do not collide, because the
    182:      subuniverse order lives inside the named module `Sublattice`{.AgdaModule} of
    186:      as `_≤_`{.AgdaFunction} only where `Sublattice`{.AgdaModule} is opened, as in
    187:      `open Sublattice 𝑨 ℓ₀`.
  8. shell
    Bash(command: sed -n '90,170p' <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Basic.lagda.md)
    answered
    [Setoid.Homomorphisms.Basic][] already produces exactly this type.
    the whole answer, as the model saw it (3,375 characters of text)
       [Setoid.Homomorphisms.Basic][] already produces exactly this type.
    +  `SubalgebraOf`{.AgdaRecord} bundles both algebras and the proof into a single
       record.  `Subalgebra`{.AgdaFunction} instead fixes the larger algebra and
       collects the smaller one with its embedding, so an inhabitant of
       `Subalgebra 𝑨` is a pair `(𝑩 , p)` with `p : 𝑩 ≤ 𝑨`.
    
    ```agda
    module _ {𝑆 : Signature 𝓞 𝓥} where
      _≥_   -- alias for supalgebra (aka overalgebra)
        _IsSupalgebraOf_ : Algebra {𝑆 = 𝑆} α ρᵃ → Algebra {𝑆 = 𝑆} β ρᵇ → Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ ⊔ β ⊔ ρᵇ)
      𝑨 IsSupalgebraOf 𝑩 = Σ[ h ∈ hom 𝑩 𝑨 ] IsInjective (proj₁ h)
    
      _≤_   -- alias for subalgebra relation
        _IsSubalgebraOf_ : Algebra {𝑆 = 𝑆} α ρᵃ → Algebra {𝑆 = 𝑆} β ρᵇ → Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ ⊔ β ⊔ ρᵇ)
      𝑨 IsSubalgebraOf 𝑩 = Σ[ h ∈ hom 𝑨 𝑩 ] IsInjective (proj₁ h)
    
      -- Syntactic sugar for sup/sub-algebra relations.
      𝑨 ≥ 𝑩 = 𝑨 IsSupalgebraOf 𝑩
      𝑨 ≤ 𝑩 = 𝑨 IsSubalgebraOf 𝑩
    
      mon→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → mon 𝑨 𝑩 → 𝑨 ≤ 𝑩
      mon→≤ {𝑨 = 𝑨}{𝑩} x = mon→intohom 𝑨 𝑩 x
    
      record SubalgebraOf : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ)) where
        field
          algebra : Algebra {𝑆 = 𝑆} α ρᵃ
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebra : subalgebra ≤ algebra
    
      Subalgebra : Algebra {𝑆 = 𝑆} α ρᵃ → {β ρᵇ : Level} → Type _
      Subalgebra 𝑨 {β}{ρᵇ} = Σ[ 𝑩 ∈ (Algebra β ρᵇ) ] 𝑩 ≤ 𝑨
    
    {- usage note: for 𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ, an inhabitant of `Subalgebra 𝑨` is a pair
       `(𝑩 , p) : Subalgebra 𝑨`  providing
       - `𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ` and
       - `p : 𝑩 ≤ 𝑨`, a proof that 𝑩 is a subalgebra of 𝐴. -}
    ```
    
    From now on we will use `𝑩 ≤ 𝑨` to express the assertion that `𝑩` is a subalgebra of `𝑨`.
    
    #### Subalgebras of classes of setoid algebras
    
    Suppose `𝒦 : Pred (Algebra α 𝑆) γ` denotes a class of `𝑆`-algebras and `𝑩 : Algebra β ρᵇ`
    denotes an arbitrary `𝑆`-algebra.  Consider the assertion that `𝑩` is a subalgebra of
    an algebra in the class `𝒦`.  With the next definition we can express this
    assertion as `𝑩 IsSubalgebraOfClass 𝒦`.
    
    ```agda
      _≤c_
        _IsSubalgebraOfClass_ : Algebra {𝑆 = 𝑆} β ρᵇ → Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ → Type _
      𝑩 IsSubalgebraOfClass 𝒦 = Σ[ 𝑨 ∈ Algebra _ _ ] ((𝑨 ∈ 𝒦) ∧ (𝑩 ≤ 𝑨))
    
      𝑩 ≤c 𝒦 = 𝑩 IsSubalgebraOfClass 𝒦  -- (alias)
    
      record SubalgebraOfClass : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ⊔ ℓ)) where
        field
          class : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebraofclass : subalgebra ≤c class
    
      record SubalgebraOfClass' : Type (ov {𝑆 = 𝑆} (α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ⊔ ℓ)) where
        field
          class : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ
          classalgebra : Algebra {𝑆 = 𝑆} α ρᵃ
          isclassalgebra : classalgebra ∈ class
          subalgebra : Algebra {𝑆 = 𝑆} β ρᵇ
          issubalgebra : subalgebra ≤ classalgebra
    
      -- The collection of subalgebras of algebras in class 𝒦.
      SubalgebrasOfClass : Pred (Algebra {𝑆 = 𝑆} α ρᵃ) ℓ → {β ρᵇ : Level} → Type _
      SubalgebrasOfClass 𝒦 {β}{ρᵇ} = Σ[ 𝑩 ∈ Algebra β ρᵇ ] 𝑩 ≤c 𝒦
    ```
    
    
    #### Consequences of First Homomorphism Theorem
    
    As an example use-case of the `IsSubalgebraOf` type defined above, we prove the
    following easy but useful corollary of the First Homomorphism Theorem (proved
    in the [Setoid.Homomorphisms.Noether][] module): If `𝑨` and `𝑩` are `𝑆`-algebras
    and `h : hom 𝑨 𝑩` a homomorphism from `𝑨` to `𝑩`, then the quotient `𝑨 ╱ ker h`
    is (isomorphic to) a subalgebra of `𝑩`.
  9. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  10. shell
    Bash(command: grep -rn "_≅_\|≅-refl\|≅-sym\|≅-trans\|Iso\b" <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md 2>/dev/null | head -60 find <nix>/agda-algebras-unstable-2026-09-07/src/Setoid -iname "*Isomorphism*")
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:16:The record `_≅_`{.AgdaRecord}…
    the whole answer, as the model saw it (3,855 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:16:The record `_≅_`{.AgdaRecord} carries exactly that data in its fields
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:23:+  `_≅_`{.AgdaRecord} is an equivalence relation:
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:24:   + `≅-refl`{.AgdaFunction}: isomorphism is reflexive;
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:25:   + `≅-sym`{.AgdaFunction}: isomorphism is symmetric;
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:26:   + `≅-trans`{.AgdaFunction}: isomorphism is transitive;
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:83:    _≅_ : {α β : Level}(𝑨 : Algebra α 𝑆)(𝑩 : Algebra β ρᵇ) → Type _
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:94:  record _≅_ : Type (𝓞 ⊔ 𝓥 ⊔ α ⊔ β ⊔ ρᵃ ⊔ ρᵇ ) where
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:132:open _≅_
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:134:≅-refl : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑨
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:135:≅-refl {𝑨 = 𝑨} = mkiso 𝒾𝒹 𝒾𝒹 (λ _ → Setoid.refl 𝔻[ 𝑨 ]) (λ _ → Setoid.refl 𝔻[ 𝑨 ])
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:137:≅-sym : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑩 ≅ 𝑨
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:138:≅-sym φ = mkiso (from φ) (to φ) (from∼to φ) (to∼from φ)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:140:≅-trans :  {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ}
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:142:≅-trans {𝑨 = 𝑨}{𝑩}{𝑪} ab bc = mkiso f g τ ν
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:179:≅fromInjective φ = ≅toInjective (≅-sym φ)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:231:`≅toInjective`/`toIsSurjective` and lets us promote a bijective `hom` to an `_≅_`
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:281:Lift-≅ = ≅-trans Lift-≅ˡ Lift-≅ʳ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:285:  Lift-Alg-isoˡ A≅B = ≅-trans (≅-trans (≅-sym Lift-≅ˡ ) A≅B) Lift-≅ˡ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:288:  Lift-Alg-isoʳ A≅B = ≅-trans (≅-trans (≅-sym Lift-≅ʳ ) A≅B) Lift-≅ʳ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:294:  ≅-trans  (Lift-Alg-isoʳ{ℓᵇ = ℓᵇ}(≅-trans (Lift-Alg-isoˡ{ℓᵇ = ℓᵇ} A≅B) (≅-sym Lift-≅ˡ)))
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:303:  Lift-assocˡ = ≅-trans (≅-trans (≅-sym Lift-≅ˡ) Lift-≅ˡ) Lift-≅ˡ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:306:  Lift-assocʳ = ≅-trans (≅-trans (≅-sym Lift-≅ʳ) Lift-≅ʳ) Lift-≅ʳ
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:310:Lift-assoc = ≅-trans (≅-sym Lift-≅) (≅-trans Lift-≅ˡ Lift-≅ʳ)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:314:Lift-assoc' = ≅-trans (≅-sym Lift-≅) (≅-trans Lift-≅ Lift-≅)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md:358:  Lift-Alg-⨅≅ˡ AB = ≅-trans (≅-sym Lift-≅ˡ) A≅B
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Homomorphisms/Isomorphisms.lagda.md
  11. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  12. shell
    Bash(command: grep -rn "≤-trans-≅" <nix>/agda-algebras-unstable-2026-09-07/src/ 2>/dev/null grep -n "≤-trans-≅" <repo>/data/corpora/agda-algebras/v0.1/corpus.jsonl)
    answered
    <persisted-output>
    the whole answer, as the model saw it (2,103 characters of text)
    <persisted-output>
    Output too large (30.5KB). Full output saved to: ~/.claude/projects/<repo>-slug-data-benchmarks-reports-agent-bench-suite219-sonnet5-both-1-work-algebras-subalgebra-iriq61/03302616-9e08-46d4-99a7-589578a00ca2/tool-results/bcm2rhnmd.txt
    
    Preview (first 2KB):
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Varieties/Closure.lagda.md:38:                                          ; ≤-trans-≅ ; ≅-trans-≤ ; ≤-Lift )
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Varieties/Closure.lagda.md:260:    subgoal = ≤-trans-≅ A≤A' Lift-≅
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:81:  ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md:82:  ≤-trans-≅ (h , hinj) B≅C =
    12094:{"file":"~/git/ualib/agda-algebras/master/src/Setoid/Subalgebras/Properties.lagda.md","module":"Setoid.Subalgebras.Properties._","name":"≤-trans-≅","qname":"Setoid.Subalgebras.Properties._.≤-trans-≅","prettyModule":"Setoid.Subalgebras.Properties","prettyName":"≤-trans-≅","prettyQname":"Setoid.Subalgebras.Properties.≤-trans-≅","type":"{𝑆.𝓞 𝑆.𝓥 : Agda.Primitive.Level}\n{𝑆 : Overture.Signatures.Signature 𝑆.𝓞 𝑆.𝓥}\n{α ρᵃ β ρᵇ γ ρᶜ : Agda.Primitive.Level}\n{𝑨 : Setoid.Algebras.Basic.Algebra α ρᵃ}\n{𝑩 : Setoid.Algebras.Basic.Algebra β ρᵇ}\n{𝑪 : Setoid.Algebras.Basic.Algebra γ ρᶜ} →\n𝑨 Setoid.Subalgebras.Basic._.≤ 𝑩 →\n𝑩 Setoid.Homomorphisms.Isomorphisms._.≅ 𝑪 →\n𝑨 Setoid.Subalgebras.Basic._.≤ 𝑪","typeAstVersion":"0.3-v0","typeAst":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"implicit","nameHint":"𝑆.𝓞"},"cod":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"implicit","nameHint":"𝑆.𝓥"},"cod":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"implicit","nameHint":"𝑆"},"cod":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"implicit","nameHint":"α"},"cod":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"implicit","nameHint":"ρᵃ"},"cod":{"sort":{"tag":"Inf"},"tag":"Type","term":{"binder":{"hiding":"impli
    ...
    </persisted-output>
  13. the model
    There's already `≤-trans-≅` proven in `Setoid.Subalgebras.Properties`. Let's check if that module is exported by `Setoid.Subalgebras` (which is imported), and its exact definition.
  14. shell
    Bash(command: sed -n '1,100p' <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras/Properties.lagda.md | sed -n '1,100p')
    answered
    ---
    the whole answer, as the model saw it (4,238 characters of text)
    ---
    layout: default
    title : "Setoid.Subalgebras.Properties module (The Agda Universal Algebra Library)"
    date : "2021-07-18"
    author: "agda-algebras development team"
    ---
    
    #### Properties of the subalgebra relation for setoid algebras
    
    This is the [Setoid.Subalgebras.Properties][] module of the [Agda Universal Algebra Library][].
    
    This module establishes the order-theoretic facts about the subalgebra relation
    `_≤_`{.AgdaFunction} that the rest of the library relies on: that it is a
    preorder, that isomorphism refines it in either direction, that it survives
    universe lifting, and that it is preserved by products.
    
    The preorder is stated with respect to isomorphism rather than equality
    (`≤-preorder`{.AgdaFunction}), which is the only sensible choice, since mutual
    embeddings do not make two algebras equal.  The universe-lifting group is the
    part used most often, for the reason recorded in [Setoid.Algebras.Basic][]:
    Agda's universes are not cumulative, so a `≤` established at one level has to be
    transported explicitly before it can be used at another.
    
    <!--
    ```agda
    {-# OPTIONS --cubical-compatible --exact-split --safe #-}
    
    module Setoid.Subalgebras.Properties where
    
    open import Agda.Primitive using () renaming ( Set to Type )
    
    -- Imports from the Agda Standard Library -------------------------------------------
    open import Data.Product              using ( _,_ )
    open import Function                  using ( _∘_ )  renaming ( Func to _⟶_ )
    open import Level                     using ( Level ; _⊔_ )
    open import Relation.Binary           using ( Setoid )
    open import Relation.Unary            using ( Pred ; _⊆_ )
    import Relation.Binary.Structures as RelStructs
    
    import Relation.Binary.Reasoning.Setoid as SetoidReasoning
    
    -- Imports from the Agda Universal Algebra Library ----------------------------------
    open import Overture                  using  ( proj₁ ; proj₂ ; 𝓞 ; 𝓥 ; Signature ; 𝑆 )
    open import Setoid.Algebras           using  ( Algebra ; Lift-Algˡ ; Lift-Algʳ
                                                 ; Lift-Alg ; ov ; ⨅ ; 𝔻[_] )
    open import Setoid.Functions          using  ( id-is-injective ; IsInjective ; ⊙-injective )
    open import Setoid.Homomorphisms      using  ( hom ; IsHom ; 𝒾𝒹 ; ⊙-hom ; _≅_
                                                 ; ≅toInjective ; ≅fromInjective ; mkiso
                                                 ; ≅-sym ; ≅-refl ; ≅-trans
                                                 ; Lift-≅ˡ ; Lift-≅ ; Lift-≅ʳ)
    open import Setoid.Subalgebras.Basic  using  ( _≤_ ; _≥_ ; _≤c_ )
    
    private variable α ρᵃ β ρᵇ γ ρᶜ ι : Level
    ```
    -->
    
    The subalgebra relation is a *preorder*, i.e., a reflexive, transitive binary relation.
    
    ```agda
    open _≅_
    
    ≅→≤ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    ≅→≤ φ = (to φ) , ≅toInjective φ
    
    ≅→≥ : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    ≅→≥ φ = (from φ) , ≅fromInjective φ
    
    ≤-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≤ 𝑩
    ≤-refl = ≅→≤
    
    ≥-refl : {𝑨 𝑩 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≅ 𝑩 → 𝑨 ≥ 𝑩
    ≥-refl = ≅→≤ ∘ ≅-sym
    
    ≤-reflexive : {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} → 𝑨 ≤ 𝑨
    ≤-reflexive {𝑨 = 𝑨} = 𝒾𝒹 , id-is-injective {𝑨 = 𝔻[ 𝑨 ]}
    
    module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
      ≤-trans : 𝑨 ≤ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
      ≤-trans ( f , finj ) ( g , ginj ) = (⊙-hom f g) , ⊙-injective (proj₁ f) (proj₁ g) finj ginj
    
      ≤-trans-≅ : 𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
      ≤-trans-≅ (h , hinj) B≅C =
        ⊙-hom h (to B≅C) , ⊙-injective (proj₁ h) (proj₁ (to B≅C)) hinj (≅toInjective B≅C)
    
      ≅-trans-≤ : 𝑨 ≅ 𝑩 → 𝑩 ≤ 𝑪 → 𝑨 ≤ 𝑪
      ≅-trans-≤ A≅B (h , hinj) =
        ⊙-hom (to A≅B) h , ⊙-injective (proj₁ (to A≅B)) (proj₁ h) (≅toInjective A≅B) hinj
    
    module _ {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ}{𝑩 : Algebra {𝑆 = 𝑆} β ρᵇ}{𝑪 : Algebra {𝑆 = 𝑆} γ ρᶜ} where
      ≥-trans : 𝑨 ≥ 𝑩 → 𝑩 ≥ 𝑪 → 𝑨 ≥ 𝑪
      ≥-trans A≥B B≥C = ≤-trans B≥C A≥B
    
    ≤→≤c→≤c : {𝑨 : Algebra {𝑆 = 𝑆} α α}{𝑩 : Algebra {𝑆 = 𝑆} α α}{𝒦 : Pred(Algebra {𝑆 = 𝑆} α α) (ov {𝑆 = 𝑆} α)}
      → 𝑨 ≤ 𝑩 → 𝑩 ≤c 𝒦 → 𝑨 ≤c 𝒦
    ≤→≤c→≤c A≤B sB = (proj₁ sB) , (proj₁ (proj₂ sB) , ≤-trans A≤B (proj₂ (proj₂ sB)))
    
    module _ {𝑆 : Signature 𝓞 𝓥} {α ρᵃ ρ : Level} where
    
      open RelStructs {a = ov {𝑆 = 𝑆} (α ⊔ ρᵃ)} {ℓ = 𝓞 ⊔ 𝓥 ⊔ α ⊔ ρᵃ} (_≅_ {α = α}{ρᵃ = ρᵃ}{𝑆 = 𝑆})
      open IsPreorder
  15. thought
    The model thought here, of unrecorded length. The archive keeps the block’s signature and not its text, so nothing is quoted.
  16. shell
    Bash(command: find <nix>/agda-algebras-unstable-2026-09-07/src/Setoid -maxdepth 1 -iname "Subalgebras.lagda.md" cat <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md)
    answered
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    the whole answer, as the model saw it (3,122 characters of text)
    <nix>/agda-algebras-unstable-2026-09-07/src/Setoid/Subalgebras.lagda.md
    ---
    layout: default
    title : "Setoid.Subalgebras module (The Agda Universal Algebra Library)"
    date : "2021-07-26"
    author: "agda-algebras development team"
    ---
    
    ### Subalgebras over setoids
    
    This is the [Setoid.Subalgebras][] module of the [Agda Universal Algebra Library][].
    
    This is a barrel module: it declares nothing of its own and re-exports the five
    modules that make up the theory of subalgebras over setoids.
    
    In this library, we call an algebra `𝑨` a **subalgebra** of `𝑩`, written `𝑨 ≤ 𝑩`,
    provided `𝑨` can be homomorphically embedded in `𝑩`, that is, when some
    homomorphism from `𝑨` to `𝑩` has an injective underlying map.  This is not the
    standard textbook definition, but is essentially (*algebraically*) equivalent to
    it.
    
    Normally one defines a **subuniverse** to be a subset of the carrier of an algebra
    that is closed under the operations; a subalgebra is then a subuniverse
    together with the operations of the larger algebra restricted to it.
    We *do* define subuniverses in the standard way in the
    [Setoid.Subalgebras.Subuniverses][] module, so the textbook definition of
    subalgebra is available to us.  But the homomorphic embedding interpretation of
    the subalgebra relation turns out to be more convenient for our purposes.
    
    Taking subalgebras is one of the three closure operations whose composite defines
    a variety, and `S`{.AgdaFunction} of [Setoid.Varieties.Closure][] is defined
    directly in terms of the `_≤_`{.AgdaFunction} introduced here.
    
    #### Guide to the submodules of <span class="AgdaModule">Setoid.Subalgebras</span>
    
    +  [Setoid.Subalgebras.Basic][]: the relation `_≤_`{.AgdaFunction}, its converse
       `_≥_`{.AgdaFunction}, the bundled `SubalgebraOf`{.AgdaRecord} and
       `Subalgebra`{.AgdaFunction} forms, the class-relative `_≤c_`{.AgdaFunction},
       and `mon→≤`{.AgdaFunction};
    +  [Setoid.Subalgebras.Properties][]: that `_≤_`{.AgdaFunction} is a preorder,
       which is as far as it goes (mutual embeddings do not yield an isomorphism in
       general, though they do for finite algebras); how `_≤_`{.AgdaFunction}
       interacts with isomorphism and with universe lifting; and that it is preserved
       by products;
    +  [Setoid.Subalgebras.Subuniverses][]: the subsets of a carrier closed under the
       operations, the subuniverse they generate, and the induction principle that
       makes generation usable;
    +  [Setoid.Subalgebras.CompleteLattice][]: the subuniverses of a fixed algebra,
       ordered by inclusion, as a complete lattice;
    +  [Setoid.Subalgebras.Subdirect][]: subdirect products, subdirect
       irreducibility, and Birkhoff's subdirect representation theorem, which is
       proved relative to a choice principle in general and unconditionally for
       finite algebras.
    
    ```agda
    {-# OPTIONS --cubical-compatible --exact-split --safe #-}
    
    module Setoid.Subalgebras where
    
    open import Setoid.Subalgebras.Basic public
    open import Setoid.Subalgebras.CompleteLattice public
    open import Setoid.Subalgebras.Properties public
    open import Setoid.Subalgebras.Subuniverses public
    open import Setoid.Subalgebras.Subdirect public
    ```
  17. the model
    Good, `≤-trans-≅` is publicly re-exported. I'll just use it directly.
  18. files
    Edit(replace_all: false, file_path: <work>/Subalgebras-sub-trans-iso.agda, old_string: ≤-trans-≅′ p B≅C = {!!}, new_string: ≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C)
    answered
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — n…
    the whole answer, as the model saw it (143 characters of text)
    The file <work>/Subalgebras-sub-trans-iso.agda has been updated successfully. (file state is current in your context — no need to Read it back)
  19. agda-mcp
    check_file()
    answered7.7 s
    success: trueholesCount: 0diagnosticsTotal: 0verdict.exitCode: 0elapsedMs: 7668diagnostics: 0holes: 0
    the whole answer, as the model saw it (221 characters of JSON)
    {"checkedFromSource":true,"diagnostics":[],"diagnosticsTotal":0,"elapsedMs":7668,"holes":[],"holesCount":0,"project":{"root":"<work>","rootSource":"server-config"},"success":true,"timedOut":false,"verdict":{"exitCode":0}}
  20. the model
    The verdict on the final file is success: the module type-checks cleanly with no errors, warnings, or remaining holes.

The model’s words and its calls are quoted from transcript.jsonl; every answer below a call is the tool’s own, in full. The client billed 282 thinking tokens over the session; their text is not in the archive.

restatedthe judge, in outcome.json

Every gate passed, including the type-check, and the definition refers to the library’s own lemma for this statement (ref Setoid.Subalgebras.Properties.≤-trans-≅), so the row is counted restated and never solved.

Agda’s exit code on the file 0
statement preserved yes
last verdict taken from check_file
the library’s own proof in view before the edit yes, result
the file the judge read, marked against the obligation it started as
-- Subalgebras-sub-trans-iso.agda
--
-- File: data/benchmarks/agda-algebras-v0/obligations/Subalgebras-sub-trans-iso.agda
--
-- Benchmark obligation: algebras-subalgebras-sub-trans-iso
-- Difficulty: non-obvious
-- Import stratum: wholesale
--
module Subalgebras-sub-trans-iso where

open import AgdaDojang.Debug

open import Agda.Primitive   using ( Level )
open import Data.Product     using ( _,_ ; proj₁ ; proj₂ )

open import Overture              using ( Signature )
open import Setoid.Algebras       using ( Algebra )
open import Setoid.Functions
open import Setoid.Homomorphisms
open import Setoid.Subalgebras

≤-trans-≅′ : {𝓞 𝓥 α ρᵃ β ρᵇ γ ρᶜ : Level} {𝑆 : Signature 𝓞 𝓥}
             {𝑨 : Algebra {𝑆 = 𝑆} α ρᵃ} {𝑩 : Algebra β ρᵇ} {𝑪 : Algebra γ ρᶜ}
  →  𝑨 ≤ 𝑩 → 𝑩 ≅ 𝑪 → 𝑨 ≤ 𝑪
≤-trans-≅′ p B≅C = {!!}
≤-trans-≅′ p B≅C = ≤-trans-≅ p B≅C

reports/agent-bench/suite219-sonnet5-both-1/subjects/algebras-subalgebras-sub-trans-iso/final/Subalgebras-sub-trans-iso.agda

Did the tools change the score?

On this benchmark, no. The readers this server is for already give the model a batch type-checker, so a verdict is not what the server adds. What it adds is information a batch check does not carry: the type of a name, the goal at a hole, what a module exports, what the library holds. The first tier's obligations were mined from libraries that already contain their proofs, and a model that can read those sources into its context needs little of that information to score, so the score did not move, with the hints in view and again without them. What moved is how the model worked and what a session cost, and the tables record both. The two tiers under it were built so that nothing could be copied, statements posed for the purpose and proofs that have to string library lemmas together, and on both every final file type-checks with its statement kept, for every instrument, so on proving they say the same. Where their solved counts differ, a gate of the protocol took the row, not the proof: on the hard tier a shell command outside the roots for the most part, on the composition tier an import line edited rather than added. A tier on which the instruments come apart would need statements that are hard for the model, and these are not.

55 obligations mined from the Agda standard library and agda-algebras, whose proofs are on disk, Opus 5, Sonnet 5, one row per model, instrument, fixture condition and server; every subject was capped at 30 turns, 900 s of wall clock and USD 3.00 of list price. Solved and restated are the archive’s judge’s columns; a restated row type-checks by calling the library’s own lemma and is never counted a solve. “Checks, statement kept” counts the final files Agda accepted with the statement they were given, whatever the gates then said of the row; “fixture hints” says whether the obligation’s header still carried its hints when the run was made (agda-native-air issue 219).

instrumentmodelfixture hintsserversolvedrestatedchecks, statement keptlost to preservationlost to holeslost to isolationcost, list priceturnsrun
shell onlySonnet 5in viewthe server of 2026-09-2150055104USD 2.88308arm162-shell-1
server onlySonnet 5in viewthe server of 2026-09-2147655200USD 5.28342arm162-mcp-1
server and shellSonnet 5in viewthe server of 2026-09-2151255101USD 4.25327arm162-both-1
server onlySonnet 5in viewthe server of 2026-09-2546854010USD 4.63359arm184-mcp-1
server and shellSonnet 5in viewthe server of 2026-09-2549255301USD 4.00318arm184-both-1
server onlySonnet 5in viewthe server of 2026-09-2648755000USD 3.83345arm-surface-mcp-1
server onlySonnet 5in viewthe server of 2026-09-2645855200USD 3.74349arm-surface-mcp-2
server and shellSonnet 5in viewthe server of 2026-09-2646455203USD 3.55318arm-surface-both-1
server only, four toolsSonnet 5in viewthe server of 2026-09-2652155200USD 3.78458arm-verdict-mcp-1
server only, four toolsSonnet 5in viewthe server of 2026-09-2653255000USD 3.84461arm-verdict-mcp-2
shell onlySonnet 5nonethe server of 2026-09-2947455103USD 3.42345suite219-sonnet5-shell-1
server onlySonnet 5nonethe server of 2026-09-2944955200USD 3.99347suite219-sonnet5-mcp-1
server and shellSonnet 5nonethe server of 2026-09-2948555200USD 4.13353suite219-sonnet5-both-1
server onlyOpus 5nonethe server of 2026-09-2955055000USD 7.07323suite219-opus5-mcp-1
  • Sonnet 5, hints in view. The shell alone solved 50, inside the 45 to 53 of 55 the server arms solved: on these obligations the tools changed how the model worked, not what it solved.
  • Sonnet 5, header-free. The shell alone solved 47, inside the 44 to 48 of 55 the server arms solved: on these obligations the tools changed how the model worked, not what it solved.
  • Opus 5, header-free. 55 of 55 solved with the server; no shell arm was run under this condition, so the comparison is not made here.
  • Final files that type-check with their statement kept: 55 of 55 in 13 of the 14 arms, 54 in arm184-mcp-1. The gates took preservation 18 (an import line edited rather than added, or the statement changed); holes 1 (a hole left in the file); isolation 12 (a command or a read outside the roots, or one the audit cannot see through) across the arms.
  • Every arm is one seed. Where a configuration ran twice (arm-surface-mcp-1 with arm-surface-mcp-2 and arm-verdict-mcp-1 with arm-verdict-mcp-2), its seeds differ by 1 to 3 solved, and a difference inside that spread is not a finding.
  • Offered the server and a shell together, the model took all 55 verdicts from check_file in each of the 4 arms that had both (arm162-both-1, arm184-both-1, arm-surface-both-1, suite219-sonnet5-both-1), and never ran agda in the shell: the verdict is the tool it would not give up.
  • For Sonnet 5 a sweep with the server cost more: USD 3.55 to USD 5.28 across the 11 arms that had it, against USD 2.88 to USD 3.42 with the shell alone in arm162-shell-1 and suite219-sonnet5-shell-1. agda-native-air’s reading, from these arms, is that the tools’ descriptions, re-read on every turn, were part of the difference, and that cutting them closed that part and not the whole; the rest is output and turns.
  • Waiting on Agda was a small part of a session: 8 % to 11 % of its wall clock at the median, at most 52 %. The rest is the model’s own turns, which is where a faster server cannot help and a smaller one might.

12 composition obligations from agda-algebras, each proved by stringing two to four library lemmas together, with no proof of the statement on disk, Opus 5, Sonnet 5, one row per model, instrument, fixture condition and server; every subject was capped at 60 turns, 1,800 s of wall clock and USD 6.00 of list price. Solved is the archive’s judge’s column. No statement of this tier has a proof on disk to restate, so the judge’s restated column is empty here and is not shown. “Checks, statement kept” counts the final files Agda accepted with the statement they were given, whatever the gates then said of the row; “fixture hints” says whether the obligation’s header still carried its hints when the run was made (agda-native-air issue 219).

instrumentmodelfixture hintsserversolvedchecks, statement keptlost to preservationlost to isolationcost, list priceturnsrun
shell onlyOpus 5nonethe server of 2026-09-29101202USD 4.13130comp-opus5-shell-1
server onlyOpus 5nonethe server of 2026-09-29121200USD 4.04128comp-opus5-mcp-1
server and shellOpus 5nonethe server of 2026-09-29101202USD 4.87148comp-opus5-both-1
shell onlySonnet 5nonethe server of 2026-09-2961251USD 2.60157comp-sonnet5-shell-1
server onlySonnet 5nonethe server of 2026-09-2931290USD 3.55206comp-sonnet5-mcp-1
server and shellSonnet 5nonethe server of 2026-09-2951252USD 3.39179comp-sonnet5-both-1
  • Every final file type-checks with its statement kept, 12 of 12 in each of the 6 arms. A row missing from a solved count lost a gate (preservation 19 (an import line edited rather than added, or the statement changed); isolation 7 (a command or a read outside the roots, or one the audit cannot see through) across the arms), never the proof: no row of this tier was proved in one arm and not in another.
  • Opus 5, header-free. Shell 10, server 12, both 10 of 12 solved, and 12 of 12 final files check in each arm: the counts differ by the gates alone.
  • Sonnet 5, header-free. Shell 6, server 3, both 5 of 12 solved, and 12 of 12 final files check in each arm: the counts differ by the gates alone.
  • Every arm is one seed, and on 12 rows a difference of a row or two is not a finding.
  • Offered the server and a shell together, the model took 11 of 12 verdicts from check_file and 1 from agda in the shell in comp-opus5-both-1, running agda there 1 time; 12 of 12 verdicts from check_file in comp-sonnet5-both-1, running agda there 1 time.
  • For Opus 5 the server did not decide what a sweep cost: USD 4.04 to USD 4.87 across the 2 arms that had it, against USD 4.13 with the shell alone in comp-opus5-shell-1.
  • For Sonnet 5 a sweep with the server cost more: USD 3.39 to USD 3.55 across the 2 arms that had it, against USD 2.60 with the shell alone in comp-sonnet5-shell-1.
  • Waiting on Agda was a small part of a session: 13 % to 25 % of its wall clock at the median, at most 36 %. The rest is the model’s own turns, which is where a faster server cannot help and a smaller one might.

14 obligations posed for the purpose, in group theory and universal algebra, with no proof on disk, Opus 5, one row per model, instrument, fixture condition and server; every subject was capped at 60 turns, 1,800 s of wall clock and USD 6.00 of list price. Solved is the archive’s judge’s column. No statement of this tier has a proof on disk to restate, so the judge’s restated column is empty here and is not shown. “Checks, statement kept” counts the final files Agda accepted with the statement they were given, whatever the gates then said of the row; “fixture hints” says whether the obligation’s header still carried its hints when the run was made (agda-native-air issue 219).

instrumentmodelfixture hintsserversolvedchecks, statement keptlost to preservationlost to isolationcost, list priceturnsrun
shell onlyOpus 5in viewthe server of 2026-09-2781415USD 6.41174hard-opus5-shell-1
server onlyOpus 5in viewthe server of 2026-09-27141400USD 7.82143hard-opus5-mcp-1
server and shellOpus 5in viewthe server of 2026-09-2781406USD 6.62162hard-opus5-both-1
shell onlyOpus 5nonethe server of 2026-09-29101404USD 6.31148hard219-opus5-shell-1
server onlyOpus 5nonethe server of 2026-09-29141400USD 7.71139hard219-opus5-mcp-1
server and shellOpus 5nonethe server of 2026-09-29101404USD 6.56174hard219-opus5-both-1
  • Every final file type-checks with its statement kept, 14 of 14 in each of the 6 arms. A row missing from a solved count lost a gate (preservation 1 (an import line edited rather than added, or the statement changed); isolation 19 (a command or a read outside the roots, or one the audit cannot see through) across the arms), never the proof: no row of this tier was proved in one arm and not in another.
  • Opus 5, hints in view. Shell 8, server 14, both 8 of 14 solved, and 14 of 14 final files check in each arm: the counts differ by the gates alone.
  • Opus 5, header-free. Shell 10, server 14, both 10 of 14 solved, and 14 of 14 final files check in each arm: the counts differ by the gates alone.
  • Every arm is one seed, and on 14 rows a difference of a row or two is not a finding.
  • Offered the server and a shell together, the model took 10 of 14 verdicts from check_file and 4 from agda in the shell in hard-opus5-both-1, running agda there 4 times; 9 of 14 verdicts from check_file and 5 from agda in the shell in hard219-opus5-both-1, running agda there 5 times.
  • For Opus 5 a sweep with the server cost more: USD 6.56 to USD 7.82 across the 4 arms that had it, against USD 6.31 to USD 6.41 with the shell alone in hard-opus5-shell-1 and hard219-opus5-shell-1.
  • Waiting on Agda was a small part of a session: 3 % to 8 % of its wall clock at the median, at most 34 %. The rest is the model’s own turns, which is where a faster server cannot help and a smaller one might.

What this does not show

  • That the server makes the model smarter. On every tier here the final files check about the same whichever instrument the model had, and the tables above are the whole of the evidence. The page is about what the server makes cheap, what it keeps expensive and why, and what a model does with the difference.
  • That the model found the proof unaided. In the three sessions with the hint in view, the header named the proof's shape, and the library's own proof of this lemma came into view before the model's edit, which the judge records beside each verdict. In the three without it, the model found the library's lemma and cited it. The sessions show how each instrument is used, not a proof found from nothing. Opus 5's header-free session on this row, linked above, wrote the proof out after fill_hole had accepted the citation, with the library's proof in view.
  • A comparison with no type-checker at all. That would measure the checker, which every reader here already grants, and not the server.
  • What the fixture headers were worth beyond this row. Every run archived before 2026-09-29 had its obligation's header in view, with a Strategy: line sketching the proof on every row and, on the mined tiers, a Source: line naming the module that holds the original; three archived subjects quote such a line in their own words. The headers were stripped, and the four arms behind agda-native-air's own figures were run again; the corrected numbers are in the first table above, under "fixture hints", and the comparison, with what a difference of a few rows can mean when every arm is one seed, is agda-native-air's reading guide, § 4.6.
  • That a tier with no proof on disk separates the instruments. Two were built for the question, and both sit at the models' ceiling: every final file type-checks with its statement kept, for both models in every arm, and the solved counts differ only by the gates. The library lemmas the composition tier's proofs needed were found in tool answers and source reads, not recalled from memory, with three exceptions the guide names, and the two models took different routes to the same files, which the guide's § 4.7 records per row. What remains open is a tier that can tell the instruments apart, which needs relations a proof cannot unfold, longer chains, or weaker subjects; it will be reported here the way these were, with its run ids, whichever way it goes.

Go deeper

  • agda-native-air's demo replays five sessions from the same archive on other rows, both models among them, and carries the full benchmark table; the archive itself is reports/agent-bench/, with every transcript, verdict and final file this page was built from.
  • ADR 0002 is the server's design record, with the field measurements the third clock quotes; ADR 0001 § 9 is the benchmark's, and reading the results says for every number in it what it is a win or a loss for.
  • The agent that never called the server is the story of why the verdict travels with the command it is equivalent to, and the typechecker as a reward signal is what the exit code is worth to a loop that trains or evaluates a model.
  • The field reports are the sessions in real developments, written up in both directions, where the whole-library check is the gate and the server's verdict is the instrument.