[Agda] Re: Logical meaning of nontermination

Dan Doel dan.doel at gmail.com
Sat Oct 24 21:24:14 CEST 2009


On Saturday 24 October 2009 1:39:16 pm Peter Hancock wrote:
> If I could throw another red herring into the pot, I wonder what
> people think of the idea of non-wellfounded proofs?  We might be
> reasonably comfortable with non-wellfounded data-structures, but
> I feel some reluctance to allow that *proofs* could be
> non-wellfounded in the same way. (Yes I am aware of Brotherston
> and Simpson, but that is something very specific and restricted.)
> It's like a proof has to be a wellfounded structure to carry
> conviction (from the premises to the conclusion).

Well, we have non-well-founded proofs in Agda, because proofs are data 
structures. Take, for instance, the partiality monad:

  data D (A : Set) : Set where
    now   : A → D A
    later : ∞ (D A) → D A

  ⊥ : ∀{A} → D A
  ⊥ = later (♯ ⊥)

Now, proofs of divergence are also codata:

  data Diverges {A : Set} : D A → Set where
    step : ∀{da} → ∞ (Diverges (♭ da)) → Diverges (later da)

  ⊥-diverges : ∀{A} → Diverges (⊥ {A})
  ⊥-diverges = step (♯ ⊥-diverges)

Proofs of bisimilarity of streams are in a similar boat. You could, I suppose, 
write divergence as elements of (a) type (like):

  Diverges : ∀{A} → D A → Set
  Diverges da = ∀{n} → ¬ Converges n da

But I don't really see a good reason to call the latter proofs and not the 
former.

-- Dan


More information about the Agda mailing list