Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Is non-strict positivity ever okay?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Is non-strict positivity ever okay?


Chronological Thread 
  • From: Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Is non-strict positivity ever okay?
  • Date: Tue, 14 Apr 2020 18:05:04 -0500
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=agnishom AT cmi.ac.in; spf=Pass smtp.mailfrom=agnishom AT cmi.ac.in; spf=None smtp.helo=postmaster AT mail.cmi.ac.in
  • Ironport-phdr: 9a23:+bFMDhBYzriWkMhBlYa9UyQJP3N1i/DPJgcQr6AfoPdwSP39o8bcNUDSrc9gkEXOFd2Crakb26yL6+jJYi8p39WoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6i760TlHERLmcAFxO+7dG4jIjs3x2frh1YfUZlBhizy8erN1KV2drQzNqs4OiIdiO68ggk/ArX1JYORRwEtjIFPVlh2658Hmr80ryDhZp/90r50Iaq79ZaltFeUJXgRjCHg84YjQjTeGSAKO4nUGVWBPy0hDBgmD5Rq8X5Gj63Km5No44zGTOIjNdZ5xQS6rtv45Qxrpzi4McT8/ojmO155AyZlDqRfknCRRho7ZZIbMaqh7d6LZO9gfRCxIVYBQUX4ZDw==

Not really. I am trying to define a relation between my models and my formulae. This is a semantic notion and in some cases may even be uncomputable. So, I do not really want a Formula -> Bool, but rather some kind of Prop

On Tue, Apr 14, 2020 at 5:56 PM Dominique Larchey-Wendling <dominique.larchey-wendling AT loria.fr> wrote:
Usually one uses a Fixpoint instead of an inductive definition for formula satisfaction.

D.


De: "Agnishom Chattopadhyay" <agnishom AT cmi.ac.in>
À: "coq-club" <coq-club AT inria.fr>
Envoyé: Mercredi 15 Avril 2020 00:30:39
Objet: [Coq-Club] Is non-strict positivity ever okay?
Sorry for the click-baity title.

I have a situation where I want to define the semantics of some formulae like textbooks usually do:

Inductive Formula {A: Type} : Type :=
  | FAtomic: (A -> bool) -> Formula
  | FNeg: Formula -> Formula
.

Inductive satisfies {A : Type} : list A -> Formula -> Prop :=
| sat_atomic : forall (f : A -> bool) x xs, f x = true
                                            -> satisfies (xs ++ [x]) (FAtomic f)
| sat_neg : forall xs f, ((satisfies xs f) -> False)
                           -> satisfies xs (FNeg f)
.

The last clause in the inductive predicate does not go through since it puts `satisfies` in a negative position.

I'd however think that this is not so bad because: (1) This is a standard way to define the semantics of negation and also (2) the second argument of satisfies is structurally bigger in the result.

Is there any chance I can convince Coq of (2) or some other reason that would make it work?

I have tried interchanging the order of the arguments of satisfies but that did not help.

--Agnishom




Archive powered by MHonArc 2.6.18.

Top of Page