Skip to main content

Questions tagged [agda]

For questions regarding Agda: the programming language / proof assistant.

26 votes
4 answers
2k views

What are the differences between MLTT and CIC?

In the theory and design of proof assistants based upon dependent types, I feel like there’s a somewhat cultural divide between the "MLTT" world (with Agda as the main representative proof ...
Meven Lennon-Bertrand's user avatar
23 votes
0 answers
571 views

Categorical semantics of Agda

I would like to know the state of the art regarding the categorical semantics of the type theory implemented by Agda — or at least some approximation of that type theory that is amenable to ...
Mike Shulman's user avatar
  • 3,200
22 votes
2 answers
409 views

In what intensional type theories can absurdity be made definitionally proof irrelevant?

Various type theories have, over the years, explored extending the definitional equality with a variety of eta-laws and various forms of proof irrelevance. Quite a lot of systems manage eta for ...
pigworker's user avatar
  • 771
18 votes
1 answer
1k views

What are the complex induction patterns supported by Agda?

A question was recently asked on the Coq-club mailing list on Coq rejecting a nastily nested inductive type. We encountered a similar difficulty while trying to port code from Agda to Coq: Agda ...
Meven Lennon-Bertrand's user avatar
16 votes
2 answers
406 views

What are the upsides and downsides of typed vs untyped conversion?

What are the tradeoffs between untyped and type-directed conversion in dependent type theory, and is there any consensus on what's "better"? Background Generally speaking, in dependent type ...
Blaisorblade's user avatar
15 votes
2 answers
421 views

In Agda, why is universe polymorphism explicit?

I've noticed that the process of coding a definition in Agda that is universe polymorphic usually requires little thought in how the Level parameters are specified. ...
Sean O'Connor's user avatar
14 votes
1 answer
445 views

Why did Agda give up cumulative universes?

In Ulf Norell's PhD thesis, which is considered the standard reference of the Agda 2 language, the universes are cumulative, say, Set i is not just an instance of <...
ice1000's user avatar
  • 6,316
11 votes
5 answers
2k views

How do real-world proof assistants bind variables and check equality?

There are many possible ways to represent syntax with variable binding, such as named variables, De Bruijn indices, De Bruijn levels, locally nameless terms, nominal type theories, etc. There are also ...
10 votes
2 answers
1k views

Constructive proof of strong normalization for simply typed lambda calculus

I'm reading Girard's Proofs and Types, and in section 4.4 he writes: Lemma: t is strongly normalisable iff there is a number ...
Itai Zukerman's user avatar
9 votes
2 answers
328 views

What's the benefit of having pi and sigma types with an invariant parameter?

Ulf Norell wrote this in his PhD thesis (figure 1.6): This contradicts my stereotype on pi & sigma types, where pi parameter should be contravariant and sigma parameter is covariant. Why is Agda ...
ice1000's user avatar
  • 6,316
9 votes
2 answers
468 views

Defining coercion for proof irrelevant equality

Say I would like to define coercion for proof irrelevant equality between types. In Coq I try ...
Couchy's user avatar
  • 2,300
9 votes
2 answers
252 views

How to access local definitions in Agda

I'm working in cubical agda. I am wondering how to access local definitions once outside of the local environment. For example, suppose I have the following code: ...
IsAdisplayName's user avatar
9 votes
1 answer
349 views

Case splitting with quotient types in Cubical Agda

I'm getting started with Cubcal Agda and I'm quite confused. I've got a HIT A defined, with a path constructor eq returning <...
Joey Eremondi's user avatar
9 votes
1 answer
362 views

What are the differences and similarities between records, coinductive records, and codatatypes?

Record types are a common feature in most paradigms. Agda also allows defining records with the coinductive keyword. Lastly there are the seemingly more exotic co(...
aradarbel10's user avatar
8 votes
2 answers
689 views

Curly Braces and Lambdas in Agda

The docs on lambdas in Agda provide two forms of lambda: a curly brace based version, and the where syntax. But while writing some programs, I stumbled across a third version: one pattern, no braces, ...
Olek Gierczak's user avatar
8 votes
1 answer
241 views

Termination and confluence -- which goes first?

I'm implementing a version of cubical type theory where the well-definedness of pattern matching functions is implied by: the well-typedness of the clauses (type check) the coverage of the patterns (...
ice1000's user avatar
  • 6,316
8 votes
1 answer
159 views

Is it possible to define `fib` coinductive stream w/o sized types?

In Agda with --guardedness, we can define productive definitions using copatterns like the following ...
ice1000's user avatar
  • 6,316
8 votes
1 answer
287 views

Why is `--irrelevant-projections` unsafe in Agda?

In Agda, irrelevance is an annotation which marks a parameter, record field, or definition which "will only be typechecked but never evaluated", with the consequence that irrelevant ...
James Martin's user avatar
  • 1,035
8 votes
1 answer
158 views

Are `P x` and `▸ ((next P) ⊛ (next x))` equivalent in Guarded Cubical Agda?

In Guarded Cubical Agda there's ▹_ : Set i → Set i and ▸_ : ▹ Set i → Set i. If I've got ...
Joey Eremondi's user avatar
8 votes
1 answer
287 views

When should I use `no-eta-equality` in Agda records?

In a recent development, I used the no-eta-equality attribute on a record. The motivation in that case was ad hoc: I noticed that I'd get better metavariable ...
James Wood's user avatar
  • 1,053
7 votes
3 answers
1k views

How to run Agda?

I want to run Agda, but I do not know how to run functions. I need to run "Hello, World!"; how can I do this?
Fmbalbuena's user avatar
7 votes
1 answer
153 views

Decidability for an infinite sequence of decidable propositions

I've been trying to prove this in Agda: lemma : (P : ℕ → Set) → ((n : ℕ) → Dec (P n)) → Dec (Σ[ n ∈ ℕ ] ¬ (P n)) In words: We have an infinite sequence of ...
Itai Zukerman's user avatar
7 votes
1 answer
176 views

How to state and prove the associativity of append of sized vectors with homogeneous equality?

Append (denoted ++) for sized vectors is obviously associative, i.e. a ++ (b ++ c) = (a ++ b) ++ c for ...
ice1000's user avatar
  • 6,316
7 votes
1 answer
557 views

Examples of theories where tactic language is required for simple proofs

I was always under the impression, that separate tactic languages were generally considered to be vital for writing long proofs. I see tactic languages as a kind of interpreted DSL to generate ...
uhbif19's user avatar
  • 177
7 votes
2 answers
293 views

Proving strict positivity in Agda

In Agda we can prove termination of functions by using well-founded relations, is there a guideline for proving datatype declarations strictly positive, possibly via use of some container techniques ...
Ilk's user avatar
  • 547
7 votes
0 answers
106 views

How to improve/understand typechecking performance in Agda?

I've recently been trying to do some basic formalization of category theory in Agda. As part of this I need to prove a bunch of basic properties around products/monoidal categories. A bunch of these ...
Eric Dobson's user avatar
7 votes
0 answers
195 views

What was the first proof assistant with eta equality for records?

The Agda language supports eta equality for (non-(co)inductive) record types: ...
Jesper's user avatar
  • 506
6 votes
2 answers
436 views

Possible root cause(s) of the misunderstanding that DTT implies not Turing complete?

I myself have fallen prey to this misconception, i.e., that being dependently typed as in Agda, Coq, etc., implies not being Turing complete, which can be (whether now or previously) found at quite a ...
Municipal-Chinook-7's user avatar
6 votes
2 answers
148 views

Data constructors and universe constraints

In the code below: data Foo₁ : Set where foo₁ : Set → Foo₁ data Foo₂ (A : Set) : Set where foo₂ : Foo₂ A type₂ : {A : Set} → Foo₂ A type₂ = foo₂ for the ...
Itai Zukerman's user avatar
6 votes
2 answers
105 views

Can I use if_then_else on indexed paths in HITs?

I want to define a function out of an indexed higher inductive type, and am running into some problems. Here is a somewhat contrived minimal example of what I'm doing: ...
Åsmund Kløvstad's user avatar

15 30 50 per page