[Agda] skipped ambiguity?
Serge D. Mechveliani
mechvel at botik.ru
Tue Nov 6 12:04:51 CET 2012
People,
the checker (in Agda-2.3.0.1, MAlonzo, lib-0.6)
reports a strange thing for the program
------------------------------------------------------------------------
open import Algebra
using ( Semigroup; module Semigroup; Monoid; module Monoid;
CommutativeMonoid; module CommutativeMonoid;
CommutativeRing; module CommutativeRing;
Semiring; module Semiring;
CommutativeSemiring; module CommutativeSemiring
)
...
record LeftQuotient {c l : Level} (H : Semigroup c l)
(a b : Semigroup.Carrier H) : Set (max c l)
where
open Semigroup {{...}}
field quot : Semigroup.Carrier H
quotProof : (quot * b) \~~ a
data MbDivideLeft {c l : Level} (H : Semigroup c l)
(a : Semigroup.Carrier H) (b : Semigroup.Carrier H) :
Set (max c l)
where
quot : LeftQuotient H a b -> MbDivideLeft H a b
noQuotient :
let open Semigroup {{...}}
in
(x : Carrier H) -> \neg ((x * b) \~~ a) -> MbDivideLeft H a b
------------------------------------------------------------------------
Here I replace the math symbols as Level.\sqcup -> max, \. -> *,
It reports on the _last line_:
Set c should be a function type, but it isn't
when checking that H are valid arguments to a function of type
Set c
Changing Carrier to Semigroup.Carrier in the last line makes it work.
So the impression is that the name `Carrier' is ambiguous.
Then, why the checker does not report of this?
May be, it sets silently some other value for Carrier?
Thanks,
Sergei.
More information about the Agda
mailing list