[Agda] Agda options

Sergei Meshveliani mechvel at botik.ru
Wed Mar 29 21:54:22 CEST 2017


Dear Agda developers,

I have the following notes and questions about the Agda type checking
options
(for Agda 2.6.0-85c6255).


1. 
I use the option  -v profile:7 

which I copy from certain old letter by Wolfram.
And it reports a profiling (shown below). 

On the other hand, I look at the text produced by the command

       agda --help

, and do not find there any occurrence of the word `profil'.

Where the profiling option is referenced?


2. 
The --help list shows the options  with-K, without-K.
Which one is the default?

I have read certain explanation about the K axiom. It says that K means
uniqueness of any identity proof.
Suppose that one programs

  f : (x y : Carrier) → x ≈ y → Carrier

for any Setoid.  Does  with-K  option mean that the type checker
presumes that it holds the property 

  (x y : Carrier) → x ≈ y → x ≡ y  
?


3. 
I am trying to profile type checking on my application program.
Agda type-checks many modules before coming to  Foo.agda.
And  Foo.agda  has nothing besides importing modules and opening a
certain parametric module with giving it a parameter instance.

First all modules before  Foo.agda  are type-checked.
Then I command 

  > agda $agdaLibOpt -v profile:7 +RTS -K90m -M8G -RTS  Foo.agda

And it reports

------------------------------------------------------------------
Loading M1 
Loading M2 
... 
Loading  FactorizationRing.FtRing
(/home/mechvel/agda/tosave/bugs/tcPerf-mar28-2017/FactorizationRing/FtRing.agdai).

Finished Foo.
Total                        143,264ms           
Miscellaneous                    300ms           
Serialization                 67,128ms (75,508ms)
Serialization.BuildInterface   4,648ms           
Serialization.BinaryEncode     3,148ms           
Serialization.Sort               332ms           
Serialization.Compress           252ms           
Deserialization               51,819ms           
DeadCode                       8,212ms           
Typing                         7,296ms           
Scoping                           64ms     (84ms)
Scoping.InverseScopeLookup        20ms           
Import                            44ms           
-------------------------------------------------------------------

"Loading  FactorizationRing.FtRing" 
means that this module is only being loaded but not type-checked. 
Right?

About  Foo.agda,  it does not report Loading nor "checking".
And I expect that the time segment between the report of  
"Loading  FactorizationRing.FtRing"  and before appearing of 
"Finished Foo"  is the time taken by type-checking  Foo.agda.
Right?

3.1.
The `time' command shows that this process lasts about  144 sec.

So, I guess that in the line 
                        "Total       143,264ms"           

comma parts thousands, so that this means 143 seconds and 264
milliseconds.
Right?

3.2. 
What is Serialization and Deserialization (in short) ?
What does it mean the second number (in parentheses) in the line of
Serialization?

Having the above profiling, how can we derive the time spent to 
"Loading" ready modules before starting to type-check Foo.agda ?
(I observe that it is about 50 seconds).

Thanks,

------
Sergei



More information about the Agda mailing list