Code Sprint Discussions
(20110406 - raw memo with dropped suggestions Attach:CodeSprintDiscussion20110406PM-raw.txt )
The record of Day3(Friday) has been lost. Leaders are requested to fill in ...
Next? code freeze target date: sometime arond next AIM.
Day 5: Andreas Abel Presentation of a bottle of wine
- Unification. eta friendly, record, iso btw records-> A and curried form.
- Leader : Andreas
- Day2: Started
- Day3: (lost)
- Day4: done: freezing of metavar at a block end. Test suite run ok. Eta thing still not done yet.
- Day5: -- new mutual block syntax with separate sigs and defs -- explicitly specifying dependencies. module Mutual where mutual
data Vec (A : Set) : Nat -> SEt record Sigma ... bla : Bla data Vec A where nil : ... cons : ... bla = ... mutual data U : Set El : U -> Set data U where base : U pi : (a : U) -> (El a -> U) -> U El base = Nat El (pi a b) = (x : El a) -> El (b x)
- -- requires rewrites of existing code.
(automatically figuring out dependencies and grouping is a bit hard.) --------------------- Changed metavar lifetime (day 4) one : N one = _ force : one \equiv suc zero force = refl -- this no longer solves _ of one that is in a different group. mutual one : N one = _ force : one \equiv suc zero force = refl -- this is as before, _ is solved. force : let one : N one = _ in one \equiv 1 force = refl -- this is also as before.
- Dependent irrelevance (minor)
- Leader : Andreas
- Day2: Finished, with Guilhem. Demo: In addition to irrelevant args and fields we had, we now have elimSq : ... (ih : .(a : A) -> P (squash a)) -> ... or
... (ih : \all .a -> P (squash a)) -> ... postulate P : .A -> Set f : ._ -> Set f = \ .x -> P x f' = \ .(x : _) -> P x f'' = \ .{x y z : _} -> P x -- IrrelevantFin is not allowed. data Fin : Nat -> Set where zero : .(n :Nat) -> Fin (suc n) ... -- But this type checks ok. Not sure what this means though data Fin : .Nat -> Set where zero : .(n :Nat) -> Fin (suc n) ...
- Irrelevance and unification, connected with proof search
- Leader : Dominique
- Day2: gone
- Day3-4 : all gone.
- Documentation
- Internals (see the "HACKING" file); Externals ("abstract", "coinductive types")
- Leader: Wolfram
- Day2: Talking on Day1. No concrete docs yet.
- Day4: Inserting docs in source code to understand things...
- Pattern synonyms
- Leader: Stevan
- Day2: Rumor that something is being done.
- Day4: Talked with Daniel. Tricky. Looking into the source where to put the stuff.
design re typed/untyped etc not fixed yet.
New keyword "pattern".
N: If you had a pattern syn for length 2 vector, ... do a non-linear pattern result?
- probably not a problem, will become .patvar..
- Template Agda
- Leader: Nicolas
- Day2: Nothing yet; work on BUILTIN must be done first
- Day3: (lost - something about interleaving scope checking(importing) and type checking)
- Day4: Demo. Term splicing. import Common.Reflect MySet : Set1 MySet = $(sort) test1 : MySet \equiv Set test1 = refl id : (A : Set) -> A -> A id = $(lam false (lam false (var 0 []))) polyId : ... data T : Set where
tt : T quoteOK : T quoteOk = $(con (quote tt) []) -- U: some worry about scoping. f : Set -> Set f x = $(def (quote x) []) --^ error f : Term -> Set f x = $(x) --^ can't unquote f : Term -> Set f x = $(var 0 []) -- works f : Term -> Set f x = $(var 1 []) -- panic ... checking closedness is not implemented yet. -- U: re scoping, this might leak private names. mutal f : Set -> Set f = $(def (quote f) []) -- f's in red, non-termination. -- N: prefers a keyword("splice", "unquote", ... ?) over $ -- "unquote" won.
- Day5: still some bugs, but got good working examples. mutual
data Term : Set where var : Nat -> Ars -> Term con : QName -> Agda -> Term def : ... lam : Hiding -> Term -> Term pi : Arg Term -> Term -> Term sort : Term unknown : Term Args = List (Arg Term)# BUILTIN AGDATERM Term ## BUILTIN AGDATERMVAR var #... (discussion on if hiding is needed at this level) ... MySet : Set1 MySet = unquote sort idSet : Set -> Set idSet = unquote (lam false (var 0 [])) -- n-ary function test : (... \equiv ... ) x (... \equiv ...) x (... \equiv ... ) x (... \equiv ...) -> ... test = unquote (tuple (repliate 4 tmrefl)) -- instead of refl , refl , refl , refl -- instead of -- pair t u = con (quote _,_ (arg false t :: arg false u :: [])) pair t u = `con (quote _,_) (repliate 2 false) unquoteTwice : Set1 unquoteTwice = unquote(unquote (con (quote sort) [])) -- N: concern about constraing solving in meta-level checking interfering with object-level. Pi^n : Nat -> Term -> Term ... Lam^n : Hiding -> Nat -> Term -> Term ... Proj : (i n : Nat) -> Term ... -- church numeral proj : \all i n -> Term ... ==> panic "unbound variable0" due to lack of contexts for terms. -- on to definitions getDef : Name -> Def ... foo : Def ... unquote foo gen-induction (quote length) -- length-ind : unquote(gen-induction-type(quote length)) length-ind = unquote(gen-induction (guote length))
- Hiding declarations
- Leader: Nicolas
- Day2: Nice syntax NOT decided on Day1. A new block syntax, or reusing module syntax. Shadowing allowed or not? can result in ambiguity. Bengt: how about \renewcommand like thing? not quite. The situation is module ... f = ... open M -- with f inside -- here you want to hide the local f and want to use M.f
- Day3: (lost)
- Day4: Nothing
- Record pattern matchin in lambda / local case /extended lambda
- Leader: Noam, Daniel
- Day2: on extended lambda. Turning extended lambda into a helper function which is typechecked. Some issues in parsing. incosistency btw lambda and function defs, e.g., type annotation. Long term issue: Do we want to keep type annotation for lambda? Q on whether we could do "with"? U: We would.
- Day4: Figured out parsing. \( ... = ... ;
... = ... ; ... = ... ) (braces \{ ... } caused shift-reduce conflicts in grammar) Translation to temp func decl: at ConcreteToAbstract stage now. A few more days to finish all.
- epic backend
- Leader: Olle
- Day2: Nothing yet. Got input from Andreas.
- Day4: Still on IO module in std lib. Made it strict. Fixing bugs.
- Day5: Trying the new IO module for reading files etc. Demo: Strict.agda ... ... %effect ... {-# COMPILED_EPIC writef (s : Ptr, str : Data, u : Unit) -> Unit
= foreign Int "fputs" (mkString(str) : String, s : Ptr); primUnit #-} ... withFile : \all {A} -> String -> String -> (Strieam -> IO A) -> IO A withFile file mode f = fopen file mode >>- \ handle -> f handle >>= \ res -> fclose handle >>= \ _ -> return res readFile : String -> IO String readFile file = withFile file "r" read ----- AgdaPrelude.e ... primStringAppend(xs : Data, ys : Data) -> Data = case xs of {Con 0 () -> ys |Con (x : String, rest : Data) -> Con 1 (x, primStringAppend (rest, ys)) } ... ----- Danger of introducing incosistency via ffi. ---- Compilation works. ---- Webbrowser written in Agda (Using Agda to write call back funcs for Webkit.) module webkit where ... open import gtk ...(binding)... module .. main : IO Unit main = gtk.Init >> ...
- Installation
- Leader : Bengt
- Windows(makoto), Mac(Everybody who had Mac problems)
- Synching Haskell Platform and Agda (release version is done)
- Ulf: changed the wiki.
- Day2: (Mac) BN succeeded in installing w. experts helps, and updated Ulf's instruction. Still impossible with lingering old version of stuffs(GHC, cabal, ...). (Linux) : IMPORTANT. extending the sprint. (Win) Nothing concrete yet; Got good input from Wolfram; try not rely on cabal-install.; will aim for a make target "build-win-installer" or something.
- Day4: Nothing new.
- Day5: (Win) Only three-quarter finished: check existence of, download, and install Haskell Platform
and emacs-23. Still to go: font, Agda compilation, haskell-mode, agda2-mode.
- Builtin - better generic interface, cleaning up the code.
- Leader : Simon
- Day2: Bare representation of BUILTIN related info (Haskell level; cleaned up). Test suite problem identified.
- Day4: working on co-induction...
- records in mutual blocks + more flexible induction-recursion
- Leader : Thorsten
- Day2: Nothing yet. Talking with Thierry.
- Day4: Refactored Concrete.hs and Abstract.hs, proceeding with Ulf' guidance.
- Fix bug interactively: let more ppl know Agda internals.
- Leader: Andreas
Thomas: Tutorial? Better error msg (refine)
- Day2: Risky. could take 2min to 2hr. Ask Thomas to ....
- Day3: (lost - 3 bugs fixed)
- Day4: modified wiki pages ....
- Non-canonical implicit args
- Leader: Dominique
U: some concern about record module generation; still, should be merged.
- Day2: On day1:
- Day3: (lost)
- Day4: left
- Day5: (U decided against merging for now, due to inefficiency it introduces for ordinary checking)
- Argumentation
- Leader: Makoto
- Day2: nothing yet.
- Day4: some discussion with Bengt. Agreed: "argumentation scheme" seems a hopelessly shallow, ad-hoc cocept; still, Agda-ised catalogue of shceme could be useful in some context.
- Avoid unnecessary type checking with finer granurality.
- Leader : Wolfram
- Day2: Interface Seriarization to support AST. Looked at upper layer, talking with U on design issues.
- Day4: Ramification concerning hightlight-info. Working on comparison of possible ASTs.
- Day5: Started to write AST as interface. Size increases by 50~100%. Writing interface takes a lot of time now; don't know why yet. Two new options: --trust-AST, --dont-trust-mtime (modification time)
- Cabal for Agda
- Leader : Darin
- Day2: Discussed a bit.
- Day3: Nothing
- Program extraction
- Leader: Anton
- Day2: Succeeded in installing Agda (-> Installer).
- Day4: Wrote code to relate cauchy real and signed digits and postulated reals and ... slides and code is on the wiki
- Profiling of open term reduction
- Leader: Karim
- Day2: Not yet.
- Day3: Nothing
- "where" as an expression
- Leader: Cezar
- Day2: Not yet. Cezar wanted pattern matching definitions in "where"; more than current limited let-decls.
- Day3: (lost)
- Day4:
- Abstract internal term representation
starting one for variables?
- Leader: Ulf
NP: Nice interface could force bad complexity.
- Day3: <lost>
- Day4: cancelled.
- http interface to agda proof engine
Page last modified on April 12, 2011, at 01:39 pm
Powered by
PmWiki