Talk:Output freeness

From The Twelf Project
Jump to: navigation, search

This topic was on the other wiki as well: http://fp.logosphere.cs.cmu.edu/twelf/?n=Answers.Freeness . It's by Geoff Washburn, not me, so if you include a lot from that file you'll need to add a {{license-by-sa}} tag. — Rob (and his talk) 16:57, 7 September 2006 (MST)

  • Oops, I didn't notice that. Well, my MIT-license version seems to have all the same info, so I don't think there's any need to import it, though perhaps the example could be a little simpler.  — Tom 7 06:54, 11 September 2006 (MST)

How does output coverage differ from output freeness?

That question deserves a thorough answer, but Jason and I came up with this program while screwing around: observe that fake-thm output covers, even though the subgoal invocation of ff in the ft/z case is not "output free" because the output argument is a ground term:

nat : type.
s : nat -> nat.
z : nat.

bool : type.
t : bool.
f : bool.

add : nat -> nat -> nat -> type.
%mode add +M +N -O.

add/z : add M z M.
add/s : add M (s N) (s O')
     <- add M N O'.

%worlds () (add _ _ _).
%total N (add _ N _).

boolcont : bool -> type.
@ : {B} boolcont B.

ff : {B : bool} {C : boolcont B} type.
%mode ff +B -C.
- : ff B (@ B).

fake-thm : {M : nat} type.
%mode fake-thm -N.

ft/z : fake-thm z
 <- ff t (@ t).

%worlds () (ff _ _) (fake-thm _).
%total D (ff D _).
%total [] (fake-thm _).
 — Tom 7 16:58, 26 October 2006 (EDT)