Comments (2)
Default irrelevance in Agda is "nested", that means, entering an irrelevant position only promotes irrelevant hypotheses in the current context to relevant ones, but does not allow you to use new irrelevant that enter the context.
E.g., this is rejected:
record Squash (A : Set) : Set where
constructor squash
field .squashed : A
postulate
irrelevant : (A : Set) → .A → Set
foo : Set → Set
foo A = irrelevant (Squash A → A) (λ (squash x) → x)
Variable x is declared irrelevant, so it cannot be used here
You can get this with --irrelevant-projections
, which in effect makes irrelevant "flat":
foo : Set → Set
foo A = irrelevant (Squash A → A) (λ s → squashed s)
Having said that, Agda does seem inconsequential in that
- it internally converts
top
intofailing-top
through the record-pattern translation, but - rejects
failing-top
when written by the user.
Evidence for fact 1 is that the following snipped is accepted by Agda:
postulate
A : Set
a : A
s : Squash A
T : Squash A → Set
T (squash _) = A
test : T s
test = a
Agda reduces T s
to A
by virtue of its internal representation of T
that translated away the match against squash
.
However, adding a check that failing-top
is ok would maybe a bit cumbersome. We would have to check that the projection could be eliminated by doing a match on the lhs instead, not involving no-eta-equality
records.
from agda.
Ha! Interesting... many thanks for the feedback, and for the hint that in the presence of eta
, failing-top
should be OK... but sadly (for me in certain other settings), not for me/users themselves to define.
As for using --irrelevant-projections
, that's not going to fly for stdlib
modules I/we might otherwise STRONGLY wish to mark as --safe
... oh well.
from agda.
Related Issues (20)
- REWRITE rule with confluence, inconsistencies with documentation and error messages HOT 3
- Agda build flags appear as "automatic", but they are all "manual" HOT 1
- Mimer triggers __IMPOSSIBLE__ in my homework assignment HOT 3
- Warning "there are two interface files" should not be serialized
- Internal error in generate-helper (C-c C-h) HOT 1
- Preserve let-bindings when pretty-printing HOT 2
- Mutually recursive definition doesn't recognize data constructor defined later HOT 4
- Mimer doesn't check existing constraints HOT 4
- Instance resolution runs too late, leads to `with`-abstraction failure HOT 18
- Test suite needs to be run with debug printing enabled HOT 1
- Internal error in Mimer with module parameter and matching
- Instance resolution failure in Agda 2.6.4 HOT 6
- Mimer drops part of the solution with module parameter
- Citation.cff HOT 1
- Prune the `Makefile` HOT 7
- Delete the GitHub Wiki HOT 3
- Migrate the Chalmers Wiki HOT 4
- Prune `Setup.hs` HOT 5
- Reorganize `HACKING.md`
- Merge `.authorspellings` and `.mailmap` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from agda.