occasionally you'll hear someone ask, "are higher-order functions 'higher-order' in the same sense as higher-order logic?" here is a possible answer.
from my understanding of current logical diction, something like the following story is true:
once upon a time, humans invented lambda calculus. they said, "a function that takes a functional argument (or returns a functional value) is a higher-order function." they wrote that definition down, and then two different humans read it.
the first said, "ah! a 'higher-order' function is one that operates on a function. so, in general, for something to be 'higher-order' means it operates over functions."
the second said, "ah! a higher-order function is a function over functions. to generalize, a higher-order X is an X that operates over other Xes."
error! and from their teachings sprang many logician progeny of both lineages, and the confusion remains.
some examples:
- higher-order abstract syntax. "lam : (tm -> tm) -> tm" is higher order in that "oh look there's a left nested arrow", i.e. we're describing syntax in terms of function types (and for that reason may be better deserving of the abstract higher-order syntax coin).
- higher-order judgment. in twelf lingo we use this to mean, again, a judgment over open terms (like (tm -> tm) -> type) rather than what you might think following generalization (2), a judgment about judgments (i.e. a metatheorem).
- higher-order logic. if we squint for the sake of uniformity and pretend that by "logic" we mean "predicates", then i think it's accurate to interpret this as an instance of generalization (2), predicates over predicates. it certainly doesn't mean "logic about functional data", which is just propositional logic.
despite my NPOV efforts, it might be coming through that i'm a little annoyed with generalization 1. it just seems a little bit provincial or narrow-sighted, like the only thing that we could possibly want to get fancy with is the types of the things we describe, rather than the (quite literally) more judgmental-methodology-motivated notions of our system. of course, in practice, i use the jargon that will get me understood, but if i got to prescriptively reinvent it i'd change the word for generalization 1 to something like "functional" (where of course in this perfect universe, "functional programming" would be renamed to "value programming").
from my understanding of current logical diction, something like the following story is true:
once upon a time, humans invented lambda calculus. they said, "a function that takes a functional argument (or returns a functional value) is a higher-order function." they wrote that definition down, and then two different humans read it.
the first said, "ah! a 'higher-order' function is one that operates on a function. so, in general, for something to be 'higher-order' means it operates over functions."
the second said, "ah! a higher-order function is a function over functions. to generalize, a higher-order X is an X that operates over other Xes."
error! and from their teachings sprang many logician progeny of both lineages, and the confusion remains.
some examples:
- higher-order abstract syntax. "lam : (tm -> tm) -> tm" is higher order in that "oh look there's a left nested arrow", i.e. we're describing syntax in terms of function types (and for that reason may be better deserving of the abstract higher-order syntax coin).
- higher-order judgment. in twelf lingo we use this to mean, again, a judgment over open terms (like (tm -> tm) -> type) rather than what you might think following generalization (2), a judgment about judgments (i.e. a metatheorem).
- higher-order logic. if we squint for the sake of uniformity and pretend that by "logic" we mean "predicates", then i think it's accurate to interpret this as an instance of generalization (2), predicates over predicates. it certainly doesn't mean "logic about functional data", which is just propositional logic.
despite my NPOV efforts, it might be coming through that i'm a little annoyed with generalization 1. it just seems a little bit provincial or narrow-sighted, like the only thing that we could possibly want to get fancy with is the types of the things we describe, rather than the (quite literally) more judgmental-methodology-motivated notions of our system. of course, in practice, i use the jargon that will get me understood, but if i got to prescriptively reinvent it i'd change the word for generalization 1 to something like "functional" (where of course in this perfect universe, "functional programming" would be renamed to "value programming").
no subject
Date: 2010-10-18 05:05 am (UTC)From:no subject
Date: 2010-10-18 04:49 pm (UTC)From:no subject
Date: 2010-10-18 05:56 am (UTC)From:no subject
Date: 2010-10-18 01:51 pm (UTC)From:no subject
Date: 2010-10-18 03:54 pm (UTC)From:classtypekindsortsetuniverseof stuff.no subject
Date: 2010-10-18 04:16 pm (UTC)From:no subject
Date: 2010-10-18 07:16 pm (UTC)From:no subject
Date: 2010-10-18 07:30 pm (UTC)From:no subject
Date: 2010-10-19 04:41 pm (UTC)From:no subject
Date: 2010-10-19 04:56 pm (UTC)From:no subject
Date: 2010-10-18 05:40 pm (UTC)From:no subject
Date: 2010-10-18 06:44 am (UTC)From:no subject
Date: 2010-10-18 08:15 am (UTC)From:Definition 2 is the only correct definition! Down with definition 1!
no subject
Date: 2010-10-18 07:05 pm (UTC)From:no subject
Date: 2010-10-18 08:59 am (UTC)From:This is perfectly reasonable except for the problem for academics that abstracting over functions doesn't add any theoretical complexity to a λ-calculus, whereas abstracting over predicates breaks completeness in a logic.
Anyway, I'm curious what the actual history of the term is, but I don't have JSTOR access anymore and can't read a lot of the relevant papers. Gödel proved the completeness of the first-order predicate calculus, but I'm pretty sure nobody called it that back then; that might date to Per Lindström's hierarchy of logics, but I can't see those papers. I don't think Church talks about the order of functions in his foundational papers at all.
no subject
Date: 2010-10-18 05:51 pm (UTC)From:no subject
Date: 2010-10-18 07:03 pm (UTC)From:no subject
Date: 2010-10-18 07:29 pm (UTC)From:no subject
Date: 2010-10-19 04:54 pm (UTC)From:Interestingly, higher-order judgment already has another meaning used by Twelf'ers, namely the judgment-level analogue of higher-order syntax:
You said you'd just call this a "hypothetical judgment", which also makes sense (and is a kind of higher-order judgment itself!). Maybe we should call HOAS "hypothetical syntax"? :)
I think Frank uses "higher-level judgment" to describe your notion of "higher-order judgment": syntax is level 0, judgments about it are level 1, metatheorems are judgments at level 2, etc. A skew representation is one that mixes levels in the types of arguments, e.g. when your syntax requires proofs about syntax, or when your judgments themselves appeal to metatheorems.
Acquisition bargain penny-pinching tabs no medicament
Date: 2016-12-22 04:32 am (UTC)From: (Anonymous)[url=http://pharmshop-online.com]generic cialis[/url] generic cialis online
generic cialis (http://pharmshop-online.com) - ed remedies
cialis 20 mg cost our newest member