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: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Understanding non strictly positive occurrence error
  • Date: Thu, 1 May 2025 14:41:15 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.helo=postmaster AT relay1-d.mail.gandi.net
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:9/T4Fa+TVQiB3c3hQ+Fuk+AeI+orL9Y04lQ7vn2ZOiYlEPBw8P re+sjztCWE7wr5PUtLpTnuAsW9qB/nhPtICMwqTNOftWrd11dATrsO0WKK+VSJcBEWtNQttp uIGJIeNDSfNzhHZIrBjjWQIpIP5/TC2qi1n+u29QYXcShaL49GwkNCAhyfe3cGPjVuNN4WM7 fZ3MBAvDbIQwVuUu2LQlcjcqz4utXXmPvdEGc7OyI=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 68136bed_C3Oq1h2H50PoxsbTcjckLBvU0S2kGhuUwF8L588URy3jk3G QLrgUI4hfWBXe39UFDsDl6AxRcTjVjf8NkFD7DQ==

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