isabelle - What Kind of Type Definitions are Legal in Local Contexts? -


in isabelle's news file, found

command 'typedef' works within local theory context -- without introducing dependencies on parameters or assumptions, not possible in isabelle/pure/hol. note logical environment may contain multiple interpretations of local typedefs (with different non-emptiness proofs), in global theory context.

(which dates isabelle2009-2). latest news respect typedef , local theory contexts? further, restriction "without introducing dependencies on parameters or assumptions" mean?

if mean cannot use locale parameters in defining set of typedef, not consider typedef localized @ (since allowed instances can moved outside local context, or missing something?).

is (or should it, or ever be) possible along lines (where set used typedef depends on locale parameter v):

datatype ('a, 'b) "term" = var 'b | fun 'a "('a, 'b) term list"  locale term_algebra =   fixes f :: "'a set"     , v :: "'b set" begin  definition "domain α = {x : v. α x ~= var x}"  typedef ('a, 'b) subst =   "{α :: 'b => ('a, 'b) term. finite (domain α)}"  end 

for obtain:

locally fixed type arguments "'a", "'b" in type declaration "subst" 

a few more notes on this:

  • the local theory infrastructure merely organizes existing module concepts (locale, class etc.) such definitional mechanisms (definition, theorem, inductive, function etc.) can work uniformly in variety of contexts. not change logical foundations, specification elements cannot depend on term parameters (fixes) or premises (assumes) won't become fundamentally better. merely retrofitted greater framework, extra-logical benefit.

  • the canonical local theory targets locale , derivatives class. these work within logic according principles sketched above: lambda-lifting via context of fixes , assumes. other targets more ambition can imagined, need implemented brave , heroic guys. example, 1 wrap awe theory interpretation mechanism local theory target, , parametrization of types/consts/axioms --- @ usual cost of going through explicit proof terms implement admissible inferences within lcf prover (or @ cost of giving lcf-ness , via oracle).

  • plain typedef sketched above (and derivatives localized codatatype , datatype of recent hol-bnf) improved in dependecy type parameters, mean implementation efforts don't justify meagre outcome right now. merely allow write polymorphic type constructions implicit arguments this:

    context fixes type 'a begin datatype list = nil | cons 'a list end 

    after export 'a list usual.

    further complication: fixes type 'a not exist. isabelle/pure handles type parameters implicitly via hindley-milner.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -