Agda-2.3.2.2: src/transl/README
================================================================
NOTE: THIS SOFTWARE IS NO LONGER MAINTAINED AND DOES NOT COMPILE
AGAINST THE LATEST VERSION OF AGDA!
================================================================
= Agda1to2
'Agda1to2' is a translator from a program in Agda 1 to its
coressponding program in Agda 2
At the current moments, it is rather a helper for translating by hand.
(Please don't expect it to be a perfect tool :)
== Usage
$ agda1to2 foo.alfa > foo.agda
foo.alfa is a program in Agda 1 (new syntax). foo.agda is the output
expected to be program in Agda 2.
$ agda1to2 --old foo.alfa > foo.agda
In this case, foo.alfa is expected to be written in Agda 1 old syntax.
== Declarations cannot be translated
* class
* instance
* native
Following declaration can be translated in some occasions.
* idata
idata Vec (!A::Set) :: Nat -> Set where
nl :: Vec A zero
cns (n::Nat) (a::A) (as::Vec A n) :: Vec A (succ n)
Above 'idata' declaration can be translated to
data Vec (A : Set) : Nat -> Set where
nl : Vec A zero
cns : (n : Nat) -> (a : A) -> (as : Vec A n) -> Vec A (succ n)
== Expressions cannot be translated
* CSelect : e.e
* CExternal : external "Foo" bar
* CDo : do { stm; ... }
* CList : [ x, y, z ]
Following expressions can be translated in some occasions.
* Ccase -- if its occurence is in top level of RHS, and
case on the variable of bound as function argument,
it can be translated.
* CRecord
Expressions not translated remain in {! !} like followings
lemma1 A S s r
= let s' : symmetrical S
s'
= \(x : A) ->
\(y : A) ->
\(h : S x y) ->
let P : Pred A
P = \(z : A) -> S z x
lem : (S x x) -> S y x
lem = {! (s x y h P).fst !} -- << not translated
in lem (r x)
t : transitive S
t = \(x : A) ->
\(y : A) ->
\(z : A) ->
\(h : S x y) ->
\(h' : S y z) ->
let P : Pred A
P = \(x : A) -> S x z
lem : (S y z) -> S x z
lem = {! (s x y h P).snd !} -- << not translated
in lem h'
in record {R = S; refl = r; sym = s'; trans = t}
== Comments
* Comments embeded in expressions cannot be kept.
* Standalone comment can be kept.