Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Understanding non strictly positive occurrence error

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Understanding non strictly positive occurrence error


Chronological Thread 
  • From: Murali Vijayaraghavan <vmurali AT csail.mit.edu>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Understanding non strictly positive occurrence error
  • Date: Thu, 1 May 2025 07:29:28 -0700
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=vmurali AT csail.mit.edu; spf=Pass smtp.mailfrom=vmurali AT csail.mit.edu; spf=None smtp.helo=postmaster AT outgoing2021.csail.mit.edu
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:fD8fdaOtnw4WdsBcTgijsMiBIKoaSvp037BL7TELdfUxSKelfq +V7ZEmPHPP+VQssTQb6LO90cq7IE80l6QFh7X5VI3KNGOKhILrFuFfBODZskTd8kPFh5Zg/J YlXaw7J9H5EERggdyS2njeLz/i+rW62ZHtq+PXz3IoaxprZaFm5wI8LgqACEV5SE1nKPMCZf 6hDwZ8yAZIsE54UviG
  • Ironport-phdr: A9a23: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 NXDifCqQN+n29nP9MoYQc3VNISKPGdzaXLU
  • Ironport-sdr: 68138555_mMb9CJ1ILFwsOw1hncCo0APSBWhlNAgj32wCO72sxKlAyeK 8YoTJy689D8rC3leHW8+l2AcaP6ucGF0eId05gQ==

Does that mean the above definition does not lead to an inconsistency? I want to know if I can keep the above definition with the fixed point instead of having an isomorphic definition (almost like) below which is accepted by default, and convert back and forth in my development.

Inductive Foo: Type :=

| Simple: nat -> Foo
| Bad n (vals: Fin.t n -> Foo): Foo.


Would one be able to fix the (strict) positivity requirement to allow these cases in the future?

On Thu, May 1, 2025 at 7:14 AM Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net> wrote:
fixpoints are not understood by the positivity checker, so it rejects the declaration.

Gaëtan Gilbert

On 01/05/2025 08.15, Murali Vijayaraghavan wrote:
> Hi
>
> I was wondering why the following definition fails:
>
> Inductive Foo: Type :=
> | Simple: nat -> Foo
> | Bad n (vals: (fix helper n :=
>                    match n with
>                    | 0 => unit
>                    | S m => (Foo * helper m)%type
>                    end) n): Foo.
> Error: Non strictly positive occurrence of "Foo" in
> "forall n : nat, (fix helper (n0 : nat) : Set :=
>                      match n0 with
>                      | 0 => unit
>                      | S m => (Foo * helper m)%type
>                      end) n -> Foo".
>
>  From my understanding, strictly positive occurrence requirement is violated if I supply the inductive type as an argument to one of the constructor arguments (as discussed in http://adam.chlipala.net/cpdt/html/Cpdt.InductiveTypes.html#lab30 <http://adam.chlipala.net/cpdt/html/Cpdt.InductiveTypes.html#lab30>), but in the above example, I am just trying to use an size-indexed tuple as a constructor argument. How can I prove False if the above definition were accepted?
>
> Thanks
> Murali




Archive powered by MHonArc 2.6.19+.

Top of Page